> ## Documentation Index
> Fetch the complete documentation index at: https://doc.fluximmo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Recherche DPE — diagnostics énergétiques ADEME (API V2)

> Recherche filtrée et paginée de Diagnostics de Performance Énergétique (DPE) issus de l'open-data ADEME, enrichis du géocodage BAN.

## À quoi ça sert

`POST /v2/protected/opendata/dpe/search` interroge le jeu de DPE (Diagnostic de Performance Énergétique) de l'open-data ADEME, enrichi du géocodage BAN et d'enrichissements Fluximmo. Vous passez un objet `filters`, un tri et une pagination, l'endpoint retourne la liste des DPE correspondants.

Les filtres couvrent l'identité (`numero_dpe`, `flx_id`), la géographie (département, commune, code postal, recherche par rayon), le type de bâtiment, la période de construction, les surfaces, les étiquettes énergie et GES, la qualité d'isolation, la zone climatique et plusieurs plages de dates.

Contrairement à [`/dpe/match`](/api-v2-reference/dpe-match/match-dpe-à-une-annonce-immobilière), cet endpoint n'effectue **aucun scoring** ni rapprochement avec une annonce : il renvoie simplement les DPE qui satisfont vos critères, triés et paginés.

## Payload

Le corps de la requête est un objet `{ filters, sortBy, sortOrder, size, cursor }`.

| Champ       | Type    | Obligatoire | Sens                                                                                                                                                                                                                           |
| ----------- | ------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filters`   | object  | Non         | Critères de recherche (voir ci-dessous). Vide ⇒ aucun filtre.                                                                                                                                                                  |
| `sortBy`    | enum    | Non         | Champ de tri : `numero_dpe`, `date_etablissement_dpe`, `type_batiment`, `surface_habitable_logement`, `etiquette_dpe`, `conso_5_usages_par_m2_ep`, `emission_ges_5_usages`, `emission_ges_5_usages_par_m2`, `zone_climatique`. |
| `sortOrder` | enum    | Non         | `asc` ou `desc`.                                                                                                                                                                                                               |
| `size`      | integer | Non         | Taille de page, entre `1` et `100`. Défaut `20`.                                                                                                                                                                               |
| `cursor`    | string  | Non         | Curseur de pagination renvoyé par la réponse précédente.                                                                                                                                                                       |

### Principaux filtres (`filters`)

| Filtre                          | Type      | Sens                                                                                                                                           |
| ------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `code_departement_ban`          | string    | Code département BAN (ex : `75`, `2A`, `974`).                                                                                                 |
| `code_insee_ban`                | string    | Code INSEE de la commune (5 caractères).                                                                                                       |
| `code_postal_ban`               | string    | Code postal BAN (5 chiffres).                                                                                                                  |
| `location`                      | object    | Recherche par rayon : `{ lat, lon, distance }`, `distance` au format `10km`, `500m`, `2mi`… (les trois champs sont requis).                    |
| `type_batiment`                 | string\[] | Valeurs : `appartement`, `maison`, `immeuble`.                                                                                                 |
| `periode_construction`          | string\[] | Tranches : `avant 1948`, `1948-1974`, `1975-1977`, `1978-1982`, `1983-1988`, `1989-2000`, `2001-2005`, `2006-2012`, `2013-2021`, `après 2021`. |
| `etiquette_dpe`                 | string\[] | Étiquette énergie : `A` à `G`.                                                                                                                 |
| `etiquette_ges`                 | string\[] | Étiquette GES : `A` à `G`.                                                                                                                     |
| `surface_habitable_logement`    | object    | Plage `{ min, max }` en m².                                                                                                                    |
| `qualite_isolation_enveloppe`   | string\[] | `insuffisante`, `moyenne`, `bonne`, `très bonne`.                                                                                              |
| `qualite_isolation_menuiseries` | string\[] | `insuffisante`, `moyenne`, `bonne`, `très bonne`.                                                                                              |
| `zone_climatique`               | string\[] | `H1a`, `H1b`, `H1c`, `H2b`, `H2c`, `H2d`, `H3`.                                                                                                |
| `date_etablissement_dpe`        | object    | Plage de dates `{ from, to }` (format ISO).                                                                                                    |

Les filtres numériques (`flx_id`, `surface_habitable_logement`, `conso_5_usages_*`, `emission_ges_*`, `nombre_*`…) acceptent un objet `{ min, max }` ; les filtres de date (`date_etablissement_dpe`, `date_visite_diagnostiqueur`, `date_reception_dpe`, `date_fin_validite_dpe`…) acceptent un objet `{ from, to }`. Le contrat complet est documenté par le bloc OpenAPI ci-dessous.

## Réponse

L'API retourne une enveloppe paginée :

| Champ     | Type      | Sens                                                                                                                            |
| --------- | --------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `data`    | object\[] | Liste des DPE correspondants (`numero_dpe`, `flx_id`, `date_etablissement_dpe`, `etiquette_dpe`, `etiquette_ges`, `location`…). |
| `total`   | integer   | Nombre total de DPE correspondant aux filtres.                                                                                  |
| `size`    | integer   | Taille de page effective.                                                                                                       |
| `hasMore` | boolean   | `true` s'il reste des pages à parcourir.                                                                                        |
| `cursor`  | string    | Curseur à renvoyer dans la requête suivante pour obtenir la page suivante. Présent uniquement quand `hasMore` vaut `true`.      |

Pour une pagination déterministe, triez sur un champ unique (`numero_dpe`) et propagez le `cursor` de page en page.

## Exemple

### Recherche simple — DPE d'un département

```bash theme={null}
curl -X POST https://api.fluximmo.io/v2/protected/opendata/dpe/search \
  -H "x-api-key: $FLUXIMMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": { "code_departement_ban": "75" }
  }'
