[{"data":1,"prerenderedAt":124},["ShallowReactive",2],{"docs:es:rest-api":3},{"id":4,"meta":5,"intro":8,"contractVersion":11,"contractVersionLabel":12,"contractNotice":13,"contractDownload":14,"labels":17,"sections":29},"rest-api",{"title":6,"lead":7},"API REST","Todas las rutas que una clave API puede llamar, leídas del contrato OpenAPI que viaja dentro del servicio.",{"title":9,"lead":10},"Referencia de la API REST","Qué expone la API, dónde vive cada ruta y qué debe llevar una clave para pasar.","1.15.0","Versión del contrato","La referencia de abajo se lee del contrato OpenAPI, que está escrito en inglés. No se traduce a propósito: traducirlo significaría copiarlo, y una copia acaba divergiendo.",{"href":15,"label":16},"\u002Fopenapi.json","Descarga el contrato público (OpenAPI, JSON)",{"method":18,"path":19,"summary":20,"scope":21,"authentication":22,"form":23,"name":24,"type":25,"notes":26,"description":27,"downloadContract":16,"contractVersion":12,"command":28},"Método","Ruta","Qué hace","Ámbito de la clave","Acepta","En la petición","Nombre","Tipo","Notas","Descripción","Comando",[30,39,60],{"id":31,"title":32,"paragraphs":33,"block":38},"overview","De dónde sale esta página",[34,35,36,37],"Esta referencia no se escribe, se lee. Cada ruta, cada método y cada ámbito de aquí abajo vienen del contrato OpenAPI compilado dentro del binario de la API, y una comprobación coteja ese contrato con el código en ejecución en cada compilación.","Una referencia mantenida a mano empieza a divergir la semana siguiente a escribirla, y desde ese momento es peor que ninguna referencia, porque se la cree. La única forma de no divergir es no tener una segunda copia de la que divergir.","Aquí se enumeran las operaciones que una clave API puede llamar, y ninguna más. El resto del servicio lo gobierna el panel con rutas que solo alcanza una sesión del navegador: no forman parte de la API pública, cambian sin aviso, y documentarlas las convertiría en una promesa que nadie ha hecho.","Aquí encuentras la superficie: dónde vive una ruta y para qué sirve. El resto lo lleva el contrato — esquemas de petición y respuesta, códigos de error, límites de frecuencia — y es el documento que hay que leer cuando una llamada responde algo que no esperabas. La copia que puedes descargar contiene las mismas operaciones que esta página, y solo esas.",null,{"id":40,"title":41,"paragraphs":42,"block":46},"authentication","Autenticación",[43,44,45],"Tres formas de demostrar quién eres, y no son intercambiables. La clave con ámbitos es la pensada para los programas; la sesión es la que guarda tu navegador mientras usas el panel.","Los ámbitos de escritura no incluyen los de lectura. Si no, quien mira una clave vería jobs:write y tendría que acordarse de que también cubre la lectura.","Las operaciones que no aceptan ninguna clave — emitir credenciales, comprometer un pago, destruir una cuenta — faltan de esta página justo por eso. Es una decisión y no un olvido: una clave capaz de crear otra dejaría sin sentido revocar la primera.",{"kind":47,"schemes":48},"schemes",[49,53,57],{"name":50,"form":51,"description":52},"sessionCookie","Cookie: pq_session=…","Browser session (R14). HttpOnly: the token is out of reach of JavaScript, so an XSS on the dashboard cannot carry it away.",{"name":54,"form":55,"description":56},"sessionBearer","Authorization: Bearer …","The same session token, for clients without a cookie jar. When both arrive, the cookie wins — it is the session the user expects to be using.",{"name":58,"form":55,"description":59},"apiKey","Scoped API key (R9): Authorization: Bearer pq_live_.... The prefix is what tells it apart from a session token without having to try both. The scope each operation requires is declared in x-api-key-scope, and it is compared against the code on every CI run. Write scopes do not imply read scopes: otherwise someone looking at a key's scopes would see jobs:write and have to remember that it covers reading too. Operations that do not declare this scheme do not accept a key, ever: they are the ones that issue credentials, commit to a payment, or destroy the account.",{"id":61,"title":62,"paragraphs":63,"block":65},"operations","Operaciones",[64],"Agrupadas como las agrupa el contrato. Un tramo de ruta entre llaves es un parámetro que sustituyes; la columna del ámbito dice qué debe llevar una clave para que esa llamada pase.",{"kind":61,"groups":66},[67,115],{"name":68,"description":69,"operations":70},"jobs","Cron jobs and executions (R8).",[71,77,82,86,90,94,99,103,107,111],{"method":72,"path":73,"summary":74,"scope":75,"security":76},"GET","\u002Fjobs","List jobs (R8)","jobs:read",[50,54,58],{"method":78,"path":73,"summary":79,"scope":80,"security":81},"POST","Create a job (R1, R8)","jobs:write",[50,54,58],{"method":72,"path":83,"summary":84,"scope":75,"security":85},"\u002Fjobs\u002F{id}","Read one job",[50,54,58],{"method":87,"path":83,"summary":88,"scope":80,"security":89},"PATCH","Partially update a job",[50,54,58],{"method":91,"path":83,"summary":92,"scope":80,"security":93},"DELETE","Delete a job",[50,54,58],{"method":72,"path":95,"summary":96,"scope":97,"security":98},"\u002Fjobs\u002F{id}\u002Fexecutions","Execution log (R6)","executions:read",[50,54,58],{"method":78,"path":95,"summary":100,"scope":101,"security":102},"Run now (R8)","executions:trigger",[50,54,58],{"method":72,"path":104,"summary":105,"scope":97,"security":106},"\u002Fjobs\u002F{id}\u002Fexecutions\u002Fstream","Execution log in real time (SPEC §4.2)",[50,54,58],{"method":72,"path":108,"summary":109,"scope":97,"security":110},"\u002Fexecutions\u002Fexport","Download the execution log (R27)",[50,54,58],{"method":72,"path":112,"summary":113,"scope":97,"security":114},"\u002Fexecutions\u002Fmetrics","Duration, failure rate and trend (R28)",[50,54,58],{"name":116,"description":117,"operations":118},"secrets","Workspace secrets resolved at execution time (R42, R43).",[119],{"method":72,"path":120,"summary":121,"scope":122,"security":123},"\u002Fsecrets","List workspace secrets (R42)","secrets:read",[50,54,58],1788438713341]