Aller au contenu

Erreurs

Erreurs

Chaque échec porte un code stable. Aiguillez-vous sur le code et jamais sur le message : la formulation peut changer à tout moment, le code non.

Les chemins, les méthodes, les portées, les noms de champs, les codes d'erreur et les noms des règles de validation sont publiés en anglais, car l'anglais est la langue de l'interface elle-même : c'est ce qu'un appelant saisit ou compare. Il en va de même de chaque exemple de code, de chaque charge utile JSON et de la phrase exacte que porte une réponse d'erreur : /v1 ne lit pas Accept-Language, et traduire ce que l'API envoie réellement en donnerait une description fausse. Tout ce qui est écrit à leur sujet suit la langue de cette page.

L'enveloppe d'erreur

Toute réponse hors 2xx a la même forme. documentation_url pointe directement vers l'entrée correspondante ci-dessous, et request_id est la valeur à citer dans une demande d'assistance. details porte un contexte lisible par machine — pour un corps refusé, ce sont les issues, chacune un JSON Pointer vers le champ en cause.

Réponse
{
  "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" }
      ]
    }
  }
}

Codes

Chaque code est lié depuis la réponse qui le porte : on arrive donc le plus souvent sur cette page directement à l'entrée recherchée.

invalid_key

401

Aucune clé active ne correspond à la valeur transmise. Vérifiez qu'elle a été copiée en entier, sans espace ni retour à la ligne.

Réponse de l’APIThe API key provided is not valid.

N'importe quel point de terminaison peut le renvoyer.

key_revoked

401

La clé a bien existé, mais elle a été révoquée : elle n'ouvre plus rien et ne peut pas être réactivée. Il faut en créer une nouvelle.

Réponse de l’APIThis API key has been revoked.

N'importe quel point de terminaison peut le renvoyer.

key_expired

401

La clé a dépassé la date d'expiration fixée à sa création. Remplacez-la par une clé neuve.

Réponse de l’APIThis API key has expired.

N'importe quel point de terminaison peut le renvoyer.

key_rotated

401

La clé a été remplacée lors d'une rotation, et la fenêtre pendant laquelle l'ancienne restait acceptée est close. Passez à la clé issue de la rotation.

Réponse de l’APIThis API key was replaced by a rotation and its overlap window has closed.

N'importe quel point de terminaison peut le renvoyer.

mode_mismatch

400

Le préfixe de la clé ne correspond pas à l'identifiant présenté : une clé de test a servi là où une clé de direct était attendue, ou l'inverse.

Réponse de l’APIThe key prefix does not match the credential. Check whether you meant a test or a live key.

N'importe quel point de terminaison peut le renvoyer.

insufficient_scope

403

La clé est valide mais ne porte pas la portée qu'exige cette opération. Les portées sont figées à la création d'une clé : il en faut une qui porte la bonne.

Réponse de l’APIThis credential does not carry the scope required for this operation.

Quels points de terminaison le renvoient

organization_not_found_or_not_granted

404

Aucune organisation ne correspond, ou cette clé n'a aucune autorisation sur celle-ci. Une autorisation prend fin quand quelqu'un la révoque ou quand la collaboration de l'organisation avec son partenaire se termine ; l'organisation disparaît alors de GET /organizations.

Réponse de l’APINo such organization.

Quels points de terminaison le renvoient

resource_not_found

404

Rien ne correspond à l'identifiant demandé dans l'organisation visée.

Réponse de l’APINo such resource.

Quels points de terminaison le renvoient

wildcard_not_supported

400

Le joker d'organisation « - » est réservé pour un usage à venir et n'est pas encore pris en charge. Nommez explicitement l'organisation.

Réponse de l’APIThe "-" organization wildcard is reserved and not yet supported.

Quels points de terminaison le renvoient

invalid_request

400

La requête ne peut pas être interprétée telle qu'elle est formulée : forme, type ou combinaison de paramètres incompatible avec l'opération demandée.

Réponse de l’APIThe request could not be understood.

N'importe quel point de terminaison peut le renvoyer.

method_not_allowed

405

Le point de terminaison existe mais ne répond pas à cette méthode HTTP. L'en-tête Allow du refus énumère celles auxquelles il répond.

