Aller au contenu

Demande d'éligibilité

Fonctionnement

sequenceDiagram participant Client participant Covage API participant Covage Backend Client->>Covage API: Demande des familles d'offres vendues par Covage Covage API-->>Client: Liste des familles d'offres Client->>Covage API: Demande d'éligibilité d'un site à plusieurs famille d'offres Covage API-->>Client: Identifiant de la demande d'éligibilité Covage API->>Covage Backend: Demande d'éligibilité d'un site à plusieurs offres Covage Backend-->>Covage API: Liste des offres éligibles à cette adresse Client->>Covage API: Récupération des résultats d'éligibilité Covage API-->>Client: Résultats d'éligibilité Client->>Covage API: Détail d'une offre Covage API->>Covage Backend: Demande de détail d'un pack avec détail et prix Covage Backend-->>Covage API: Détail du pack Covage API-->>Client: Détail de l'offre

Cycle de vie d'une éligibilité

flowchart LR A[<a href='/api-eligibilite-offres/#demande-deligibilite-dun-site-a-plusieurs-offres'>Création d'une\n demande d'éligibilité</a>] -->B(<i>acknowledged</i>) B -->|Début du\n traitement| C(<i>in_progress.elig</i>) C -->D{Contrôle\n données\n OK ?} D -->|non| T[<i>terminated_with_error</i>] D -->|oui| F(<i>in_progress.offer</i>) F -->K{éligible ?} K -->|non| U[<i>done.unable_to_provide</i>] K -->|oui| G{Calcul des\n prix ?} G -->|non| H{Sur devis ?} H -->|oui| U H -->|non| R G -->|oui| P(<i>in_progress.price</i>) P -->R[<i>done.ready</i>]

Demande des familles d'offres vendues par Covage

Récupération des familles d'offres vendues par Covage

GET /api/v1/catalog/category/

Réponse

Nom Type Description Obligatoire
name string Nom de la famille d'offres ('BPE','BPEA') Oui
type string Type de famille d'offres ('OFFER_FAMILY') Oui
description string Description de la famille d'offres Non
Exemple
    {
        "name": "BPE",
        "type": "OFFER_FAMILY",
        "description": ""
    }

Demande d'éligibilité d'un site à plusieurs offres

Création d'une demande d'éligibilité pour vérifier l'éligibilité d'une adresse à une ou plusieurs offres.

POST /api/v1/product_offering_qualification/

Paramètres de la requête

Nom Type Description Obligatoire
external_id string Identifiant externe pour la demande Non
project_id string Identifiant du projet associé Non
product_offering_qualification_items array Liste des éléments de qualification d'offre Oui
Exemple
  {
  "external_id": "123",
  "project_id": "456",
  "product_offering_qualification_items": [...]
  }

Détail des éléments de qualification d'offre

Nom Type Description Obligatoire
offer_families array Familles d'offres demandées Oui
eligibility_id string Identifiant de l'éligibilité (issu de l'API de recherche d'adresse) Oui
resolve_pricing bool Récupérer les prix des articles (par défaut non) Non
address object Détail de l'adresse à vérifier Non
Exemple
  "product_offering_qualification_items": [
    {
      "offer_families": ["BPEA","BPE"],
      "eligibility_id": "{eligibility_id}",
      "resolve_pricing": false,
      "address": {}
    }]

Détail de l'adresse

Nom Type Description Obligatoire
label string Étiquette de l'adresse Non
street_ext string Extension de la rue Non
street_nr string Numéro de la rue Non
city object Détail de la ville Non
street object Détail de la rue Non
Exemple
"address": {
    "label": "4bis Rue Andrei Sakharov 76130 Mont-Saint-Aignan",
    "street_ext": "B",
    "street_nr": "4",
    "city": {},
    "street": {}
    }

Détail de la ville

Nom Type Description Obligatoire
city_id string Identifiant de la ville Non
insee_code string Code INSEE de la ville Non
city_name string Nom de la ville Non
post_code string Code postal de la ville Non
Exemple
"city": {
    "city_id": "76451",
    "insee_code": "76451",
    "city_name": "MONT ST AIGNAN",
    "post_code": "76130"
    }

