Errores
Errores
Cada fallo lleva un código estable. Ramifique por el código y nunca por el mensaje: la redacción puede cambiar en cualquier momento, el código no.
Las rutas, los métodos, los ámbitos, los nombres de campo, los códigos de error y los nombres de las reglas de validación se publican en inglés, porque el inglés es el idioma de la propia interfaz: es lo que quien llama escribe o compara. Lo mismo ocurre con cada ejemplo de código, cada carga JSON y la frase exacta que lleva una respuesta de error: /v1 no lee Accept-Language, y traducir lo que la API envía realmente sería describirla mal. Todo lo que se escribe sobre ello sigue el idioma de esta página.
El sobre de error
Toda respuesta fuera de 2xx tiene la misma forma. documentation_url apunta directamente a la entrada correspondiente más abajo, y request_id es el valor que hay que citar en una consulta de soporte. details lleva contexto legible por máquina: para un cuerpo rechazado son los issues, cada uno un JSON Pointer al campo defectuoso.
{
"error": {
"code": "validation_failed",
"message": "The request body failed validation.",
"documentation_url": "https://passportcraft.com/docs/api/errors#validation_failed",
"request_id": "req_9Fv2KpQ0aXbT4Lmn",
"details": {
"issues": [
{ "source": { "pointer": "/data/product_name" }, "rule": "required" }
]
}
}
}Códigos
Cada código está enlazado desde la respuesta que lo lleva, así que a esta página se suele llegar directamente en la entrada que hace falta.
invalid_key
401La clave de API indicada no es válida.
La API devuelveThe API key provided is not valid.
Cualquier endpoint puede devolverlo.
key_revoked
401Esta clave de API ha sido revocada.
La API devuelveThis API key has been revoked.
Cualquier endpoint puede devolverlo.
key_expired
401Esta clave de API ha caducado.
La API devuelveThis API key has expired.
Cualquier endpoint puede devolverlo.
key_rotated
401Esta clave de API se sustituyó en una rotación y su ventana de solapamiento ya se cerró.
La API devuelveThis API key was replaced by a rotation and its overlap window has closed.
Cualquier endpoint puede devolverlo.
mode_mismatch
400El prefijo de la clave no coincide con la credencial. Compruebe si quería una clave de prueba o una de producción.
La API devuelveThe key prefix does not match the credential. Check whether you meant a test or a live key.
Cualquier endpoint puede devolverlo.
insufficient_scope
403Esta credencial no lleva el ámbito que exige esta operación.
La API devuelveThis credential does not carry the scope required for this operation.
Qué endpoints lo devuelven
- post
/organizations/{organization}/grants - delete
/organizations/{organization}/grants/{keyId} - get
/organizations/{organization}/custom-fields - get
/organizations/{organization}/capabilities - get
/organizations/{organization}/events - get
/organizations/{organization}/passports - post
/organizations/{organization}/passports - get
/organizations/{organization}/publish-approvals/{id} - get
/organizations/{organization}/passports/{id} - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - get
/organizations/{organization}/proposals/{id} - post
/organizations/{organization}/proposals/{id}/withdraw - get
/organizations/{organization}/passports/{id}/links - get
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/affichage - get
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - get
/organizations/{organization}/passports/{id}/variants/review - get
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units - get
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - get
/organizations/{organization}/documents - get
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - post
/organizations/{organization}/imports - get
/organizations/{organization}/imports - get
/organizations/{organization}/imports/{id}
organization_not_found_or_not_granted
404No existe esa organización, o esta clave no tiene concesión sobre ella. Una concesión termina cuando alguien la revoca o cuando termina la colaboración de la organización con su partner; la organización deja entonces de aparecer en GET /organizations.
La API devuelveNo such organization.
Qué endpoints lo devuelven
- post
/organizations/{organization}/grants - delete
/organizations/{organization}/grants/{keyId} - get
/organizations/{organization}/custom-fields - get
/organizations/{organization}/capabilities - get
/organizations/{organization}/events - get
/organizations/{organization}/passports - post
/organizations/{organization}/passports - get
/organizations/{organization}/publish-approvals/{id} - get
/organizations/{organization}/passports/{id} - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - get
/organizations/{organization}/proposals/{id} - post
/organizations/{organization}/proposals/{id}/withdraw - get
/organizations/{organization}/passports/{id}/links - get
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/affichage - get
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - get
/organizations/{organization}/passports/{id}/variants/review - get
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units - get
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - get
/organizations/{organization}/documents - get
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - post
/organizations/{organization}/imports - get
/organizations/{organization}/imports - get
/organizations/{organization}/imports/{id}
resource_not_found
404No existe ese recurso.
La API devuelveNo such resource.
Qué endpoints lo devuelven
- get
/categories/{category}/schema - post
/organizations/{organization}/grants - delete
/organizations/{organization}/grants/{keyId} - get
/organizations/{organization}/publish-approvals/{id} - get
/organizations/{organization}/passports/{id} - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - get
/organizations/{organization}/proposals/{id} - post
/organizations/{organization}/proposals/{id}/withdraw - get
/organizations/{organization}/passports/{id}/links - get
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/affichage - get
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - get
/organizations/{organization}/passports/{id}/variants/review - get
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units - get
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - get
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - get
/organizations/{organization}/imports/{id}
wildcard_not_supported
400El comodín de organización "-" está reservado y todavía no se admite.
La API devuelveThe "-" organization wildcard is reserved and not yet supported.
Qué endpoints lo devuelven
- post
/organizations/{organization}/grants - delete
/organizations/{organization}/grants/{keyId} - get
/organizations/{organization}/custom-fields - get
/organizations/{organization}/capabilities - get
/organizations/{organization}/events - get
/organizations/{organization}/passports - post
/organizations/{organization}/passports - get
/organizations/{organization}/publish-approvals/{id} - get
/organizations/{organization}/passports/{id} - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - get
/organizations/{organization}/proposals/{id} - post
/organizations/{organization}/proposals/{id}/withdraw - get
/organizations/{organization}/passports/{id}/links - get
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/affichage - get
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - get
/organizations/{organization}/passports/{id}/variants/review - get
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units - get
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - get
/organizations/{organization}/documents - get
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - post
/organizations/{organization}/imports - get
/organizations/{organization}/imports - get
/organizations/{organization}/imports/{id}
validation_failed
422El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
- post
/organizations/{organization}/grants - post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/imports
invalid_request
400No se ha podido interpretar la solicitud.
La API devuelveThe request could not be understood.
Cualquier endpoint puede devolverlo.
method_not_allowed
405El endpoint existe, pero no responde a este método HTTP. La cabecera Allow del rechazo enumera los métodos a los que sí responde.
La API devuelveThis endpoint does not support that HTTP method. The Allow header lists the ones it does.
payload_too_large
413El cuerpo de la solicitud supera lo que acepta este endpoint. details.limit_bytes indica el tope aplicado.
La API devuelveThe request body is larger than this endpoint accepts.
Cualquier endpoint puede devolverlo.
body_too_deep
400El cuerpo de la solicitud está anidado a más profundidad de la que acepta este endpoint. details.limit_depth indica la profundidad de anidamiento aplicada al cuerpo completo.
La API devuelveThe request body nests deeper than this endpoint accepts.
Qué endpoints lo devuelven
- post
/organizations/{organization}/grants - post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/imports
unsupported_media_type
415El cuerpo de la solicitud no llegó como application/json.
La API devuelveThe request body must be sent as application/json.
Qué endpoints lo devuelven
- post
/organizations/{organization}/grants - post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/validate - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/imports
idempotency_conflict
409Esta Idempotency-Key ya se usó con un cuerpo de solicitud distinto.
La API devuelveThis Idempotency-Key was already used with a different request body.
Qué endpoints lo devuelven
- post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - post
/organizations/{organization}/imports
already_exists
409Ya existe un recurso con este identificador.
La API devuelveA resource with this identifier already exists.
gtin_in_use
409Este GTIN pertenece a otro pasaporte. details indica passport, product_name y role (lead o variant). Use ese pasaporte u otro GTIN.
La API devuelveThis GTIN belongs to another passport. Use that passport or choose a different GTIN.
variant_limit_reached
422Este pasaporte ha alcanzado su límite de variantes. details contiene limit, current y requested. Cree un segundo pasaporte para añadir más. El límite no depende del plan.
La API devuelveThis passport has reached its variant limit. Create a second passport to add more.
Qué endpoints lo devuelven
variant_review_required
409Este pasaporte contiene tallas y colores introducidos por un asistente. Una persona los revisa primero: lea GET …/variants/review y publique con su huella. details contiene agent_written_count y la URL de la revisión.
La API devuelveThis passport carries sizes and colours an assistant wrote. A person reviews them first: read the review, then publish with its fingerprint.
Qué endpoints lo devuelven
variant_review_changed
409Las tallas y colores cambiaron después de la revisión que designa esta huella. Vuelva a leer la revisión y publique con su huella actual. details contiene agent_written_count.
La API devuelveThe sizes and colours changed after the review this fingerprint names. Read the review again and publish with its current fingerprint.
Qué endpoints lo devuelven
precondition_failed
412El recurso cambió: o bien desde la versión que usted indicó, o bien mientras su solicitud estaba en curso. El current_version que indicamos es la versión que leímos, no necesariamente la almacenada ahora: vuelva a leer el pasaporte en lugar de calcular a partir de ella.
La API devuelveThe resource changed since the version you supplied.
resource_busy
409Otra petición está modificando este recurso. Espere el tiempo indicado en la cabecera Retry-After y vuelva a intentarlo.
La API devuelveAnother request is modifying this resource. Wait for the Retry-After header, then retry.
Qué endpoints lo devuelven
cursor_invalid
400El cursor de paginación no es válido, ha caducado o se envió con otros filtros.
La API devuelveThe pagination cursor is invalid, expired, or was sent with different filters.
Qué endpoints lo devuelven
- get
/organizations/{organization}/events - get
/organizations/{organization}/passports - get
/organizations/{organization}/passports/{id}/variants - get
/organizations/{organization}/passports/{id}/units - get
/organizations/{organization}/passports/{id}/units/{unitId}/readings - get
/organizations/{organization}/documents - get
/organizations/{organization}/passports/{id}/documents - get
/organizations/{organization}/imports
no_subscription
402Esta organización no tiene una suscripción activa.
La API devuelveThis organization has no active subscription.
Qué endpoints lo devuelven
- post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - post
/organizations/{organization}/imports
plan_required
402El plan de esta organización no incluye esta operación.
La API devuelveThis organization’s plan does not include this operation.
Qué endpoints lo devuelven
- post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - post
/organizations/{organization}/imports
payment_overdue
402La publicación está desactivada mientras haya un pago pendiente.
La API devuelvePublishing is disabled while payment is overdue.
Qué endpoints lo devuelven
- post
/organizations/{organization}/passports - patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/restore - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/proposals/{id}/withdraw - post
/organizations/{organization}/passports/{id}/affichage - post
/organizations/{organization}/passports/{id}/variants - delete
/organizations/{organization}/passports/{id}/variants/{variantId} - post
/organizations/{organization}/passports/{id}/variants/remove - post
/organizations/{organization}/passports/{id}/units - post
/organizations/{organization}/passports/{id}/units/{unitId}/readings - post
/organizations/{organization}/passports/{id}/documents - delete
/organizations/{organization}/passports/{id}/documents/{documentId} - post
/organizations/{organization}/imports
gtin_required
422Hace falta un GTIN antes de poder publicar este pasaporte.
La API devuelveA GTIN is required before this passport can be published.
wrong_status
409El pasaporte no está en un estado que permita esta operación.
La API devuelveThe passport is not in a status that allows this operation.
Qué endpoints lo devuelven
- patch
/organizations/{organization}/passports/{id} - post
/organizations/{organization}/passports/{id}/publish - post
/organizations/{organization}/passports/{id}/unpublish - post
/organizations/{organization}/passports/{id}/trash - post
/organizations/{organization}/passports/{id}/proposals - post
/organizations/{organization}/passports/{id}/affichage
not_trashed
409Solo se puede restaurar un pasaporte que esté en la papelera.
La API devuelveOnly a trashed passport can be restored.
Qué endpoints lo devuelven
publish_limit_reached
402Esta organización ha agotado todas las plazas de publicación que permite su plan.
La API devuelveThis organization has used every publish slot its plan allows.
Qué endpoints lo devuelven
unit_limit_reached
402Al añadir estas unidades, la organización superaría las unidades de batería que puede añadir en este periodo. details contiene limit, current, requested, bought_remaining y plan_year_ends.
La API devuelveAdding these units would take the organization over the battery units it can add this plan year. details carries limit, current, requested, bought_remaining and plan_year_ends.
Qué endpoints lo devuelven
document_missing
422Un campo obligatorio se cubre únicamente con un documento que ya no está adjunto.
La API devuelveA required field is satisfied only by a document that is no longer attached.
Qué endpoints lo devuelven
document_feeds_extraction
409Este documento es el registro del origen de los valores de un pasaporte, por lo que se mantiene mientras ese pasaporte exista. No se ha desvinculado nada.
La API devuelveThis document is the record of where a passport’s values came from, so it stays while that passport exists. Nothing was detached.
Qué endpoints lo devuelven
document_feeds_reading
409Este documento respalda valores de batería registrados y no se puede eliminar mientras existan esos registros. Abra el modelo de batería para revisarlos.
La API devuelveThis document supports recorded battery values and cannot be deleted while those battery records exist. Open the battery model to review those records.
invalid_input
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
invalid_observed_on
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
invalid_source
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
invalid_field
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
invalid_note
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
invalid_value
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
invalid_document_id
400El cuerpo de la solicitud no superó la validación.
La API devuelveThe request body failed validation.
Qué endpoints lo devuelven
unit_status_required
400Esta batería ya tiene un estado. Elija un estado en lugar de borrarlo.
La API devuelveThis battery already has a status. Choose a status instead of clearing it.
Qué endpoints lo devuelven
unit_status_transition_forbidden
409Una batería no puede volver a Original después de otro estado ni cambiar de estado después de Residuo.
La API devuelveThis battery’s status cannot return to Original or change after Waste.
Qué endpoints lo devuelven
unit_status_history_conflict
409Este estado entraría en conflicto con el historial registrado de la batería. Compruebe la fecha y el estado.
La API devuelveThis status would conflict with the battery’s recorded history. Check the date and status.
Qué endpoints lo devuelven
delegation_required
403La presentación exige una delegación activa, verificada contra el portal en el momento de la llamada.
La API devuelveFiling requires an active delegation, verified against the portal at call time.
Qué endpoints lo devuelven
attestation_required
403Esta operación exige una declaración responsable aceptada por una persona identificada de la marca.
La API devuelveThis operation requires an attestation accepted by a named person at the brand.
Qué endpoints lo devuelven
test_mode_refused
403Las credenciales de modo de prueba no pueden realizar esta operación.
La API devuelveTest-mode credentials cannot perform this operation.
Qué endpoints lo devuelven
example_passport_not_fileable
409Los pasaportes demo del Espacio de demostración no se pueden presentar.
La API devuelveExample passports from the Playground cannot be filed.
Qué endpoints lo devuelven
human_approval_required
202El conector solicitó una publicación. Una persona de la organización debe aprobarla, y no se publicó nada.
La API devuelveA person at your organization must approve this publish. The request was recorded and is waiting for them — give them the link in `details.review_url`. Nothing has been published.
connector_writes_drafts_only
409El conector de agente solo puede modificar un borrador directamente. Para un pasaporte que el público ya ve, envía una propuesta que una persona aprueba.
La API devuelveThis product is already visible to the public, so an assistant cannot change it directly. To change its fields, or the file behind a field, use propose_changes; a person approves the proposal before the public page changes. For anything else, give a person the editor link in `details.review_url`.
proposal_requires_assistant
403Solo un asistente conectado a través de PassportCraft puede proponer un cambio. Esta clave puede modificar el pasaporte directamente.
La API devuelveOnly an assistant connected through PassportCraft can propose a change. This key can change the passport directly.
no_changes
422Nada en la propuesta difiere de lo que el pasaporte ya contiene.
La API devuelveNothing in the proposal differs from what the passport already holds.
Qué endpoints lo devuelven
unit_status_not_allowed
422Elija uno de los cinco estados de batería permitidos indicados en los detalles.
La API devuelveChoose one of the five permitted battery statuses in `details.allowed`, or leave the status empty.
scope_exceeds_key
422La concesión pide un ámbito que la clave no tiene en su propia organización. Lo que se concede para un cliente nunca supera lo que tiene la propia clave.
La API devuelveA grant cannot carry a scope the key does not hold on its own organization
Qué endpoints lo devuelven
france_mandate_required
403Todavía no se puede conceder filings:write para este cliente. Antes, una persona de su organización debe confirmar, en el espacio de trabajo del cliente, que cuenta con la autorización escrita del cliente para presentar declaraciones en Francia.
La API devuelvefilings:write needs the client's written authorisation, affirmed in its workspace, before it can be granted
Qué endpoints lo devuelven
grantor_not_seated
403La persona que creó la clave con la que se hace esta llamada ya no ocupa ninguna plaza en el espacio de trabajo de este cliente, así que no se puede registrar a nadie como quien otorga la concesión. Cree una clave nueva en la configuración.
La API devuelveThe person who created this key no longer holds a seat in this organization
Qué endpoints lo devuelven
key_not_grantable
409La clave indicada en key_id está revocada, caducada, en proceso de sustitución o es la conexión de un asistente. En ninguno de estos casos puede recibir una concesión.
La API devuelveThis key cannot be granted: it is revoked, expired, being replaced, or an assistant connection
Qué endpoints lo devuelven
grant_conflict
409La clave ya tiene aquí una concesión con otros ámbitos. Revoque esa concesión y, después, conceda una nueva con los ámbitos que desee.
La API devuelveThis key already holds a grant here with different scopes; revoke it, then grant again
Qué endpoints lo devuelven
live_key_playground_only
403Ninguno de sus clientes tiene un plan de pago Pro o Scale, así que esta clave live solo accede a su Espacio de demostración. No puede recibir acceso a un cliente. Una clave live que todavía accede a un cliente no se puede rotar. Una clave de prueba sí puede acceder a sus clientes.
La API devuelveThis live key acts on your Playground only. It can act on a client once one of your clients is on a paid Pro or Scale plan.
Qué endpoints lo devuelven
rate_limited
429Demasiadas solicitudes.
La API devuelveToo many requests in a short time. Wait a moment, then try again.
Cualquier endpoint puede devolverlo.
internal_error
500Algo ha fallado por nuestra parte.
La API devuelveSomething went wrong on our side.
Cualquier endpoint puede devolverlo.
configuration_error
500El servicio está mal configurado. No es un problema de su solicitud.
La API devuelveThe service is misconfigured. This is not a problem with your request.
Cualquier endpoint puede devolverlo.
Rechazos de la aplicación PassportCraft
La aplicación en la que ha iniciado sesión llama a sus propias rutas, y esas rutas rechazan con los códigos siguientes. No forman parte del contrato /v1 y pueden cambiar en cualquier momento. Se enumeran aquí para que un mensaje que vea en la aplicación, o un artículo de ayuda, tenga a qué apuntar.
billing_managed_by_partner
El partner del espacio de trabajo gestiona su facturación. El proceso de pago, el portal de facturación y los cambios de plan se rechazan todos con este código.
La API devuelveBilling for this workspace is managed by the partner that pays for it
partner_role_fixed
Esta persona trabaja para el partner del espacio de trabajo. El partner decide qué puede hacer aquí, por lo que usted no puede cambiarlo. El propietario o los administradores del propio espacio de trabajo pueden eliminarla.
La API devuelveThe partner sets what its staff can do in this workspace.
home_members_only
Solo el propietario o los administradores del propio espacio de trabajo pueden hacer esto, como aceptar, rechazar o detener a un partner. El personal de un partner no puede, sea cual sea su rol. Solo puede rotar una clave creada por el personal de su partner en este espacio de trabajo y que actúe únicamente sobre este espacio de trabajo.
La API devuelveOnly the workspace's own owner or administrator can do this
client_already_linked
Este espacio de trabajo ya tiene un partner, o una solicitud de un partner que aún no ha respondido.
La API devuelveThis workspace already has a partner, or a request it has not answered
partner_chain_not_allowed
El espacio de trabajo ya gestiona clientes o ya está gestionado por un partner. Una organización puede ser un partner o el cliente de un partner, pero nunca ambas cosas, por lo que esta colaboración no puede comenzar.
La API devuelveAn organization can manage clients or be managed by a partner, not both
not_a_partner
La organización indicada en X-Organization no gestiona ningún cliente.
La API devuelveThis organization does not manage clients
partner_staff_only
Solo el propio personal del partner gestor puede hacer esto, como confirmar la autorización escrita de un cliente para las declaraciones francesas de coût environnemental.
La API devuelveOnly the partner's staff can do this
link_not_found
No existe ninguna relación de partner con ese id para este espacio de trabajo.
La API devuelveLink not found
link_not_pending
Esa solicitud ya ha sido respondida.
La API devuelveThis request has already been answered
link_not_accepted
La relación con el partner no está activa: todavía espera respuesta, o ha finalizado.
La API devuelveThis link is not active
same_organization
Una organización no puede gestionarse a sí misma.
La API devuelveAn organization cannot manage itself
organization_not_found
Ningún espacio de trabajo coincide con la dirección o el correo electrónico indicado.
La API devuelveOrganization not found
organization_header_required
La solicitud no indicó ningún espacio de trabajo. Envíe el slug del espacio de trabajo en el encabezado X-Organization.
La API devuelveThe X-Organization header is required
organization_not_a_member
La persona que ha iniciado sesión no es miembro del espacio de trabajo indicado en X-Organization.
La API devuelveNot a member of this organization
continuity_pending
El plan que pagó el partner todavía está vigente. La facturación de este espacio de trabajo cambia en la fecha hasta la que se pagó.
La API devuelveThe current plan runs to the date it was paid to; billing for this workspace changes after that
partner_terms_missing
Todavía no hay condiciones de facturación registradas para este partner, así que no se puede abrir ningún plan en su cuenta.
La API devuelveThis partner has no billing terms recorded
partner_customer_missing
El partner todavía no tiene cuenta de pago.
La API devuelveThis partner has no payment account yet
partner_card_missing
El partner no tiene ningún método de pago registrado. Lo añade en su propia página de Facturación.
La API devuelveThis partner organization has no payment method on file
client_already_subscribed
Este espacio de trabajo ya paga su propia suscripción.
La API devuelveThis workspace already has its own subscription
plan_below_current
El plan elegido es más pequeño que aquel en el que está actualmente este espacio de trabajo.
La API devuelveThat plan is smaller than the one this workspace is on
continuity_not_available
No hay ningún periodo pagado por un partner anterior que continuar para este espacio de trabajo.
La API devuelveThere is nothing to continue on this workspace
yearly_not_accepted
Un plan de cliente solo se abre después de que el socio confirme su periodo de facturación anual para ese cliente.
La API devuelveThe partner has not confirmed the yearly billing period for this client; record its confirmation before opening the plan.
stripe_refused
El proveedor de pago rechazó la solicitud.
La API devuelveStripe refused the request
payment_pending
Aún se desconoce el resultado del pago. Compruebe el estado de la solicitud existente; no cree otro cliente ni envíe otro pago.
La API devuelveThe payment result is not yet known. Check its status before starting another payment.
price_changed
El precio confirmado difiere de la última vista previa. Revise el precio actualizado antes de volver a enviar la solicitud. No se ha creado ningún cliente.
La API devuelveThe price changed. Review the current amount before creating the client.
price_changed_after_create
El cliente se creó en el plan gratuito. El precio cambió y el intento de pago sin abonar se cerró de forma segura. Contacte con soporte para activar su plan; no vuelva a crear al cliente.
La API devuelveThe client was added on Free. The reviewed payment did not proceed. Contact support to activate the plan.
creation_token_invalid
Esta revisión no coincide con el usuario, el espacio de trabajo o los datos del cliente. Revise los datos correctos de nuevo. Si ya envió una solicitud de creación y desconoce su resultado, contacte con soporte en lugar de empezar de nuevo.
La API devuelveThis creation review is invalid. If creation has already started, check its status or contact support.
creation_token_expired
La autorización de creación ha caducado. Compruebe primero cualquier solicitud de creación existente; si no envió ninguna, revise el pago de nuevo.
La API devuelveThis creation review expired. Check any existing operation before reviewing a new creation.
creation_operation_expired
El estado conservado de esta solicitud de creación ya no está disponible. Contacte con soporte antes de realizar otra acción; no vuelva a crear al cliente.
La API devuelveThis operation status is no longer available. Contact support before creating another client.
creation_conflict
Esta solicitud de creación ya está vinculada a otros datos. Compruebe la solicitud original o contacte con soporte; no inicie otra creación.
La API devuelveThis operation belongs to different creation details. Check the original operation or contact support.
client_creation_undone
No se ha creado nada ni se ha cobrado nada. Revise el pago e inténtelo de nuevo.
La API devuelveThe client could not be created and nothing was charged. Review the payment again.
client_vat_unverified
Un espacio de trabajo solo asume la facturación una vez que ha indicado su país.
La API devuelveGive the workspace's country before you add a card.
client_details_required
Un espacio de trabajo de cliente necesita la razón social del cliente y una dirección de correo electrónico para nuestros avisos.
La API devuelveThe client's legal name and an email address for notices are required.
terms_acceptance_required
Un espacio de trabajo solo acepta la solicitud de un socio, o compra un plan de pago, junto con los Términos del Servicio y el Acuerdo de tratamiento de datos vigentes.
La API devuelveAccept the current Terms of Service and Data Processing Agreement together with the request.
client_not_managed
La organización indicada no es un cliente que gestione su organización.
La API devuelveThat organization is not a client your organization manages
keys_admin_partner_only
keys:admin solo se puede dar a una clave que pertenezca a una organización que gestione clientes.
La API devuelvekeys:admin can only be granted on the own keys of an organization that manages clients
grant_not_found
Ninguna clave de otra organización tiene acceso a este espacio de trabajo con ese id.
La API devuelveNo key from another organization holds a grant here under that id
partner_agreement_required
El socio no ha aceptado el acuerdo de socio actual, o su acuerdo ha terminado. Acepta el acuerdo en su página Condiciones para socios.
La API devuelveThis partner has not accepted the current partner agreement, or its agreement has ended. It must accept the agreement on its Partner terms page first.
agreement_unpublished
El acuerdo de socio aún no está publicado, por lo que no se puede aceptar.
La API devuelveThe partner agreement is not published yet
agreement_text_changed
El acuerdo cambió mientras la página estaba abierta. Recargue Condiciones para socios y acepte la versión mostrada.
La API devuelveThe agreement changed after it was shown. Reload the page and accept the version shown.
partner_admin_access_fixed
Esta persona es propietaria o administradora en el partner, por lo que trabaja con todos sus clientes. Un propietario siempre trabaja con todos los clientes. Para elegir los clientes de un administrador, asígnele primero el rol Editor o Lector en el partner.
La API devuelveOwners and administrators work on every client. To limit an administrator's clients, make them an editor or viewer on your Team page first.
seat_removed_by_client
El cliente eliminó a esta persona de su espacio de trabajo. El partner no puede volver a añadirla. El propietario o un administrador del cliente puede permitirle el acceso de nuevo desde la página Equipo del cliente.
La API devuelveThe client removed this person from its workspace. Only the client can allow them again.
partner_staff_managed_by_partner
El personal de un partner no puede eliminarse entre sí del espacio de trabajo de un cliente. El partner elige los clientes de su personal desde su propia página Equipo. El propietario o los administradores del propio cliente pueden eliminar a cualquier persona.
La API devuelveOnly this workspace's own owner or administrators can remove a partner's staff here. The partner can change its staff's clients from its own Team page.
member_not_found
Esta persona ya no forma parte del equipo. Vuelva a cargar la lista e inténtelo de nuevo.
La API devuelveMember not found
playground_has_no_plans
El espacio de trabajo es el Espacio de demostración de un partner. Sus límites son fijos y no hay ningún plan que comprar. Por eso el proceso de pago, los cambios de plan y la compra de números de serie se rechazan todos con este código. Un partner compra el plan de un cliente al añadir ese cliente.
La API devuelveYour Playground has fixed limits and no plan to buy. To buy a plan for a client, use Add client on the Clients page. Client billing, under Partner settings, shows what you pay.
client_not_partner_paid
El partner no paga el plan de este cliente, la relación con el partner está finalizando o el plan del cliente está configurado para cancelarse. Cambiar al cliente a un plan superior y añadir números de serie para ese cliente se rechazan ambos con este código.
La API devuelveYour organization does not pay for this client's plan, or the client is leaving or set to cancel.
partner_agreement_ended
El acuerdo de socio ha terminado. Por eso ya no se puede cambiar a ningún cliente a un plan superior.
La API devuelveYour partner agreement has ended, so a client's plan cannot move to a larger plan.
Reglas de validación
Estas son las reglas que el propio contenido del pasaporte puede incumplir, en cualquier categoría. Un nombre de regla le llega en tres lugares: dentro de error.details.issues en un 422, dentro de issues en el 200 del endpoint de validación y dentro de error.detail.issues en una fila de importación masiva. La creación, la actualización y la importación solo rechazan un valor dentro de data en las dos marcadas como rechazadas al guardar; además, la creación devuelve required para una categoría que no atiende. Las demás llegan desde la publicación o desde el endpoint de validación. La publicación devuelve la lista completa, avisos incluidos, por lo que también nombra reglas que no causaron el rechazo. Base su código en la regla, nunca en el mensaje.
required
impide la publicaciónEl campo es obligatorio para esta categoría y llegó vacío, ausente o como una lista vacía. Crear un pasaporte bajo una categoría que no atendemos también devuelve esta regla, en el JSON Pointer /category.
Cómo corregirloEnvíe un valor. Un campo url que documenta un archivo también se cumple si adjunta ese documento en su lugar.
type_array
impide la publicacióntambién se rechaza al guardarEl campo contiene una lista y el valor no lo era: lo más habitual es una lista enviada como cadena JSON.
Cómo corregirloEnvíe un array JSON real, no una cadena que lo contenga.
type_array_items
impide la publicacióntambién se rechaza al guardarEl campo contiene una lista de valores de texto simple y al menos una entrada era un objeto, un número o un booleano.
Cómo corregirloEnvíe cada entrada como cadena. El campo lleva item_type en el esquema de categoría cuando lo exige.
type_number
impide la publicaciónEl campo contiene un número y el valor no lo era: lo más habitual es un número enviado como cadena.
Cómo corregirloEnvíe un número JSON, sin comillas.
type_text
impide la publicaciónEl campo contiene texto y el valor no lo era: lo más habitual es un número, un booleano o una lista enviados a un campo que el esquema de categoría declara como texto, o a un campo de selección que además admite una respuesta libre.
Cómo corregirloEnvíe el valor como cadena JSON. Consulte type en el campo del esquema de categoría. Un select que ofrece una opción other también admite la respuesta libre como cadena.
number_min
impide la publicaciónEl valor es inferior al número más pequeño que acepta el campo.
Cómo corregirloConsulte min en el campo dentro del esquema de categoría y envíe un valor igual o superior.
number_max
impide la publicaciónEl valor es superior al número más grande que acepta el campo.
Cómo corregirloConsulte max en el campo dentro del esquema de categoría y envíe un valor igual o inferior.
format_date
impide la publicaciónEl valor no es una fecha ISO 8601 válida. Una fecha que no existe, como 2025-02-30, se rechaza aquí.
Cómo corregirloEnvíe YYYY-MM-DD o una marca de tiempo ISO 8601 en UTC, terminada en Z. Se rechaza un desfase que sitúe la marca de tiempo en otra fecha.
format_url
impide la publicaciónEl valor no es una URL válida.
Cómo corregirloEnvíe una URL absoluta con https:// o http://.
invalid_option
impide la publicaciónEl campo acepta un conjunto fijo de valores y el valor no era ninguno de ellos. Un campo que ofrece una opción other queda exento: guarda texto libre en su lugar.
Cómo corregirloConsulte options en el campo dentro del esquema de categoría y envíe una de las entradas value que enumera.
format_gtin
impide la publicaciónEl GTIN no es real: llegó como cadena vacía, contiene caracteres que no son dígitos, tiene una longitud incorrecta, tiene un dígito de control que no coincide o es un ejemplo de documentación.
Cómo corregirloEnvíe un GTIN-8, GTIN-12, GTIN-13 o GTIN-14 que le haya asignado GS1. El mensaje indica cuál es el problema.
format_eori
impide la publicaciónEl número EORI no coincide con el formato que acepta el campo.
Cómo corregirloEnvíe dos letras mayúsculas de país y después de 1 a 15 letras mayúsculas o cifras. Se rechazan las minúsculas.
format_country_code
impide la publicaciónEl país no son dos letras mayúsculas. Se rechaza un código en minúsculas: de en lugar de DE.
Cómo corregirloEnvíe un código ISO 3166-1 alfa-2 en mayúsculas, por ejemplo DE.
format_commodity_code
avisoEl código de mercancía no coincide con el formato SA, NC o TARIC.
Cómo corregirloEnvíe 6, 8 o 10 dígitos. También puede publicar el pasaporte con el valor tal como está.
format_email
impide la publicaciónEl valor no es una dirección de correo electrónico válida.
Cómo corregirloEnvíe una dirección completa.
category_exists
impide la publicaciónEl pasaporte nombra una categoría de producto que esta API no atiende.
Cómo corregirloEnviar otra categoría no lo resuelve: el pasaporte almacenado nombra una categoría que ya no atendemos. Vuelva a crearlo bajo una categoría que devuelva el endpoint que lista las categorías.
Otras tres cosas llevan un nombre de regla. Una categoría de producto añade reglas propias, que leen varios campos a la vez: por ejemplo, porcentajes de materiales que deben sumar 100. Un endpoint informa igual de un problema con la propia solicitud, bajo nombres como not_writable. Y el control de publicación reutiliza required para un valor que la publicación necesita, como un GTIN, en un campo que la categoría en sí no exige. En cada caso, el mensaje de la respuesta explica la regla.
Límites de los datos de un pasaporte
Los datos de un pasaporte tienen un tamaño limitado. Una creación, una actualización o una propuesta que dejara los datos por encima de uno de esos límites se rechaza con un 422 validation_failed. El endpoint de validación responde con el mismo 422 cuando nuestra comprobación detecta que los datos superan un límite. Cerca del límite en bytes, la base de datos aún puede rechazar los datos al guardar, aunque esa comprobación los haya aceptado. Un único problema dentro de error.details.issues nombra la regla. Una fila de importación masiva que hiciera lo mismo falla con field_wrong_shape. El mismo problema figura dentro de error.detail.issues de la fila. Cada problema lleva source.pointer, rule, limit y received. Base su código en la regla, nunca en el mensaje.
source.pointer indica el campo de nivel superior que contiene el problema, tal como quedaría el pasaporte después de su cambio. En una actualización, una propuesta o una solicitud al endpoint de validación puede ser un campo que usted no envió. El JSON Pointer empieza en /data en una creación, una actualización y una solicitud al endpoint de validación, y en /fields en una propuesta. En una fila de importación masiva empieza en /rows/<n>/data, donde n es el índice de la fila en la importación. Una regla que afecta a todo el pasaporte, como too_many_fields, apunta solo a ese comienzo.
received cuenta las entradas en list_too_long y too_many_entries, y los campos de nivel superior en too_many_fields. En data_too_large es un tamaño en bytes. Cuando la base de datos detecta ese exceso, cuenta el texto JSON almacenado, que puede ser algo mayor que el JSON que usted envió. En number_out_of_range, limit y received valen null, porque la respuesta nunca repite el número.
list_too_long
Una lista de los datos del pasaporte contiene más de 500 entradas. Una lista cuenta esté donde esté, incluso dentro de otra lista o dentro de un objeto.
Cómo corregirloReduzca a 500 entradas o menos la lista más larga del campo que indica source.pointer. Un PATCH sustituye una lista entera, así que envíe la lista acortada.
La API devuelve"limit": 500
too_many_entries
Las listas de los datos del pasaporte contienen juntas más de 5000 entradas. Cada lista cuenta, incluidas las listas dentro de otras listas.
Cómo corregirloElimine entradas hasta que las listas contengan 5000 o menos en total. source.pointer indica el campo con más entradas.
La API devuelve"limit": 5000
data_too_large
Los datos del pasaporte ocupan más de 262.144 bytes como texto JSON. Los bytes se cuentan en UTF-8, así que un carácter puede ocupar hasta cuatro.
Cómo corregirloAcorte el texto del campo más grande, el que indica source.pointer, o elimine los valores que el pasaporte no necesita.
La API devuelve"limit": 262144
number_out_of_range
Un número de los datos del pasaporte está fuera del rango que acepta el pasaporte. El cero se acepta. Cualquier otro número debe ser, en valor absoluto, al menos 1e-30 y menor que 1e30.
Cómo corregirloLocalice el número en el campo que indica source.pointer y envíe uno dentro de ese rango.
La API devuelve"limit": null
too_many_fields
Los datos del pasaporte tienen más de 1000 campos de nivel superior.
Cómo corregirloElimine los campos de nivel superior que el pasaporte no necesita. El esquema de categoría enumera los campos que define una categoría.
La API devuelve"limit": 1000
Avisos
Un aviso no es un rechazo. Llega junto a un 200, en una llamada que salió bien, y señala algo que conviene atender.
environmental_claim_detected
200El pasaporte contiene afirmaciones medioambientales, detectadas en su redacción o en campos que la marca ha señalado como información medioambiental. La publicación salió bien y el pasaporte está en línea. Desde el 27 de septiembre de 2026, la Directiva (UE) 2024/825 exige que el comerciante que introduce el producto en el mercado disponga de justificación para esas afirmaciones.