Passer au contenu principal

[Order Intake - GCW] Documentation de l'API de gestion des commandes

T
Écrit par Toby Dawson
Mis à jour il y a plus de 2 semaines

Introduction

Bienvenue dans la documentation de l'API de gestion des commandes. Cette API vous permet de soumettre des commandes, d'annuler des commandes, de récupérer les détails des commandes, de rechercher des commandes et de mettre à jour les adresses ou méthodes d'expédition dans le système GelatoConnect. L'API est organisée selon les principes REST et utilise des méthodes HTTPS standard pour interagir avec les ressources. Toutes les réponses sont renvoyées au format JSON, y compris les erreurs.

Authentification

Toutes les requêtes de l’API de gestion des commandes nécessitent une authentification à l’aide d’une clé API et d’un secret valides, fournis dans l’en-tête de chaque requête. Toutes les communications doivent passer par HTTPS ; les appels effectués via HTTP simple échoueront.

Méthode d’authentification

  1. Ajoutez l’en-tête X-API-KEY à votre requête

  2. Définissez la valeur en utilisant le format : key:secret

Exemple :

X-API-KEY: your-key:your-secret

Votre clé API et votre secret spécifiques vous seront fournis lors de la configuration d’un connecteur pour votre client.

Limites de taux

L'API impose des restrictions sur le nombre de requêtes qu'un utilisateur ou client peut effectuer dans une période spécifiée. Toutes les requêtes sont comptabilisées dans votre limite personnelle de 100 requêtes par seconde.

Pourquoi les limites de débit existent

Les limites de taux servent plusieurs objectifs importants :

  • Protection contre l'abus ou la mauvaise utilisation de l'API

  • Garantir un accès équitable pour tous les utilisateurs

  • Éviter les interruptions de service causées par un trafic trop important

Logique de nouvelle tentative pour les erreurs de limite de débit

Si vous dépassez la limite de débit de l'API, vous recevrez un code d'état 429. Pour minimiser l'impact sur vos charges de travail, mettez en œuvre ces techniques de nouvelle tentative :

  1. Réessayer : Relancez automatiquement les requêtes échouées. Implémentez une logique de nouvelle tentative dans le code de votre application pour tous les appels API.

  2. Repli exponentiel : Utilisez des temps d'attente progressivement plus longs entre les tentatives pour les réponses d'erreur consécutives. Mettez en place un intervalle de délai maximum et un nombre maximum de tentatives en fonction de l'opération effectuée.

  3. Gigue : Ajoutez un délai aléatoire avant de réessayer les requêtes pour éviter que tous les clients ne réessaient simultanément. Cela aide à répartir la charge et empêche les collisions successives.

Pour plus d'informations sur les stratégies de nouvelle tentative, voir :

Codes de réponse

L'API de gestion des commandes utilise des codes de réponse HTTP conventionnels pour indiquer le succès ou l'échec des requêtes :

  • 2xx Codes : Indiquent un succès

  • 4xx Codes : Indiquent des erreurs structurelles ou de données dans la requête (par exemple, paramètres obligatoires manquants, commande introuvable)

  • 5xx Codes : Indiquent des erreurs de serveur (ces erreurs sont rares)

Points de terminaison API

Soumettre la commande

Soumettez une commande en une seule demande.

Point de terminaison : POST /{submitOrderUrl}

L'URL de base et le point de terminaison spécifique seront fournis lors de la configuration du connecteur.

Format de la demande

{  "orderReferenceId": "test",  "orderType": "order",  "currency": "EUR",  "retailCurrency": "GBP",  "retailShippingPriceInclVat": 6.99,  "shipmentMethodUid": "normal,standard,fed_ex_2_day",  "shippingAddress": {    "country": "SE",    "firstName": "My first name",    "lastName": "My last name",    "addressLine1": "17",    "addressLine2": "Address 1",    "city": "City",    "postCode": "11111",    "state": "",    "email": "[email protected]",    "phone": "+47222222",    "companyName": "MyCompany"  },  "items": [    {      "itemReferenceId": "test1",      "productUid": "flat_product_pf_a4_pt_200-gsm-uncoated_cl_4-0_ct_none_prt_none_sft_none_set_none_hor",      "quantity": 1,      "retailPriceInclVat": 19.99,      "files": [        {          "type": "default",          "url": "https://www.example.com/path/to/printfile.pdf"        }      ]    }  ]}

Exemple de requête curl (cliquez ici)

