El contrato
Negativas y códigos HTTP
El código HTTP se elige por el remedio, no por el parecido: quién tiene que hacer algo, y qué.
Última actualización
| motivo | HTTP | significado |
|---|---|---|
invalid_input | 400 | El cuerpo no cumple el contrato. El único de esta lista que puedes arreglar por tu cuenta. |
unauthorized | 401 | La credencial no es válida. Inexistente, revocada, caducada o sin el alcance no se distinguen, a propósito. |
grant_off | 403 | El workspace no ha encendido esta capacidad. No es una prohibición: es un interruptor de su dueño. |
origin_denied | 403 | Este origen no puede ejercer esta acción, y ningún interruptor lo cambia. |
not_autonomous | 409 | Necesita una aprobación y esta vía no puede esperarla. |
stale | 409 | El mundo cambió entre la petición y el acto — o la petición apunta a algo que no resuelve. detail.why lo nombra y detail.message dice qué hacer. |
duplicate | 409 | Ya pasó. Lleva la clave y cómo terminó el primer intento. |
in_flight | 409 | Otra petición con la misma clave está corriendo ahora mismo. Lleva Retry-After. |
not_exposed | 404 | Esa acción no está abierta al exterior. Puede existir dentro del producto; lo que no existe es su puerta. |
version_retired | 410 | Esa versión fue retirada. Viene con una cabecera Sunset y las fechas dentro. |
rate_limited | 429 | Cuota por llave. Lleva Retry-After. |
internal_error | 500 | Un fallo nuestro. El único de esta lista que no es ni una decisión ni un estado. |
Motivos que solo dan las lecturas
Además de la lista general, una lectura puede contestar con estos. Los que declara cada lectura están en su página y en los tipos del SDK.
| motivo | HTTP | significado |
|---|---|---|
reads_need_a_person | 403 | La credencial es una llave de API. Una lectura se hace en nombre de una persona: conéctate con OAuth. |
role_forbidden | 403 | La persona que autorizó la aplicación no ve esto en su propia pantalla. El dueño del workspace o un administrador puede cambiar su rol. |
ambiguous | 409 | El nombre coincide con varios clientes. detail.candidates los lista: vuelve a preguntar con uno. |
not_found | 409 | Ningún cliente coincide con el nombre. detail.searched dice qué se buscó. |
Motivos por acción
Además de la lista general, cada acción nombra sus propios motivos de stale — los candidatos de un nombre ambiguo, las etapas que sí existen. Están en la página de cada acción y en los tipos del SDK.