Réponse de l’APIThis endpoint does not support that HTTP method. The Allow header lists the ones it does.

payload_too_large

413

Le corps de la requête dépasse ce que ce point de terminaison accepte. details.limit_bytes indique le plafond appliqué.

Réponse de l’APIThe request body is larger than this endpoint accepts.

N'importe quel point de terminaison peut le renvoyer.

already_exists

409

Une ressource portant cet identifiant existe déjà. Ce n'est pas un conflit d'idempotence : renvoyer une clé neuve n'y changera rien, il faut se réconcilier avec la ressource existante.

Réponse de l’APIA resource with this identifier already exists.

Quels points de terminaison le renvoient

gtin_in_use

409

Ce GTIN appartient à un autre passeport. details indique passport, product_name et role (lead ou variant). Utilisez ce passeport ou un autre GTIN.

Réponse de l’APIThis GTIN belongs to another passport. Use that passport or choose a different GTIN.

Quels points de terminaison le renvoient

variant_limit_reached

422

Ce passeport a atteint sa limite de variantes. details contient limit, current et requested. Créez un second passeport pour en ajouter. Cette limite ne dépend pas de l’offre.

Réponse de l’APIThis passport has reached its variant limit. Create a second passport to add more.

Quels points de terminaison le renvoient

variant_review_required

409

Ce passeport contient des tailles et couleurs saisies par un assistant. Une personne les vérifie d’abord : lisez GET …/variants/review, puis publiez avec son empreinte. details contient agent_written_count et l’URL de la vérification.

Réponse de l’APIThis passport carries sizes and colours an assistant wrote. A person reviews them first: read the review, then publish with its fingerprint.

Quels points de terminaison le renvoient

variant_review_changed

409

Les tailles et couleurs ont changé après la vérification que désigne cette empreinte. Relisez la vérification et publiez avec son empreinte actuelle. details contient agent_written_count.

Réponse de l’APIThe sizes and colours changed after the review this fingerprint names. Read the review again and publish with its current fingerprint.

Quels points de terminaison le renvoient

precondition_failed

412

La ressource a changé — soit depuis la version que vous avez indiquée, soit pendant le traitement de votre requête. Le current_version que nous indiquons est la version que nous avons lue, pas nécessairement celle désormais enregistrée : relisez le passeport plutôt que de calculer à partir de là.

Réponse de l’APIThe resource changed since the version you supplied.

Quels points de terminaison le renvoient

resource_busy

409

Une autre requête est en train de modifier cette ressource. Attendez le délai indiqué par l'en-tête Retry-After, puis réessayez.

Réponse de l’APIAnother request is modifying this resource. Wait for the Retry-After header, then retry.

Quels points de terminaison le renvoient

cursor_invalid

400

Le curseur de pagination est illisible, expiré, ou il a été envoyé avec d'autres filtres que ceux sous lesquels il avait été émis. Reprenez la pagination à la première page.

Réponse de l’APIThe pagination cursor is invalid, expired, or was sent with different filters.

Quels points de terminaison le renvoient

gtin_required

422

Le passeport ne porte pas de GTIN, et un GTIN est exigé avant toute publication. Renseignez-le, puis publiez.

Réponse de l’APIA GTIN is required before this passport can be published.

Quels points de terminaison le renvoient

wrong_status

409

Le statut actuel du passeport n'autorise pas cette opération. Relisez le passeport pour connaître son statut avant de réessayer.

Réponse de l’APIThe passport is not in a status that allows this operation.

Quels points de terminaison le renvoient

not_trashed

409

Seul un passeport mis à la corbeille peut être restauré, et celui-ci ne l'est pas.

Réponse de l’APIOnly a trashed passport can be restored.

Quels points de terminaison le renvoient

publish_limit_reached

402

L'organisation a consommé tous les emplacements de publication que son offre autorise. Dépubliez un passeport ou changez d'offre.

Réponse de l’APIThis organization has used every publish slot its plan allows.

Quels points de terminaison le renvoient

unit_limit_reached

402

Le nombre d'unités rattachées à ce passeport dépasse ce que l'offre autorise.

Réponse de l’APIThis passport carries more units than the plan allows.

Quels points de terminaison le renvoient