Détail de la rue

Nom Type Description Obligatoire
street_id string Identifiant de la rue Non
street_name string Nom de la rue Non
Exemple
"street": {
    "street_id": "76451055R",
    "street_name": "Rue Andrei Sakharov"
    }

Exemple de param de la requête finale

{
  "external_id": "123",
  "project_id": "456",
  "product_offering_qualification_items": [
    {
      "offer_families": [
        "BPEA","BPE"
      ],
      "eligibility_id": "KHg6MS4wOTIxMDgxO3k6NDkuNDc0Mzk3MTtiOklNQi83NjQ1MS9DLzAwMTkp",
      "address": {
        "label": "4bis Rue Andrei Sakharov 76130 Mont-Saint-Aignan",
        "street_ext": "B",
        "street_nr": "4",
        "city": {
            "city_id": "76451",
            "insee_code": "76451",
            "city_name": "MONT ST AIGNAN",
            "post_code": "76130"
        },
        "street": {
            "street_id": "76451055R",
            "street_name": "Rue Andrei Sakharov"
        }
      }
    }
  ]
}

Réponse

Nom Type Description
id string Identifiant de la demande d'éligibilité
creation_date string Date de création
{
    "id": "2eaf7b5b-384d-4cb7-8d9b-09ac712354d7",
    "creation_date": "2025-04-04T10:07:24.274+02:00",
}

Demande d'éligibilité d'un site à plusieurs offres (synchrone)

POST /api/v1/product_offering_qualification/sync/

Identique à l'endpoint asynchrone POST /api/v1/product_offering_qualification/, mais retourne les résultats directement dans la réponse sans passer par le mécanisme de polling.

Limitations

Cet endpoint est soumis à des limites de débit plus strictes. Préférer la version asynchrone pour les usages en production.

Les paramètres et la réponse sont identiques à POST /api/v1/product_offering_qualification/.

Liste des demandes d'éligibilité

GET /api/v1/product_offering_qualification/

Liste ou recherche les demandes d'éligibilité soumises par le client.

Filtres disponibles (query params) :

Paramètre Type Description
state string Filtre par état (pending, done, failed…)
external_id string Filtre par identifiant externe
project_id string Filtre par identifiant de projet
creation_date_gt datetime Demandes créées après cette date (ISO 8601)
creation_date_lt datetime Demandes créées avant cette date (ISO 8601)

Réponse : Liste paginée de demandes d'éligibilité (mêmes champs que GET /product_offering_qualification/{id}/).

Récupération des résultats d'éligibilité

Récupération des résultats d'éligibilité d'une demande d'éligibilité.

GET /api/v1/product_offering_qualification/{id}/

Paramètres de la requête

Nom Type Description Obligatoire
id string Identifiant de la demande d'éligibilité Oui

Réponse

Nom Type Description Obligatoire
id string Identifiant de la demande d'éligibilité Oui
user object Utilisateur qui a fait la demande d'éligibilité Oui
creation_date string Date de création de la demande Oui
external_id string Identifiant externe pour la demande Non
project_id string Identifiant du projet associé Non
effective_qualification_date string Date d'éligibilité effective Non
href string Lien vers la ressource Non
state string État actuel de la demande Oui
state_change array Historique des changements d'état Oui
product_offering_qualification_item_detail array Liste des éléments de qualification d'offre Non
Exemple
{
    "id": "2eaf7b5b-384d-4cb7-8d9b-09ac712354d7",
    "user": {
        "email": "anonymous@example.fr",
        "first_name": "Ano",
        "last_name": "Nymous"
    },
    "creation_date": "2025-04-04T10:07:24.274+02:00",
    "external_id": "987654",
    "project_id": "456789",
    "effective_qualification_date": null,
    "href": "",
    "state": "done.ready",
    "state_change": [...],
    "product_offering_qualification_item_detail": [...]
}

Détail d'un utilisateur