```

### Recherche multi-critères — appartements parisiens étiquettes C/D

```bash theme={null}
curl -X POST https://api.fluximmo.io/v2/protected/opendata/dpe/search \
  -H "x-api-key: $FLUXIMMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "code_departement_ban": "75",
      "type_batiment": ["appartement"],
      "etiquette_dpe": ["C", "D"],
      "etiquette_ges": ["C"],
      "surface_habitable_logement": { "min": 40, "max": 90 },
      "date_etablissement_dpe": { "from": "2023-01-01" }
    },
    "sortBy": "date_etablissement_dpe",
    "sortOrder": "desc",
    "size": 50
  }'
```

### Recherche par rayon — autour d'un point

```bash theme={null}
curl -X POST https://api.fluximmo.io/v2/protected/opendata/dpe/search \
  -H "x-api-key: $FLUXIMMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "location": { "lat": 48.8592, "lon": 2.3789, "distance": "2km" },
      "type_batiment": ["appartement"]
    },
    "sortBy": "numero_dpe",
    "sortOrder": "asc",
    "size": 20
  }'
```

## Liens utiles

* [Match DPE à une annonce immobilière](/api-v2-reference/dpe-match/match-dpe-à-une-annonce-immobilière) — rapprochement avec scoring entre un DPE et une annonce.
* [Filtres communs](/concepts/filtres-communs) — conventions des filtres de plage et d'enum.
* [Recherche géographique](/concepts/recherche-geographique) — détail du filtre par rayon (`lat`, `lon`, `distance`).
* [DVF vs Fluximmo](/concepts/dvf-vs-fluximmo) — périmètre des sources open-data.

<Card title="Clé test gratuite — 1 semaine" icon="key" href="https://my.fluximmo.io">
  Créez un compte sur **my.fluximmo.io** pour récupérer une clé API test gratuite (1 semaine, accès limité). Aucun paiement requis.
</Card>


## OpenAPI

````yaml post /v2/protected/opendata/dpe/search
openapi: 3.0.0
info:
  title: Real-estate data API - Fluximmo V2
  description: >+
    ## Fluximmo

    ##### Real-time real estate data: Power workflows, business applications and
    decision-making.


    Real estate expert since 2017, Fluximmo aggregates, exploits, enriches &
    analyzes the 


    real-estate market in real time to offer data flows, APIs and innovative
    services to real estate professionals.


    ## Authentification

    You'll need to be authenticated with an active subscription to access our
    REST endpoints.


    To get an API-KEY please contact us at contact@fluximmo.com or book a call
    with our team: https://calendly.com/fluximmo/meet-fluximmo

    ##### How to use your API KEY

    Simply add to your HTTP request your API KEY in the headers:
    `{'x_api_key':'randomApiKey'}`


    ## Properties and Adverts

    Real-estate market can be conceptualized in different ways. We offer two
    different conceptualization depending on your needs: Properties & Adverts.

    #### Properties (BAAS)

    A property is a real-estate habitation/land/commercial/building to which is
    attached adverts.


    We gather all the adverts offering (selling or renting) this real-estate
    asset and consolidate all the information into one Property.


    A Property is by definition `de-duplicated` and can gather 1 to x adverts:
    these adverts are either duplicates from different portals or with mandates
    from different agencies or republication of the same advertising with a
    price update or not.


    The concept of property is in constant mutation until the real-estate asset
    is sold: We'll keep merging new adverts within the Property concept and
    update the price if needed.


    By it's nature in constant mutation, we do not offer the possibility to
    receive these Properties on webhooks. You'll need to use our APIs as a
    Backend As A Service (BaaS).


    #### Adverts (BAAS and WEBHOOK)

    Adverts are advertising of a real-estate property. Adverts can come from
    many sources: Agencies websites, Aggregation real-estate portals,
    Social-Networks, NewsPaper etc...


    After gathering all these adverts our proprietary AI algorithms will
    de-duplicate these adverts and associate them to a Property


    An advert have a unique URL. Meaning that the same advertising re-published
    twice (with our without any change, on the same website or not, by the same
    agency or not) is considered as 2 ads.


    You can choose either to retrieve all the Adverts or only the non duplicated
    ones. Adverts can be retrieved either by API (Search or Alerts) or Webhook

    ## Webhooks

    We offer the possibility to receive our real-estate Adverts data in
    real-time using webhooks. As soon as we gather the data, you'll receive it
    few moments later.


    Using ALERTS, you can receive new adverts matching your criteria on a
    webhook.


    ##### Webhook differences between Adverts and Properties

    As Properties are by nature in perpetual evolutions (new duplicated ads will
    be merged, new data to be consolidated etc..), we do not offer the
    possibility to receive through Webhooks the full body of the properties.
    Properties webhook will only send you the list of the properties FlxIds
    matching your search.


    You'll find below the schema of the data you would receive on your webhook
    (`/v2/sample/webhook/properties`, `/v2/sample/webhook/adverts`)

    ##### What is a webhook

    A webhook can be thought of as a type of API that is driven by events rather
    than requests


    .Instead of one application making a request to another to receive a
    response, a webhook is a service that allows one program to send data to
    another as soon as a particular event takes place.


    Webhooks are sometimes referred to as “reverse APIs,” because communication
    is initiated by the application sending the data rather than the one
    receiving it.


    With web services becoming increasingly interconnected, webhooks are seeing
    more action as a lightweight solution for enabling real-time notifications
    and data updates without the need to develop a full-scale API.

    ##### When to use a webhook instead of the REST API

    You're supposed to receive a high volume of data (frequently or not), you're
    looking for real-time data, you just have to relax and wait (no cron, no
    call on our API etc..)

    ##### Webhook implementation examples

    A webhook is simply a POST endpoint we can request

    * Python:
    https://gist.github.com/aloysius-tim/293772256526efa20d5c625c6ace036a

    * Node:
    https://gist.github.com/aloysius-tim/ea1d9feb2c527b5b09ffc356b662d14b

  version: 2.0.0
  contact: {}
  x-logo:
    url: https://www.fluximmo.com/assets/images/logo_text.png
    backgroundColor: '#F31051'
    altText: Fluximmo logo
servers:
  - url: https://api.fluximmo.io
security: []
tags:
  - name: PropertyModel
    description: <SchemaDefinition schemaRef="#/components/schemas/PropertyDto" />
  - name: AdvertModel
    description: <SchemaDefinition schemaRef="#/components/schemas/AdvertDto" />
paths:
  /v2/protected/opendata/dpe/search:
    post:
      tags:
        - DPE Search
      summary: Recherche DPE
      description: >-
        Recherche DPE (Diagnostic de Performance Energétique) avec filtres
        auto-générés depuis le schéma
      operationId: SearchDpeController_postSearch
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DpeInheritSearchDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - total
                  - size
                  - hasMore
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        numero_dpe:
                          type: string
                          description: Numéro unique du DPE attribué par l'ADEME
                          example: 2600E0590119C
                        flx_id:
                          type: string
                          format: int64
                          description: Identifiant interne Fluximmo
                          example: 123456789
                        date_etablissement_dpe:
                          type: string
                          description: Date d'établissement du DPE
                          example: '2023-06-15'
                          format: date-time
                        date_visite_diagnostiqueur:
                          type: string
                          description: Date de la visite du diagnostiqueur
                          example: '2023-06-14'
                          format: date-time
                        date_reception_dpe:
                          type: string
                          description: Date de réception du DPE par l'ADEME
                          example: '2023-06-16'
                          format: date-time
                        date_derniere_modification_dpe:
                          type: string
                          description: Date de la dernière modification du DPE
                          example: '2023-07-01'
                          format: date-time
                        date_fin_validite_dpe:
                          type: string
                          description: >-
                            Date de fin de validité du DPE (10 ans après
                            établissement)
                          example: '2033-06-15'
                          format: date-time
                        version_dpe:
                          type: string
                          description: 'Version du DPE (ex : DPE 3.0, DPE 3.3)'
                          example: '2.60'
                        modele_dpe:
                          type: string
                          description: 'Modèle de calcul du DPE (ex : DPE 3CL 2021)'
                          example: DPE 3CL 2021 méthode logement
                        methode_application_dpe:
                          type: string
                          description: Méthode d'application du DPE (neuf ou existant)
                          example: dpe appartement individuel
                        identifiant_ban:
                          type: string
                          description: >-
                            Identifiant de l'adresse dans la Base Adresse
                            Nationale (BAN)
                          example: '75113_4649_00137'
                        adresse_ban:
                          type: string
                          description: Adresse complète normalisée BAN
                        numero_voie_ban:
                          type: string
                          description: Numéro de voie (BAN)
                          example: '32'
                        nom_rue_ban:
                          type: string
                          description: Nom de la rue (BAN)
                        code_insee_ban:
                          type: string
                          description: Code INSEE de la commune (BAN, 5 caractères)
                          example: '75113'
                        code_postal_ban:
                          type: string
                          description: Code postal (BAN, 5 chiffres)
                          example: '75013'
                        code_departement_ban:
                          type: string
                          description: >-
                            Code du département (BAN, 2-3 caractères, ex : 75,
                            2A, 974)
                          example: '75'
                        code_region_ban:
                          type: string
                          description: Code de la région (BAN)
                          example: '11'
                        nom_commune_ban:
                          type: string
                          description: Nom de la commune (BAN)
                        code_postal_brut:
                          type: string
                          description: Code postal tel que saisi par le diagnostiqueur
                          example: '75013'
                        location:
                          type: object
                          properties:
                            lat:
                              oneOf:
                                - type: number
                                - type: string
                                  pattern: ^-?\d+(\.\d+)?$
                            lon:
                              oneOf:
                                - type: number
                                - type: string
                                  pattern: ^-?\d+(\.\d+)?$
                          description: >-
                            Coordonnées géographiques du bien (latitude,
                            longitude)
                          example:
                            lat: 48.8566
                            lon: 2.3522
                        type_batiment:
                          type: string
                          description: Type de bâtiment
                          example: appartement
                        periode_construction:
                          type: string
                          description: Période de construction du bâtiment
                          example: avant 1948
                        surface_habitable_logement:
                          type: number
                          description: Surface habitable du logement en m²
                          example: 57
                        surface_habitable_immeuble:
                          type: number
                          description: Surface habitable totale de l'immeuble en m²
                          example: 5173
                        surface_ventilee:
                          type: number
                          description: Surface ventilée du logement en m²
                          example: 1040
                        nombre_niveau_logement:
                          type: integer
                          description: Nombre de niveaux (étages) du logement
                          example: 1
                        nombre_niveau_immeuble:
                          type: integer
                          description: Nombre de niveaux (étages) de l'immeuble
                          example: 7
                        nombre_appartement:
                          type: integer
                          description: Nombre d'appartements dans l'immeuble
                          example: 26
                        numero_etage_appartement:
                          type: integer
                          description: >-
                            Numéro de l'étage de l'appartement (négatif =
                            sous-sol)
                          example: 0
                        appartement_non_visite:
                          type: boolean
                          description: >-
                            Indique si l'appartement n'a pas été visité par le
                            diagnostiqueur
                          example: true
                        etiquette_dpe:
                          type: string
                          description: >-
                            Étiquette énergie du DPE (A = meilleur, G = pire, N
                            = non applicable)
                          example: D
                        etiquette_ges:
                          type: string
                          description: >-
                            Étiquette GES du DPE (A = meilleur, G = pire, N =
                            non applicable)
                          example: C
                        conso_5_usages_ep:
                          type: number
                          description: >-
                            Consommation des 5 usages en énergie primaire
                            (kWh/an)
                          example: 23339
                        conso_5_usages_ef:
                          type: number
                          description: Consommation des 5 usages en énergie finale (kWh/an)
                          example: 17984
                        conso_5_usages_par_m2_ep:
                          type: number
                          description: >-
                            Consommation des 5 usages en énergie primaire par m²
                            (kWh/m²/an)
                          example: 254
                        conso_5_usages_par_m2_ef:
                          type: number
                          description: >-
                            Consommation des 5 usages en énergie finale par m²
                            (kWh/m²/an)
                          example: 184
                        conso_chauffage_ef:
                          type: number
                          description: Consommation de chauffage en énergie finale (kWh/an)
                          example: 13611
                        conso_ecs_ef:
                          type: number
                          description: >-
                            Consommation d'eau chaude sanitaire (ECS) en énergie
                            finale (kWh/an)
                          example: 3683
                        conso_refroidissement_ef:
                          type: number
                          description: >-
                            Consommation de refroidissement en énergie finale
                            (kWh/an)
                          example: 34.8
                        conso_eclairage_ef:
                          type: number
                          description: Consommation d'éclairage en énergie finale (kWh/an)
                          example: 196
                        conso_auxiliaires_ef:
                          type: number
                          description: >-
                            Consommation des auxiliaires (ventilateurs, pompes)
                            en énergie finale (kWh/an)
                          example: 453
                        emission_ges_5_usages:
                          type: number
                          description: Émissions de GES des 5 usages (kgCO₂/an)
                          example: 3068
                        emission_ges_5_usages_par_m2:
                          type: number
                          description: Émissions de GES des 5 usages par m² (kgCO₂/m²/an)
                          example: 28.6
                        emission_ges_chauffage:
                          type: number
                          description: Émissions de GES liées au chauffage (kgCO₂/an)
                          example: 2468
                        emission_ges_ecs:
                          type: number
                          description: >-
                            Émissions de GES liées à l'eau chaude sanitaire
                            (kgCO₂/an)
                          example: 557
                        emission_ges_refroidissement:
                          type: number
                          description: Émissions de GES liées au refroidissement (kgCO₂/an)
                          example: 2.2
                        emission_ges_eclairage:
                          type: number
                          description: Émissions de GES liées à l'éclairage (kgCO₂/an)
                          example: 13.5
                        emission_ges_auxiliaires:
                          type: number
                          description: Émissions de GES liées aux auxiliaires (kgCO₂/an)
                          example: 29
                        ubat_w_par_m2_k:
                          type: number
                          description: >-
                            Coefficient Ubat : déperditions thermiques du
                            bâtiment (W/m²·K)
                          example: 1.4
                        qualite_isolation_enveloppe:
                          type: string
                          description: Qualité de l'isolation globale de l'enveloppe
                          example: insuffisante
                        qualite_isolation_murs:
                          type: string
                          description: Qualité de l'isolation des murs
                          example: insuffisante
                        qualite_isolation_plancher_bas:
                          type: string
                          description: Qualité de l'isolation du plancher bas
                          example: très bonne
                        qualite_isolation_plancher_haut_toit_terrasse:
                          type: string
                          description: >-
                            Qualité de l'isolation du plancher haut /
                            toit-terrasse
                          example: insuffisante
                        qualite_isolation_menuiseries:
                          type: string
                          description: >-
                            Qualité de l'isolation des menuiseries (fenêtres,
                            portes)
                          example: moyenne
                        zone_climatique:
                          type: string
                          description: Zone climatique selon la réglementation thermique
                          example: H1a
                        classe_altitude:
                          type: string
                          description: Classe d'altitude du bâtiment
                          example: inférieur à 400m
                        classe_inertie_batiment:
                          type: string
                          description: Classe d'inertie thermique du bâtiment
                          example: Lourde
                        hauteur_sous_plafond:
                          type: number
                          description: Hauteur sous plafond moyenne en mètres
                          example: 2.6
                        installations:
                          type: object
                          description: >-
                            Détails des installations techniques (chauffage,
                            ECS, ventilation, climatisation)
                          example:
                            conso_ecs_ep: 1919.4
                            conso_chauffage_ep: 5158.3
                            conso_eclairage_ep: 19.4
                            conso_auxiliaires_ep: 0
                            type_installation_ecs: individuel
                            conso_ecs_ef_energie_n1: 1010.2
                            conso_refroidissement_ep: 0
                            type_installation_ecs_n1: installation individuelle
                            type_generateur_n1_ecs_n1: >-
                              Ballon électrique à accumulation vertical Autres
                              ou inconnue
                            usage_generateur_n1_ecs_n1: ecs
                            type_installation_chauffage: individuel
                            conso_5_usages_ef_energie_n1: 3735.3
                            conso_ef_installation_ecs_n1: 1010.2
                            type_installation_solaire_n1: Non affecté
                            ventilation_posterieure_2012: 0
                            conso_chauffage_ef_energie_n1: 2714.9
                            conso_ef_generateur_n1_ecs_n1: 1010.2
                            type_installation_chauffage_n1: installation individuelle
                            description_installation_ecs_n1: >-
                              Ballon électrique à accumulation vertical (autres
                              catégorie ou inconnue), contenance ballon 50 L
                            description_generateur_n1_ecs_n1: >-
                              Electrique - Ballon électrique à accumulation
                              vertical (autres catégorie ou inconnue)
                            configuration_installation_ecs_n1: Un seul système d'ECS sans solaire
                            type_generateur_n1_installation_n1: radiateur électrique NFC, NF** et NF***
                            type_generateur_chauffage_principal: radiateur électrique NFC, NF** et NF***
                            usage_generateur_n1_installation_n1: chauffage
                            volume_stockage_generateur_n1_ecs_n1: 50
                            description_installation_chauffage_n1: >-
                              Radiateur électrique à inertie (modélisé comme un
                              radiateur NFC, NF** et NF***) avec programmateur
                              pièce par pièce (système individuel)
                            configuration_installation_chauffage_n1: Installation de chauffage simple
                            type_emetteur_installation_chauffage_n1: radiateur électrique NFC, NF** et NF***
                            type_generateur_chauffage_principal_ecs: >-
                              Ballon électrique à accumulation vertical Autres
                              ou inconnue
                            conso_chauffage_installation_chauffage_n1: 2714.9
                            surface_chauffee_installation_chauffage_n1: 5.4
                            conso_chauffage_generateur_n1_installation_n1: 2714.9
                            nombre_logements_desservis_par_installation_ecs_n1: 1
                            description_generateur_chauffage_n1_installation_n1: >-
                              Electrique - Radiateur électrique à inertie
                              (modélisé comme un radiateur NFC, NF** et NF***)
                            surface_habitable_desservie_par_installation_ecs_n1: 5.4
                        deperditions:
                          type: object
                          description: >-
                            Détails des déperditions thermiques par poste (murs,
                            toiture, plancher, etc.)
                          example:
                            deperditions_murs: 25.2
                            deperditions_portes: 2.9
                            deperditions_enveloppe: 90.6
                            deperditions_baies_vitrees: 2.3
                            deperditions_planchers_bas: 0
                            deperditions_planchers_hauts: 52.9
                            deperditions_ponts_thermiques: 1.6
                            deperditions_renouvellement_air: 5.7
                        couts:
                          type: object
                          description: >-
                            Coûts annuels estimés par poste énergétique (en
                            euros)
                          example:
                            cout_ecs: 234.2
                            cout_chauffage: 629.3
                            cout_eclairage: 2.4
                            cout_auxiliaires: 0
                            cout_ecs_energie_n1: 234.2
                            cout_total_5_usages: 865.8
                            cout_refroidissement: 0
                            cout_chauffage_energie_n1: 629.3
                            cout_total_5_usages_energie_n1: 865.8
                        apports_besoins:
                          type: object
                          description: >-
                            Apports et besoins énergétiques (solaires, internes,
                            etc.)
                          example:
                            besoin_ecs: 654.6
                            besoin_chauffage: 4762.3
                            besoin_refroidissement: 0
                            apport_interne_saison_froide: 0
                            apport_solaire_saison_froide: 0
                            apport_interne_saison_chauffe: 519.7
                            apport_solaire_saison_chauffe: 117.8
                            production_electricite_pv_kwhep_par_an: 0
                        ids_externes:
                          type: object
                          description: >-
                            Identifiants externes associés au DPE (RPLS,
                            cadastre, etc.)
                          example:
                            complement_adresse_batiment: 26/ABD/19153/SHA
                            complement_adresse_logement: Etage 5; Porte Unique
                        misc:
                          type: object
                          description: Données complémentaires diverses du DPE
                          example:
                            _score: null
                            inertie_lourde: 0
                            type_energie_n1: Électricité
                            type_ventilation: Ventilation par ouverture des fenêtres
                            isolation_toiture: 0
                            logement_traversant: 0
                            presence_brasseur_air: 0
                            indicateur_confort_ete: insuffisant
                            emission_ges_ecs_energie_n1: 65.7
                            type_energie_principale_ecs: Électricité
                            protection_solaire_exterieure: 1
                            coordonnee_cartographique_x_ban: 653339.79
                            coordonnee_cartographique_y_ban: 6862364.67
                            emission_ges_5_usages_energie_n1: 280.8
                            emission_ges_chauffage_energie_n1: 214.5
                            type_energie_generateur_n1_ecs_n1: Électricité
                            type_energie_principale_chauffage: Électricité
                            type_energie_generateur_n1_installation_n1: Électricité
                            qualite_isolation_plancher_haut_comble_amenage: insuffisante
                  total:
                    type: integer
                  size:
                    type: integer
                  hasMore:
                    type: boolean
                  cursor:
                    type: string
                  from:
                    type: integer
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionDto'
        '401':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionDto'
      security:
        - x_api_key: []
components:
  schemas:
    DpeInheritSearchDto:
      type: object
      properties:
        filters:
          $ref: '#/components/schemas/DpeInheritFiltersDto'
        sortBy:
          type: string
          enum:
            - numero_dpe
            - date_etablissement_dpe
            - type_batiment
            - surface_habitable_logement
            - etiquette_dpe
            - conso_5_usages_par_m2_ep
            - emission_ges_5_usages
            - emission_ges_5_usages_par_m2
            - zone_climatique
          description: Sort field
        sortOrder:
          type: string
          enum:
            - asc
            - desc
          description: Sort order
        size:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
          description: Page size
        cursor:
          type: string
          description: Cursor for pagination
    ExceptionDto:
      type: object
      properties:
        error:
          description: Error object
          allOf:
            - $ref: '#/components/schemas/ErrorDto'
      required:
        - error
    DpeInheritFiltersDto:
      type: object
      properties:
        numero_dpe:
          type: string
          description: Numéro unique du DPE attribué par l'ADEME
          example: 2600E0590119C
          maxLength: 20
        flx_id:
          description: Identifiant interne Fluximmo
          example:
            min: 123456789
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        date_etablissement_dpe:
          description: Date d'établissement du DPE
          example:
            from: '2023-06-15'
          allOf:
            - $ref: '#/components/schemas/DateRangeFilter'
        date_visite_diagnostiqueur:
          description: Date de la visite du diagnostiqueur
          example:
            from: '2023-06-14'
          allOf:
            - $ref: '#/components/schemas/DateRangeFilter'
        date_reception_dpe:
          description: Date de réception du DPE par l'ADEME
          example:
            from: '2023-06-16'
          allOf:
            - $ref: '#/components/schemas/DateRangeFilter'
        date_derniere_modification_dpe:
          description: Date de la dernière modification du DPE
          example:
            from: '2023-07-01'
          allOf:
            - $ref: '#/components/schemas/DateRangeFilter'
        date_fin_validite_dpe:
          description: Date de fin de validité du DPE (10 ans après établissement)
          example:
            from: '2033-06-15'
          allOf:
            - $ref: '#/components/schemas/DateRangeFilter'
        identifiant_ban:
          type: string
          description: Identifiant de l'adresse dans la Base Adresse Nationale (BAN)
          example: '75113_4649_00137'
          maxLength: 64
        numero_voie_ban:
          type: string
          description: Numéro de voie (BAN)
          example: '32'
          maxLength: 16
        code_insee_ban:
          type: string
          description: Code INSEE de la commune (BAN, 5 caractères)
          example: '75113'
          maxLength: 5
        code_postal_ban:
          type: string
          description: Code postal (BAN, 5 chiffres)
          example: '75013'
          maxLength: 5
        code_departement_ban:
          type: string
          description: 'Code du département (BAN, 2-3 caractères, ex : 75, 2A, 974)'
          example: '75'
          maxLength: 3
        code_region_ban:
          type: string
          description: Code de la région (BAN)
          example: '11'
          maxLength: 4
        location:
          description: Coordonnées géographiques du bien (latitude, longitude)
          example:
            lat: 48.8566
            lon: 2.3522
            distance: 10km
          allOf:
            - $ref: '#/components/schemas/GeoDistanceFilter'
        type_batiment:
          type: array
          description: 'Type de bâtiment. Possible values: appartement, maison, immeuble'
          example:
            - appartement
          items:
            type: string
            enum:
              - appartement
              - maison
              - immeuble
        periode_construction:
          type: array
          description: >-
            Période de construction du bâtiment. Possible values: avant 1948,
            1948-1974, 1989-2000, 1978-1982, 1975-1977, 2006-2012, 2013-2021,
            1983-1988, 2001-2005, après 2021
          example:
            - avant 1948
          items:
            type: string
            enum:
              - avant 1948
              - 1948-1974
              - 1989-2000
              - 1978-1982
              - 1975-1977
              - 2006-2012
              - 2013-2021
              - 1983-1988
              - 2001-2005
              - après 2021
        surface_habitable_logement:
          description: Surface habitable du logement en m²
          example:
            min: 57
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        surface_habitable_immeuble:
          description: Surface habitable totale de l'immeuble en m²
          example:
            min: 5173
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        surface_ventilee:
          description: Surface ventilée du logement en m²
          example:
            min: 1040
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        nombre_niveau_logement:
          description: Nombre de niveaux (étages) du logement
          example:
            min: 1
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        nombre_niveau_immeuble:
          description: Nombre de niveaux (étages) de l'immeuble
          example:
            min: 7
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        nombre_appartement:
          description: Nombre d'appartements dans l'immeuble
          example:
            min: 26
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        etiquette_dpe:
          type: array
          description: >-
            Étiquette énergie du DPE (A = meilleur, G = pire, N = non
            applicable). Possible values: D, E, C, F, G, B, A
          example:
            - D
          items:
            type: string
            enum:
              - D
              - E
              - C
              - F
              - G
              - B
              - A
        etiquette_ges:
          type: array
          description: >-
            Étiquette GES du DPE (A = meilleur, G = pire, N = non applicable).
            Possible values: C, B, D, A, E, F, G
          example:
            - C
          items:
            type: string
            enum:
              - C
              - B
              - D
              - A
              - E
              - F
              - G
        conso_5_usages_ep:
          description: Consommation des 5 usages en énergie primaire (kWh/an)
          example:
            min: 23339
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        conso_5_usages_ef:
          description: Consommation des 5 usages en énergie finale (kWh/an)
          example:
            min: 17984
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        conso_5_usages_par_m2_ep:
          description: Consommation des 5 usages en énergie primaire par m² (kWh/m²/an)
          example:
            min: 254
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        conso_5_usages_par_m2_ef:
          description: Consommation des 5 usages en énergie finale par m² (kWh/m²/an)
          example:
            min: 184
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        emission_ges_5_usages:
          description: Émissions de GES des 5 usages (kgCO₂/an)
          example:
            min: 3068
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        emission_ges_5_usages_par_m2:
          description: Émissions de GES des 5 usages par m² (kgCO₂/m²/an)
          example:
            min: 28.6
          allOf:
            - $ref: '#/components/schemas/NumberRangeFilter'
        qualite_isolation_enveloppe:
          type: array
          description: >-
            Qualité de l'isolation globale de l'enveloppe. Possible values:
            insuffisante, moyenne, bonne, très bonne
          example:
            - insuffisante
          items:
            type: string
            enum:
              - insuffisante
              - moyenne
              - bonne
              - très bonne
        qualite_isolation_menuiseries:
          type: array
          description: >-
            Qualité de l'isolation des menuiseries (fenêtres, portes). Possible
            values: moyenne, insuffisante, bonne, très bonne
          example:
            - moyenne
          items:
            type: string
            enum:
              - moyenne
              - insuffisante
              - bonne
              - très bonne
        zone_climatique:
          type: array
          description: >-
            Zone climatique selon la réglementation thermique. Possible values:
            H1a, H3, H1b, H1c, H2d, H2b, H2c
          example:
            - H1a
          items:
            type: string
            enum:
              - H1a
              - H3
              - H1b
              - H1c
              - H2d
              - H2b
              - H2c
    ErrorDto:
      type: object
      properties:
        message:
          type: string
          description: Error message
        code:
          type: number
          description: Error code
      required:
        - message
        - code
    NumberRangeFilter:
      type: object
      properties:
        min:
          type: number
          description: Minimum value (gte)
        max:
          type: number
          description: Maximum value (lte)
    DateRangeFilter:
      type: object
      properties:
        from:
          type: string
          format: date-time
          description: Start date (gte)
        to:
          type: string
          format: date-time
          description: End date (lte)
    GeoDistanceFilter:
      type: object
      properties:
        lat:
          type: number
          minimum: -90
          maximum: 90
          description: Latitude
        lon:
          type: number
          minimum: -180
          maximum: 180
          description: Longitude
        distance:
          type: string
          pattern: ^\d+(\.\d+)?(m|km|mi|ft|yd|nmi)$
          example: 10km
          description: Distance with unit
      required:
        - lat
        - lon
        - distance
  securitySchemes:
    x_api_key:
      type: apiKey
      in: header
      name: x-api-key

````