Download OpenAPI specification:
API REST pour la création et gestion des commandes clients avec livraison et services additionnels (reprise, leasing, etc.).
Cette API permet de:
Événements webhook disponibles:
ORDER_CREATED: Déclenché lors de la création d'une nouvelle commandeORDER_VALIDATED: Déclenché lors de la validation d'une commandeORDER_TO_CLIENT_WAITING: Déclenché quand une commande passe en attente clientORDER_SHIFT_TIME_PASSED: Déclenché quand l'heure de cut dépassée (plus possible de modifier)ORDER_DATE_CHANGED: Déclenché lors du changement de date de livraisonORDER_ASSIGNED_TO_ROUND: Déclenché lors de l'assignation à une tournéePICKING_DONE: Déclenché quand le picking est terminéDELIVERY_STARTED: Déclenché au début de la livraisonDELIVERY_COMPLIANT: Déclenché pour une livraison conformeDELIVERY_NOT_COMPLIANT: Déclenché pour une livraison non conformeDELIVERY_WITH_MISSING_PRODUCT: Déclenché pour une livraison avec produit manquantDELIVERY_PARTIALLY_RETURNED_TO_STORE: Déclenché pour un retour partiel en magasinORDER_CANCELLED: Déclenché lors de l'annulation d'une commandeORDER_CANCELLED_WITH_REASON: Déclenché lors de l'annulation avec motifORDER_CUSTOMER_ABSENT: Déclenché quand le client est absentORDER_DELIVERY_FAILED: Déclenché en cas d'échec de livraisonCLIENT_PORTAL_LINK_SENT: Déclenché quand le lien portail client est envoyéINCOMING_DELIVERY: SMS de livraison imminente envoyéTypes de livraison supportés:
lv1: Livraison pas de porte (pavillon), pied d'immeublelv2: Livraison dépose pièce du choixlv3: Livraison avec installation ou montageInformations importantes:
Crée une nouvelle commande avec livraison et services additionnels. Cette API permet de:
Données complètes de la commande à créer
| id required | string Identifiant unique de la commande généré par le système |
| transporter required | string Nom du transporteur ou de l'entreprise de livraison |
| invoice_id required | string Numéro de facture associé à la commande |
| store_id required | string Identifiant du magasin émetteur de la commande |
required | object (Client) Informations personnelles du client destinataire de la commande |
required | object (DeliveryAddress) Adresse complète de livraison avec informations logistiques détaillées |
required | Array of objects (OrderArticle) Liste des articles commandés avec leurs caractéristiques |
Array of objects (ExtraService) Services additionnels optionnels liés à la commande (LLD, Afterwork, etc.) | |
| delivery_comment | string Commentaire de livraison visible par le livreur et le client |
| internal_comment | string Commentaire interne visible uniquement par le livreur, non accessible au client |
| client_price | number <float> Montant à payer par le client directement au livreur lors de la livraison (paiement en espèces, chèque, etc.) |
| store_settle | number <float> Montant restant à collecter pour le magasin le jour de la livraison (solde à régler) |
| financing | boolean Indique si la commande est associée à un dossier de financement (crédit, leasing, etc.) |
Exemple d'une commande avec livraison pas de porte (pavillon), pied d'immeuble (lv1)
{- "id": "YOUR-ID-123456789",
- "invoice_id": "223.202/0033759",
- "store_id": "001",
- "transporter": "Limon",
- "client": {
- "last_name": "John",
- "first_name": "Snow",
- "telephone": "+33 601234567",
- "email": "winteriscoming@got.com"
}, - "delivery_address": {
- "address": "24 Rue du gironde",
- "postal_code": "31100",
- "city": "toulouse",
- "country": "FRA",
- "floor": "3",
- "has_elevator": true
}, - "articles": [
- {
- "quantity": "1",
- "id": "9990000240006",
- "name": "COSBY 3 MATELAS 90X190",
- "delivery_type": "lv1",
- "packages": [
- {
- "weight_kg": 8.1,
- "volume_m3": 0.265
}
], - "reprise_quantity": "0",
- "ean_13": "3663728774461"
}
], - "extra_service": [
- {
- "code": "LLD",
- "name": "Leasing"
}
], - "delivery_comment": "Sonner à l'interphone, code d'accès 1234A. Livraison préférée le matin.",
- "internal_comment": "Attention: escalier étroit au 3ème étage, prévoir sangles supplémentaires.",
- "client_price": 50,
- "store_settle": 25.5,
- "financing": false
}{- "message": "Le payload a été accepté et va être pris en charge par le service, vous pourrez suivre son statut via l'API /requests/{request_id}",
- "request_id": "req_87EC7791d7AdD24D29D1792577F977FDE7",
- "order_id": "YOUR-ID-123456789"
}Met à jour partiellement les informations d'une commande existante. Cette opération permet de modifier:
| order_id required | string Example: YOUR-ID-123456789 Identifiant de la commande à modifier ou annuler |
Champs à modifier dans la commande. Seuls les champs fournis seront mis à jour.
object | |
| delivery_comment | string Commentaire de livraison visible par le livreur et le client |
| internal_comment | string Commentaire interne visible uniquement par le livreur, non accessible au client |
{- "client": {
- "email": "nouveau.client@email.com",
- "telephone": "+33 601234567"
}
}{- "message": "Requête acceptée, mise en file d'attente vous pourrez suivre son statut via l'API /requests/{request_id}",
- "request_id": "req_87EC7791d7AdD24D29D1792577F977FDE7",
- "order_id": "YOUR-ID-123456789"
}Annule une commande existante. Cette action est irréversible.
| order_id required | string Example: YOUR-ID-123456789 Identifiant de la commande à modifier ou annuler |
{- "message": "L'annulation a été acceptée, mise en file d'attente vous pourrez suivre son statut via l'API /requests/{request_id}",
- "request_id": "req_87EC7791d7AdD24D29D1792577F977FDE7",
- "order_id": "YOUR-ID-123456789"
}Permet de récupérer les informations de statut et de traitement d'une requête asynchrone. Cet endpoint est utile pour suivre l'état d'une opération (création, modification, annulation) après avoir reçu un code de réponse 202.
Statuts possibles:
PENDING: Requête en cours de traitementSUCCESS: Requête traitée avec succèsFAILED: Requête échouéeTIMEOUT: Requête expiréeTypes d'actions:
CREATE: Création de commandeUPDATE: Modification de commandeDELETE: Annulation de commande| request_id required | string Example: req_87EC7791d7AdD24D29D1792577F977FDE7 Identifiant de la requête dont on veut connaître le statut |
Exemple d'une requête qui a échoué lors du traitement
{- "status": "FAILED",
- "response_status": 502,
- "response_body": null,
- "error_message": "HTTPConnectionPool(host='api.example.com', port=80): Max retries exceeded",
- "last_attempt": "2025-07-01T14:47:19.487436+00:00",
- "order_id": "YOUR-ID-123456789",
- "invoice_id": "002.205/0026273",
- "action_type": "CREATE",
- "response_id": null
}Crée un nouvel abonnement pour recevoir des notifications en temps réel lors d'événements spécifiques sur les commandes et livraisons.
Événements disponibles:
ORDER_CREATED: Nouvelle commande crééeORDER_VALIDATED: Commande validéeORDER_TO_CLIENT_WAITING: Commande en attente clientORDER_SHIFT_TIME_PASSED: Heure de cut dépassée (plus possible de modifier)ORDER_DATE_CHANGED: Date de livraison modifiéeORDER_ASSIGNED_TO_ROUND: Commande assignée à une tournéePICKING_DONE: Picking terminéDELIVERY_STARTED: Livraison démarréeDELIVERY_COMPLIANT: Livraison conformeDELIVERY_NOT_COMPLIANT: Livraison non conformeDELIVERY_WITH_MISSING_PRODUCT: Livraison avec produit manquantDELIVERY_PARTIALLY_RETURNED_TO_STORE: Retour partiel en magasinORDER_CANCELLED: Commande annuléeORDER_CANCELLED_WITH_REASON: Commande annulée avec motifORDER_CUSTOMER_ABSENT: Client absentORDER_DELIVERY_FAILED: Échec de livraisonCLIENT_PORTAL_LINK_SENT: Lien portail client envoyéINCOMING_DELIVERY: Livraison entranteFiltrage avancé: Vous pouvez filtrer les événements par instance FluidIT spécifique ou par magasin, et ajouter des conditions de filtrage personnalisées sur les données d'événement.
Format des notifications: Les notifications sont envoyées via POST avec un payload JSON contenant les détails de l'événement et les données associées.
Configuration de l'abonnement aux événements
| event_type required | string Enum: "ORDER_CREATED" "ORDER_VALIDATED" "ORDER_TO_CLIENT_WAITING" "ORDER_SHIFT_TIME_PASSED" "ORDER_DATE_CHANGED" "ORDER_ASSIGNED_TO_ROUND" "PICKING_DONE" "DELIVERY_STARTED" "DELIVERY_COMPLIANT" "DELIVERY_NOT_COMPLIANT" "DELIVERY_WITH_MISSING_PRODUCT" "DELIVERY_PARTIALLY_RETURNED_TO_STORE" "ORDER_CANCELLED" "ORDER_CANCELLED_WITH_REASON" "ORDER_CUSTOMER_ABSENT" "ORDER_DELIVERY_FAILED" "CLIENT_PORTAL_LINK_SENT" "INCOMING_DELIVERY" Type d'événement auquel s'abonner (pour un seul événement) |
| event_types | Array of strings Items Enum: "ORDER_CREATED" "ORDER_VALIDATED" "ORDER_TO_CLIENT_WAITING" "ORDER_SHIFT_TIME_PASSED" "ORDER_DATE_CHANGED" "ORDER_ASSIGNED_TO_ROUND" "PICKING_DONE" "DELIVERY_STARTED" "DELIVERY_COMPLIANT" "DELIVERY_NOT_COMPLIANT" "DELIVERY_WITH_MISSING_PRODUCT" "DELIVERY_PARTIALLY_RETURNED_TO_STORE" "ORDER_CANCELLED" "ORDER_CANCELLED_WITH_REASON" "ORDER_CUSTOMER_ABSENT" "ORDER_DELIVERY_FAILED" "CLIENT_PORTAL_LINK_SENT" "INCOMING_DELIVERY" Types d'événements auxquels s'abonner (pour plusieurs événements) |
| transporteur | string or null Nom du transporteur (instance FluidIT) spécifique (optionnel, laisser null pour toutes les instances) |
| store_id | string or null Identifiant du magasin utilisé par cet expéditeur (optionnel, laisser null pour tous les magasins) |
| is_active | boolean Default: true Statut actif/inactif de l'abonnement |
| webhook_url_override | string or null <uri> URL webhook spécifique pour ce type d'événement (optionnel) |
object Conditions de filtrage supplémentaires au format JSON |
Exemple d'abonnement pour recevoir les notifications de création et modification de commandes
{- "event_type": "ORDER_CREATED",
- "transporteur": null,
- "store_id": null,
- "is_active": true,
- "filter_conditions": { }
}{- "message": "Abonnement créé avec succès",
- "subscription_id": 42,
- "event_type": "ORDER_CREATED",
- "is_active": true
}Récupère la liste de tous les abonnements aux événements actifs et inactifs pour l'expéditeur authentifié.
| event_type | string Enum: "ORDER_CREATED" "ORDER_VALIDATED" "ORDER_TO_CLIENT_WAITING" "ORDER_SHIFT_TIME_PASSED" "ORDER_DATE_CHANGED" "ORDER_ASSIGNED_TO_ROUND" "PICKING_DONE" "DELIVERY_STARTED" "DELIVERY_COMPLIANT" "DELIVERY_NOT_COMPLIANT" "DELIVERY_WITH_MISSING_PRODUCT" "DELIVERY_PARTIALLY_RETURNED_TO_STORE" "ORDER_CANCELLED" "ORDER_CANCELLED_WITH_REASON" "ORDER_CUSTOMER_ABSENT" "ORDER_DELIVERY_FAILED" "CLIENT_PORTAL_LINK_SENT" "INCOMING_DELIVERY" Example: event_type=ORDER_CREATED Filtrer par type d'événement |
| is_active | boolean Example: is_active=true Filtrer par statut actif/inactif |
{- "subscriptions": [
- {
- "id": 42,
- "event_type": "ORDER_CREATED",
- "event_type_display": "Commande créée",
- "transporteur": null,
- "store_id": null,
- "is_active": true,
- "filter_conditions": { },
- "created_at": "2025-07-07T10:30:00Z",
- "updated_at": "2025-07-07T10:30:00Z"
}, - {
- "id": 43,
- "event_type": "DELIVERY_COMPLIANT",
- "event_type_display": "Livraison conforme",
- "transporteur": null,
- "store_id": "001",
- "is_active": false,
- "webhook_url_override": null,
- "filter_conditions": { },
- "created_at": "2025-07-06T15:45:00Z",
- "updated_at": "2025-07-07T09:15:00Z"
}
], - "count": 2
}Récupère les détails d'un abonnement aux événements spécifique par son identifiant.
| subscription_id required | integer Example: 42 Identifiant de l'abonnement aux événements |
{- "id": 42,
- "event_type": "ORDER_CREATED",
- "event_type_display": "Commande créée",
- "transporteur": null,
- "store_id": null,
- "is_active": true,
- "filter_conditions": { },
- "created_at": "2025-07-07T10:30:00Z",
- "updated_at": "2025-07-07T10:30:00Z"
}Met à jour un abonnement aux événements existant. Permet de modifier le type d'événement, l'instance, le magasin, l'URL webhook, les conditions de filtrage ou le statut actif/inactif.
| subscription_id required | integer Example: 42 Identifiant de l'abonnement aux événements |
Champs à modifier dans l'abonnement aux événements
| event_type | string Enum: "ORDER_CREATED" "ORDER_VALIDATED" "ORDER_TO_CLIENT_WAITING" "ORDER_SHIFT_TIME_PASSED" "ORDER_DATE_CHANGED" "ORDER_ASSIGNED_TO_ROUND" "PICKING_DONE" "DELIVERY_STARTED" "DELIVERY_COMPLIANT" "DELIVERY_NOT_COMPLIANT" "DELIVERY_WITH_MISSING_PRODUCT" "DELIVERY_PARTIALLY_RETURNED_TO_STORE" "ORDER_CANCELLED" "ORDER_CANCELLED_WITH_REASON" "ORDER_CUSTOMER_ABSENT" "ORDER_DELIVERY_FAILED" "CLIENT_PORTAL_LINK_SENT" "INCOMING_DELIVERY" Nouveau type d'événement auquel s'abonner |
| transporteur | string or null Nouveau nom du transporteur (instance FluidIT) spécifique (null pour toutes les instances) |
| store_id | string or null Nouvel identifiant du magasin utilisé par cet expéditeur (null pour tous les magasins) |
| is_active | boolean Nouveau statut actif/inactif de l'abonnement |
| webhook_url_override | string or null <uri> Nouvelle URL webhook spécifique pour ce type d'événement |
object or null Nouvelles conditions de filtrage supplémentaires au format JSON |
{
}{- "message": "Abonnement mis à jour avec succès",
- "subscription_id": 42,
- "event_type": "DELIVERY_COMPLIANT",
- "is_active": false
}Supprime définitivement un abonnement aux événements. Cette action est irréversible. Aucune notification ne sera plus envoyée après la suppression.
| subscription_id required | integer Example: 42 Identifiant de l'abonnement aux événements |
{- "message": "Abonnement supprimé avec succès",
- "subscription_id": 42,
- "event_type": "ORDER_CREATED"
}Récupère la liste des créneaux de livraison disponibles pour une adresse et une période données.
Cette opération est synchrone et retourne directement la réponse de l'instance FluidIT.
Identification du magasin:
Le champ store_id est utilisé pour identifier le magasin (contractor) via la table ContractorIdentifier.
Réponse: La réponse est transmise directement depuis FluidIT sans modification, avec le code de statut HTTP original.
Paramètres de recherche des créneaux disponibles
| store_id required | string Identifiant du magasin utilisé pour identifier le contractor via ContractorIdentifier |
| start | string <date-time> Date et heure de début de la période de recherche (format ISO 8601) |
| stop | string <date-time> Date et heure de fin de la période de recherche (format ISO 8601) |
| type | string Type de service (par exemple "delivery" pour livraison) |
object (DeliveryAddress) Adresse complète de livraison avec informations logistiques détaillées | |
Array of objects (OrderArticle) Liste des articles à livrer |
{- "store_id": "001",
- "start": "2025-11-20T00:00:00+0100",
- "stop": "2025-11-27T23:59:59+0100",
- "type": "delivery",
- "delivery_address": {
- "address": "24 Rue du gironde",
- "postal_code": "31100",
- "city": "toulouse",
- "country": "FRA",
- "lat": "43.5528",
- "lng": "1.4870",
- "floor": "3",
- "has_elevator": true
}, - "articles": [
- {
- "quantity": "1",
- "id": "9990000240006",
- "name": "COSBY 3 MATELAS 90X190",
- "delivery_type": "lv1",
- "packages": [
- {
- "weight_kg": 8.1,
- "volume_m3": 0.265
}
], - "reprise_quantity": "0",
- "ean_13": "3663728774461"
}
]
}{- "timeslots": [
- {
- "timeslotId": "b6cfecbf-d55b-43e3-8e94-5575cef1dd36",
- "start": "2025-11-22T09:00:00+0100",
- "stop": "2025-11-22T14:00:00+0100"
}, - {
- "timeslotId": "49e0ef1f-54b8-4dbc-8762-6bfe4856a9ef",
- "start": "2025-11-22T14:00:00+0100",
- "stop": "2025-11-22T17:00:00+0100"
}
]
}Réserve un créneau de livraison spécifique identifié par son timeslotId.
Cette opération est synchrone et retourne directement la réponse de l'instance FluidIT.
Identification du magasin:
Le champ store_id est utilisé pour identifier le magasin (contractor) via la table ContractorIdentifier.
Réponse:
La réponse est transmise directement depuis FluidIT sans modification, avec le code de statut HTTP original.
En cas de succès, la réponse contient généralement un reservationId à utiliser pour annuler la réservation.
Données de réservation du créneau
| store_id required | string Identifiant du magasin utilisé pour identifier le contractor via ContractorIdentifier |
| timeslotId required | string Identifiant du créneau à réserver (obtenu via l'endpoint GET timeslots) |
{- "store_id": "001",
- "timeslotId": "b6cfecbf-d55b-43e3-8e94-5575cef1dd36"
}{- "reservationId": "res_789012",
- "timeslotId": "slot_123456",
- "status": "confirmed",
- "start": "2025-01-20T09:00:00Z",
- "end": "2025-01-20T12:00:00Z"
}Annule une réservation de créneau de livraison existante identifiée par son reservationId.
Cette opération est synchrone et retourne directement la réponse de l'instance FluidIT.
Identification du magasin:
Le champ store_id est utilisé pour identifier le magasin (contractor) via la table ContractorIdentifier.
Réponse: La réponse est transmise directement depuis FluidIT sans modification, avec le code de statut HTTP original.
Données d'annulation de la réservation
| store_id required | string Identifiant du magasin utilisé pour identifier le contractor via ContractorIdentifier |
| reservationId required | string Identifiant de la réservation à annuler (obtenu lors de la réservation) |
{- "store_id": "001",
- "reservationId": "res_789012"
}{- "reservationId": "res_789012",
- "status": "cancelled",
- "message": "Réservation annulée avec succès"
}Les appels lancés depuis FluidIT vers l'expéditeur (webhook & retour async des request)
⚠️ IMPORTANT : Ceci N'EST PAS un endpoint à appeler !
Cette documentation décrit la structure des notifications webhook que votre système recevra de la part de FluidIT lorsque des événements se produisent sur les commandes et livraisons.
Comment cela fonctionne :
/subscriptionswebhook_url dans l'abonnementImplémentation côté client :
event_type pour déterminer le type d'événement et traiter en conséquenceGestion des erreurs :
Sécurité :
Le système d'événements webhook fonctionne selon le principe suivant :
webhook_url configuré lors de la souscription à ce type d'événementChaque événement webhook envoyé à votre endpoint contient un payload JSON avec la structure définis dans WebhookPayload
failure_reason - Raisons d'échec de livraison globale :
absent : Client absentcustomerCancellation : Annulation clientaddressNotFound : Adresse non trouvéewrongAddress : Adresse incorrectebreakdown : Panne véhiculeunknown : Personne inconnuestrike : Impossible : grèveweather : Impossible : conditions météofailure_reason - Raisons d'échec de livraison à l'article :
damaged : Produit abîmérefused : Produit refusé par le clientpartialDelivery : Colis manquantmissingInfo : Information ou document manquantclosed : Impossible de livrer dans la pièce de destinationfailure_reason - Raisons d'échec de reprise :
notready : Produit non prêt (enlèvement)customerRequest : Produit non repris à la demande du clientnoProductToPickup : Il n'y a plus de produit à reprendrenotUninstalled : Le produit n'est pas désinstallébadHygiene : Mauvais état hygiéniquedismantledProduct : Appareil / produit désosséother : Autre…pickup_incident_reason - Raisons d'incident lors du chargement :
DAMAGED_PACKAGING_OR_PRODUCT : Emballage/produit abîméMISSING_PRODUCT : Produit manquantPRODUCT_OR_EAN_DOES_NOT_MATCH : Produit/EAN ne correspond pasFORCED : ForcéPayload JSON que FluidIT envoie à votre endpoint webhook lors d'un événement. Cette structure est standardisée pour tous les types d'événements.
| timestamp required | string <date-time> Horodatage de l'événement au format ISO 8601 |
| fluidit_id required | string Identifiant unique FluidIT de la commande |
| fluidit_url | string URL de la commande dans FluidIT |
| contractor_id required | string Identifiant du contractant/magasin |
| order_id required | string Identifiant de la commande |
| store_id required | string Identifiant du magasin |
| api_sender required | string Identifiant de l'expéditeur API |
| event_type required | string Enum: "ORDER_CREATED" "ORDER_VALIDATED" "ORDER_TO_CLIENT_WAITING" "ORDER_SHIFT_TIME_PASSED" "ORDER_DATE_CHANGED" "ORDER_ASSIGNED_TO_ROUND" "PICKING_DONE" "DELIVERY_STARTED" "DELIVERY_COMPLIANT" "DELIVERY_NOT_COMPLIANT" "DELIVERY_WITH_MISSING_PRODUCT" "DELIVERY_PARTIALLY_RETURNED_TO_STORE" "ORDER_CANCELLED" "ORDER_CANCELLED_WITH_REASON" "ORDER_CUSTOMER_ABSENT" "ORDER_DELIVERY_FAILED" "CLIENT_PORTAL_LINK_SENT" "INCOMING_DELIVERY" Type d'événement déclenché |
| order_status required | string Statut actuel de la commande |
| delivered_at | string or null <date-time> Date et heure de livraison effective (null si pas encore livrée) |
| arrival_time | string or null Heure d'arrivée du livreur (format HH:MM) |
| failure_reason | string or null Enum: "absent" "customerCancellation" "addressNotFound" "wrongAddress" "breakdown" "unknown" "strike" "weather" Raison d'échec de livraison |
| sav_comment | string or null Commentaire du service après-vente |
object Informations sur le rendez-vous de livraison | |
required | Array of objects (WebhookArticle) Liste des articles de la commande avec leur statut individuel |
Exemple de payload reçu lors de la création d'une commande
{- "timestamp": "2025-01-15T14:30:00Z",
- "fluidit_id": "202505200163409",
- "contractor_id": "d3b6e5bc-f8d1-4d43-8fcd-456558c67f27",
- "order_id": "YOUR-ID-123456789",
- "store_id": "001",
- "api_sender": "SKARA",
- "event_type": "ORDER_CREATED",
- "order_status": "WAITING_FOR_CUSTOMER",
- "delivered_at": null,
- "arrival_time": null,
- "failure_reason": null,
- "sav_comment": null,
- "delivery_appointment": {
- "date": null,
- "from_time": "00:00:00",
- "to_time": "00:00:00"
}, - "articles": [
- {
- "product_id": "123456",
- "ean_13": "1234567890123",
- "name": "LIT DOUBLE X SUPER LIT",
- "picking_status": null,
- "is_delivered": null,
- "pickup_at": null,
- "pickup_by": null,
- "pickup_incident_reason": null,
- "failure_reason": null
}
]
}{- "message": "OK"
}⚠️ IMPORTANT : Ceci N'EST PAS un endpoint à appeler !
Cette documentation décrit la structure des notifications de résultat que votre système recevra de la part de FluidIT lorsque le traitement asynchrone d'une requête est terminé.
Lorsque vous effectuez une opération asynchrone (création, modification ou annulation de commande),
vous recevez immédiatement une réponse 202 avec un request_id. Le traitement réel de votre requête
se fait ensuite en arrière-plan.
Si vous avez configuré un "response_url" dans votre configuration d'expéditeur, FluidIT poussera automatiquement le résultat du traitement vers cette URL dès que le traitement sera terminé.
Comment cela fonctionne :
/orders ou /orders/{order_id}request_idresponse_urlAvantages du Response URL :
/request/{request_id}Implémentation côté client :
processing_status pour déterminer si le traitement a réussi ou échouésuccess indique rapidement si l'opération a réussi (true) ou échoué (false)Gestion des erreurs :
Sécurité :
FINISHED: Le traitement s'est terminé avec succèsFAILED: Le traitement a échoué (erreur serveur FluidIT, timeout, etc.)INVALID: La requête était invalide (magasin introuvable, données incorrectes, etc.)Le payload envoyé à votre response_url contient toujours les champs suivants :
request_id: Identifiant de la requête (correspond au request_id reçu dans la réponse 202)original_order_id: Identifiant de commande que vous avez fourniprocessing_status: Statut du traitement (FINISHED, FAILED, INVALID)timestamp: Date et heure de création de la requêtelast_attempt: Date et heure de la dernière tentative de traitementaction_type: Type d'action (CREATE, UPDATE, DELETE, MODIFY)success: Booléen indiquant si l'opération a réussistore_id ou store_name: Identifiant ou nom du magasin (selon disponibilité)En cas de succès :
response_status: Code HTTP de la réponse FluidIT (200, 201, etc.)fluidit_id: Identifiant FluidIT de la commande créée/modifiéeorder_status: Statut de la commande dans FluidITresponse_data: Données complètes de la réponse FluidITEn cas d'échec :
error.message: Message d'erreur descriptiferror.failure_reason: Raison détaillée de l'échec (si disponible)response_status: Code HTTP de l'erreur (si applicable)response_data: Données d'erreur de FluidIT (si disponibles)Payload JSON que FluidIT envoie à votre response_url lorsque le traitement d'une requête est terminé. Cette structure varie selon le résultat du traitement (succès, échec, invalide).
| request_id required | integer Identifiant unique de la requête (correspond au request_id reçu dans la réponse 202) |
| original_order_id required | string Identifiant de commande que vous avez fourni lors de la création/modification |
| processing_status required | string Enum: "FINISHED" "FAILED" "INVALID" Statut du traitement de la requête |
| timestamp required | string <date-time> Date et heure de création de la requête au format ISO 8601 |
| last_attempt | string or null <date-time> Date et heure de la dernière tentative de traitement (null si requête invalide) |
| action_type required | string Enum: "CREATE" "UPDATE" "DELETE" "MODIFY" Type d'action effectuée |
| store_id | string or null Identifiant du magasin (présent si disponible) |
| store_name | string or null Nom du magasin (présent si store_id non disponible) |
| success required | boolean Indique si l'opération a réussi (true) ou échoué (false) |
| response_status | integer or null Code de statut HTTP de la réponse FluidIT (null si requête invalide avant envoi) |
| fluidit_id | string or null Identifiant FluidIT de la commande (présent uniquement en cas de succès) |
| order_status | string or null Statut de la commande dans FluidIT (présent uniquement en cas de succès) |
| response_data | object or null Données complètes de la réponse FluidIT (structure variable selon l'opération) |
object or null Informations d'erreur (présent uniquement en cas d'échec) |
Exemple d'une requête de création traitée avec succès avec toutes les informations disponibles
{- "request_id": 12345,
- "original_order_id": "ORDER-2024-001",
- "processing_status": "FINISHED",
- "timestamp": "2024-01-15T10:30:00.123456Z",
- "last_attempt": "2024-01-15T10:30:05.789012Z",
- "action_type": "CREATE",
- "store_id": "STORE_001",
- "success": true,
- "response_status": 200,
- "fluidit_id": "FL-789456",
- "order_status": "VALIDATED",
- "response_data": {
- "id": "FL-789456",
- "message": "Order created successfully",
- "order_status": "VALIDATED"
}
}{- "message": "OK"
}