Suivi de commande
Cycle de vie d'une commande
Le cycle de vie d'une commande se déroule en deux phases :
- Création de la commande via l'endpoint
/api/v1/product_order/
- Suivi de la commande via l'endpoint
/api/v1/order/
Phase 1 : Création de la commande (/product_order)
Lors de la création, le product_order_item passe par les statuts suivants :
flowchart LR
A[Création] --> B(<i>acknowledged</i>)
B --> C(<i>in_progress</i>)
F -->|Succès| D(<i>created</i>)
F -->|Échec| E(<i>rejected_creation</i>)
C --> F{<i>Traitement</i>}
B --> G(<i>technical_error</i>)
| Statut |
Description |
acknowledged |
Commande reçue et prise en compte |
in_progress |
Traitement en cours |
created |
Commande créée avec succès |
rejected_creation |
Création rejetée |
technical_error |
Erreur technique lors de la création |
Phase 2 : Suivi de la commande (/order)
Une fois la commande créée, elle peut être suivie via l'endpoint /order avec les statuts suivants :
flowchart LR
A[Commande créée] --> B(<i>confirmed</i>)
B --> C(<i>in_progress</i>)
C --> D{<a href='/api-suivi-commande/#etapes-de-production'>Production</a>}
D -->|OK| E(<i>active</i>)
D -->|KO| F(<i>rejected</i>)
E --> G[Demande de \nmodification]
G --> H(<i>change_in_progress</i>)
H --> E
E --> I[Demande de \nrésiliation]
I --> J(<i>terminate_in_progress</i>)
J --> K(<i>terminated</i>)
C --> L[Demande \nd'annulation]
L --> M(<i>cancelled</i>)
| Statut |
Description |
confirmed |
Commande confirmée |
in_progress |
En cours de production |
active |
Service actif |
terminate_in_progress |
En cours de déproduction |
terminated |
Service déproduit |
change_in_progress |
Mise à jour du service en cours |
rejected |
Commande rejetée |
cancelled |
Commande annulée |
Etapes de production
Ces étapes de production détaillées sont disponibles via l'endpoint /api/v1/order/{order_reference}/historic/ et permettent de suivre finement l'avancement de la commande.
flowchart TD
A[<i>production_manager_assigned</i> : Commande affectée à un Chargé de Production] --> B(<i>optical_route_received</i> : Réceptionner la Route Optique)
B --> C(<i>technical_visit_planned</i> : Visite technique planifiée)
C --> D(<i>technical_visit_completed</i> : Visite technique effectuée)
D --> E(<i>technical_visit_report_published</i> : Rapport de visite technique publié)
E --> F(<i>connexion_planned</i> : Raccordement planifié)
F --> G(<i>connexion_completed</i> : Raccordement effectué)
G --> H(<i>service_configured</i> : Configuration du service)
H --> I(<i>service_controlled</i> : Contrôle du service)
I --> J(<i>delivery_report_published</i> : PV de livraison publié)
J --> K[<i>intervention_report_published</i> : Rapport d'intervention publié]
Récupération d'une liste de commandes
GET /api/v1/order/
Réponse
| Nom |
Type |
Description |
| modification_date |
string |
Date de modification de la commande |
| order_reference |
string |
Référence de la commande |
| id |
string |
Identifiant de la commande |
| order_date |
string |
Date de la prise de commande |
| cancellation_date |
string |
Date d'annulation de la commande |
| cancellation_reason |
string |
Raison de l'annulation |
| completion_date |
string |
Date de complétion de la commande |
| delivery_lead_time |
string |
Délai de raccordement de la commande en nombre de semaines |
| state |
string |
Statut |
| project_id |
string |
Projet associé à la commande |
| offer_family |
string |
Famille d'offre (BPE/BPEA) |
| offer_technology |
string |
Technologie associée à la commande |
| commitment |
number |
Durée d'engagement |
| site_client |
string |
Coordonnées postales du site client |
| site_client_2 |
string |
Coordonnées postales du site client secondaire |
| end_customer_name |
string |
Nom du client final |
| end_customer_name_2 |
string |
Nom du client final secondaire |
| created_by |
string |
Utilisateur qui a créé la commande draft |
Exemple
{
"modification_date": "2025-04-23T10:00:58Z",
"order_reference": "CMD_X_00009444",
"id": "PO_DC173_20250423_003366",
"order_date": "2025-04-23",
"cancellation_date": null,
"cancellation_reason": "",
"completion_date": null,
"delivery_lead_time": "1",
"state": "in_progress",
"project_id": "",
"offer_family": "BPE",
"offer_technology": "FIBDE",
"commitment": 12,
"site_client": "3 RUE ANDREI DIMITRI SAKHAROV 76130 MONT ST AIGNAN",
"site_client_2": "",
"end_customer_name": "king jouet",
"end_customer_name_2": "",
"created_by": "example@example.com"
}
Récupération d'une commande
GET /api/v1/order/{order_reference}/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Oui |
Réponse
| Nom |
Type |
Description |
| id |
string |
Identifiant de la commande |
| order_reference |
string |
Référence de la commande |
| external_id |
string |
Identifiant externe pour la demande |
| order_date |
string |
Date de la commande |
| cancellation_date |
string |
Date d'annulation de la commande |
| cancellation_reason |
string |
Raison de l'annulation |
| completion_date |
string |
Date de complétion de la commande |
| note |
string |
Note associée à la commande |
| technical_note |
string |
Note technique associée à la commande |
| product_offering_id |
string |
Identifiant de l'offre de produit |
| product_offering_qualification_item_id |
string |
Identifiant de l'élément de qualification de l'offre de produit |
| project_id |
string |
Identifiant du projet associé |
| quote_item_id |
string |
Identifiant de l'élément de devis |
| delivery_mode |
string |
Mode de livraison |
| enni |
string |
Identifiant ENNI |
| enni2 |
string |
Identifiant second ENNI |
| delivery_lead_time |
string |
Délai de raccordement de la commande en nombre de semaines |
| delivery_lead_time_label |
string |
Label du délai de raccordement de la commande |
| vlan_reference |
number |
Référence VLAN |
| customer_order_name |
string |
Nom de la commande client |
| securing |
number |
Identifiant de la sécurisation |
| securing_label |
string |
Sécurisation |
| service_reference |
string |
Référence de service |
| minimum_commitment_duration |
number |
Durée minimale d'engagement |
| commitment_end_date |
string |
Date de fin d'engagement |
| notice_period |
number |
Période échue |
| estimated_delivery_date |
string |
Date de livraison prévisionnelle |
| billing_site_ref |
string |
Référence du site de facturation |
| billing_site_name |
string |
Nom du site de facturation |
| billing_period |
string |
Période de facturation |
| state |
string |
État actuel de la commande |
| termination_error |
array |
Erreurs de terminaison associées |
| option_ids |
array |
Liste des identifiants d'options |
| product |
array |
Informations sur le produit |
| related_contact_information |
array |
Informations des contacts associés |
| technical_zone |
string |
Zone technique |
| bandwidth |
string |
Débit |
| service_topology |
string |
Topologie du service |
| building_ref |
string |
Référence de l'immeuble |
| manager_regional |
json |
Responsable commercial (Manager régional) |
| manager_n1_regional |
json |
Responsable commercial (Manager régional N+1) |
| manager_national |
json |
Responsable commercial (Manager national) |
| manager_n1_national |
json |
Responsable commercial (Manager national N+1) |
| strands_number |
number |
Nombre de brins FON |
| fon_security |
boolean |
Sécurisation FON |
| technology |
string |
Technologie associée à la commande |
| total_amount_monthly |
number |
Total mensuel de la commande |
| total_amount_annual |
number |
Total annuel de la commande |
Exemple
{
"id": "PO_DC173_20250423_003366",
"order_reference": "CMD_X_00009444",
"external_id": "",
"order_date": "2025-04-23",
"cancellation_date": null,
"cancellation_reason": "",
"completion_date": null,
"note": "",
"technical_note": "",
"product_offering_id": "1679",
"product_offering_qualification_item_id": "",
"project_id": "",
"quote_item_id": "",
"delivery_mode": "N/A",
"enni": "",
"enni2": "",
"delivery_lead_time": "1",
"delivery_lead_time_label": "T0 + 1 semaine",
"vlan_reference": null,
"customer_order_name": "",
"securing": 1,
"securing_label": "Non sécurisé",
"service_reference": "FR048380",
"minimum_commitment_duration": 12,
"commitment_end_date": null,
"notice_period": 3,
"estimated_delivery_date": "2025-04-30",
"billing_site_ref": "AUX00",
"billing_site_name": "COVAGE INFRA",
"billing_period": "Annuelle",
"state": "in_progress",
"termination_error": [...],
"option_ids": [
"1615",
"1620",
"237"
],
"product": {...},
"related_contact_information": [...],
"technical_zone": "THD Zone 1",
"service_topology": "COLST",
"building_ref": "",
"manager_regional": {
"name": "Gregory DUPONT",
"email": "gregory.d@covage.com",
"phone": "612345678"
},
"manager_n1_regional": null,
"manager_national": null,
"manager_n1_national": null,
"strands_number": 1,
"fon_security": false,
"technology": "FON",
"total_amount_monthly": 440.0,
"total_amount_annual": 960.0
}
Détail des erreurs de terminaison
| Nom |
Type |
Description |
Obligatoire |
| code |
string |
Code de l'erreur |
Oui |
| property_path |
string |
Chemin de la propriété concernée |
Oui |
| value |
string |
Valeur associée à l'erreur |
Oui |
| Nom |
Type |
Description |
Obligatoire |
| end_customer_name |
string |
Nom du client final |
Oui |
| siret |
string |
Numéro SIRET |
Oui |
| contact1_email_address |
string |
Adresse e-mail du contact sur site |
Oui |
| contact1_firstname |
string |
Prénom du contact sur site |
Oui |
| contact1_lastname |
string |
Nom du contact sur site |
Oui |
| contact1_phone_number |
string |
Numéro de téléphone du contact sur site |
Oui |
| contact2_email_address |
string |
Adresse e-mail du contact secondaire |
Non |
| contact2_firstname |
string |
Prénom du contact secondaire |
Non |
| contact2_lastname |
string |
Nom du contact secondaire |
Non |
| contact2_phone_number |
string |
Numéro de téléphone du contact secondaire |
Non |
| city |
string |
Ville |
Oui |
| postcode |
string |
Code postal |
Oui |
| street_name |
string |
Nom de la rue |
Oui |
| street_number |
string |
Numéro de la rue |
Oui |
| street_number_extension |
string |
Extension du numéro de rue |
Non |
| insee_code |
string |
Code INSEE |
Oui |
| building_name |
string |
Nom du bâtiment |
Non |
| level_number |
string |
Numéro d'étage |
Non |
| latitude |
number |
Latitude de l'adresse |
Oui |
| longitude |
number |
Longitude de l'adresse |
Oui |
Exemple
{
"related_contact_information": [{
"end_customer_name": "king jouet",
"siret": "",
"contact1_email_address": "toto@gmail.com",
"contact1_firstname": "toto",
"contact1_lastname": "toto",
"contact1_phone_number": "215488745",
"contact2_email_address": "",
"contact2_firstname": "",
"contact2_lastname": "",
"contact2_phone_number": "",
"city": "MONT ST AIGNAN",
"postcode": "76130",
"street_name": "3 RUE ANDREI DIMITRI SAKHAROV",
"street_number": "",
"street_number_extension": "",
"insee_code": "76451",
"building_name": "",
"level_number": "",
"latitude": 49.474174,
"longitude": 1.090847
}]
}
Détail du produit
| Nom |
Type |
Description |
| id |
string |
Identifiant du produit |
| name |
string |
Nom du produit |
| description |
string |
Description du produit |
| bandwidth |
string |
Débit |
| bandwidth_guarantee |
float |
Débit garanti |
| bandwidth_max |
float |
Débit maximum |
| commitment |
string |
Durée d'engagement |
| tarif_zone |
string |
Zone tarifaire |
| offer_family |
string |
Famille d'offre (BPE/BPEA) |
| offer_technology |
string |
Technologie de l'offre |
| far |
number |
Far |
| fas |
number |
Fas |
| fad |
number |
Fad |
| price |
number |
Prix produit |
| recurring |
boolean |
Récurrence ou non du produit |
| options |
array |
Liste des options |
Exemple
"product": {
"id": "1679",
"name": "BPE 100M _Zone très dense_12 mois ",
"description": "BPE 100M _Zone très dense_12 mois ",
"bandwidth_guarantee": "G",
"commitment": "12MOIS",
"tarif_zone": "TRESDENSE",
"offer_family": "BPE",
"offer_technology": "FIBDE",
"far": 540.0,
"fas": 360.0,
"fad": 0.0,
"price": 145.0,
"recurring": true,
"options": [...]
},
Détail des options
| Nom |
Type |
Description |
| name |
string |
Nom de l'option |
| label |
string |
Nom du produit |
| type |
string |
Type de l'option |
| option_id |
string |
Identifiant |
| price |
number |
Prix |
| recurring |
boolean |
Récurrence |
Exemple
"options": [
{
"name": "GTR 4H HO",
"label": "GTR 4H HO",
"type": "SERVI",
"option_id": "194",
"price": 0.0,
"recurring": true
},
{
"name": "Livraison locale",
"label": "Livraison locale",
"type": "SERVI",
"option_id": "2220",
"price": 0.0,
"recurring": true
},
]
Détail des manager
| Nom |
Type |
Description |
| name |
string |
Nom et prénom |
| email |
string |
Adresse email |
| phone |
string |
Numéro de téléphone |
Exemple
"manager_regional": {
"name": "Gregory DUPONT",
"email": "gregory.d@covage.com",
"phone": "612345678"
}
Récupération de la liste des documents d'une commande
GET /api/v1/order/{order_reference}/documents/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Oui |
Réponse
| Nom |
Type |
Description |
| type |
string |
Type du document |
| values |
array |
Liste des documents de ce type |
Exemple
BDC = Bon De Commande
[
{
"type": "BDC",
"values": [
"CMD_X_00009444_1.pdf"
]
}
]
Récupération d'un document d'une commande
GET /api/v1/order/{order_reference}/{filename}/download/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Oui |
| filename |
string |
Nom du document |
Oui |
Réponse
Le contenu du document au format binaire
Récupération de l'historique d'une commande
GET /api/v1/order/{order_reference}/historic/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Oui |
Réponse
Exemple
{
"results": [
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "acknowledged"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "held_adv_validation"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "production_in_progress"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "production_manager_assigned"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "optical_route_received"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "technical_visit_planned"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "technical_visit_completed"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "technical_visit_report_published"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "connexion_planned"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "connexion_completed"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "service_configured"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "service_controlled"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "delivery_report_published"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:10+02:00",
"state": "intervention_report_published"
},
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "active"
}
]
}
Détail des statuts d'une commande
| Nom |
Type |
Description |
| change_reason |
string |
Raison du changement d'état |
| change_date |
string |
Date du changement d'état |
| state |
string |
Nouvel état |
Exemple
{
"change_reason": "",
"change_date": "2025-06-03T18:37:08+02:00",
"state": "production_in_progress"
}
Liste des motifs de demandes de résiliation
GET /api/v1/terminate_reason/
Réponse
| Nom |
Type |
Description |
| terminate_reasons |
liste |
Motif de résiliation |
Le motif sera à envoyer lors de la demande de résiliation sur la route POST api/v1/order/{order_reference}/terminate/.
Exemple
{
"terminate_reasons": [
"Cessation d'activité",
"Changement d'Operateur d'Infrastructure",
"Déménagement sans reprise de lien COVAGE",
"Déménagement avec reprise de lien COVAGE",
"Autres motifs, précisez en commentaire"
]
}
Liste des demandes
GET /api/v1/order_request/
Réponse
| Nom |
Type |
Description |
| id |
string |
id de l'objet |
| creation_date |
string |
Date de création |
| modification_date |
string |
Date modification |
| order_reference |
string |
Référence de l'order |
| action |
string |
Action de la demande |
| request_effective_date |
string |
Date effective |
| message |
string |
Message |
| reason |
string |
Raison de la demande |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Non |
| action |
string |
Action de la demande |
None |
Liste les demandes (Résiliation, Modification ...) faites sur POST /api/v1/order/{order_reference}/{action}/
Exemple
{
"id": "6964723b-c39b-4a19-b5d5-d4f4fde5c216",
"creation_date": "2025-05-22T09:40:56.384Z",
"modification_date": "2025-05-22T09:40:56.384Z",
"order_reference": "CMD_X_00005342",
"action": "Résiliation",
"request_effective_date": null,
"message": "",
"reason": "Cessation d'activité"
}
Export des commandes
Le processus d'export des commandes se déroule en trois étapes :
1. Lancement de l'export CSV
POST /api/v1/order/export/csv/
Lance l'export des commandes au format CSV. Cette opération est limitée à une requête toutes les 5 minutes par utilisateur.
Réponse
| Champ |
Type |
Description |
| task_id |
string |
Identifiant de la tâche d'export |
Exemple de réponse
{
"task_id": "550e8400-e29b-41d4-a716-446655440000"
}
2. Vérification du statut
GET /api/v1/order/export/{task_id}/status/
Permet de suivre l'état d'avancement de l'export.
Paramètres URL
| Paramètre |
Type |
Description |
| task_id |
string |
Identifiant de la tâche d'export |
Réponse
| Champ |
Type |
Description |
| task_id |
string |
Identifiant de la tâche |
| success |
boolean |
État de la tâche (null si en cours) |
| started |
datetime |
Date de début |
| stopped |
datetime |
Date de fin |
Le champ success dans la réponse du statut d'export peut avoir trois états possibles :
| Valeur |
Description |
null |
La tâche est toujours en cours d'exécution ou n'a pas encore démarrée |
true |
La tâche s'est terminée avec succès, le fichier CSV est prêt |
false |
La tâche s'est terminée en échec |
Exemple de réponse
{
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"success": true,
"started": "2025-07-08T10:30:00Z",
"stopped": "2025-07-08T10:31:00Z"
}
3. Téléchargement du fichier
GET /api/v1/order/export/{task_id}/download/
Télécharge le fichier CSV généré une fois l'export terminé.
Paramètres URL
| Paramètre |
Type |
Description |
| task_id |
string |
Identifiant de la tâche d'export |
Réponse
Fichier CSV contenant les données exportées.
En-têtes de réponse
| En-tête |
Valeur |
| Content-Type |
text/csv |
Créer un message pour une commande
POST /api/v1/order/{order_reference}/message/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Oui |
| message |
string |
Contenu du message (1-1000 caractères) |
Oui |
Réponse
| Nom |
Type |
Description |
| id |
string |
Identifiant unique du message |
| message |
string |
Contenu du message |
| creation_date |
string |
Date de création |
| user |
object |
Informations de l'utilisateur créateur |
Exemple
{
"id": "msg_123456789",
"message": "Demande d'information sur l'avancement de la commande",
"creation_date": "2025-01-15T14:30:00Z",
"user": {
"email": "user@client-domain.com",
"first_name": "Jean",
"last_name": "Dupont"
}
}
Récupération de la liste des messages d'une commande
GET /api/v1/order/{order_reference}/message/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| order_reference |
string |
Référence de la commande |
Oui |
Détail d'un message
| Nom |
Type |
Description |
| id |
string |
Identifiant unique du message |
| message |
string |
Contenu du message |
| creation_date |
string |
Date de création du message |
| user |
object |
Informations de l'utilisateur créateur |
Exemple
{
"results": [
{
"id": "msg_123456789",
"message": "Demande d'information sur l'avancement de la commande",
"creation_date": "2025-01-15T14:30:00Z",
"user": {
"email": "user@client-domain.com",
"first_name": "Jean",
"last_name": "Dupont"
}
}
],
"page_size": 10,
"has_next": false,
"next_cursor": null
}
Note : Les messages sont triés par date de création décroissante (le plus récent en premier).
Gestion des erreurs
| Code HTTP |
Description |
| 401 |
Utilisateur non authentifié |
| 403 |
Permission refusée |
| 404 |
Tâche ou fichier non trouvé |
| 429 |
Trop de requêtes (limitation de débit atteinte) |