document_missing

422

Un champ obligatoire n'était satisfait que par un document qui n'est plus rattaché au passeport. Rattachez-le de nouveau, ou renseignez le champ autrement.

Réponse de l’APIA required field is satisfied only by a document that is no longer attached.

Quels points de terminaison le renvoient

document_feeds_extraction

409

Ce document est la trace de l'origine des valeurs d'un passeport ; il reste donc tant que ce passeport existe. Rien n'a été détaché.

Réponse de l’APIThis document is the record of where a passport’s values came from, so it stays while that passport exists. Nothing was detached.

Quels points de terminaison le renvoient

document_feeds_reading

409

Ce document étaye des valeurs de batterie enregistrées et ne peut pas être supprimé tant que ces enregistrements existent. Ouvrez le modèle de batterie pour les consulter.

Réponse de l’APIThis 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

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

invalid_observed_on

400

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

invalid_source

400

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

invalid_field

400

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

invalid_note

400

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

invalid_value

400

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

invalid_document_id

400

Le corps de la requête est bien formé mais ne satisfait pas le schéma. Les champs en cause sont nommés un à un dans details.

Réponse de l’APIThe request body failed validation.

Quels points de terminaison le renvoient

unit_status_required

400

Cette batterie a déjà un statut. Choisissez un statut au lieu de l’effacer.

Réponse de l’APIThis battery already has a status. Choose a status instead of clearing it.

Quels points de terminaison le renvoient

unit_status_transition_forbidden

409

Une batterie ne peut pas revenir à Original après un autre statut, ni changer de statut après Déchet.

Réponse de l’APIThis battery’s status cannot return to Original or change after Waste.

Quels points de terminaison le renvoient

unit_status_history_conflict

409

Ce statut serait incompatible avec l’historique enregistré de la batterie. Vérifiez la date et le statut.

Réponse de l’APIThis status would conflict with the battery’s recorded history. Check the date and status.

Quels points de terminaison le renvoient

unit_reading_document_unavailable

400

Rien ne correspond à l'identifiant demandé dans l'organisation visée.

Réponse de l’APINo such resource.

Quels points de terminaison le renvoient

delegation_required

403

Le dépôt exige une délégation active, vérifiée auprès du portail de l'État au moment même de l'appel. Aucune délégation valable n'a été trouvée.

Réponse de l’APIFiling requires an active delegation, verified against the portal at call time.

Quels points de terminaison le renvoient

attestation_required

403

L'opération exige une attestation acceptée nommément par une personne de la marque. Aucune attestation de ce type n'est enregistrée.

Réponse de l’APIThis operation requires an attestation accepted by a named person at the brand.

Quels points de terminaison le renvoient

test_mode_refused

403

Des identifiants de test ne peuvent pas exécuter cette opération : elle exige une clé de direct.

Réponse de l’APITest-mode credentials cannot perform this operation.

Quels points de terminaison le renvoient

human_approval_required

202

Le connecteur a demandé une publication. Une personne de l'organisation doit l'approuver, et rien n'a été publié.

Réponse de l’APIA 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

Le connecteur d'agent ne peut modifier qu'un brouillon. Un passeport que le public voit déjà exige une personne.