Nom Type Description Obligatoire
email string Email de l'utilisateur Oui
first_name string Prénom de l'utilisateur Oui
last_name string Nom de l'utilisateur Oui
Exemple
    "user": {
        "email": "anonymous@example.fr",
        "first_name": "Ano",
        "last_name": "Nymous"
    }

Détail des changements d'état

Nom Type Description Obligatoire
change_reason string Raison du changements d'état Oui
change_date string Date du changements d'état Oui
state string Nouvel état Oui
Exemple
    "state_change": [
        {
            "change_reason": "",
            "change_date": "2025-04-04T10:07:24.276+02:00",
            "state": "acknowledged"
        },
        {
            "change_reason": "",
            "change_date": "2025-04-04T10:07:24.678+02:00",
            "state": "in_progress.elig"
        },
        {
            "change_reason": "",
            "change_date": "2025-04-04T10:07:24.791+02:00",
            "state": "in_progress.offer"
        },
        {
            "change_reason": "",
            "change_date": "2025-04-04T10:07:26.332+02:00",
            "state": "done.ready"
        }]

Détail des éléments de qualification d'offre

Nom Type Description Obligatoire
id string Identifiant de l'élément de qualification Oui
user object Utilisateur qui a fait la demande d'éligibilité Oui
tarif_zone string Zone tarifaire Oui
offer_families array Familles d'offres disponibles Oui
zone_bpe number Zone BPE (ex: 1 correspond à THD ZONE 1) Oui
zone_bpea number Zone BPEA (ex: 3 correspond à THD ZONE 3) Oui
zone_dia number Zone DIA (ex: 2 correspond à THD ZONE 2) Oui
estimated_delivery_date_BPE string Date de livraison prévue BPE (ex: "T0 + 33 SEMAINES") Oui
estimated_delivery_date_BPEA string Date de livraison prévue BPEA (ex: "T0 + 33 SEMAINES") Oui
estimated_delivery_date_DIA string Date de livraison prévue DIA (ex: "T0 + 34 SEMAINES") Oui
bandwidth_max float Débit maximal disponible sur le site Non
density string Densité de la zone Oui
place object Détail du lieu Oui
address object Détail de l'adresse Non
guaranteed_until_date string Date jusqu'à laquelle l'offre est garantie Non
price number Prix produit Non
far number Prix FAR Non
fas number Prix FAS Non
state string État actuel de l'élément Oui
state_change array Historique des changements d'état Oui
product_offering_qualification_id string Identifiant de la demande d'éligibilité parente Non
products_offering array Liste des offres éligibles Oui
resolve_pricing boolean Indique si les prix ont été calculés pour cette demande Oui
Exemple
"product_offering_qualification_item_detail": [
    {
        "id": "a4517ca6-1f13-42a2-9359-4ff3cc21785b",
        "user": {
            "email": "anonymous@example.fr",
            "first_name": "Ano",
            "last_name": "Nymous"
        },
        "tarif_zone": "",
        "offer_families": ["BPEA","BPE"],
        "zone_bpe": 2,
        "zone_bpea": 2,
        "zone_dia": 2,
        "estimated_delivery_date_BPE": "T0 + 33 SEMAINES",
        "estimated_delivery_date_BPEA": "T0 + 33 SEMAINES",
        "estimated_delivery_date_DIA": "T0 + 34 SEMAINES",
        "bandwidth_max": 1000,
        "density": "TRESDENSE",
        "place":{},
        "address": {},
        "guaranteed_until_date": null,
        "price": 145.0,
        "far": 0.0,
        "fas": 0.0,
        "state": "done.ready",
        "state_change": [...],
        "product_offering_qualification_id": null,
        "products_offering": [...]

Détail du lieu

Nom Type Description Obligatoire
location object Coordonnées géographiques Oui
building_ref string Référence du bâtiment Non
eligibility_id string Identifiant de l'éligibilité Oui
Exemple
"place": {
    "location": {
        "x": 1.0741197,
        "y": 49.4629709
    },
    "building_ref": "",
    "eligibility_id": "KHg6MS4wNzQxMTk3O3k6NDkuNDYyOTcwOTtiOk5vbmUp"
    }

Détail de l'adresse

Nom Type Description Obligatoire
label string Étiquette de l'adresse Non
street_ext string Extension de la rue Non
street_nr string Numéro de la rue Non
city object Détail de la ville Non
street object Détail de la rue Non
Exemple
"address": {
    "label": "4bis Rue Andrei Sakharov 76130 Mont-Saint-Aignan",
    "street_ext": "B",
    "street_nr": "4",
    "city": {},
    "street": {}
    }

Détail de la ville

Nom Type Description Obligatoire
city_id string Identifiant de la ville Non
insee_code string Code INSEE de la ville Non
city_name string Nom de la ville Non
post_code string Code postal de la ville Non
Exemple
"city": {
    "city_id": "76451",
    "insee_code": "76451",
    "city_name": "MONT ST AIGNAN",
    "post_code": "76130"
    }

Détail de la rue

Nom Type Description Obligatoire
street_id string Identifiant de la rue Non
street_name string Nom de la rue Non
Exemple
"street": {
    "street_id": "76451055R",
    "street_name": "Rue Andrei Sakharov"
    }

Détail des offres

Nom Type Description Obligatoire
product_id string Identifiant de l'offre (product_offering) Oui
name string Nom du produit Oui
description string Description du produit Oui
bandwidth string Bande passante du produit Oui
bandwidth_guarantee float Bande passante garantie Oui
bandwidth_max float Bande passante maximale Oui
commitment string Engagement du produit Oui
offer_technology string Technologie de l'offre Oui
offer_family string Famille de l'offre Oui
tarif_zone string Zone tarifaire Oui
price number Prix du produit Non
far number Prix du FAR Non
fas number Prix du FAS Non
on_quotation boolean Indique si l'offre est sur devis Oui
Exemple
"products_offering": 
    [{
    "product_id": "2173",
    "name": "BPEA 20M/100M_24 mois",
    "description": "BPEA 20M/100M",
    "bandwidth": "20M",
    "bandwidth_guarantee": 20.0,
    "bandwidth_max": 20.0,
    "commitment": "24MOIS",
    "offer_technology": "FIBDE",
    "offer_family": "BPEA",
    "tarif_zone": ""
    "price": null,
    "far": null,
    "fas": null,
    "on_quotation": false
    }]

Liste d'offres

Récupération d'une liste d'offres.

GET /api/v1/catalog/product_offering/

Détail d'une offre

Récupération du détail d'une offre.

GET /api/v1/catalog/product_offering/{id}/

Liste d'offres avec prix

POST /api/v1/catalog/product_offering/

Récupère une liste d'offres de produits par identifiant, enrichie de leurs tarifs (far/fas/prix).

Corps de la requête : Liste d'identifiants d'offres (list[string])

["BPE_100M_24MOIS", "BPEA_20M_24MOIS"]

Réponse :

Champ Type Description
id string Identifiant de l'offre
name string Nom de l'offre
description string Description de l'offre
bandwidth string Bande passante
bandwidth_max float Bande passante max
bandwidth_guarantee float Bande passante garantie
commitment string Durée d'engagement
tarif_zone string Zone tarifaire
far float Frais d'accès au réseau
fas float Frais d'accès au service
price float Prix mensuel récurrent
offer_family string Famille d'offre (BPE, BPEA, DIA…)
offer_technology string Technologie d'offre
last_update datetime Date de dernière mise à jour (ISO 8601)

Paramètres de la requête

Nom Type Description Obligatoire
id string Identifiant de l'offre (product_offering) Oui
zone integer Zone tarifaire (provenant de l'éligibilité) Non

Réponse

Nom Type Description Obligatoire
id string Identifiant de l'offre Oui
href string Lien vers la ressource Oui
name string Nom de l'offre Oui
description string Description de l'offre Oui
bandwidth string Bande passante Oui
bandwidth_guarantee float Bande passante garantie Oui
bandwidth_max float Bande passante maximum Oui
commitment string Engagement de l'offre Oui
tarif_zone string Zone tarifaire Oui
far number Valeur FAR Oui
fas number Valeur FAS Oui
price number Prix de l'offre Oui
recurring boolean Indique si l'offre est récurrente Oui
offer_family string Famille de l'offre Oui
offer_technology string Technologie de l'offre Oui
available_options array Options disponibles pour l'offre Oui
last_update string Date de la dernière mise à jour Oui
Exemple
{
    "id": "1765",
    "href": "",
    "name": "BPE 20M _Zone dense_24 mois ",
    "description": "description",
    "bandwidth": "20M",
    "bandwidth_guarantee": 20.0,
    "bandwidth_max": 20.0,
    "commitment": "24MOIS",
    "tarif_zone": "DENSE",
    "far": 240.0,
    "fas": 360.0,
    "price": 155.0,
    "recurring": true,
    "offer_family": "BPE",
    "offer_technology": "FIBDE",
    "available_options": [...],
    "last_update": "2024-06-22T08:28:06Z"
}       

Détail des options disponibles

Nom Type Description Obligatoire
name string Nom de l'option Oui
type string Type de l'option Oui
values array Valeurs associées à l'option Oui
Exemple
{
    "name": "SECURISATIONCOLLECTE",
    "type": "Option",
    "values": []
}

Détail des valeurs d'option

Nom Type Description Obligatoire
option_id string Identifiant de l'option Oui
label string Étiquette de l'option Oui
price number Prix de l'option Oui
recurring boolean Indique si l'option est récurrente Oui
Exemple
{
    "option_id": "241",
    "label": "SECURISATION COLLECTE Active - Passive",
    "price": 10.0,
    "recurring": true
}

Demande des types de site de raccordement disponibles

Récupération des types de site de raccordement disponibles

GET /api/v1/referential/site_connection/

Réponse

Nom Type Description Obligatoire
available_site_connection_types array Liste des types de site de raccordement disponibles Oui
Exemple
{
    "available_site_connection_types": [
        "Standard ou non-catégorisé",
        "Centre commercial",
        "Datacenter",
        "Zone d'activité ZA",
        "Aéroport",
        "Zone maritime",
        "Centre de santé ou hôpital",
        "Etablissement haute sécurité",
        "Etablissement patrimoine",
        "Prison",
        "Cimetière"
    ]
}

Liste des éléments d'éligibilité

GET /api/v1/product_offering_qualification_item/

Liste ou recherche les éléments d'éligibilité (résultats individuels par site).

Filtres disponibles (query params) :

Paramètre Type Description
state string Filtre par état
density string Filtre par densité (préfixe, ex : T)
building_ref string Filtre par référence bâtiment (préfixe)
offer_technologies string Filtre par technologie(s) (valeurs séparées par virgule)
creation_date_gt datetime Éléments créés après cette date (ISO 8601)
creation_date_lt datetime Éléments créés avant cette date (ISO 8601)
search string Recherche textuelle libre
sort string Champ de tri

Réponse : Liste paginée d'éléments (mêmes champs que GET /product_offering_qualification_item/{id}/).

Détail d'un élément d'éligibilité

GET /api/v1/product_offering_qualification_item/{id}/

Récupère le détail d'un élément d'éligibilité individuel.

Paramètre URL :

Nom Type Obligatoire Description
id UUID Identifiant de l'élément

Réponse :

Champ Type Description
id UUID Identifiant unique
creation_date datetime Date de création (ISO 8601)
density string Densité de la zone
offer_families array Familles d'offres demandées
offer_families_eligibility array Familles d'offres éligibles
offer_technologies array Technologies éligibles
zone_bpe string Zone tarifaire BPE
zone_bpea string Zone tarifaire BPEA
zone_dia string Zone tarifaire DIA
estimated_delivery_date_BPE string Date de livraison estimée pour BPE
estimated_delivery_date_BPEA string Date de livraison estimée pour BPEA
estimated_delivery_date_DIA string Date de livraison estimée pour DIA
bandwidth_max float Bande passante maximale disponible
place object Localisation (coordonnées, building_ref, eligibility_id)
address object Adresse postale
state string État de l'élément
product_offering_qualification_id UUID Identifiant de la demande d'éligibilité parente
guaranteed_until_date datetime Date de validité de l'éligibilité