Cotation
Fonctionnement
Le processus de cotation permet d'obtenir des devis pour des offres fibres avant de les convertir en commandes fermes.
sequenceDiagram
participant Client
Client->>Covage API: Création d'un panier de cotations
Covage API-->>Client: Panier créé
Client->>Covage API: Ajout de lignes de cotation
Covage API-->>Client: Lignes ajoutées
Client->>Covage API: Upload d'un fichier de tracé
Covage API-->>Client: Fichier uploadé
Client->>Covage API: Confirmation du panier
Covage API-->>Covage Backend: Transmission pour traitement
Covage Backend-->>Covage API: Confirmation du traitement
Covage API-->>Client: Panier prêt
Client->>Covage API: Acceptation d'une ligne de cotation
Covage API-->>Client: Panier finalisé (transformé en ligne de commande)
Cycle de vie d'un panier de cotations
flowchart LR
A[acknowledged] --> B[confirmed]
B --> C[finalized]
C --> D[partial_ready]
D --> E[ready]
E --> F[partial_finalized]
F --> G[finalized]
Cycle de vie d'une ligne de cotation
flowchart LR
A[acknowledged] --> B[confirmed]
B --> C[ready]
B --> D[unable_to_provide]
C --> E[expired]
C --> F[refused]
C --> G[accepted]
Création d'un panier de cotations
Création d'un panier de cotations.
POST /api/v1/quote/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| external_id |
string |
Identifiant externe |
Non |
| project_id |
string |
Identifiant du projet associé |
Non |
Exemple
{
"external_id": "EXT123",
"project_id": "PRJ456"
}
Réponse
| Nom |
Type |
Description |
| external_id |
string |
Identifiant externe |
| project_id |
string |
Identifiant du projet associé |
| id |
string |
Identifiant du panier |
| quote_date |
string |
Date de cotation |
| creation_date |
string |
Date de création |
| state |
string |
État actuel du panier |
Exemple
{
"external_id": "EXT123",
"project_id": "PRJ456",
"id": "123e4567-e89b-12d3-a456-426614174000",
"quote_date": "2026-04-23T10:00:00+02:00",
"creation_date": "2026-04-23T09:00:00+02:00",
"state": "acknowledged"
}
Liste et filtrage des paniers de cotations
Liste et filtre les paniers de cotations.
GET /api/v1/quote/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| external_id |
string |
Filtre par identifiant externe |
Non |
| project_id |
string |
Filtre par identifiant de projet |
Non |
| state |
string |
Filtre par état |
Non |
| creation_date_gt |
string |
Date de création supérieure à (ISO 8601) |
Non |
| creation_date_lt |
string |
Date de création inférieure à (ISO 8601) |
Non |
| quote_date_gt |
string |
Date de cotation supérieure à (ISO 8601) |
Non |
| quote_date_lt |
string |
Date de cotation inférieure à (ISO 8601) |
Non |
Réponse
Liste paginée de paniers de cotations avec les mêmes champs que la réponse de création.
Exemple
{
"page_size": 10,
"count": 1,
"next_page": null,
"previous_page": null,
"results": [
{
"external_id": "EXT123",
"project_id": "PRJ456",
"id": "123e4567-e89b-12d3-a456-426614174000",
"quote_date": "2026-04-23T10:00:00+02:00",
"creation_date": "2026-04-23T09:00:00+02:00",
"state": "acknowledged"
}
]
}
Détail d'un panier de cotations
Récupère les détails d'un panier de cotations.
GET /api/v1/quote/{id}/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant du panier |
Oui |
Réponse
| Nom |
Type |
Description |
| external_id |
string |
Identifiant externe |
| project_id |
string |
Identifiant du projet associé |
| id |
string |
Identifiant du panier |
| quote_item |
array |
Liste des lignes de cotation |
| state |
string |
État actuel du panier |
| quote_date |
string |
Date de cotation |
Exemple
{
"external_id": "EXT123",
"project_id": "PRJ456",
"id": "123e4567-e89b-12d3-a456-426614174000",
"quote_item": [],
"state": "acknowledged",
"quote_date": "2026-04-23T10:00:00+02:00"
}
Mise à jour d'un panier de cotations
Met à jour un panier de cotations.
PATCH /api/v1/quote/{id}/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant du panier |
Oui |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| external_id |
string |
Identifiant externe |
Non |
| project_id |
string |
Identifiant du projet associé |
Non |
Exemple
{
"external_id": "EXT123_UPDATED",
"project_id": "PRJ456_UPDATED"
}
Réponse
Détail du panier mis à jour (voir GET /quote/{id}/).
Confirmation d'un panier de cotations
Confirme un panier de cotations.
PATCH /api/v1/quote/{id}/confirm/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant du panier |
Oui |
Réponse
Détail du panier confirmé (voir GET /quote/{id}/).
Ajout d'une ligne de cotation à un panier
Ajoute une ligne de cotation à un panier.
Certains champs facultatifs lors de la création d'une ligne de cotation deviennent obligatoires lors de la confirmation du panier. Il convient alors de les renseigner au préalable via la mise à jour de la ligne de cotation.
POST /api/v1/quote/{quote_id}/quote_item/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| end_customer_name |
string |
Nom du client final |
Oui (à la confirmation) |
| external_id |
string |
Identifiant externe |
Non |
| site_connection_type |
string |
Type de connexion du site |
Oui (à la confirmation) |
| business_sector |
string |
Secteur d'activité |
Non |
| expected_response_date |
string |
Date de réponse attendue |
Non |
| option_ids |
array |
Liste des identifiants d'options |
Non |
| note |
string |
Note |
Non |
| technical_note |
string |
Note technique |
Non |
| product_offerings |
array |
Liste des offres de produits (max 5) |
Oui (à la confirmation) |
| product_offering_qualification_item_id |
string |
Identifiant de l'élément de qualification |
Oui |
| project_id |
string |
Identifiant du projet |
Non |
| customer_order_name |
string |
Nom de la commande client |
Non |
| business_code |
string |
Code métier |
Non |
| related_contact_information |
array |
Informations des contacts associés (max 2) |
Non |
Exemple
{
"end_customer_name": "Client Final",
"external_id": "EXT_ITEM",
"product_offering_qualification_item_id": "123e4567-e89b-12d3-a456-426614174001"
}
Réponse
| Nom |
Type |
Description |
| end_customer_name |
string |
Nom du client final |
| external_id |
string |
Identifiant externe |
| site_connection_type |
string |
Type de connexion du site |
| business_sector |
string |
Secteur d'activité |
| expected_response_date |
string |
Date de réponse attendue |
| option_ids |
array |
Liste des identifiants d'options |
| note |
string |
Note |
| technical_note |
string |
Note technique |
| product_offerings |
array |
Liste des offres de produits |
| product_offering_qualification_item_id |
string |
Identifiant de l'élément de qualification |
| project_id |
string |
Identifiant du projet |
| customer_order_name |
string |
Nom de la commande client |
| business_code |
string |
Code métier |
| related_contact_information |
array |
Informations de contact liées |
| id |
string |
Identifiant de la ligne |
| quote_date |
string |
Date de cotation |
| state |
string |
État de la ligne |
| reference |
string |
Référence |
| trace_file |
string |
Fichier de tracé |
| creation_date |
string |
Date de création |
Exemple
{
"end_customer_name": "Client Final",
"external_id": "EXT_ITEM",
"site_connection_type": "",
"business_sector": "",
"expected_response_date": null,
"option_ids": [],
"note": "",
"technical_note": "",
"product_offerings": null,
"product_offering_qualification_item_id": "123e4567-e89b-12d3-a456-426614174001",
"project_id": "",
"customer_order_name": "",
"business_code": "",
"related_contact_information": null,
"id": "123e4567-e89b-12d3-a456-426614174002",
"quote_date": null,
"state": "acknowledged",
"reference": "QO_20260423_00000001",
"trace_file": "",
"creation_date": "2026-04-23T10:00:00+02:00"
}
Mise à jour d'une ligne de cotation
Met à jour une ligne de cotation.
PATCH /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
Paramètres de la requête
Identiques aux paramètres de création, plus :
| Nom |
Type |
Description |
Obligatoire |
| quote_date |
string |
Date de cotation |
Non |
| state |
string |
État de la ligne |
Non |
| reference |
string |
Référence |
Non |
Réponse
Détail de la ligne mise à jour (voir POST /quote/{quote_id}/quote_item/).
Suppression d'une ligne de cotation
Supprime une ligne de cotation du panier.
DELETE /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
Réponse
Détail du panier après suppression (voir GET /quote/{id}/).
Upload du fichier de tracé d'une ligne de cotation
Upload du fichier de tracé d'une ligne de cotation.
POST /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/trace/upload/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| file |
File |
Fichier de tracé (kmz) |
Oui |
Réponse
Détail du panier après upload (voir GET /quote/{id}/).
Téléchargement du fichier de tracé d'une ligne de cotation
Télécharge le fichier de tracé d'une ligne de cotation.
GET /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/trace/download/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
Réponse
Fichier KMZ du tracé.
En-têtes de réponse
| En-tête |
Valeur |
| Content-Type |
application/vnd.google-earth.kmz |
Suppression du fichier de tracé d'une ligne de cotation
Supprime le fichier de tracé d'une ligne de cotation.
DELETE /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/trace/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
Réponse
| Nom |
Type |
Description |
| detail |
string |
Si la suppression s'est réalisée avec succès |
Liste et filtrage des lignes de cotations
Liste et filtre les lignes de cotations.
GET /api/v1/quote_item/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| reference |
string |
Filtre par référence |
Non |
| customer_order_name |
string |
Filtre par nom de commande client |
Non |
| end_customer_name |
string |
Filtre par nom du client final |
Non |
| business_sector |
string |
Filtre par secteur d'activité |
Non |
| project_id |
string |
Filtre par identifiant de projet |
Non |
| state |
string |
Filtre par état |
Non |
Réponse
Liste paginée de lignes de cotations.
Exemple
{
"page_size": 10,
"count": 1,
"next_page": null,
"previous_page": null,
"results": [
{
"id": "123e4567-e89b-12d3-a456-426614174002",
"end_customer_name": "Client Final",
"external_id": "EXT_ITEM",
"site_connection_type": "",
"business_sector": "",
"expected_response_date": null,
"product_offerings": [],
"product_offering_qualification_item_id": "123e4567-e89b-12d3-a456-426614174001",
"project_id": "",
"customer_order_name": "",
"related_contact_information": [],
"order_date": null,
"state": "acknowledged",
"reference": "QO_20260423_00000001",
"address": {},
"latitude": null,
"longitude": null
}
]
}
Détail d'une ligne de cotation
Récupère le détail d'une ligne de cotation.
GET /api/v1/quote_item/{id}/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant de la ligne |
Oui |
Réponse
| Nom |
Type |
Description |
| id |
string |
Identifiant de la ligne |
| end_customer_name |
string |
Nom du client final |
| external_id |
string |
Identifiant externe |
| site_connection_type |
string |
Type de connexion du site |
| business_sector |
string |
Secteur d'activité |
| expected_response_date |
string |
Date de réponse attendue |
| option_ids |
array |
Liste des identifiants d'options |
| note |
string |
Note |
| technical_note |
string |
Note technique |
| product_offerings |
array |
Liste des offres de produits |
| product_offering_qualification_item_id |
string |
Identifiant de l'élément de qualification |
| project_id |
string |
Identifiant du projet |
| customer_order_name |
string |
Nom de la commande client |
| business_code |
string |
Code métier |
| related_contact_information |
array |
Informations de contact liées |
| quote_date |
string |
Date de cotation |
| state |
string |
État de la ligne |
| reference |
string |
Référence |
| trace_file |
string |
Fichier de tracé |
| creation_date |
string |
Date de création |
| manager_regional |
object |
Gestionnaire régional |
| prices |
array |
Liste des prix pour chaque offre de produits |
| response_date |
string |
Date de réponse |
| validity_date |
string |
Date de validité |
Exemple
{
"id": "123e4567-e89b-12d3-a456-426614174002",
"end_customer_name": "Client Final",
"external_id": "EXT_ITEM",
"site_connection_type": "",
"business_sector": "",
"expected_response_date": null,
"option_ids": [],
"note": "",
"technical_note": "",
"product_offerings": [],
"product_offering_qualification_item_id": "123e4567-e89b-12d3-a456-426614174001",
"project_id": "",
"customer_order_name": "",
"business_code": "",
"related_contact_information": [],
"quote_date": null,
"state": "acknowledged",
"reference": "QO_20260423_00000001",
"trace_file": "",
"creation_date": "2026-04-23T10:00:00+02:00",
"manager_regional": null,
"prices": [],
"response_date": null,
"validity_date": null
}
Acceptation d'une offre de produit d'une ligne de cotation
Accepte une offre de produit d'une ligne de cotation (toutes les autres offres de produit de la ligne de cotation passent alors au statut refused).
Cette action transforme la ligne de cotation acceptée en ligne de commande (voir onglet Prise de commande).
PATCH /api/v1/quote_item/{id}/accept/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant de la ligne |
Oui |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| product_id |
string |
Identifiant du produit |
Oui |
Exemple
{
"product_id": "2173"
}
Réponse
| Nom |
Type |
Description |
| product_order_id |
string |
Identifiant de la session de commande créée |
| product_order_item_id |
string |
Identifiant de la ligne de commande créée |
Exemple
{
"product_order_id": "123e4567-e89b-12d3-a456-426614174003",
"product_order_item_id": "123e4567-e89b-12d3-a456-426614174004"
}
Refus d'une offre de produit d'une ligne de cotation
Refuse une offre de produit d'une ligne de cotation.
PATCH /api/v1/quote_item/{id}/decline/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant de la ligne |
Oui |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| product_id |
string |
Identifiant du produit |
Oui |
| comment |
string |
Commentaire |
Non |
Exemple
{
"product_id": "2173",
"comment": "C'est un commentaire"
}
Réponse
Détail de la ligne refusée (voir GET /quote_item/{id}/).
Remise à l'état prêt d'une offre de produit refusée
Remet une offre de produit refusée à l'état prêt.
PATCH /api/v1/quote_item/{id}/restore_price/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| id |
string |
Identifiant de la ligne |
Oui |
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| product_id |
string |
Identifiant du produit |
Oui |
Exemple
{
"product_id": "2173"
}
Réponse
Détail de la ligne remise à l'état prêt (voir GET /quote_item/{id}/).
Export d'une réponse d'une ligne de cotation en PDF
Exporte une réponse complète d'une ligne de cotation dans un fichier PDF.
POST /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/export/pdf/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
Réponse
| Nom |
Type |
Description |
| task_id |
string |
Identifiant de la tâche d'export |
Export d'une offre de produit d'une ligne de cotation en PDF
Exporte une réponse de prix spécifique d'une ligne de cotation dans un fichier PDF.
POST /api/v1/quote/{quote_id}/quote_item/{quote_item_id}/price/{product_id}/export/pdf/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| quote_id |
string |
Identifiant du panier |
Oui |
| quote_item_id |
string |
Identifiant de la ligne |
Oui |
| product_id |
string |
Identifiant du produit |
Oui |
Réponse
| Nom |
Type |
Description |
| task_id |
string |
Identifiant de la tâche d'export |
Export des lignes de cotations en CSV
Exporte les lignes de cotations dans un fichier CSV.
POST /api/v1/quote_item/export/csv/
Paramètres de la requête
| Nom |
Type |
Description |
Obligatoire |
| reference |
string |
Filtre par référence |
Non |
| customer_order_name |
string |
Filtre par nom de commande client |
Non |
| end_customer_name |
string |
Filtre par nom du client final |
Non |
| business_sector |
string |
Filtre par secteur d'activité |
Non |
| project_id |
string |
Filtre par identifiant de projet |
Non |
| state |
string |
Filtre par état |
Non |
Exemple
{
"state": "acknowledged"
}
Réponse
| Nom |
Type |
Description |
| task_id |
string |
Identifiant de la tâche |
Exemple
{
"task_id": "task_123456789"
}
Statut de l'exportation
Récupère le statut de l'exportation.
GET /api/v1/quote_item/export/{task_id}/status/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| task_id |
string |
Identifiant de la tâche |
Oui |
Réponse
| Nom |
Type |
Description |
| task_id |
string |
Identifiant de la tâche |
| success |
boolean |
Succès de l'export |
| started |
string |
Date de début |
| stopped |
string |
Date de fin |
Exemple
{
"task_id": "task_123456789",
"success": true,
"started": "2026-04-23T10:00:00+02:00",
"stopped": "2026-04-23T10:05:00+02:00"
}
Téléchargement du fichier d'export
Télécharge le fichier d'export.
GET /api/v1/quote_item/export/{task_id}/download/
Paramètres URL
| Nom |
Type |
Description |
Obligatoire |
| task_id |
string |
Identifiant de la tâche |
Oui |
Réponse
Fichier CSV d'export.
En-têtes de réponse
| En-tête |
Valeur |
| Content-Type |
text/csv |