curl --location --request POST 'https://api.partner-connect.io/api/your-partner-prefix/order' \--header 'Content-Type: application/json' \\--header 'X-API-KEY : votre-clé:votre-secret' \--data-raw '{"  "orderReferenceId": "test",  "orderType": "order",  "preventDuplicate": true,  "currency": "EUR",  "retailCurrency": "GBP",  "retailShippingPriceInclVat": 6.99,  "shipmentMethodUid": "normal,standard,fed_ex_2_day",  "shippingAddress": {    "country": "SE",    "firstName": "My first name",    "lastName": "My last name",    "addressLine1": "17",    "addressLine2": "Address 1",    "city": "City",    "postCode": "11111",    "state": "",    "email": "[email protected]",    "phone": "+47222222",    "companyName": "MyCompany"  },  "items": [    {      "itemReferenceId": "test1",      "productUid": "flat_product_pf_a4_pt_200-gsm-uncoated_cl_4-0_ct_none_prt_none_sft_none_set_none_hor",      "quantity": 1,      "retailPriceInclVat": 19.99,      "files": [        {          "type": "default",          "url": "https://www.example.com/path/to/printfile.pdf"        }      ]    }  ]}'

Principaux paramètres de demande

Paramètre

Type

Obligatoire

Description

identifiant de référence de commande

chaîne

Obligatoire

Votre identifiant de commande interne

type de commande

chaîne

Facultatif

Type of order: "order" (default) or "draft"

devise

chaîne de caractères

Obligatoire

Devise pour la commande (code ISO)

Devise de vente au détail

chaîne

Facultatif

Devise utilisée pour les prix de vente au détail (pour les commandes transfrontalières)

Prix de livraison au détail TTC

nombre

Facultatif

Prix de livraison hors TVA (même si le nom du paramètre laisse penser le contraire)

shipmentMethodUid

chaîne

Facultatif

Méthode(s) d'expédition à utiliser, peut être séparé par des virgules

adresse de livraison

objet

Obligatoire

Détails de l'adresse de livraison du client

articles

tableau

Requis

Liste des produits à commander

éviter les doublons

booléen

Facultatif

Si cette option est activée, la création de commandes en double avec le même orderReferenceId est empêchée. Si un doublon est détecté, un message d’erreur s’affichera au lieu de créer une nouvelle commande.