Réponse de l’APIThis 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`.

Quels points de terminaison le renvoient

unit_status_not_allowed

422

Choisissez l’un des cinq statuts de batterie autorisés indiqués dans les détails.

Réponse de l’APIChoose one of the five permitted battery statuses in `details.allowed`, or leave the status empty.

portal_unavailable

502

Le portail français n'a pas répondu à temps. Votre déclaration a pu être enregistrée ou non. Renvoyez la requête avec une nouvelle Idempotency-Key — rien n'est déclaré deux fois. Réutiliser la même clé ne fait que renvoyer cette erreur.

Réponse de l’APIThe 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.

Quels points de terminaison le renvoient

storage_unavailable

503

Nous n'avons pas pu confirmer que les fichiers téléversés se trouvent bien dans le stockage ; rien n'a donc été publié. Votre requête n'a rien d'incorrect — réessayez après le délai indiqué par l'en-tête Retry-After.

Réponse de l’APIWe 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.

Quels points de terminaison le renvoient

entitlement_unavailable

503

Nous n'avons pas pu confirmer les droits de cette organisation ; rien n'a donc été déposé. Ce n'est pas un constat sur l'abonnement — réessayez après le délai indiqué par l'en-tête Retry-After.

Réponse de l’APIWe 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.

Quels points de terminaison le renvoient

scope_exceeds_key

422

L'autorisation demandée inclut une portée que la clé ne détient pas sur sa propre organisation. Une clé ne reçoit jamais, pour un client, davantage que ce qu'elle détient elle-même.

Réponse de l’APIA grant cannot carry a scope the key does not hold on its own organization

Quels points de terminaison le renvoient

france_mandate_required

403

La portée filings:write ne peut pas encore être accordée pour ce client. Une personne de votre organisation doit d'abord confirmer, dans l'espace de travail du client, que vous détenez son autorisation écrite de déposer en France.

Réponse de l’APIfilings:write needs the client's written authorisation, affirmed in its workspace, before it can be granted

Quels points de terminaison le renvoient

grantor_not_seated

403

La personne qui a créé la clé appelante n'occupe plus de siège dans l'espace de travail de ce client : nul ne peut donc être enregistré comme ayant accordé l'autorisation. Créez une nouvelle clé dans les paramètres.

Réponse de l’APIThe person who created this key no longer holds a seat in this organization

Quels points de terminaison le renvoient

key_not_grantable

409

La clé indiquée dans key_id est révoquée, expirée, en cours de remplacement, ou il s'agit de la connexion d'un assistant. Aucune clé dans l'un de ces cas ne peut recevoir d'autorisation.

Réponse de l’APIThis key cannot be granted: it is revoked, expired, being replaced, or an assistant connection

Quels points de terminaison le renvoient

grant_conflict

409

La clé dispose déjà ici d'une autorisation avec d'autres portées. Révoquez cette autorisation, puis accordez-en une nouvelle avec les portées voulues.

Réponse de l’APIThis key already holds a grant here with different scopes; revoke it, then grant again

Quels points de terminaison le renvoient

rate_limited

429

Trop de requêtes sur la fenêtre en cours. Attendez le délai indiqué par Retry-After plutôt que de réessayer aussitôt.

Réponse de l’APIToo many requests in a short time. Wait a moment, then try again.

N'importe quel point de terminaison peut le renvoyer.

internal_error

500

Quelque chose a échoué de notre côté. Votre requête était recevable : reprenez-la avec une nouvelle Idempotency-Key.

Réponse de l’APISomething went wrong on our side.

N'importe quel point de terminaison peut le renvoyer.

configuration_error

500

Le service est mal configuré de notre côté. Votre requête n'est pas en cause, et la réessayer à l'identique ne changera rien tant que nous n'avons pas corrigé.

Réponse de l’APIThe service is misconfigured. This is not a problem with your request.

N'importe quel point de terminaison peut le renvoyer.

Refus de l’application PassportCraft

L’application connectée appelle ses propres routes, et ces routes refusent avec les codes ci-dessous. Ils ne font pas partie du contrat /v1 et peuvent changer à tout moment. Ils figurent ici pour qu’un message affiché dans l’application, ou un article d’aide, ait un endroit vers lequel pointer.

billing_managed_by_partner

Le partenaire de l’espace de travail gère sa facturation. Le paiement, le portail de facturation et les changements de plan sont tous refusés avec ce code.

Réponse de l’APIBilling for this workspace is managed by the partner that pays for it

partner_role_fixed

Cette personne travaille pour le partenaire de l’espace de travail. Son rôle ici suit son rôle chez le partenaire et ne peut pas être modifié ; un propriétaire ou un administrateur peut la retirer.

Réponse de l’APIA partner member's role follows their role at the partner

home_members_only

Seuls le propriétaire ou les administrateurs de l’espace de travail lui-même peuvent faire cela, par exemple accepter, refuser ou arrêter un partenaire. Le personnel d’un partenaire ne le peut pas, quel que soit son rôle. Il ne peut renouveler une clé que si le personnel de son partenaire l’a créée dans cet espace de travail et si elle agit uniquement sur cet espace de travail.

Réponse de l’APIOnly the workspace's own owner or administrator can do this

client_already_linked

Cet espace de travail a déjà un partenaire, ou une demande de partenaire à laquelle il n’a pas encore répondu.

Réponse de l’APIThis workspace already has a partner, or a request it has not answered

partner_chain_not_allowed

Cet espace de travail gère déjà des clients ou est déjà géré par un partenaire. Une organisation peut être soit un partenaire, soit le client d’un partenaire, jamais les deux. Cette collaboration ne peut donc pas commencer.

Réponse de l’APIAn organization can manage clients or be managed by a partner, not both

not_a_partner

L’organisation nommée dans X-Organization ne gère aucun client.

Réponse de l’APIThis organization does not manage clients

partner_staff_only

Seul le personnel du partenaire gestionnaire peut faire cela, par exemple confirmer l’autorisation écrite d’un client pour les déclarations françaises de coût environnemental.

Réponse de l’APIOnly the partner's staff can do this

same_organization

Une organisation ne peut pas se gérer elle-même.

Réponse de l’APIAn organization cannot manage itself

organization_not_found

Aucun espace de travail ne correspond à l’adresse ou à l’e-mail donné.

Réponse de l’APIOrganization not found

organization_header_required

La requête n’a pas nommé d’espace de travail. Envoyez le slug de l’espace de travail dans l’en-tête X-Organization.

Réponse de l’APIThe X-Organization header is required

organization_not_a_member

La personne connectée n’est pas membre de l’espace de travail nommé dans X-Organization.

Réponse de l’APINot a member of this organization

continuity_pending

Le plan payé par le partenaire est encore en cours. La facturation de cet espace de travail change à la date jusqu’à laquelle il a été payé.

Réponse de l’APIThe current plan runs to the date it was paid to; billing for this workspace changes after that

partner_terms_missing

Aucune condition de facturation n’est encore enregistrée pour ce partenaire, donc aucun plan ne peut être ouvert sur son compte.

Réponse de l’APIThis partner has no billing terms recorded

partner_customer_missing

Le partenaire n’a pas encore de compte de paiement.

Réponse de l’APIThis partner has no payment account yet

partner_card_missing

Le partenaire n’a aucun moyen de paiement enregistré. Il en ajoute un sur sa propre page Facturation.

Réponse de l’APIThis partner organization has no payment method on file

client_already_subscribed

Cet espace de travail paie déjà son propre abonnement.

Réponse de l’APIThis workspace already has its own subscription

plan_below_current

Le plan choisi est plus petit que celui sur lequel se trouve actuellement cet espace de travail.

Réponse de l’APIThat plan is smaller than the one this workspace is on

continuity_not_available

Il n’y a aucune période payée par un ancien partenaire à poursuivre pour cet espace de travail.

Réponse de l’APIThere is nothing to continue on this workspace

yearly_not_accepted

Un plan annuel sur le compte d’un partenaire nécessite d’abord l’acceptation écrite du partenaire pour l’engagement annuel.

Réponse de l’APIThis partner has not accepted the annual term in writing; record it before opening a yearly plan

stripe_refused

Le prestataire de paiement a refusé la demande.

Réponse de l’APIStripe refused the request

payment_pending

Le résultat du paiement n’est pas encore connu. Vérifiez le statut de la demande existante ; ne créez pas un autre client et n’envoyez pas un autre paiement.

Réponse de l’APIThe payment result is not yet known. Check its status before starting another payment.

price_changed

Le prix confirmé diffère du dernier aperçu. Vérifiez le prix actualisé avant de renvoyer la demande. Aucun client n’a été créé.

Réponse de l’APIThe price changed. Review the current amount before creating the client.

price_unavailable

L’aperçu du prix est indisponible. Réessayez de le charger avant de créer le client. Aucun client n’a été créé.

Réponse de l’APIThe price is unavailable. No client was created. Try the review again later.

price_changed_after_create

Le client a été créé avec le forfait gratuit. Le prix a changé et la tentative de paiement non réglée a été clôturée en toute sécurité. Contactez l’assistance pour activer son forfait ; ne créez pas le client à nouveau.

Réponse de l’APIThe client was added on Free. The reviewed payment did not proceed. Contact support to activate the plan.

creation_token_invalid

Cette vérification ne correspond pas à l’utilisateur, à l’espace de travail ou aux informations du client. Vérifiez à nouveau les bonnes informations. Si une demande de création a déjà été envoyée et que son résultat est inconnu, contactez l’assistance au lieu de recommencer.

Réponse de l’APIThis creation review is invalid. If creation has already started, check its status or contact support.

creation_token_expired

L’autorisation de création a expiré. Vérifiez d’abord toute demande de création existante ; si aucune n’a été envoyée, vérifiez à nouveau le paiement.

Réponse de l’APIThis creation review expired. Check any existing operation before reviewing a new creation.

creation_operation_expired

Le statut conservé de cette demande de création n’est plus disponible. Contactez l’assistance avant toute autre action ; ne créez pas le client à nouveau.

Réponse de l’APIThis operation status is no longer available. Contact support before creating another client.

creation_conflict

Cette demande de création est déjà associée à d’autres informations. Vérifiez la demande d’origine ou contactez l’assistance ; ne lancez pas une nouvelle création.

Réponse de l’APIThis operation belongs to different creation details. Check the original operation or contact support.

creation_unavailable

La vérification avant création est indisponible. Réessayez plus tard. Si le résultat d’une demande de création est inconnu, vérifiez son statut au lieu de la renvoyer.

Réponse de l’APICreation review is unavailable. Try again later; check the status of any creation already started.

client_not_managed

L’organisation nommée n’est pas un client géré par votre organisation.

Réponse de l’APIThat organization is not a client your organization manages

keys_admin_partner_only

keys:admin ne peut être donné qu’à une clé appartenant à une organisation qui gère des clients.

Réponse de l’APIkeys:admin can only be granted on the own keys of an organization that manages clients

grant_not_found

Aucune clé d’une autre organisation ne détient d’accès à cet espace de travail sous cet identifiant.

Réponse de l’APINo key from another organization holds a grant here under that id

Règles de validation

Ce sont les règles que le contenu du passeport lui-même peut enfreindre, dans toutes les catégories. Un nom de règle vous parvient à trois endroits : sous error.details.issues dans une 422, sous issues dans la 200 du point de terminaison de validation, et sous error.detail.issues sur une ligne d'import en masse. La création, la mise à jour et l'import ne refusent une valeur dans data que pour les deux marquées comme refusées à l'enregistrement — la création renvoie en plus required pour une catégorie qu'elle ne prend pas en charge. Les autres proviennent de la publication ou du point de terminaison de validation. La publication renvoie la liste complète, avertissements compris, et nomme donc aussi des règles qui n'ont pas causé le refus. Basez votre code sur la règle, jamais sur le message.

required

empêche la publication

Le champ est obligatoire pour cette catégorie et il est arrivé vide, absent ou sous forme de liste vide. Créer un passeport sous une catégorie que nous ne prenons pas en charge renvoie aussi cette règle, sur le JSON Pointer /category.

Comment corrigerEnvoyez une valeur. Un champ url qui documente un fichier est également satisfait si vous joignez ce document à la place.

type_array

empêche la publicationrefusé aussi à l'enregistrement

Le champ contient une liste, et la valeur n'en était pas une — le plus souvent une liste envoyée sous forme de chaîne JSON.

Comment corrigerEnvoyez un véritable tableau JSON, et non une chaîne qui en contient un.

type_array_items

empêche la publicationrefusé aussi à l'enregistrement

Le champ contient une liste de valeurs textuelles simples, et au moins une entrée était un objet, un nombre ou un booléen.

Comment corrigerEnvoyez chaque entrée sous forme de chaîne. Le champ porte item_type dans le schéma de catégorie lorsqu'il l'exige.

type_number

empêche la publication

Le champ contient un nombre, et la valeur n'en était pas un — le plus souvent un nombre envoyé sous forme de chaîne.

Comment corrigerEnvoyez un nombre JSON, sans guillemets.

type_text

empêche la publication

Le champ contient du texte, et la valeur n'en était pas — le plus souvent un nombre, un booléen ou une liste envoyés pour un champ que le schéma de catégorie déclare comme texte, ou pour un champ à choix qui accepte aussi une réponse libre.

Comment corrigerEnvoyez la valeur sous forme de chaîne JSON. Consultez type sur le champ dans le schéma de catégorie. Un select qui propose une option other accepte lui aussi une réponse libre sous forme de chaîne.

number_min

empêche la publication

La valeur est inférieure au plus petit nombre que le champ accepte.

Comment corrigerLisez min sur le champ dans le schéma de catégorie, puis envoyez une valeur égale ou supérieure.

number_max

empêche la publication

La valeur est supérieure au plus grand nombre que le champ accepte.

Comment corrigerLisez max sur le champ dans le schéma de catégorie, puis envoyez une valeur égale ou inférieure.

format_date

empêche la publication

La valeur n'est pas une date ISO 8601 valide. Une date qui n'existe pas, comme 2025-02-30, est refusée ici.

Comment corrigerEnvoyez YYYY-MM-DD, ou un horodatage ISO 8601 en UTC, terminé par Z. Un décalage qui place l'horodatage sur une autre date est refusé.

format_url

empêche la publication

La valeur n'est pas une URL valide.

Comment corrigerEnvoyez une URL absolue en https:// ou http://.

invalid_option

empêche la publication

Le champ accepte un ensemble fixe de valeurs, et la valeur n'en faisait pas partie. Un champ qui propose une option other fait exception : il enregistre du texte libre à la place.

Comment corrigerLisez options sur le champ dans le schéma de catégorie, puis envoyez une des entrées value qui y figurent.

format_gtin

empêche la publication

Le GTIN n'est pas un vrai : il est arrivé sous forme de chaîne vide, contient des caractères qui ne sont pas des chiffres, n'a pas la bonne longueur, a une clé de contrôle qui ne correspond pas, ou est un exemple de documentation.

Comment corrigerEnvoyez un GTIN-8, GTIN-12, GTIN-13 ou GTIN-14 que GS1 vous a attribué. Le message précise quel problème se pose.

format_eori

empêche la publication

Le numéro EORI ne correspond pas au format que le champ accepte.

Comment corrigerEnvoyez deux lettres majuscules de pays, puis 1 à 15 lettres majuscules ou chiffres. Les minuscules sont refusées.

format_country_code

empêche la publication

Le pays ne tient pas en deux lettres majuscules. Un code écrit en minuscules est refusé : de au lieu de DE.

Comment corrigerEnvoyez un code ISO 3166-1 alpha-2 en majuscules, par exemple DE.

format_commodity_code

avertissement

Le code marchandise ne correspond pas au format SH, NC ou TARIC.

Comment corrigerEnvoyez 6, 8 ou 10 chiffres. Vous pouvez aussi publier le passeport avec la valeur telle quelle.

format_email

empêche la publication

La valeur n'est pas une adresse e-mail valide.

Comment corrigerEnvoyez une adresse complète.

category_exists

empêche la publication

Le passeport nomme une catégorie de produit que cette API ne prend pas en charge.

Comment corrigerEnvoyer une autre catégorie ne corrige pas ce cas : le passeport enregistré nomme une catégorie que nous ne prenons plus en charge. Recréez-le sous une catégorie renvoyée par le point de terminaison qui liste les catégories.

Trois autres choses portent un nom de règle. Une catégorie de produit ajoute ses propres règles, qui lisent plusieurs champs ensemble — par exemple des pourcentages de matières dont la somme doit faire 100. Un point de terminaison signale de la même manière un problème dans la requête elle-même, sous des noms comme not_writable. Et le contrôle de publication réutilise required pour une valeur dont la publication a besoin, par exemple un GTIN, sur un champ que la catégorie elle-même n'exige pas. Dans chaque cas, le message de la réponse explique la règle.

Avertissements

Un avertissement n'est pas un refus. Il accompagne une réponse 200, sur un appel qui a réussi, et signale un point qui mérite une action.

environmental_claim_detected

200

Le passeport contient des allégations environnementales, relevées dans sa formulation ou dans des champs que la marque a signalés comme informations environnementales. La publication a réussi et le passeport est en ligne. À partir du 27 septembre 2026, la directive (UE) 2024/825 impose au professionnel qui met le produit sur le marché de disposer d'éléments justifiant de telles allégations.