Ir al contenido

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.

Respuesta
{
  "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

401

La clave de API indicada no es válida.

La API devuelveThe API key provided is not valid.

Cualquier endpoint puede devolverlo.

key_revoked

401

Esta clave de API ha sido revocada.

La API devuelveThis API key has been revoked.

Cualquier endpoint puede devolverlo.

key_expired

401

Esta clave de API ha caducado.

La API devuelveThis API key has expired.

Cualquier endpoint puede devolverlo.

key_rotated

401

Esta 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

400

El 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

403

Esta 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

organization_not_found_or_not_granted

404

No 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

resource_not_found

404

No existe ese recurso.

La API devuelveNo such resource.

Qué endpoints lo devuelven

wildcard_not_supported

400

El 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

invalid_request

400

No se ha podido interpretar la solicitud.

La API devuelveThe request could not be understood.

Cualquier endpoint puede devolverlo.

method_not_allowed

405

El 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

413

El 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.

already_exists

409

Ya existe un recurso con este identificador.

La API devuelveA resource with this identifier already exists.

Qué endpoints lo devuelven

gtin_in_use

409

Este 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.

Qué endpoints lo devuelven

variant_limit_reached

422

Este 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

409

Este 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

409

Las 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

412

El 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.

Qué endpoints lo devuelven

resource_busy

409

Otra 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

gtin_required

422

Hace falta un GTIN antes de poder publicar este pasaporte.

La API devuelveA GTIN is required before this passport can be published.

Qué endpoints lo devuelven

not_trashed

409

Solo 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

402

Esta 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

402

Este pasaporte lleva más unidades de las que permite el plan.

La API devuelveThis passport carries more units than the plan allows.

Qué endpoints lo devuelven

document_missing

422

Un 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

409

Este 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

409

Este 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

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

invalid_observed_on

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

invalid_source

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

invalid_field

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

invalid_note

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

invalid_value

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

invalid_document_id

400

El cuerpo de la solicitud no superó la validación.

La API devuelveThe request body failed validation.

Qué endpoints lo devuelven

unit_status_required

400

Esta 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

409

Una 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

409

Este 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

unit_reading_document_unavailable

400

No existe ese recurso.

La API devuelveNo such resource.

Qué endpoints lo devuelven

delegation_required

403

La 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

403

Esta 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

403

Las credenciales de modo de prueba no pueden realizar esta operación.

La API devuelveTest-mode credentials cannot perform this operation.

Qué endpoints lo devuelven

human_approval_required

202

El 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

409

El conector de agente solo puede modificar un borrador. Un pasaporte que el público ya ve requiere una persona.

La API devuelveThis product is already visible to the public, so an assistant cannot change it. A person has to make the change — give them the editor link in `details.review_url`.

Qué endpoints lo devuelven

unit_status_not_allowed

422

Elija 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.

portal_unavailable

502

El portal francés no respondió a tiempo. Su declaración puede haberse registrado o no. Vuelva a enviar la petición con una nueva Idempotency-Key: nada se declara dos veces. Reutilizar la misma clave solo devuelve este mismo error.

La API devuelveThe French affichage portal did not answer. If the declaration had already been sent, it may still have been recorded — check the passport before filing it again.

Qué endpoints lo devuelven

storage_unavailable

503

No hemos podido confirmar si los archivos subidos están en el almacenamiento, así que no se ha publicado nada. Su petición no tiene ningún error: vuelva a intentarlo tras el tiempo indicado en la cabecera Retry-After.

La API devuelveWe could not confirm whether the uploaded files are in storage, so nothing was published. Nothing is wrong with your request — retry after the delay in the Retry-After header.

Qué endpoints lo devuelven

entitlement_unavailable

503

No hemos podido confirmar los derechos de esta organización, así que no se ha presentado nada. No es una afirmación sobre el plan: vuelva a intentarlo tras el tiempo indicado en la cabecera Retry-After.

La API devuelveWe could not confirm this organization’s entitlement, so nothing was filed. This is not a statement about the plan — retry after the delay in the Retry-After header.

Qué endpoints lo devuelven

scope_exceeds_key

422

La 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

403

Todaví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

403

La 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

409

La 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

409

La 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

rate_limited

429

Demasiadas solicitudes.

La API devuelveToo many requests in a short time. Wait a moment, then try again.

Cualquier endpoint puede devolverlo.

internal_error

500

Algo ha fallado por nuestra parte.

La API devuelveSomething went wrong on our side.

Cualquier endpoint puede devolverlo.

configuration_error

500

El 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. Su rol aquí sigue su rol en el partner y no se puede cambiar; un propietario o administrador puede eliminarla.

La API devuelveA partner member's role follows their role at the partner

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

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 anual en la cuenta de un partner necesita primero que el partner acepte por escrito el plazo anual.

La API devuelveThis partner has not accepted the annual term in writing; record it before opening a yearly 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_unavailable

La vista previa del precio no está disponible. Vuelva a cargarla antes de crear al cliente. No se ha creado ningún cliente.

La API devuelveThe price is unavailable. No client was created. Try the review again later.

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.

creation_unavailable

La revisión previa a la creación no está disponible. Inténtelo más tarde. Si desconoce el resultado de una solicitud de creación, compruebe su estado en lugar de enviarla de nuevo.

La API devuelveCreation review is unavailable. Try again later; check the status of any creation already started.

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

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ón

El 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 guardar

El 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 guardar

El 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ón

El 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ón

El 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ón

El 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ón

El 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ón

El 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ón

El valor no es una URL válida.

Cómo corregirloEnvíe una URL absoluta con https:// o http://.

invalid_option

impide la publicación

El 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ón

El 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ón

El 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ón

El 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

aviso

El 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ón

El 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ón

El 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.

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

200

El 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.