"packagingInstructions": [

tableau

Facultatif

Tableau d'objets d'instructions d'emballage

Paramètres de l'article

Paramètre

Type

Obligatoire

Description

itemReferenceId

chaîne de caractères

Obligatoire

Votre identifiant d'article interne

productUid

chaîne

Obligatoire*

Identifiant de produit GelatoConnect (vous devez renseigner soit le productUid, soit le nom du produit et sa variante)

Nom du produit

chaîne

Obligatoire*

Nom du produit client (*Soit productUid OU productName+productVariant est requis)

variante de produit

objet

Obligatoire*

Détails de la variante pour le produit client (obligatoire lorsque vous utilisez productName)

quantité

nombre

Requis

Nombre d’articles à commander

prixDeVenteInclTVA

nombre

Optionnel

Prix hors TVA (malgré le nom du paramètre)

fichiers

tableau

Requis

Liste des fichiers d'impression pour le produit

Bordure personnalisée

objet

Facultatif

Dimensions de bordure personnalisées pour le produit

Paramètres du fichier

Paramètre

Type

Obligatoire

Description

type

chaîne

Requis

Type de fichier. Retrouvez une liste d'options dans le tableau ci-dessous.

url

chaîne de caractères

Requis

URL accessible au public pour le fichier d'impression

Type de fichier

Paramètre

Description

par défaut

Le design est imprimé sur la zone principale du produit. Pour les vêtements, il s'agit de l'avant, tandis que pour les cartes pliées, il s'agit de la couverture et du dos.

Si vous fournissez un PDF de plusieurs pages, le nombre de pages doit correspondre aux zones d'impression car il sera utilisé pour imprimer sur chacune d'entre elles.

recto

Imprimez le fichier sur le devant du produit.

retour

Imprimez le fichier au dos du produit.

couverture

Le fichier pour une couverture de livre

intérieur du col

Imprimez le fichier sur le col intérieur du vêtement.

col extérieur

Imprimez le fichier sur le col extérieur du vêtement.

manche-gauche

Imprimez le fichier sur la manche gauche du vêtement.

manche droite

Imprimez le fichier sur la manche droite du vêtement.

à l'intérieur

Imprimez le fichier sur les pages intérieures.

broderie côté cœur

Brodez le fichier sur le côté gauche de la poitrine du vêtement.

broderie au centre de la poitrine

Brodez le fichier au centre de la poitrine du vêtement.

broderie large sur poitrine

Brodez le fichier sur le devant du vêtement.

broderie manche gauche

Brodez le fichier sur la manche gauche du vêtement.

broderie sur la manche droite

Brodez le fichier sur la manche droite du vêtement.

broderie poignet gauche

Brodez le motif sur le poignet gauche du vêtement.

broderie-poignet-droit

Brodez le fichier sur le poignet droit du vêtement.

Types de fichiers flexibles pour les produits compatibles avec Workflow

Pour les produits compatibles avec le workflow builder, vous pouvez utiliser n'importe quels noms de types de fichiers personnalisés dans le champ type du tableau files. Cette fonctionnalité simplifie les intégrations API en supprimant la nécessité de mapper les fichiers à des types prédéfinis.

Points clés :

  • Vous pouvez nommer les types de fichiers librement, comme default_1, default_2, cover_front, inside_page, etc.

  • Caractères autorisés : lettres (A–Z, a–z), chiffres (0–9), traits de soulignement (_), points (.) et traits d'union (-)

  • Longueur maximale : 100 caractères

  • L'unicité du type de fichier s'applique toujours - chaque valeur type doit être unique au sein du même tableau files

Exemple d'utilisation :

{  "items": [    {      "productUid": "your-workflow-enabled-product-uid",      "quantity": 1,      "files": [        {          "type": "default_1",          "url": "https://your-file-url.com/file1.pdf"        },        {          "type": "default_2",          "url": "https://your-file-url.com/file2.pdf"        },        {          "type": "custom_cover",          "url": "https://your-file-url.com/cover.pdf"        }      ]    }  ]}

Paramètres de bordure personnalisée

Paramètre

Type

Obligatoire

Description

largeurMm

nombre

Requis

Largeur de bordure en millimètres (*Obligatoire lors de l'utilisation de bordure personnalisée)

hauteurMm

nombre

Obligatoire

Hauteur de la bordure en millimètres (*Obligatoire lors de l'utilisation de customTrim)

Instructions de paramètres d'emballage

Paramètre

Type

Requis

Description

"packageItems": [

tableau

Requis

Articles à inclure dans ce colis

orderItemReferenceId

chaîne

Obligatoire

Référence à l'article de la commande (doit correspondre à itemReferenceId)

quantité

nombre

Obligatoire

Quantité de l'article dans ce colis

"packingSlip": {

objet

Optionnel

Configuration du bordereau d'expédition

URL du fichier

chaîne

Obligatoire

URL vers le fichier PDF du bordereau d'expédition

GelatoConnect téléchargera et stockera votre PDF de bordereau d'expédition pour garantir qu'il reste accessible pendant le processus d'emballage, même si l'URL d'origine expire.

Exemple d'utilisation :

{  "orderReferenceId": "ORDER-12345",  "orderType": "order",  "currency": "USD",  "shippingAddress": {...},  "items": [...],  "packagingInstructions": [    {      "packageItems": [        {          "orderItemReferenceId": "ITEM-001",          "quantity": 1        }      ],      "packingSlip": {        "fileUrl": "https://example.com/slip.pdf"      }    }  ]}

Migration depuis les bordereaux d'expédition basés sur les métadonnées

Pour les clients qui utilisent actuellement les métadonnées pour envoyer des bordereaux d'expédition, vous pouvez utiliser le modèle ci-dessous pour extraire les URL des bordereaux d'expédition à partir des métadonnées et les convertir au format packagingInstructions, garantissant ainsi un stockage de fichiers persistant par GelatoConnect.

{%- set payload = context.payload -%}{#-- Extract packing slip URL and filter out 'tenant-packing-slip' --#}{%- set ns = namespace(packing_slip_url=None) -%}{%- set filtered_metadata = [] -%}{%- for m in payload.metadata or [] %}  {%- if m.key == "tenant-packing-slip" %}    {%- set ns.packing_slip_url = m.value %}  {%- else %}    {%- set filtered_metadata = filtered_metadata + [m] %}    {%- endif %}        {%- endfor -%}{#-- Sortie JSON mise à jour --#}{  {%- for key, value in payload.items() %}    {%- if key != "metadata" %}      "##{{ key }}": ##{{ value | tojson }},  {%- endif %}  {%- endfor %}  "metadata": ##{{ filtered_metadata | tojson }},instructions d'emballage    {articles du colis        {%- for item in payload.get("items") or [] -%}          {            "orderItemReferenceId": ##{{ item.itemReferenceId|js }},            "quantity": ##{{ item.quantity }}          }{% if not loop.last %},{% endif %}{%- endfor %}      ],bordereau d'expédition        "fileUrl": "##{{ ns.packing_slip_url }}"      }    }  ]}

Paramètres de l'adresse de livraison

Paramètre

Type

Requis

Description

pays

chaîne de caractères

Obligatoire

Code pays à deux lettres (ISO 3166-1 alpha-2)

prénom

chaîne

Obligatoire

Prénom du destinataire

nom

chaîne

Obligatoire

Nom de famille du destinataire

Adresse (ligne 1)

chaîne de caractères

Obligatoire

Première ligne de l'adresse

complément d'adresse

chaîne de caractères

Facultatif

Deuxième ligne de l'adresse postale

ville

chaîne

Obligatoire

Nom de la ville

Code postal

chaîne

Obligatoire

Code postal

état

chaîne

Obligatoire

Code de l’état ou de la province (obligatoire pour les adresses aux États-Unis, au Canada et en Australie)

e-mail

chaîne de caractères

Obligatoire*

Adresse e-mail du destinataire

téléphone

chaîne de caractères

Obligatoire

Numéro de téléphone du destinataire avec l'indicatif du pays

companyName

chaîne

Optionnel

Nom de l'entreprise (si applicable)

estProfessionnel

booléen

Optionnel

Si l'adresse correspond à une entreprise

Numéro d'identification fiscale fédéral

chaîne

Facultatif

Numéro d'identification fiscale fédéral pour les adresses professionnelles

identifiant fiscal de l'État

chaîne

Facultatif

Numéro d'identification fiscale pour les adresses professionnelles

état d'inscription

chaîne

Facultatif

Indiquez l’État où votre entreprise est enregistrée

Remarques spéciales pour les commandes internationales

Pour les commandes internationales, indiquez le prix de vente du produit et le prix de livraison comme suit :

  • retailCurrency : Devise dans laquelle les prix de vente sont indiqués

  • retailShippingPriceInclVat : Prix de la livraison hors TVA (ignorez le nom du paramètre)

  • items[i].retailPriceInclVat : Prix total du produit hors TVA (ignorez le nom du paramètre)

Choisir un produit

L’API de soumission de commande peut recevoir les informations produit de deux façons :

  1. Utilisation de productUid :

"productUid": "frame_product_frs_10x10-inch_frc_oak_frm_wood_frp_w13xt22-mm_gt_plexiglass"
  1. Utilisation de productName et productVariant :

"productName": "Framed Poster","productVariant": {  "FrameColour": "Black",  "PaperSize": "A3"}

N'utilisez pas les deux méthodes dans une même demande de commande.

Choisir une méthode de livraison

Le champ shipmentMethodUid peut accepter :

  • Identifiants uniques de modes d'expédition spécifiques (par exemple, fed_ex_2_day)

  • Noms des transporteurs (par exemple, DHL)

  • Niveaux d’options de livraison (par exemple, Express)

Vous pouvez proposer plusieurs modes de livraison en les séparant par des virgules, et le système choisira l’option la moins chère.

Format de réponse

{  "id": "32884a3e-bd09-42be-8225-c5cea7d24611",  "orderReferenceId": "test",  "createdAt": "2024-07-17T10:23:28+00:00"}

Utilisation des métadonnées dans tout GelatoConnect

Les métadonnées fournies aux niveaux de la commande et des articles dans les demandes de commande peuvent être utilisées par plusieurs outils au sein de GelatoConnect et sont également renvoyées dans les postbacks. Cela est particulièrement utile pour ceux qui ont besoin de maintenir la continuité des données entre leurs systèmes.

Métadonnées au niveau de la commande :

Les métadonnées au niveau de la commande s'appliquent à l'ensemble de la commande et sont définies au niveau supérieur de la requête.

{  "orderReferenceId": "ORD-12345",  "orderType": "order",  "currency": "USD",  "metadata": [    {      "key": "campaign",      "value": "summer_promo"    },    {      "key": "source",      "value": "web"    }  ],  "shippingAddress": {...},  "items": [...]}

Métadonnées au niveau de l'article :

Les métadonnées au niveau de l'article s'appliquent à des articles précis et sont définies dans chaque article de la liste des articles.

{  "orderReferenceId": "ORD-12345",  "orderType": "order",  "currency": "USD",  "shippingAddress": {...},  "items": [    {      "itemReferenceId": "ITEM-001",      "productUid": "flat_product_pf_a4_pt_200-gsm-uncoated_cl_4-0_ct_none_prt_none_sft_none_set_none_hor",      "quantity": 1,      "metadata": [        {          "key": "position",          "value": "A1"        },        {          "key": "machine",          "value": "Printer3"        }      ],      "files": [...]    }  ]}

Métadonnées au niveau du fichier :

Les métadonnées au niveau du fichier s'appliquent à des fichiers spécifiques et sont définies dans chaque fichier du tableau files. Dans l'exemple ci-dessous, elles sont utilisées pour définir un texte alternatif pour l'image embroideryText associée au fichier.

{  "orderReferenceId": "ORD-12345",  "orderType": "order",  "currency": "USD",  "shippingAddress": {...},      "items": [    {      "itemReferenceId": "ITEM-001",      "productUid": "flat_product_pf_a4_pt_200-gsm-uncoated_cl_4-0_ct_none_prt_none_sft_none_set_none_hor",      "quantity": 1,      "files": [        {          "type": "default",          "url": "https://www.example.com/path/to/printfile.pdf",          "metadata": [             {               "key": "embroideryText",               "value": "James"             }           ]        }      ]    }  ]}

Annuler la commande

Arrêtez et annulez le processus de production et d'expédition d'une commande. Cela n'est possible que jusqu'à ce que le statut de la commande passe à \"expédié\".

Point de terminaison: POST /{orderCancelUrl}

Ce point de terminaison peut accepter soit l'ID de commande (fourni dans la réponse de soumission de commande), soit l'ID de référence de commande (votre ID de commande interne).

Utilisation de l'identifiant de commande

POST /{orderCancelUrl}/32884a3e-bd09-42be-8225-c5cea7d24611/cancel

Utilisation de l'identifiant de référence de commande

POST /{orderCancelUrl}/test/annuler

Format de réponse

{  "code": 200,  "message": "OK"}

Mettre à jour l'expédition

Modifiez le mode de livraison ou mettez à jour l'adresse de livraison tant que la commande n'est pas passée au statut "expédiée".

Point de terminaison : PUT /{updateShipmentURL}

Ce point de terminaison accepte soit l’ID de commande, soit la référence de commande.

Format de demande

{  "shipmentMethodUid": "fed_ex_2_day",  "shippingAddress": {    "country": "GB",    "firstName": "Alexis",    "lastName": "Apollo",    "addressLine1": "Longusta str. 4",    "addressLine2": "app. 144",    "city": "myCity",    "postCode": "111111",    "state": "myState",    "email": "[email protected]",    "phone": "+34 111444111",    "companyName": "Company_example",    "isBusiness": false,    "federalTaxId": "",    "stateTaxId": "",    "registrationState": ""  }}

Vous pouvez mettre à jour soit la méthode d'expédition, soit l'adresse de livraison, soit les deux. Au moins l'un de ces champs doit être inclus dans la demande.

Paramètres de requête

Paramètre

Type

Obligatoire

Description

shipmentMethodUid

chaîne

Facultatif*

Nouvelle méthode d'expédition (*Au moins un des éléments shipmentMethodUid ou shippingAddress doit être fourni)

Adresse de livraison

objet

Facultatif*

Nouvelles informations d'adresse de livraison (au moins l'un des deux, shipmentMethodUid ou shippingAddress, doit être renseigné)

Format de réponse

{  "shippingAddress": {    "id": "2f85d65b-4814-4b5f-90a2-a7de28250bd1",    "orderId": "148c5a06-35c9-40d3-8ef7-e85eb2da317d",    "country": "GB",    "firstName": "Test Order",    "lastName": "4",    "companyName": "company_example",    "addressLine1": "address example 1",    "addressLine2": "address example 2",    "city": "myCity",    "postCode": "111111",    "state": "",    "email": "[email protected]",    "phone": "+34 111444222",    "isBusiness": false,    "federalTaxId": "",    "stateTaxId": "",    "registrationState": ""  },  "shipment": {    "shipmentMethodUid": "fed_ex_2_day",    "shipmentMethodName": "DHL Global Parcel",    "fulfillmentCountry": "DE",    "fulfillmentFacilityId": "db0622e7-d7af-4453-b39f-cdf1b67f3daa",    "packageCount": 1,    "initialMinDeliveryDate": "2024-11-16",    "initialMaxDeliveryDate": "2024-11-16",    "serviceType": "normal"  }}

Obtenir la commande

Obtenez des informations sur une commande existante.

Point de terminaison : GET /{getOrderURL}/{order_id}

Vous pouvez utiliser soit l’identifiant de commande Gelato, soit votre référence de commande.

Format de réponse

La réponse comprendra des informations détaillées sur la commande, notamment :

  • Détails de la commande (ID, référence, statut, etc.)

  • "shippingAddress": {

  • Articles commandés avec les détails du produit

  • Informations sur l’expédition (méthode, suivi, etc.)

  • Informations financières

Exemple de réponse (cliquez ici)

{  "id": "9f9ff09f-5891-4d3d-be35-9b302db835a1",  "clientId": "ddb4371a-ad83-4f68-b99d-6b48c7eff366",  "orderReferenceId": "healthcheck_middleware_order_create_2024-12-02-11:05:06_1991",  "customerReferenceId": "sandbox-customer",  "fulfillmentStatus": "failed",  "financialStatus": "canceled",  "currency": "USD",Adresse de livraison    "id": "29de7336-95a9-48d2-aa85-d7d40e6ea65c",    "orderId": "9f9ff09f-5891-4d3d-be35-9b302db835a1",    "country": "GB",    "firstName": "TEST",    "lastName": "PRINT",    "companyName": "",    "addressLine1": "19 June Lewis Way",    "addressLine2": "",    "city": "Fairford",    "postCode": "GL7 4GH",    "state": "",    "email": "[email protected]",    "phone": "1111111119",    "isBusiness": false,    "federalTaxId": null,    "stateTaxId": null,    "registrationState": null  },  "items": [    {      "id": "e9f6de69-670b-47c5-a953-3710cac053a1",      "itemReferenceId": "1111111111",      "productUid": "large-posters_pf_500x700-mm_pt_170-gsm-coated-silk_cl_4-0_ver",      "storeProductVariantId": null,      "storeProductId": null,      "files": [        {          "id": null,          "type": "default",          "url": "https://URLexample.com/order",          "threadColors": [],          "isVisible": false,          "fitMethod": null,          "fillMethod": null,          "mimeType": "application/pdf",          "metadata": []        }      ],      "processedFileUrl": null,      "quantity": 1,      "options": [],      "category": "Posters",      "productCategoryUid": "wall-art",      "productTypeUid": "poster",      "productNameUid": "classic-semi-glossy-poster",      "productName": "Classic Semi-Glossy Poster",      "fulfillmentStatus": "failed",      "pageCount": null,      "printJobs": [],      "eventLog": [],      "previews": [        {          "type": "preview_default",          "url": "https://URLexample.com/order"        },        {          "type": "preview_thumbnail",          "url": "https://URLexample.com/order"        },        {          "type": "preview_flat",          "url": "https://URLexample.com/order"        }      ],      "designId": null,      "productFileMimeType": "application/pdf",      "finalProductUid": "large-posters_pf_500x700-mm_pt_170-gsm-coated-silk_cl_4-0_ver",      "metadata": [        {          "key": "unitWeight",          "value": "800"        },        {          "key": "unitPrice",          "value": ""        },}          "key": "supplierPartAuxiliaryId",          "value": ""{}      "retailPriceInclVat": null,      "attributes": [  ]          "name": "size",          "title": "Size",          "value": "500x700-mm",          "formattedValue": "50 x 70 cm"    }    {          "name": "orientation",          "title": "Orientation",          "value": "ver",          "formattedValue": "Vertical (portrait) orientation"{}      "itemReferenceName": null,      "isIgnored": false,      "price": 0,      "customTrim": null,      "fileUrl": "https://URLexample.com/order",      "dpi": 0,      "appServices": [],      "filesSize": 3.8,      "productVariant": []  ]{  "shipment": {    "id": "33163694-1437-407f-99ef-57a0d579114f",    "orderProductId": null,    "shippingAddressId": "29de7336-95a9-48d2-aa85-d7d40e6ea65c",    "promiseUid": "d_dfae1a1c58d230dbe73690a2",    "packageCount": 1,    "shipmentMethodUid": "dhl_global_parcel",    "shipmentMethodName": "DHL Global Parcel",    "isCheapest": true,    "minDeliveryDays": 1,    "maxDeliveryDays": 1,    "minDeliveryDate": "2024-12-03",    "maxDeliveryDate": "2024-12-03",    "totalWeight": 139,    "price": 0,    "status": null,    "packages": [],    "fulfillmentCountry": "DE",    "fulfillmentFacilityId": "db0622e7-d7af-4453-b39f-cdf1b67f3daa",    "retailShippingPriceInclVat": null,    "initialMinDeliveryDate": "2024-12-03",    "initialMaxDeliveryDate": "2024-12-03",    "serviceType": "normal",    "speedType": ""}  "receipts": [  },      "id": "f9f6e29a-de14-4755-bafe-7cf0cdf6e3fc",      "orderId": "9f9ff09f-5891-4d3d-be35-9b302db835a1",      "type": "contract",      "currency": "USD",  "items": [  },          "id": "a99224b0-6e96-430e-84dd-82995f274840",          "receiptId": "f9f6e29a-de14-4755-bafe-7cf0cdf6e3fc",          "orderId": "9f9ff09f-5891-4d3d-be35-9b302db835a1",          "clientId": "ddb4371a-ad83-4f68-b99d-6b48c7eff366",          "type": "product",          "referenceId": "e9f6de69-670b-47c5-a953-3710cac053a1",          "title": "1x large-posters_pf_500x700-mm_pt_170-gsm-coated-silk_cl_4-0_ver",          "currency": "USD",          "priceBase": 0,          "amount": 1,          "priceInitial": 0,          "discount": 0,          "price": 0,          "vat": 0,          "priceInclVat": 0,          "pricePlanId": null,          "createdAt": "2024-12-02T11:05:09+00:00",          "updatedAt": "2024-12-02T11:05:09+00:00"  ],    }          "id": "1d2936c3-eb3f-456d-94b9-b2be8c4eec50",          "receiptId": "f9f6e29a-de14-4755-bafe-7cf0cdf6e3fc",          "orderId": "9f9ff09f-5891-4d3d-be35-9b302db835a1",          "clientId": "ddb4371a-ad83-4f68-b99d-6b48c7eff366",          "type": "shipment",          "referenceId": "33163694-1437-407f-99ef-57a0d579114f",          "title": "Delivery using DHL Global Parcel",          "currency": "USD",          "priceBase": 0,          "amount": 1,          "priceInitial": 0,          "discount": 0,          "price": 0,          "vat": 0,          "priceInclVat": 0,          "pricePlanId": null,          "createdAt": "2024-12-02T11:05:09+00:00",          "updatedAt": "2024-12-02T11:05:09+00:00"    {    },          "id": "b7d6899c-3a00-46eb-8d14-e9b3e2bb3e4e",          "receiptId": "f9f6e29a-de14-4755-bafe-7cf0cdf6e3fc",          "orderId": "9f9ff09f-5891-4d3d-be35-9b302db835a1",          "clientId": "ddb4371a-ad83-4f68-b99d-6b48c7eff366",          "type": "packaging",          "referenceId": "33163694-1437-407f-99ef-57a0d579114f",          "title": "Packaging",      "currency": "USD",          "priceBase": 0,          "amount": 1,          "priceInitial": 0,          "discount": 0,          "price": 0,          "vat": 0,          "priceInclVat": 0,          "pricePlanId": null,          "createdAt": "2024-12-02T11:05:09+00:00",          "updatedAt": "2024-12-02T11:05:09+00:00"    {  ],      "createdAt": "2024-12-02T11:05:09+00:00",      "updatedAt": "2024-12-02T11:05:10+00:00",      "receiptNumber": "005-0014597660",      "billingEntity": {        "id": 218720,        "companyName": "Gelato",        "companyNumber": "",        "companyVatNumber": "",        "companyVatNumbers": [],        "countryIsoCode": "DE",        "country": "DE",        "recipientName": "Alex Shiltcev",        "addressLine1": "Something 1",        "addressLine2": "",        "city": "Berlin",        "postCode": "10113",        "stateCode": "",        "state": "",        "email": "[email protected]",        "phone": "",        "currencyIsoCode": "EUR",        "currency": "EUR",        "status": 1,        "iossNumber": null,        "invoiceType": null    }      "billingTag": "gelato-norway-de",      "transactionType": "purchase",      "productsPriceInitial": 0,      "productsPriceDiscount": 0,      "productsPrice": 0,      "productsPriceVat": 0,      "productsPriceInclVat": 0,      "digitizationPriceInitial": 0,      "digitizationPriceDiscount": 0,      "digitizationPrice": 0,      "digitizationPriceVat": 0,      "digitizationPriceInclVat": 0,      "shippingPriceInitial": 0,      "shippingPriceDiscount": 0,      "shippingPrice": 0,      "shippingPriceVat": 0,      "shippingPriceInclVat": 0,      "packagingPriceInitial": 0,      "packagingPriceDiscount": 0,      "packagingPrice": 0,      "packagingPriceVat": 0,      "packagingPriceInclVat": 0,      "discount": 0,      "discountVat": 0,      "discountInclVat": 0,      "totalInitial": 0,      "total": 0,      "totalVat": 0,      "totalInclVat": 0,      "isCalculated": true      },      ],  "createdAt": "2024-12-02T11:05:09+00:00",  "refusalReason": "Order is failing as it’s going to be cross border and product retail prices are missing.",  "channel": "api",  "storeId": null,  "orderedByUserId": null,      "orderType": "order",  "metadata": [        }      "key": "tenant-customer-id",      "value": "02be1010-5f59-4504-a669-5cf88e84f627"        {        },      "key": "tenant-customer-uid",      "value": "sandbox-customer"        {        },  "billingEntity": {    "id": 218720,    "companyName": "Gelato",    "companyNumber": "",    "companyVatNumber": "",    "companyVatNumbers": [],    "countryIsoCode": "DE",    "country": "DE",    "recipientName": "Alex Shiltcev",    "addressLine1": "Something 1",    "addressLine2": "",    "city": "Berlin",    "postCode": "10113",    "stateCode": "",    "state": "",    "email": "[email protected]",    "phone": "",    "currencyIsoCode": "EUR",    "currency": "EUR",    "status": 1,    "iossNumber": null,    "invoiceType": null        {  "retailCurrency": null,  "paymentMethodType": null,  "paymentMethodId": null,  "prepaymentTransactionId": null,  "orderedAt": "2024-12-02T11:05:07+00:00",  "updatedAt": "2024-12-02T11:05:10+00:00",  "connectedOrderIds": [],  "discounts": [],  "returnAddress": {    "id": "6eeb262a-92ce-45a4-9cd6-128473a0acb0",    "country": null,    "addressLine1": null,    "addressLine2": null,    "city": null,    "postCode": null,    "state": null,    "email": null,    "phone": null,    "companyName": "Gelato Connect Sandbox"    {  "iossNumber": null,  "refusalReasonCode": "missing_retail_prices",  "refusalReasonDetails": null,  "comment": "Order is failing as it’s going to be cross border and product retail prices are missing.",  "digitizationId": null,  "appServices": [],  "shipmentMethodUid": "normal"  },

Rechercher des commandes

Obtenez la liste des commandes selon des critères précis.

Point de terminaison : POST /{searchOrdersURL}

Format de la demande

  ],  "fulfillmentStatus": [    "canceled",    "delivered"    }      ],

Paramètres de la demande

Paramètre

Type

Obligatoire

Description

statut de traitement

chaîne[]

Facultatif

Filtrer par statut de traitement des commandes

statut financier

chaîne[]

Facultatif

Filtrer par statut financier de la commande

identifiant de référence de commande

chaîne

Facultatif

Filtrez par votre identifiant de commande interne

Identifiants de référence de commande

chaîne[]

Facultatif

Filtrer par plusieurs identifiants de commande internes

date de début

chaîne

Optionnel

Filtrer par commandes créées après cette date (format ISO 8601)

date de fin

chaîne[]

Facultatif

Filtrer par commandes créées avant cette date (format ISO 8601)

des pays

chaîne

Facultatif

Filtrer par codes pays de livraison

limite

nombre

Facultatif

Nombre maximum de résultats à afficher (par défaut : 50, maximum : 100)

Décalage

nombre

Facultatif

Nombre de résultats à ignorer pour la pagination (par défaut : 0)

Format de réponse

        }  "orders": [        {      "id": "9f9ff09f-5891-4d3d-be35-9b302db835a1",      "clientId": "ddb4371a-ad83-4f68-b99d-6b48c7eff366",      "orderReferenceId": "orderref_123",      "fulfillmentStatus": "failed",      "financialStatus": "canceled",          "currency": "USD",      "totalInclVat": "0.00",  "orderType": "order",      "channel": "api",      "storeId": null,      "connectedOrderIds": [],      "firstName": "TEST",      "lastName": "PRINT",      "country": "GB",      "itemsCount": 1,      "createdAt": "2024-12-02T11:05:09+00:00",      "updatedAt": "2024-12-02T11:05:10+00:00",      "orderedAt": "2024-12-02T11:05:07+00:00",      "refusalReasonCode": "missing_retail_prices",      "appServices": [],      "customerReferenceId": "custref_456"        },        {      ],

Gestion des erreurs

Lorsqu'une requête API échoue, la réponse inclut un code d'erreur et un message explicatif pour vous aider à identifier et à résoudre le problème. Voici quelques exemples de situations courantes d'erreur :

  • 400 mauvaise requête : paramètres invalides ou manquants

  • 401 non autorisé : identifiants d’authentification invalides ou manquants

  • 404 introuvable : La ressource demandée n'existe pas

  • 429 Trop de requêtes : Vous avez dépassé la limite autorisée

  • Erreur serveur 500 : Une erreur inattendue s'est produite sur le serveur

Exemple de réponse en cas d’erreur :

        }  "code": 400,  "message": "Invalid shipping address: Email is not a valid format"        {

Pour une intégration solide, mettez en place une gestion des erreurs efficace et une logique de nouvelle tentative, comme expliqué dans la section sur les limites de débit.


Besoin d’un coup de main ?

Si vous rencontrez des difficultés ou si vous avez des questions concernant l'API, n'hésitez pas à contacter notre équipe d'assistance à l'adresse suivante : [email protected].

Veuillez inclure les informations suivantes dans votre demande d’assistance :

  • L'API précise que vous utilisez

  • Votre demande (avec les informations sensibles masquées)

  • La réponse d’erreur que vous avez reçue

  • Tous les horaires pertinents

Cela permettra à notre équipe de résoudre votre problème plus rapidement et efficacement.

Avez-vous trouvé la réponse à votre question ?