openapi: 3.0.0
info:
  description: |
    # Getting started

    ## Introduction
    Voici quelques ressources qui vous aideront à explorer notre API.

      Nos services webs utilisent le protocole __HTTPS__ sur le port 443, tout
      accès en HTTP sur le port 80 est bloqué par notre pare-feu. Les échanges de
      données sont réalisés en __JSON__.


    ## Méthodes d'authentification
    Avant de commencer, vous devez nous [contacter](https://www.yanport.com/contact) afin d'obtenir un [JSON WebToken (JWT)](https://jwt.io/) qui vous permettra de vous identifier à chaque requête.

    ### Header (production)
    La méthode privilégiée pour s’authentifier est de passer à chaque requête le token dans le header `Authorization: Bearer {{ JWT }}` en remplaçant `{{ JWT }}` par votre token.

    ### Query Param (développement)
    Il est aussi possible de passer le token directement en query param de la requête `https://api.yanport.com/?token={{ JWT }}`.

    ## Client http
    Il est possible d'utiliser un client http comme [Insomnia](https://insomnia.rest/) ou [Postman](https://www.postman.com/) et importer notre fichier openapi.yaml.
    Pensez à ajouter votre Bearer token.

    ## API client SDK
    Il est également possible d'utiliser un client SDK comme [openapi-generator](https://github.com/OpenAPITools/openapi-generator)

    ## Limitation
    Toutes les requêtes à notre API sont loggées, c’est pourquoi vous devez respecter nos [conditions d'utilisation](https://www.yanport.com/legal/cgu/api) afin d’éviter tout usage abusif de notre API.

    ### Limite d'utilisation
    Notre système de rate limiting est basé sur [token bucket](https://en.wikipedia.org/wiki/Token_bucket).

    Voici les limites au niveau de notre API :
    - Nombre de requêtes par seconde
        - Taille du bucket : 100
        - Remplissage : 10 requêtes par seconde
        - Status HTTP : [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429)
        - Ex : "too many requests for Payload{id=1}, only 10 req/s are allowed,
        retry after 480ms"


    - Bande passante
        - Taille du bucket : 20Mb
        - Remplissage : 5Kb par seconde
        - Status HTTP : 509
        - Ex : "too many bytes consumed for Payload{id=1}, 5120 bytes/s are allowed"
  version: '1.0'
  title: Yanport API
  termsOfService: https://www.yanport.com/legal/cgu/api
  contact:
    email: dev@yanport.com
servers:
  - url: api.yanport.com
    description: Yanport API server
security:
  - JWT: []
tags:
  - name: Modele-bien
    x-displayName: Bien
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Property" />
  - name: Modele-programme
    x-displayName: Programme
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Program" />
  - name: Modele-departement
    x-displayName: Département
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Department" />
  - name: Modele-agglomeration
    x-displayName: Agglomération
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Agglomeration" />
  - name: Modele-commune
    x-displayName: Commune
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/City" />
  - name: Modele-code-postal
    x-displayName: Code postal
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Zip-code" />
  - name: Modele-quartier
    x-displayName: Quartier
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Quarter" />
  - name: Modele-IRIS
    x-displayName: IRIS
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Iris" />
  - name: Modele-parcelle
    x-displayName: Parcelle
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Parcel" />
  - name: Modele-censusStats
    x-displayName: Statistiques socioéconomiques
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/CensusStats" />
  - name: Modele-rentControl
    x-displayName: Encadrement des loyers
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/RentControl" />
  - name: Modele-buildingPermit
    x-displayName: Permis de construire
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/BuildingPermit" />
  - name: Modele-utilisateur
    x-displayName: Utilisateur
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/User" />
  - name: Modele-etude
    x-displayName: Etude
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Study" />
  - name: Modele-prospect
    x-displayName: Prospect
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/Prospect" />
  - name: Modele-activite-de-prospection
    x-displayName: Activité de prospection
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/ProspectActivity" />
paths:
  /properties:
    get:
      tags:
        - Les biens (ancien/neuf)
      summary: Récupérer des biens
      description: |-
        Retourne les biens actifs ou expirés selon plusieurs critères (prix, surface, ville, ...)

        La recherche plein-texte est disponible sur le titre et la description via le query param `q` _(voir notre [FAQ](https://support.yanport.com/hc/fr/articles/360020880459-Affiner-ma-recherche-avec-des-mots-cl%C3%A9s) concernant la syntaxe)_

        Par défaut les résultats sont paginés, pour parcourir l'ensemble des biens les paramètres `from` et `size` doivent être renseignés. Le paramètre `from` définit le début du set de données et `size` le nombre d'éléments à récupérer. Le nombre `total` d'éléments est renvoyé dans la réponse.

        Concernant le tri, le paramètre `sort` a pour syntaxe `field:asc|desc`, en remplaçant `field` par le nom du champ sur lequel appliqué le tri. Il est également possible de faire un tri par distance par rapport à une géolocalisation avec la syntaxe `sort=address.location:geo:lat:lon`
        ### Exemples
          #### Les biens en cours de publication sur Levallois-Perret entre 120 et 130m²
            /properties?active=true&source=AD&zipCodes=92300&surfaceMin=120&surfaceMax=130
          #### Les biens en cours de publication dans le 17ème arrondissement de Paris avec balcon
            /properties?active=true&source=AD&zipCodes=75017&q=balcon
          #### Les derniers biens de particuliers publiés en Corse sur LeBonCoin et PAP
            /properties?active=true&source=AD&crawlSources=LE_BON_COIN&crawlSources=PAP&departments=2B&sort=marketing.publicationStartDate:asc
          #### Les biens en cours sur Levallois-Perret entre 120 et 130m² triés par distance par rapport au point de coordonnées (48.8956, 2.2827)
            /properties?active=true&source=AD&zipCodes=92300&surfaceMin=120&surfaceMax=130&sort=address.location:geo:48.8956:2.2827
      parameters:
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: La liste des biens
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Property'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
        - Les biens (ancien/neuf)
      summary: Ajouter un bien
      description: Retourne le bien créé avec son identifiant, l'horodatage et son adresse complétée
      requestBody:
        required: true
        description: Formulaire pour la création d'un bien (de source USER)
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Property'
      responses:
        '200':
          description: Le bien a été créé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/{id}:
    get:
      tags:
        - Les biens (ancien/neuf)
      summary: Récupérer un bien (ID)
      description: Retourne un bien selon son identifiant
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Le bien
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    head:
      tags:
        - Les biens (ancien/neuf)
      summary: Vérifier l'existence d'un bien (ID)
      description: Retourne une 200 si le bien existe, une 404 sinon
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Le bien existe
        '400':
          description: Paramètres de la requête invalides
        '404':
          description: Le bien n'existe pas
        '500':
          description: Une erreur coté serveur s'est produite
  /properties/ids:
    get:
      tags:
        - Les biens (ancien/neuf)
      summary: Récupérer des biens (ID)
      description: Retourne des biens selon leurs identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          schema:
            type: array
            items:
              type: string
              format: uuid
      responses:
        '200':
          description: Le bien
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Property'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/ads/urls:
    get:
      tags:
        - Les biens (ancien/neuf)
      summary: Récupérer des biens (URL)
      description: Retourne des biens selon les urls d'annonces
      parameters:
        - name: url
          in: query
          required: true
          style: form
          schema:
            type: string
      responses:
        '200':
          description: Le bien
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/by-similarity:
    post:
      tags:
        - Les biens similaires (ancien/neuf)
      summary: Récupérer les biens similaires
      description: Retourne les biens similaires correspondants au bien ou aux critères demandés.
      requestBody:
        required: true
        description: |-
          Formulaire pour la recherche de biens similaires.

          L'objet property peut contenir soit l'id du bien d'intérêt, soit directement ses caractéristiques, mais pas les deux.

          L'objet query permet de définir des filtres supplémentaires pour la recherche de biens similaires.  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                size:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 10
                  description: Nombre de résultats à retourner
                features:
                  $ref: '#/components/schemas/PropertyFeaturesSimilarity'
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Liste des biens similaires
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimilarProperties'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/{id}/by-similarity:
    post:
      tags:
        - Les biens similaires (ancien/neuf)
      summary: Récupérer les biens similaires
      description: Retourne les biens similaires correspondants au bien ou aux critères demandés.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        description: |-
          Formulaire pour la recherche de biens similaires.

          L'objet query permet de définir des filtres supplémentaires pour la recherche de biens similaires.  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                size:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 10
                  description: Nombre de résultats à retourner
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Liste des biens similaires
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimilarProperties'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/by-similarity/scoring:
    post:
      tags:
        - Les biens similaires (ancien/neuf)
      summary: Récupérer un score de similarité
      description: Retourne un score de similarité par-rapport à un bien d'intérêt pour une liste de biens.
      requestBody:
        required: true
        description: |-
          Formulaire pour le scoring d'une liste de biens.

          L'objet property peut contenir soit l'id du bien d'intérêt, soit directement ses caractéristiques, mais pas les deux.

          L'objet query permet de définir des filtres supplémentaires pour la recherche de biens similaires.  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                features:
                  $ref: '#/components/schemas/PropertyFeaturesSimilarity'
                propertiesToScore:
                  type: array
                  description: Liste d'ids des biens à scorer
                  items:
                    type: string
                    format: uuid
                    example: 007d73b0-1421-11eb-9515-0f9ad411d285
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Liste des biens similaires avec score
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimilarProperties'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/{id}/by-similarity/scoring:
    post:
      tags:
        - Les biens similaires (ancien/neuf)
      summary: Récupérer un score de similarité
      description: Retourne un score de similarité par-rapport à un bien d'intérêt pour une liste de biens.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        description: |-
          Formulaire pour le scoring d'une liste de biens.

          L'objet query permet de définir des filtres supplémentaires pour la recherche de biens similaires.  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                propertiesToScore:
                  type: array
                  description: Liste d'ids des biens à scorer
                  items:
                    type: string
                    format: uuid
                    example: 007d73b0-1421-11eb-9515-0f9ad411d285
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Liste des biens similaires avec score
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimilarProperties'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /programs:
    get:
      tags:
        - Les programmes (neuf)
      summary: Récupérer des programmes
      description: |-
        Retourne les programmes immobiliers actifs ou expirés selon plusieurs critères (prix, surface, ville, ...)

        Par défaut les résultats sont paginés, pour parcourir l'ensemble des biens les paramètres `from` et `size` doivent être renseignés. Le paramètre `from` définit le début du set de données et `size` le nombre d'éléments à récupérer. Le nombre `total` d'éléments est renvoyé dans la réponse.

        Concernant le tri, le paramètre `sort` a pour syntaxe `field:asc|desc`, en remplaçant `field` par le nom du champ sur lequel appliqué le tri. Il est également possible de faire un tri par distance par rapport à une géolocalisation avec la syntaxe `sort=address.location:geo:lat:lon`

        ### Exemples
          #### Les programmes en cours de publication sur Levallois-Perret entre 120 et 130m²
            /programs?active=true&zipCodes=92300&surfaceMin=120&surfaceMax=130
          #### Les programmes en cours de publication dans le 17ème arrondissement de Paris
            /programs?active=true&zipCodes=75017
          #### Les derniers programmes publiés en Corse sur LeBonCoinNeuf et SeLogerNeuf
            /programs?active=true&crawlSources=LE_BON_COIN_NEUF&crawlSources=SE_LOGER_NEUF&departments=2B&sort=marketing.publicationStartDate:asc
          #### Les programmes sur Levallois-Perret triés par distance par rapport au point de coordonnées (48.8956, 2.2827)
            /programs?active=true&source=AD&zipCodes=92300&surfaceMin=120&surfaceMax=130&sort=address.location:geo:48.8956:2.2827
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/ProgramSearchQuery-name'
        - $ref: '#/components/parameters/ProgramSearchQuery-description'
        - $ref: '#/components/parameters/crawlSources'
        - $ref: '#/components/parameters/excludedCrawlSources'
        - $ref: '#/components/parameters/active'
        - $ref: '#/components/parameters/dealerNames'
        - $ref: '#/components/parameters/dealerIds'
        - $ref: '#/components/parameters/dealerSubTypes'
        - $ref: '#/components/parameters/excludedDealerIds'
        - $ref: '#/components/parameters/ids'
        - $ref: '#/components/parameters/propertyIds'
        - $ref: '#/components/parameters/roomCountMin'
        - $ref: '#/components/parameters/roomCountMax'
        - $ref: '#/components/parameters/departments'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/quarterIds'
        - $ref: '#/components/parameters/publicationDateMin'
        - $ref: '#/components/parameters/publicationDateMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-deleteDateMinOrActive'
        - $ref: '#/components/parameters/ProgramSearchQuery-deleteDateMaxOrActive'
        - $ref: '#/components/parameters/durationDaysMin'
        - $ref: '#/components/parameters/durationDaysMax'
        - $ref: '#/components/parameters/surfaceMin'
        - $ref: '#/components/parameters/surfaceMax'
        - $ref: '#/components/parameters/priceMin'
        - $ref: '#/components/parameters/priceMax'
        - $ref: '#/components/parameters/missingFields'
        - $ref: '#/components/parameters/existingFields'
        - $ref: '#/components/parameters/excludedIds'
        - $ref: '#/components/parameters/organizationIds'
        - $ref: '#/components/parameters/ProgramSearchQuery-legalDevices'
        - $ref: '#/components/parameters/ProgramSearchQuery-certifications'
        - $ref: '#/components/parameters/ProgramSearchQuery-deliveryDateMin'
        - $ref: '#/components/parameters/ProgramSearchQuery-deliveryDateMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-lotCountMin'
        - $ref: '#/components/parameters/ProgramSearchQuery-lotCountMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-activeLotCountMin'
        - $ref: '#/components/parameters/ProgramSearchQuery-activeLotCountMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-stockPreview'
        - $ref: '#/components/parameters/ProgramSearchQuery-stages'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de programmes
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: La liste des programmes
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Program'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /programs/{id}:
    get:
      tags:
        - Les programmes (neuf)
      summary: Récupérer un programme (ID)
      description: Retourne un programme selon son identifiant
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Le programme
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Program'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /programs/ids:
    get:
      tags:
        - Les programmes (neuf)
      summary: Récupérer des programmes (ID)
      description: Retourne des programmes selon leurs identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          schema:
            type: array
            items:
              type: string
              format: uuid
      responses:
        '200':
          description: Les programmes
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Program'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/estimate:
    get:
      tags:
        - Estimation (prix, loyer, etc)
      summary: Estimer un bien
      description: |-
        Estimation précise du prix, loyer, rendement locatif ou de la marge de négociation selon les caractéristiques du bien et sa localisation.
        ### Exemples
          #### Estimation du loyer d'un appartement de 38m² et 2 pièces à Rennes
            /properties/estimate?field=PRICE&marketingType=RENT&propertyType=APARTMENT&lat=48.1125&lng=-1.6735&surface=38&roomCount=2
          #### Estimation d'une maison à Nantes de 1990 de 150m2 avec parking, terrasse et jardin - avec interprétabilité
            /properties/estimate?field=PRICE&marketingType=SALE&constructionYear=1990&propertyType=HOUSE&lat=47.25620549&lng=-1.55873660&surface=150&roomCount=6&parkingCount=1&terraceCount=1&gardenCount=1&explain=True&landSurface=3089
      x-code-samples:
        - lang: curl
          source: 'curl ''https://api.yanport.com/properties/estimate?field=PRICE&marketingType=SALE&propertyType=APARTMENT&lat=48.875553&lng=2.357353&surface=29.83&newBuild=false&floor=5&roomCount=1'' --header ''Authorization: Bearer YOUR_TOKEN'''
      parameters:
        - name: field
          in: query
          description: Champ à estimer, PRICE => Prix ou loyer, GROSS_RENTAL_YIELD => Rendement locatif brut (maison, appartement et parking), NEGOTIATION_MARGIN => Marge de négociation (maison et appartement uniquement).
          schema:
            type: string
            enum:
              - PRICE
              - GROSS_RENTAL_YIELD
              - NEGOTIATION_MARGIN
          required: true
        - name: marketingType
          in: query
          description: Type de marché (vente, location). Uniquement vente pour les terrains.
          schema:
            type: string
            enum:
              - SALE
              - RENT
          required: true
        - name: propertyType
          in: query
          description: Type de bien (maison, appartement, terrain, parking).
          schema:
            type: string
            enum:
              - HOUSE
              - APARTMENT
              - LAND
              - PARKING
          required: true
        - name: propertySubType
          in: query
          description: Sous-type de bien (parking uniquement).
          schema:
            type: string
            enum:
              - PARKING_SPOT
              - BOX
              - GARAGE
            default: PARKING_SPOT
        - name: lat
          in: query
          description: Latitude du bien (coordonées GPS).
          schema:
            type: number
            format: double
          required: true
        - name: lng
          in: query
          description: Longitude du bien (coordonées GPS).
          schema:
            type: number
            format: double
          required: true
        - name: surface
          in: query
          description: Surface du bien (ou du terrain si propertyType = LAND).
          schema:
            type: number
            format: double
            minimum: 5
          required: true
        - name: roomCount
          in: query
          description: Nombre de pièces du bien.
          schema:
            type: integer
            minimum: 1
        - name: landSurface
          in: query
          description: Surface de la parcelle (maison uniquement).
          schema:
            type: number
            format: double
        - name: newBuild
          in: query
          description: Construction neuve (vente uniquement, appartement et maison uniquement).
          schema:
            type: boolean
        - name: furnished
          in: query
          description: Indique si le bien d'intérêt est meublé ou pas (location uniquement).
          schema:
            type: boolean
        - name: constructionYear
          in: query
          description: L'année de construction (maison et appartement uniquement).
          schema:
            type: number
            format: integer
        - name: floor
          in: query
          description: Etage du bien (appartement uniquement).
          schema:
            type: number
            format: integer
            minimum: 0
        - name: floorCount
          in: query
          description: Nombre d'étages du bien (maison uniquement).
          schema:
            type: integer
        - name: generalState
          in: query
          description: Etat général du bien (maison et appartement uniquement). Dans la version actuelle du moteur d'estimation l'état VERY_BAD (resp. VERY_GOOD) est assimilé à BAD (resp. GOOD).
          schema:
            type: string
            enum:
              - VERY_BAD
              - BAD
              - NORMAL
              - GOOD
              - VERY_GOOD
              - NEW
        - name: energyConsumptionLetter
          in: query
          description: Classe de diagnostic de performance énergétique (DPE) (maison et appartement uniquement).
          schema:
            type: string
            enum:
              - A
              - B
              - C
              - D
              - E
              - F
              - G
        - name: greenhouseGasConsumptionLetter
          in: query
          description: Classe d'émission de gaz à effet de serre (GES) (maison et appartement uniquement).
          schema:
            type: string
            enum:
              - A
              - B
              - C
              - D
              - E
              - F
              - G
        - name: balconyCount
          in: query
          description: Nombre de balcons (0 ou 1, fixé à 1 si la valeur indiquée est supérieure).
          schema:
            type: integer
        - name: parkingCount
          in: query
          description: Nombre de places de parking (0 ou 1, fixé à 1 si la valeur indiquée est supérieure). Maison ou appartement uniquement.
          schema:
            type: integer
        - name: terraceCount
          in: query
          description: Nombre de terrasses (0 ou 1, fixé à 1 si la valeur indiquée est supérieure).
          schema:
            type: integer
        - name: swimmingPoolCount
          in: query
          description: Nombre de piscines (0 ou 1, fixé à 1 si la valeur indiquée est supérieure).
          schema:
            type: integer
        - name: cellarCount
          in: query
          description: Nombre de caves (0 ou 1, fixé à 1 si la valeur indiquée est supérieure).
          schema:
            type: integer
        - name: gardenCount
          in: query
          description: Nombre de jardins (0 ou 1, fixé à 1 si la valeur indiquée est supérieure).
          schema:
            type: integer
        - name: date
          in: query
          description: Date à laquelle on souhaite réaliser l'estimation. Si omise, la date/heure courante du serveur est utilisée.
          schema:
            type: string
            format: date-time
            example: '2025-09-16T12:34:56Z'
        - name: price
          in: query
          description: Prix du bien (marge de négociation uniquement).
          schema:
            type: number
            format: double
        - name: explain
          in: query
          description: Obtenir l'explication des variables (maison et appartement uniquement). Si l'interprétabilité n'est pas jugée suffisamment fiable cet argument est ignoré.
          schema:
            type: boolean
        - $ref: '#/components/parameters/percentiles'
      responses:
        '200':
          description: La valeur du champ estimé (Prix, etc).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EstimationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /maps/properties/indicators:
    get:
      tags:
        - Génération de carte
      summary: Indicateurs de marché
      description: |-
        Retourne un GeoJSON avec des indicateurs de marché.
        ### Exemples
          #### Carte des prix au m² du marché de la vente d'appartements d'une zone du nord de Nantes
            /maps/properties/indicators?type=PRICE_M2&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8

          #### Carte des durées du marché de la vente d'appartements d'une zone du nord de Nantes
            /maps/properties/indicators?type=DURATION&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8
      parameters:
        - $ref: '#/components/parameters/PropertyIndicatorQuery-type'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-marketingType'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-propertyTypes'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-newBuild'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-frequency'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/zoomLevel'
        - $ref: '#/components/parameters/zoneType'
      x-codeSamples:
        - lang: cURL
          label: maps_price_m2
          source: |
            curl 'https://api.yanport.com/maps/properties/indicators?type=PRICE_M2&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8' \
            --header 'Authorization: Bearer YOUR_TOKEN'
        - lang: cURL
          label: maps_duration
          source: |
            curl 'https://api.yanport.com/maps/properties/indicators?type=DURATION&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8' \
            --header 'Authorization: Bearer YOUR_TOKEN'
      responses:
        '200':
          description: GeoJson de données géographiques
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MapsPropertiesIndicatorsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /maps/properties:
    get:
      tags:
        - Génération de carte
      summary: Statistiques de marché
      description: |-
        Retourne un GeoJSON avec des statistiques de marché.
        ### Exemples
          #### Carte des prix au m² du marché de la vente d'appartements d'une zone du nord de Nantes
            /maps/properties?field=PRICE_M2&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&publicationStartDateMin=2023-01-01T00:00:00.000&publicationStartDateMax=2023-12-31T23:59:59.999

          #### Carte des stocks du marché de la vente d'appartements d'une zone du nord de Nantes
            /maps/properties?metric=COUNT&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&publicationStartDateMin=2023-01-01T00:00:00.000&publicationStartDateMax=2023-12-31T23:59:59.999
      parameters:
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/metric'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/percentiles'
        - $ref: '#/components/parameters/zoomLevel'
        - $ref: '#/components/parameters/zoneType'
        - $ref: '#/components/parameters/reliability'
      x-codeSamples:
        - lang: cURL
          label: maps_percentiles_price_m2
          source: |
            curl 'https://api.yanport.com/maps/properties?field=PRICE_M2&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&publicationStartDateMin=2023-01-01T00:00:00.000&publicationStartDateMax=2023-12-31T23:59:59.999' \
            --header 'Authorization: Bearer YOUR_TOKEN'
        - lang: cURL
          label: maps_count
          source: |
            curl 'https://api.yanport.com/maps/properties?metric=COUNT&bbox=47.26014138609658,-1.5653532226675742,47.25029468632819,-1.556522599382966&zoomLevel=8&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&publicationStartDateMin=2023-01-01T00:00:00.000&publicationStartDateMax=2023-12-31T23:59:59.999' \
            --header 'Authorization: Bearer YOUR_TOKEN'
      responses:
        '200':
          description: GeoJson de données géographiques
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MapsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/indicators:
    get:
      tags:
        - Indicateurs sur les biens (ancien/neuf)
      summary: Valeur la plus récente d'un indicateur (prix, loyer, etc)
      description: |-
        Obtenir la valeur la plus récente d'un indicateur sur les biens. Un segment du marché (typologie, DPE, ...) peut être sélectionné pour affiner les critères.

        ### Exemples
          #### Prix au m² des appartements à Levallois-Perret
            /properties/indicators?type=PRICE_M2&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039

          #### Loyers au m² des appartements T3 à Levallois-Perret
            /properties/indicators?type=PRICE_M2&segmentType=TYPOLOGY&segments=T3&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039
      parameters:
        - $ref: '#/components/parameters/PropertyIndicatorQuery-type'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-segmentType'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-segments'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-marketingType'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-propertyTypes'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-newBuild'
        - $ref: '#/components/parameters/agglomerationIds'
        - $ref: '#/components/parameters/departments'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/irisIds'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-frequency'
      x-codeSamples:
        - lang: cURL
          label: price_m2
          source: |
            curl 'https://api.yanport.com/properties/indicators?type=PRICE_M2&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039' \
            --header 'Authorization: Bearer YOUR_TOKEN'
        - lang: cURL
          label: price_m2_with_segment
          source: |
            curl '/properties/indicators?type=PRICE_M2&segmentType=TYPOLOGY&segments=T3&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039' \
            --header 'Authorization: Bearer YOUR_TOKEN'
      responses:
        '200':
          description: Indicateur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyIndicator'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/indicators/evolution:
    get:
      tags:
        - Indicateurs sur les biens (ancien/neuf)
      summary: Évolution d'un indicateur (prix, loyer, etc)
      description: |-
        Obtenir l'évolution d'un indicateur sur les biens. Un segment du marché (typologie, DPE, ...) peut être sélectionné pour affiner les critères.

        ### Exemples
          #### Évolution des prix au m² des appartements à Levallois-Perret
            /properties/indicators/evolution?type=PRICE_M2&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039

          #### Évolution des loyers au m² des appartements T3 à Levallois-Perret
            /properties/indicators/evolution?type=PRICE_M2&segmentType=TYPOLOGY&segments=T3&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039
      parameters:
        - $ref: '#/components/parameters/PropertyIndicatorQuery-type'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-segmentType'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-segments'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-marketingType'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-propertyTypes'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-newBuild'
        - $ref: '#/components/parameters/agglomerationIds'
        - $ref: '#/components/parameters/departments'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/irisIds'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/PropertyIndicatorQuery-frequency'
        - $ref: '#/components/parameters/dateMin'
        - $ref: '#/components/parameters/dateMax'
      x-codeSamples:
        - lang: cURL
          label: evolution_price_m2
          source: |
            curl 'https://api.yanport.com/properties/indicators/evolution?type=PRICE_M2&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039' \
            --header 'Authorization: Bearer YOUR_TOKEN'
        - lang: cURL
          label: evolution_price_m2_with_segment
          source: |
            curl '/properties/indicators/evolution?type=PRICE_M2&segmentType=TYPOLOGY&segments=T3&marketingType=SALE&propertyTypes=APARTMENT&newBuild=false&cityIds=54178039' \
            --header 'Authorization: Bearer YOUR_TOKEN'
      responses:
        '200':
          description: Évolution d'un indicateur
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyIndicatorDateHistogram'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/count:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Nombre de biens
      description: |-
        Compte le nombre de biens par rapport à certains critères de recherches. (prix, surface, ville, ...)
        ### Exemple
          #### Nombre de biens en cours de publication sur Levallois-Perret entre 120 et 130m²
            /properties/count?active=true&source=AD&zipCodes=92300&surfaceMin=120&surfaceMax=130
      parameters:
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Nombre de biens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/count/group-by-{groupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Nombre de biens (GroupBy)
      description: |-
        Retourne le nombre de biens regroupés selon 1 critère.

        ### Exemple
          #### Nombre de biens regroupés par portail en cours de publication sur Levallois-Perret
            /properties/count/group-by-crawl-sources?active=true&source=AD&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/termsSize'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Nombre de biens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/count/group-by-{groupBy}-and-{subGroupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Nombre de biens (SubGroupBy)
      description: |-
        Retourne le nombre de biens regroupés selon 2 critères.

        ### Exemple
          #### Nombre de biens regroupés par portail et par type de vendeur en cours de publication sur Levallois-Perret
            /properties/count/group-by-crawl-sources-and-dealer-type?active=true&source=AD&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/subGroupBy'
        - $ref: '#/components/parameters/termsSize'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Nombre de biens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/count/ranges-by-{field}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Nombre de biens (RangesBy)
      description: |-
        Retourne le nombre de biens regroupés par un ensemble d'intervalles selon 1 critère.

        ### Exemple
          #### Nombre de biens regroupés par surface en cours de publication sur Levallois-Perret répartis selon les intervalles ]-∞, 60[ et [60, +∞[
            /properties/count/ranges-by-surface?active=true&source=AD&zipCodes=92300&intervals=*:60&intervals=60:*
      parameters:
        - name: field
          in: path
          description: |
            Champ sur lequel sont calculées les statistiques.
          required: true
          schema:
            $ref: '#/components/schemas/Field-Numeric-Property'
        - $ref: '#/components/parameters/intervals'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Nombre de biens
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountRangesByResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/average:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Moyenne
      description: |-
        Permet de récupérer des moyennes sur les biens.
        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.
        ### Exemples
          #### Prix au m² moyen des appartements en cours de publication en vente à Levallois-Perret
            /properties/average?field=PRICE_M2&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&active=true&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Moyenne
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Average'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/average/group-by-{groupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Moyenne (GroupBy)
      description: |-
        Permet de récupérer des moyennes sur les biens regroupés selon 1 critère.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1`
        (voir les valeurs possibles dans le paramètre `anomalyValues`).


        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres)
        pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemples
          #### Prix au m² moyen regroupés par portail des appartements en cours de publication en vente à Levallois-Perret
            /properties/average/group-by-crawl-sources?field=PRICE_M2&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&active=true&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/termsSize'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Moyenne
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Average'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/average/group-by-{groupBy}-and-{subGroupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Moyenne (SubGroupBy)
      description: |-
        Permet de récupérer des moyennes sur les biens regroupés selon 2 critères.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1`
        (voir les valeurs possibles dans le paramètre `anomalyValues`).


        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres)
        pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemples
          #### Prix au m² moyen regroupés par portail et par type de vendeur des appartements en cours de publication en vente à Levallois-Perret    
            /properties/average/group-by-crawl-sources-and-dealer-type?field=PRICE_M2&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&active=true&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/subGroupBy'
        - $ref: '#/components/parameters/termsSize'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Moyenne
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Average'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/stats:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Statistiques
      description: |-
        Permet de récupérer des statistiques de base (moyenne, somme, minimum et maximum) sur les biens.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemple
          #### Statistiques du prix au m² des appartements en cours de publication en vente à Levallois-Perret
            /properties/stats?field=PRICE_M2&marketingTypes=SALE&active=true&zipCodes=92300&source=AD&propertyTypes=APARTMENT
      parameters:
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Statistiques
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Stats'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/stats/group-by-{groupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Statistiques (GroupBy)
      description: |-
        Permet de récupérer des statistiques de base sur les biens regroupés selon 1 critère.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemple
          #### Statistiques du prix au m² des appartements en cours de publication en vente à Levallois-Perret regroupés par portail
            /properties/stats/group-by-CRAWL_SOURCES?field=PRICE_M2&marketingTypes=SALE&active=true&zipCodes=92300&source=AD&propertyTypes=APARTMENT
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/termsSize'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Statistiques
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/stats/group-by-{groupBy}-and-{subGroupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Statistiques (SubGroupBy)
      description: |-
        Permet de récupérer des statistiques de base sur les biens regroupés selon 2 critères.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemple
          #### Statistiques du prix au m² des appartements en cours de publication en vente à Levallois-Perret regroupés par portail et type d'annonceur
            /properties/stats/group-by-CRAWL_SOURCES-and-DEALERS_TYPE?field=PRICE_M2&marketingTypes=SALE&active=true&zipCodes=92300&source=AD&propertyTypes=APARTMENT
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/subGroupBy'
        - $ref: '#/components/parameters/termsSize'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Statistiques
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/stats/reliable-zone:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Statistiques (zone fiable)
      description: |-
        Permet de construire une zone géographique où les statistiques sur les biens sont fiables.
        Voir notre [article](https://www.yanport.com/blog/posts/etude-de-marche-a-ladresse) pour plus de détails.
        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).
        ### Exemple
          #### Zone fiable sur l'année 2021 pour les appartements à vendre autour de la Goutte d’Or (Paris 18ème)
            /properties/stats/reliable-zone?propertyTypes=APARTMENT&marketingType=SALE&agglomerationId=4762789834677248&cityId=52421209&irisId=751062402&dateMin=2021-01-01T00:00:00&dateMax=2021-12-31T23:59:59&source=AD
      parameters:
        - name: reliableZoneQuery
          in: query
          schema:
            $ref: '#/components/schemas/ReliableZoneQuery'
      responses:
        '200':
          description: Zone fiable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReliableZone'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/percentiles:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Centiles
      description: |-
        Permet de récupérer des percentiles sur les biens.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemples
          #### Prix au m² médian des appartements en cours de publication en vente à Levallois-Perret
            /properties/percentiles?field=PRICE_M2&percentiles=50&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&active=true&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/percentiles'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Percentiles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Percentiles'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/percentiles/group-by-{groupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Centiles (GroupBy)
      description: |-
        Permet de récupérer des percentiles sur les biens regroupés selon 1 critère.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemples
          #### Prix au m² médian des appartements en cours de publication en vente à Levallois-Perret regroupés par portail
            /properties/percentiles/group-by-crawl-sources?field=PRICE_M2&percentiles=50&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&active=true&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/termsSize'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/percentiles'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Percentiles
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/percentiles/group-by-{groupBy}-and-{subGroupBy}:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Centiles (SubGroupBy)
      description: |-
        Permet de récupérer des percentiles sur les biens regroupés selon 2 critères.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemple
          #### Prix au m² médian des appartements en cours de publication en vente à Levallois-Perret regroupés par portail et type d'annonceur
            /properties/percentiles/group-by-crawl-sources-and-dealers-type?field=PRICE_M2&percentiles=50&source=AD&marketingTypes=SALE&propertyTypes=APARTMENT&active=true&zipCodes=92300
      parameters:
        - $ref: '#/components/parameters/groupBy'
        - $ref: '#/components/parameters/subGroupBy'
        - $ref: '#/components/parameters/termsSize'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/percentiles'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Percentiles
          content:
            application/json:
              schema:
                type: object
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/percentiles/reliable-zone:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Centiles (zone fiable)
      description: |-
        Permet de construire une zone géographique où les percentiles sur les biens sont fiables.
        Voir notre [article](https://www.yanport.com/blog/posts/etude-de-marche-a-ladresse) pour plus de détails.
        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).
        ### Exemple
          #### Zone fiable sur l'année 2021 pour les appartements à vendre autour de la Goutte d’Or (Paris 18ème)
            /properties/percentiles/reliable-zone?propertyTypes=APARTMENT&marketingType=SALE&agglomerationId=4762789834677248&cityId=52421209&irisId=751062402&dateMin=2021-01-01T00:00:00&dateMax=2021-12-31T23:59:59&source=AD
      parameters:
        - name: reliableZoneQuery
          in: query
          schema:
            $ref: '#/components/schemas/ReliableZoneQuery'
      responses:
        '200':
          description: Zone fiable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReliableZone'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/distribution:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Distribution (prix, surface, etc)
      description: |-
        Permet de construire un graphique de distribution des biens selon plusieurs critères (voir le champ `field`).
        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemple
          #### Distribution des durées de publication des biens en vente entre 2016 et 2017 à Levallois-Perret
            /properties/distribution?field=DURATION_DAYS&intervalField=DURATION_DAYS&marketingTypes=SALE&active=false&source=AD&zipCodes=92300&publicationDateMin=2016-01-01T00%3A00%3A00.00&publicationDateMax=2017-01-01T00%3A00%3A00.00
      parameters:
        - $ref: '#/components/parameters/metric'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/percentiles'
        - $ref: '#/components/parameters/PropertyHistogramQuery-intervalField'
        - $ref: '#/components/parameters/PropertyHistogramQuery-interval'
        - $ref: '#/components/parameters/PropertyHistogramQuery-extendedBoundMin'
        - $ref: '#/components/parameters/PropertyHistogramQuery-extendedBoundMax'
        - $ref: '#/components/parameters/PropertyHistogramQuery-hardBoundMin'
        - $ref: '#/components/parameters/PropertyHistogramQuery-hardBoundMax'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Une liste de points
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PercentilesHistogram'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/evolution:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Évolution (prix, surface, etc)
      description: |-
        Permet de construire une courbe d'évolution des statistiques sur les biens selon plusieurs critères.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemples
          #### Évolution des prix des biens en vente entre 2016 et 2017 à Levallois-Perret
            /properties/evolution?field=PRICE&intervalField=DELETE_DATE&interval=1&intervalUnit=MONTHS&source=AD&marketingTypes=SALE&active=false&zipCodes=92300&publicationDateMin=2016-01-01T00:00:00.00&publicationDateMax=2017-01-01T00:00:00.00
      parameters:
        - $ref: '#/components/parameters/metric'
        - $ref: '#/components/parameters/field'
        - $ref: '#/components/parameters/percentiles'
        - $ref: '#/components/parameters/DateHistogramQuery-interval'
        - $ref: '#/components/parameters/PropertyDateHistogramQuery-intervalField'
        - $ref: '#/components/parameters/DateHistogramQuery-intervalUnit'
        - $ref: '#/components/parameters/DateHistogramQuery-intervalOffset'
        - $ref: '#/components/parameters/DateHistogramQuery-extendedBoundMin'
        - $ref: '#/components/parameters/DateHistogramQuery-extendedBoundMax'
        - $ref: '#/components/parameters/DateHistogramQuery-hardBoundMin'
        - $ref: '#/components/parameters/DateHistogramQuery-hardBoundMax'
        - $ref: '#/components/parameters/DateHistogramQuery-timeZone'
        - $ref: '#/components/parameters/DateHistogramQuery-movingFunction'
        - $ref: '#/components/parameters/DateHistogramQuery-movingWindow'
        - $ref: '#/components/parameters/forecasting'
        - $ref: '#/components/parameters/reliability'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Une liste de points
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DateHistogram'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/evolution/reliable-zone:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Évolution (zone fiable)
      description: |-
        Permet de construire une zone géographique où l'évolution des statistiques sur les biens est fiable.
        Voir notre [article](https://www.yanport.com/blog/posts/etude-de-marche-a-ladresse) pour plus de détails.
        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).
        ### Exemple
          #### Zone fiable sur l'année 2021 pour les appartements à vendre autour de la Goutte d’Or (Paris 18ème)
            /properties/evolution/reliable-zone?propertyTypes=APARTMENT&marketingType=SALE&agglomerationId=4762789834677248&cityId=52421209&irisId=751062402&dateMin=2021-01-01T00:00:00&dateMax=2021-12-31T23:59:59&source=AD
      parameters:
        - $ref: '#/components/parameters/ReliableZoneQuery-intervalUnits'
        - name: reliableZoneQuery
          in: query
          schema:
            $ref: '#/components/schemas/ReliableZoneQuery'
      responses:
        '200':
          description: Zone fiable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReliableZone'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/evolution/stock:
    get:
      tags:
        - Statistiques sur les biens (ancien/neuf)
      summary: Evolution du stock
      description: |-
        Permet de construire une courbe représentant l'évolution du stock de biens selon plusieurs critères.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1` (voir les valeurs possibles dans le paramètre `anomalyValues`).

        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.

        ### Exemple
           #### Evolution du stock des biens entre 2016 et 2017 à Levallois-Perret
             /properties/evolution/stock?interval=1&intervalUnit=MONTHS&marketingTypes=SALE&active=false&source=AD&zipCodes=92300&dateMin=2016-01-01&dateMax=2017-01-01
      parameters:
        - $ref: '#/components/parameters/DateHistogramQuery-interval'
        - $ref: '#/components/parameters/DateHistogramQuery-intervalUnit'
        - $ref: '#/components/parameters/dateMin'
        - $ref: '#/components/parameters/dateMax'
        - name: propertySearchQuery
          in: query
          description: Paramètres de recherche de biens
          schema:
            $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Une liste de points
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StockEvolution'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/percentiles/by-similarity:
    post:
      tags:
        - Statistiques sur les biens similaires (ancien/neuf)
      summary: Centiles
      description: |-
        Permet de récupérer les percentiles des biens similaires.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1`
            (voir les valeurs possibles dans le paramètre `anomalyValues`).


        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.
      requestBody:
        required: true
        description: |-
          Formulaire pour récupérer les centiles des biens similaires.

          L'objet query permet de définir les paramètres de la requête de centiles (field, percentiles et reliability) ainsi que des filtres supplémentaires pour la recherche de biens similaires (propertySearchQuery).  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                size:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 10
                  description: Nombre de biens sur lesquels faire l'analyse
                features:
                  $ref: '#/components/schemas/PropertyFeaturesSimilarity'
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  type: object
                  properties:
                    field:
                      $ref: '#/components/schemas/Field-Numeric-Property'
                    percentiles:
                      type: array
                      description: Percentiles
                      example:
                        - '10.0'
                        - '50.0'
                        - '90.0'
                      items:
                        type: number
                        format: double
                    reliability:
                      description: Renvoie un score de fiabilité entre 0 et 100, avec le score de chaque méthode utilisée
                      type: boolean
                      default: false
                    searchQuery:
                      $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Percentiles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Percentiles'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/{id}/percentiles/by-similarity:
    post:
      tags:
        - Statistiques sur les biens similaires (ancien/neuf)
      summary: Centiles
      description: |-
        Permet de récupérer les percentiles des biens similaires.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1`
            (voir les valeurs possibles dans le paramètre `anomalyValues`).


        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        description: |-
          Formulaire pour récupérer les centiles des biens similaires.

          L'objet query permet de définir les paramètres de la requête de centiles (field, percentiles et reliability) ainsi que des filtres supplémentaires pour la recherche de biens similaires (propertySearchQuery).  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                size:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 10
                  description: Nombre de biens sur lesquels faire l'analyse
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  type: object
                  properties:
                    field:
                      $ref: '#/components/schemas/Field-Numeric-Property'
                    percentiles:
                      type: array
                      description: Percentiles
                      example:
                        - '10.0'
                        - '50.0'
                        - '90.0'
                      items:
                        type: number
                        format: double
                    reliability:
                      description: Renvoie un score de fiabilité entre 0 et 100, avec le score de chaque méthode utilisée
                      type: boolean
                      default: false
                    searchQuery:
                      $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Percentiles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Percentiles'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/stats/by-similarity:
    post:
      tags:
        - Statistiques sur les biens similaires (ancien/neuf)
      summary: Statistiques
      description: |-
        Permet de récupérer des statistiques de base (moyenne, somme, minimum et maximum) sur les biens similaires.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1`
            (voir les valeurs possibles dans le paramètre `anomalyValues`).


        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.
      requestBody:
        required: true
        description: |-
          Formulaire pour récupérer les statistiques sur les biens similaires.

          L'objet query permet de définir les paramètres de la requête de stats (field, percentiles et reliability) ainsi que des filtres supplémentaires pour la recherche de biens similaires (propertySearchQuery).  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                size:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 10
                  description: Nombre de biens sur lesquels faire l'analyse
                features:
                  $ref: '#/components/schemas/PropertyFeaturesSimilarity'
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  type: object
                  properties:
                    field:
                      $ref: '#/components/schemas/Field-Numeric-Property'
                    reliability:
                      description: Renvoie un score de fiabilité entre 0 et 100, avec le score de chaque méthode utilisée
                      type: boolean
                      default: false
                    searchQuery:
                      $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Statistiques
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Stats'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /properties/{id}/stats/by-similarity:
    post:
      tags:
        - Statistiques sur les biens similaires (ancien/neuf)
      summary: Statistiques
      description: |-
        Permet de récupérer des statistiques de base (moyenne, somme, minimum et maximum) sur les biens similaires.

        Par défaut, les biens détectés comme anormaux sont ignorés : `anomalyLevelMax=1`
            (voir les valeurs possibles dans le paramètre `anomalyValues`).


        Voir notre [article](https://www.yanport.com/blog/posts/detection-anomalies-dans-les-annonces-immobilieres) pour comprendre la détection d'anomalies dans les annonces immobilières.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        description: |-
          Formulaire pour récupérer les statistiques sur les biens similaires.

          L'objet query permet de définir les paramètres de la requête de stats (field, percentiles et reliability) ainsi que des filtres supplémentaires pour la recherche de biens similaires (propertySearchQuery).  Par exemple: date de publication, source, zone géographique, ...
        content:
          application/json:
            schema:
              type: object
              properties:
                size:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 10
                  description: Nombre de biens sur lesquels faire l'analyse
                zone:
                  description: Zone de recherche des biens similaires
                  type: string
                  enum:
                    - IRIS
                    - CITY
                weights:
                  type: array
                  items:
                    $ref: '#/components/schemas/Weight'
                query:
                  type: object
                  properties:
                    field:
                      $ref: '#/components/schemas/Field-Numeric-Property'
                    reliability:
                      description: Renvoie un score de fiabilité entre 0 et 100, avec le score de chaque méthode utilisée
                      type: boolean
                      default: false
                    searchQuery:
                      $ref: '#/components/schemas/PropertySearchQuery'
      responses:
        '200':
          description: Statistiques
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Stats'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /programs/count:
    get:
      tags:
        - Statistiques sur les programmes (neuf)
      summary: Nombre de programmes
      description: |-
        Compte le nombre de programmes par rapport à certains critères de recherches. (prix, surface, ville, ...)

        ### Exemples
          #### Nombre de programmes en cours de publication sur Levallois-Perret entre 120 et 130m²
            /programs/count?active=true&zipCodes=92300&surfaceMin=120&surfaceMax=130
      parameters:
        - name: searchQueryParam
          in: query
          description: Paramètres de recherche de programmes
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/ProgramSearchQuery-name'
        - $ref: '#/components/parameters/ProgramSearchQuery-description'
        - $ref: '#/components/parameters/crawlSources'
        - $ref: '#/components/parameters/excludedCrawlSources'
        - $ref: '#/components/parameters/active'
        - $ref: '#/components/parameters/dealerNames'
        - $ref: '#/components/parameters/dealerIds'
        - $ref: '#/components/parameters/dealerSubTypes'
        - $ref: '#/components/parameters/excludedDealerIds'
        - $ref: '#/components/parameters/ids'
        - $ref: '#/components/parameters/propertyIds'
        - $ref: '#/components/parameters/roomCountMin'
        - $ref: '#/components/parameters/roomCountMax'
        - $ref: '#/components/parameters/departments'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/quarterIds'
        - $ref: '#/components/parameters/publicationDateMin'
        - $ref: '#/components/parameters/publicationDateMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-deleteDateMinOrActive'
        - $ref: '#/components/parameters/ProgramSearchQuery-deleteDateMaxOrActive'
        - $ref: '#/components/parameters/durationDaysMin'
        - $ref: '#/components/parameters/durationDaysMax'
        - $ref: '#/components/parameters/surfaceMin'
        - $ref: '#/components/parameters/surfaceMax'
        - $ref: '#/components/parameters/priceMin'
        - $ref: '#/components/parameters/priceMax'
        - $ref: '#/components/parameters/missingFields'
        - $ref: '#/components/parameters/existingFields'
        - $ref: '#/components/parameters/excludedIds'
        - $ref: '#/components/parameters/organizationIds'
        - $ref: '#/components/parameters/ProgramSearchQuery-legalDevices'
        - $ref: '#/components/parameters/ProgramSearchQuery-certifications'
        - $ref: '#/components/parameters/ProgramSearchQuery-deliveryDateMin'
        - $ref: '#/components/parameters/ProgramSearchQuery-deliveryDateMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-lotCountMin'
        - $ref: '#/components/parameters/ProgramSearchQuery-lotCountMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-activeLotCountMin'
        - $ref: '#/components/parameters/ProgramSearchQuery-activeLotCountMax'
        - $ref: '#/components/parameters/ProgramSearchQuery-stockPreview'
        - $ref: '#/components/parameters/ProgramSearchQuery-stages'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de programmes
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: Le nombre de programmes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /departments:
    get:
      tags:
        - Département
      summary: Récupérer des départements
      description: |-
        Retourne des départements selon différents critères
        ### Exemples
          #### La liste des départements
            /departments
          #### Le département correspondant aux coordonnées géographiques du centre ville de La Rochelle
            /departments/match?lat=46.159783653934596&lng=-1.1514798008421312
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/departments'
        - $ref: '#/components/parameters/deptCodes'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/codes'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de départements
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: La liste des départements
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Department'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /departments/{id}:
    get:
      tags:
        - Département
      summary: Récupérer un département (ID)
      description: |-
        Retourne un département selon son identifiant
        ### Exemple
          #### Le département 59 (Nord)
            /departments/59
      parameters:
        - name: id
          in: path
          description: L'identifiant du département
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Le département demandé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Department'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /departments/ids:
    get:
      tags:
        - Département
      summary: Récupérer des départements (ID)
      description: |-
        Retourne des départements selon leurs identifiants
        ### Exemple
          #### Les départements d'Ile de France
            /departments/ids?ids=75&ids=77&ids=78&ids=91&ids=92&ids=93&ids=94&ids=95
      parameters:
        - name: ids
          in: query
          description: Liste d'identifiants
          required: true
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
      responses:
        '200':
          description: La liste des départements
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Department'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /agglomerations:
    get:
      tags:
        - Agglomeration (EPCI)
      summary: Récupérer des agglomérations
      description: |-
        Retourne les agglomérations correspondant aux critères demandés
        ### Exemples
          #### La liste des agglomérations
            /agglomerations
          #### L'agglomération correspondant aux coordonnées géographiques du centre ville de Lyon
            /agglomerations/match?lat=45.759060&lng=4.847331
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/ids'
        - $ref: '#/components/parameters/codes'
        - $ref: '#/components/parameters/types'
        - $ref: '#/components/parameters/regionCodes'
        - $ref: '#/components/parameters/departmentCodes'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche d'agglomérations
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: Liste des agglomérations trouvées
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Agglomeration'
  /agglomerations/{id}:
    get:
      tags:
        - Agglomeration (EPCI)
      summary: Récupérer une agglomération
      description: |-
        Retourne l'agglomération selon son identifiant
        ### Exemple
          #### La Métropole de Lyon
            /agglomerations/4762789881060352
      parameters:
        - name: id
          in: path
          required: true
          description: L'identifiant de l'agglomération
          schema:
            type: number
      responses:
        '200':
          description: Agglomeration trouvée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agglomeration'
  /agglomerations/ids:
    get:
      tags:
        - Agglomeration (EPCI)
      summary: Récupérer des agglomérations
      description: Retourne les agglomérations selon des identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          description: Les identifiants des agglomérations
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: Agglomérations trouvées
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Agglomeration'
  /cities:
    get:
      tags:
        - Commune
      summary: Récupérer des villes
      description: |-
        Retourne des villes selon différents critères
        ### Exemple
          #### Les villes de l'agglomération d'Alès
            /cities?agglomerationsIds=4762789825649664
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/CitySearchQuery-inseeCodes'
        - $ref: '#/components/parameters/CitySearchQuery-deptCodes'
        - $ref: '#/components/parameters/excludedIds'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de villes
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: La liste des villes
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/City'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /cities/{id}:
    get:
      tags:
        - Commune
      summary: Récupérer une ville (ID)
      description: Retourne une ville selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de la ville
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: La ville demandée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/City'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /cities/ids:
    get:
      tags:
        - Commune
      summary: Récupérer des villes (ID)
      description: Retourne des villes selon leurs identifiants
      parameters:
        - name: ids
          in: query
          description: Liste d'identifiants
          required: true
          style: form
          schema:
            type: array
            items:
              type: integer
      responses:
        '200':
          description: La liste des villes
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/City'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /zip-codes:
    get:
      tags:
        - Code postal
      summary: Récupérer des codes postaux
      description: |-
        Retourne des codes postaux selon différents critères
        ### Exemples
          #### La liste des codes postaux
            /zip-codes
          #### Le code postal correspondant au cityId 48786021
            /zip-codes?cityIds=48786021
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/cityIds'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de codes postaux
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: La liste des codes postaux
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Zip-code'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /zip-codes/{id}:
    get:
      tags:
        - Code postal
      summary: Récupérer un code postal (ID)
      description: Retourne un code postal selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant du code postal
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Le code postal demandé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Zip-code'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /zip-codes/ids:
    get:
      tags:
        - Code postal
      summary: Récupérer des codes postaux (ID)
      description: |-
        Retourne des codes postaux selon leurs identifiants
        ### Exemple
          #### Les codes postaux du 8ème et 9ème arrondissements de Paris
            /zip-codes/ids?zipCodes=75008&zipCodes=75009
      parameters:
        - name: ids
          in: query
          description: Liste d'identifiants
          required: true
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
      responses:
        '200':
          description: La liste des codes postaux
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Zip-code'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /quarters:
    get:
      tags:
        - Quartier
      summary: Récupérer des quartiers
      description: Retourne des quartiers selon différents critères
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/deptCodes'
      responses:
        '200':
          description: La liste des quartiers
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Quarter'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /quarters/{id}:
    get:
      tags:
        - Quartier
      summary: Récupérer un quartier (ID)
      description: Retourne un quartier selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant du quartier
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Le quartier demandé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quarter'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /quarters/ids:
    get:
      tags:
        - Quartier
      summary: Récupérer des quartiers (ID)
      description: Retourne des quartiers selon leurs identifiants
      parameters:
        - name: ids
          in: query
          description: Liste d'identifiants
          required: true
          content:
            application/json:
              schema:
                type: array
                items:
                  type: integer
      responses:
        '200':
          description: La liste des quartiers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Quarter'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /iris:
    get:
      tags:
        - IRIS
      summary: Récupérer des iris
      description: |-
        Retourne des iris selon différents critères. [Données IGN Contours... IRIS®](https://geoservices.ign.fr/contoursiris).
        ### Exemple
          #### Les iris de la ville de Pau de type habitation
            /iris?cityIds=51470903&types=HOUSING
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/inseeCodes'
        - $ref: '#/components/parameters/deptCodes'
        - $ref: '#/components/parameters/irisTypes'
        - $ref: '#/components/parameters/codes'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche d'iris
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: La liste des iris
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Iris'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /iris/{id}:
    get:
      tags:
        - IRIS
      summary: Récupérer un iris (ID)
      description: Retourne un iris selon son identifiant. [Données IGN Contours... IRIS®](https://geoservices.ign.fr/contoursiris).
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'iris
          required: true
          schema:
            type: string
      responses:
        '200':
          description: L'iris demandé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Iris'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /iris/ids:
    get:
      tags:
        - IRIS
      summary: Récupérer des iris (ID)
      description: Retourne des iris selon leurs identifiants. [Données IGN Contours... IRIS®](https://geoservices.ign.fr/contoursiris).
      parameters:
        - name: ids
          in: query
          description: Liste d'identifiants
          required: true
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
      responses:
        '200':
          description: La liste des iris
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Iris'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /parcels:
    get:
      tags:
        - Parcelle
      summary: Récupérer des parcelles
      description: Retourne les parcelles correspondant aux critères demandés
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/bbox'
        - $ref: '#/components/parameters/inseeCodes'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de parcelles
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: Liste des parcelles trouvées
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Parcel'
  /parcels/{id}:
    get:
      tags:
        - Parcelle
      summary: Récupérer une parcelle (ID)
      description: Retourne une parcelle selon son identifiant
      parameters:
        - name: id
          in: path
          required: true
          description: L'identifiant de la parcelle
          schema:
            type: number
      responses:
        '200':
          description: Parcelle trouvée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Parcel'
  /parcels/ids:
    get:
      tags:
        - Parcelle
      summary: Récupérer des parcelles (ID)
      description: Retourne des parcelles selon leurs identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          description: Les identifiants des parcelles
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: Parcelles trouvées
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Parcel'
  /census-stats:
    get:
      tags:
        - Statistiques socioéconomiques
      summary: Récupérer des statistiques socioéconomiques
      description: |-
        Retourne des statistiques socioéconomiques par zones géographiques (source INSEE)
        ### Exemple
          #### Statistiques socio-économiques de la zone iris Monpezat (64)
            /census-stats?zone=IRIS&zoneIds=643940000
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/zone'
        - $ref: '#/components/parameters/zoneIds'
        - $ref: '#/components/parameters/censusYears'
      responses:
        '200':
          description: Les statistiques des zones recherchées
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/CensusStats'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /rent-control/check:
    get:
      tags:
        - Encadrement des loyers
      summary: Vérifier un loyer
      description: |-
        Vérifie si un loyer respecte l'encadrement des loyers vis-à-vis de la législation. Nous nous basons sur notre [référentiel d'IRIS](#tag/IRIS) pour retrouver une zone à partir d'une adresse.  Si la précision utilisée pour le zonage dans l'arrété préfectoral est différente cela peut se traduire par un décalage en bordure de zone.
        ### Exemples
          #### Vérifier le loyer de 1000€ d'un appartement non meublé de 2 pièces de 30 m² construit en 1971 dans le quartier Gros Caillou à Paris
            /rent-control/check?price=1000&surface=30&propertyType=APARTMENT&roomCount=2&constructionYear=1971&furnished=false&address=19 Rue du Gros Caillou, 75007 Paris

          #### Vérifier le même loyer avec la latitude et la longitude
            /rent-control/check?price=1000&surface=30&propertyType=APARTMENT&roomCount=2&constructionYear=1971&furnished=false&lat=48.856804&lng=2.303047
      parameters:
        - in: query
          name: price
          schema:
            type: number
            format: double
            example: 1000
          required: true
          description: Prix du loyer
        - in: query
          name: surface
          schema:
            type: number
            format: double
            example: 30
          required: true
          description: Surface
        - in: query
          name: propertyType
          schema:
            type: string
            enum:
              - APARTMENT
              - HOUSE
            example: APARTMENT
          required: true
          description: Type de bien
        - in: query
          name: roomCount
          schema:
            type: integer
            example: 2
          required: true
          description: Nombre de pièces
        - in: query
          name: constructionYear
          schema:
            type: integer
            example: 2000
          description: Année de construction
        - in: query
          name: constructionYearMin
          schema:
            type: integer
            example: 1960
          description: Année de construction minimale (si `constructionYear` est vide)
        - in: query
          name: constructionYearMax
          schema:
            type: integer
            example: 1980
          description: Année de construction maximale (si `constructionYear` est vide)
        - in: query
          name: furnished
          schema:
            type: boolean
            example: false
          required: true
          description: Meublé
        - in: query
          name: address
          schema:
            type: string
            example: 19 Rue du Gros Caillou, 75007 Paris
          description: Adresse (requis si `lat` et `lng` sont vides)
        - in: query
          name: lat
          schema:
            type: number
            format: double
            example: 48.83
          description: Latitude (requis si `address` est vide)
        - in: query
          name: lng
          schema:
            type: number
            format: double
            example: 2.319
          description: Longitude (requis si `address` est vide)
      responses:
        '200':
          description: Le status vis-à-vis de l'encadrement
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RentControlResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /building-permits:
    get:
      tags:
        - Permis de construire
      summary: Récupérer des permis de construire
      description: |-
        Retourne des permis de construire selon différents critères (source SITADEL)
        ### Exemple
          #### Les permis de construire de nouveaux bâtiments dans le 77 autorisés depuis le 01/01/2023
            /building-permits?authorisationDateMin=2023-01-01&states=AUTHORISED&types=NEW_BUILD&depCodes=77
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-permitNumbers'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-updateDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-updateDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-types'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-states'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-purposes'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-authorisationDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-authorisationDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionStartDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionStartDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionEndDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionEndDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-sourceUpdateDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-sourceUpdateDateMax'
        - $ref: '#/components/parameters/deptCodes'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/agglomerationIds'
        - $ref: '#/components/parameters/irisIds'
        - $ref: '#/components/parameters/quarterIds'
        - $ref: '#/components/parameters/parcelIds'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantNames'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantCategories'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantSubCategories'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantSirens'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantSirets'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantZipCodes'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-residenceTypes'
        - $ref: '#/components/parameters/existingFields'
        - $ref: '#/components/parameters/missingFields'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de permis de construire
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: La liste des permis de construire
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/BuildingPermit'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /building-permits/{id}:
    get:
      tags:
        - Permis de construire
      summary: Récupérer un permis de construire (ID)
      description: Retourne un permis de construire selon son identifiant
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Permis de construire
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildingPermit'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /building-permits/ids:
    get:
      tags:
        - Permis de construire
      summary: Récupérer des permis de construire (ID)
      description: Retourne les permis de construire selon leurs identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          schema:
            type: array
            items:
              type: string
              format: uuid
      responses:
        '200':
          description: Permis de construire
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BuildingPermit'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /building-permits/count:
    get:
      tags:
        - Permis de construire
      summary: Nombre de permis de construire
      description: |-
        Retourne le nombre de permis de construire correspondant à certains critères de recherche. 
        ### Exemples
          #### Nombre de permis de construire actifs à Vincennes
            /building-permits/count?active=true&zipCodes=94300
      parameters:
        - name: searchQueryParam
          in: query
          description: Paramètres de recherche de permis de construire
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-permitNumbers'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-updateDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-updateDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-types'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-states'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-purposes'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-authorisationDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-authorisationDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionStartDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionStartDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionEndDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-constructionEndDateMax'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-sourceUpdateDateMin'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-sourceUpdateDateMax'
        - $ref: '#/components/parameters/deptCodes'
        - $ref: '#/components/parameters/zipCodes'
        - $ref: '#/components/parameters/cityIds'
        - $ref: '#/components/parameters/agglomerationIds'
        - $ref: '#/components/parameters/irisIds'
        - $ref: '#/components/parameters/quarterIds'
        - $ref: '#/components/parameters/parcelIds'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantNames'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantCategories'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantSubCategories'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantSirens'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantSirets'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-applicantZipCodes'
        - $ref: '#/components/parameters/BuildingPermitSearchQuery-residenceTypes'
        - $ref: '#/components/parameters/existingFields'
        - $ref: '#/components/parameters/missingFields'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche de permis de construire
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: Le nombre de permis de construire
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /agencies:
    get:
      tags:
        - Etablissement (agence, promoteur, etc)
      summary: Récupérer des établissements
      description: |-
        Retourne des établissements selon plusieurs critères

        ### Exemples
          #### Les agences situées à Levallois-Perret et qui ont au moins 10 biens en vente et en location
            /agencies?cityIds=54178039&salePropertyCountMin=10&rentPropertyCountMin=10
          #### Les agences situées dans un rayon de 100m autour de Levallois-Perret
            /agencies?lat=48.8932&lon=2.2879&radius=100m
          #### Les agences Nexity
            /agencies?siren=487530099
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/AgencySearchQuery-externalId'
        - $ref: '#/components/parameters/AgencySearchQuery-organizationId'
        - $ref: '#/components/parameters/AgencySearchQuery-siren'
        - $ref: '#/components/parameters/AgencySearchQuery-siret'
        - $ref: '#/components/parameters/AgencySearchQuery-cityIds'
        - $ref: '#/components/parameters/AgencySearchQuery-salePropertyCountMin'
        - $ref: '#/components/parameters/AgencySearchQuery-salePropertyCountMax'
        - $ref: '#/components/parameters/AgencySearchQuery-rentPropertyCountMin'
        - $ref: '#/components/parameters/AgencySearchQuery-rentPropertyCountMax'
        - $ref: '#/components/parameters/AgencySearchQuery-active'
        - name: pointSearchQueryParam
          in: query
          description: Paramètres géographiques de recherche d'agences
          schema:
            $ref: '#/components/schemas/PointSearchQuery'
      responses:
        '200':
          description: Les agences trouvées
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Agency'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /agencies/{id}:
    get:
      tags:
        - Etablissement (agence, promoteur, etc)
      summary: Récupérer un établissement
      description: Retourne un établissement par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'agence
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: L'établissement correspondant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agency'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /agencies/ids:
    get:
      tags:
        - Etablissement (agence, promoteur, etc)
      summary: Récupérer des établissements
      description: Retourne des établissements selon leurs identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          description: Les identifiants des agences
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: Les agences correspondantes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agency'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /mandatary-networks:
    get:
      tags:
        - Réseaux de mandataires
      summary: Récupérer des réseaux de mandataires
      description: |-
        Retourne des réseaux de mandataires selon différents critères

        ### Exemple
          #### Récupérer le réseau Efficity
            /mandatary-networks?q=efficity
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/MandataryNetworkSearchQuery-siren'
      responses:
        '200':
          description: Les réseaux de mandataires trouvés
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/MandataryNetwork'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /mandatary-networks/{id}:
    get:
      tags:
        - Réseaux de mandataires
      summary: Récupérer un réseau de mandataires
      description: Retourne un réseau de mandataires selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant du réseau de mandataires
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Le réseau de mandataires correspondant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MandataryNetwork'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /mandatary-networks/ids:
    get:
      tags:
        - Réseaux de mandataires
      summary: Récupérer des réseaux de mandataires
      description: Retourne des réseaux de mandataires selon leurs identifiants
      parameters:
        - name: ids
          in: query
          required: true
          style: form
          description: Les identifiants des réseaux mandataires
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: Les réseaux de mandataires correspondants
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MandataryNetwork'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /users:
    post:
      tags:
        - Utilisateurs
      summary: Créer un utilisateur
      description: Retourne l'utilisateur créé
      requestBody:
        required: true
        description: Données de l'utilisateur à créer
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '200':
          description: L'utilisateur créé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
        - Utilisateurs
      summary: Récupérer des utilisateurs
      description: Retourne des utilisateurs
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - name: username
          in: query
          description: Nom de l'utilisateur
          schema:
            type: string
        - name: email
          in: query
          description: Email de l'utilisateur
          schema:
            type: string
        - name: externalIds
          in: query
          description: Identifiants externes de l'utilisateur
          schema:
            type: array
            items:
              type: string
              pattern: ^CLIENT:.*$
            example: CLIENT:1234
        - name: organizationId
          in: query
          description: Identifiant de l'organisation
          schema:
            type: integer
            format: int64
        - name: dealerTypes
          in: query
          description: Types de vendeur (agence, mandataire)
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Dealer-Type'
        - name: dealerIds
          in: query
          description: Identifiants du vendeur
          schema:
            type: array
            items:
              type: integer
              format: int64
        - name: active
          in: query
          description: Filter les utilisateurs actifs ou non
          schema:
            type: boolean
        - name: onBoarded
          in: query
          description: Filtrer les utilisateurs s'étant deja connectés à l'application ou non
          schema:
            type: boolean
        - name: admin
          in: query
          description: Filtrer les utilisateurs administrateurs ou non
          schema:
            type: boolean
        - name: marketingTypes
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/MarketingType'
        - name: productTypes
          in: query
          description: Types de produit (Agent 360, Data 360)
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ProductType'
      responses:
        '200':
          description: Les utilisateurs trouvés
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /users/{id}:
    get:
      tags:
        - Utilisateurs
      summary: Récupérer un utilisateur par id
      description: Retourne l'utilisateur correspondant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'utilisateur
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: L'utilisateur créé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
        - Utilisateurs
      summary: Mettre à jour un utilisateur
      description: Met à jour un utilisateur et retourne celui-ci
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'utilisateur
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        required: true
        description: Données de l'utilisateur à mettre à jour
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '200':
          description: L'utilisateur mis à jour
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Utilisateurs
      summary: Supprimer un utilisateur
      description: Supprime l'utilisateur correspondant à l'id donné
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'utilisateur
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /users/{id}/team:
    get:
      tags:
        - Utilisateurs
      summary: Récupérer les utilisateurs par agence(s)
      description: Retourne les utilisateurs correspondants
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'utilisateur
          required: true
          schema:
            type: integer
            format: int64
        - $ref: '#/components/parameters/agencyIds'
      responses:
        '200':
          description: L'utilisateur créé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /studies:
    post:
      tags:
        - Etudes
      summary: Créer une étude
      description: Retourne l'étude créée
      requestBody:
        required: true
        description: Formulaire pour la création d'une étude
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Study'
      responses:
        '200':
          description: L'étude créée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Study'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
        - Etudes
      summary: Récupérer des études
      description: |-
        Retourne des études selon plusieurs critères

        La recherche plein-texte est disponible sur le nom de l'étude, le nom du client et l'adresse du bien via le query param `q`.

        Par défaut les résultats sont paginés, pour parcourir l'ensemble des études les paramètres `from` et `size` doivent être renseignés. Le paramètre `from` définit le début du set de données et `size` le nombre d'éléments à récupérer. Le nombre `total` d'éléments est renvoyé dans la réponse.

        Concernant le tri, le paramètre `sort` a pour syntaxe `field:asc|desc`, en remplaçant `field` par le nom du champ sur lequel appliquer le tri.
        ### Exemples
          #### Les études d'un utilisateur
            /studies?userIds=123456789
          #### Les études à partir d'un identifiant externe d'utilisateur
            /studies?externalIds=USER:abc123
          #### Les études à partir d'un identifiant externe de bien
            /studies?propertyExternalIds=ID:abc123
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/userIds'
        - $ref: '#/components/parameters/productTypes'
        - $ref: '#/components/parameters/agencyIds'
        - $ref: '#/components/parameters/organizationIds'
        - $ref: '#/components/parameters/StudySearchQuery-externalIds'
        - $ref: '#/components/parameters/StudySearchQuery-marketingTypes'
        - $ref: '#/components/parameters/propertyIds'
        - $ref: '#/components/parameters/StudySearchQuery-propertyExternalIds'
        - $ref: '#/components/parameters/creationDateMin'
        - $ref: '#/components/parameters/creationDateMax'
        - $ref: '#/components/parameters/missingFields'
        - $ref: '#/components/parameters/existingFields'
      responses:
        '200':
          description: Les études trouvées
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Study'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /studies/{id}:
    get:
      tags:
        - Etudes
      summary: Récupérer une étude
      description: Retourne une étude selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'étude
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: L'étude correspondante
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Study'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
        - Etudes
      summary: Mettre à jour une étude
      description: Mettre à jour une étude par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'étude
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: L'étude mise à jour
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Study'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Etudes
      summary: Supprimer une étude
      description: Supprimer une étude par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'étude
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /estimations:
    post:
      tags:
        - Estimation
      summary: Ajouter une estimation
      description: Retourne l’estimation créée avec son identifiant, l'horodatage et les données des sections complétées
      requestBody:
        required: true
        description: Formulaire pour la création d'une estimation
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Estimation'
      responses:
        '200':
          description: L'estimation a été créée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Estimation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /estimations/{id}:
    get:
      tags:
        - Estimation
      summary: Récupérer une estimation
      description: Retourne une estimation selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'estimation
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: L'estimation correspondante
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Estimation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
        - Estimation
      summary: Mettre à jour une estimation
      description: Mettre à jour une estimation par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'estimation
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: L'estimation mise à jour
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Estimation'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Estimation
      summary: Supprimer une estimation
      description: Supprimer une estimation par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'estimation
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /opportunities:
    post:
      tags:
        - Opportunités
      summary: Ajouter une opportunité
      description: Retourne l'opportunité créée avec son identifiant, l'horodatage et les différentes estimations associées
      requestBody:
        required: true
        description: Formulaire pour la création d'une opportunité
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Opportunity'
      responses:
        '201':
          description: L'opportunité a été créée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Opportunity'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
        - Opportunités
      summary: Récupérer des opportunités
      description: |-
        Retourne des opportunités selon plusieurs critères

        La recherche plein-texte est disponible sur l'adresse de l'opportunité via le query param `q`.

        Par défaut les résultats sont paginés, pour parcourir l'ensemble des opportunités les paramètres `from` et `size` doivent être renseignés. Le paramètre `from` définit le début du set de données et `size` le nombre d'éléments à récupérer. Le nombre `total` d'éléments est renvoyé dans la réponse.

        Concernant le tri, le paramètre `sort` a pour syntaxe `field:asc|desc`, en remplaçant `field` par le nom du champ sur lequel appliquer le tri.
        ### Exemples
          #### Les opportunités d'un utilisateur
            /opportunities?userIds=123456789
          #### Les opportunités à partir d'un identifiant de bien
            /opportunities?propertyIds=123456789
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/userIds'
        - $ref: '#/components/parameters/productTypes'
        - $ref: '#/components/parameters/organizationIds'
        - $ref: '#/components/parameters/propertyIds'
        - $ref: '#/components/parameters/updateDateMin'
        - $ref: '#/components/parameters/updateDateMax'
        - $ref: '#/components/parameters/creationDateMin'
        - $ref: '#/components/parameters/creationDateMax'
      responses:
        '200':
          description: Les opportunités trouvées
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Opportunity'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /opportunities/{id}:
    get:
      tags:
        - Opportunités
      summary: Récupérer une opportunité
      description: Retourne une opportunité selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'opportunité
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: L'opportunité correspondante
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Opportunity'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
        - Opportunités
      summary: Mettre à jour une opportunité
      description: Mettre à jour une opportunité par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'opportunité
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        description: Données de l'opportunité à mettre à jour
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Opportunity'
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Opportunités
      summary: Supprimer une opportunité
      description: Supprimer une opportunité par son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'opportunité
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /pipes:
    get:
      tags:
        - Prospects
      summary: Récupérer des pipes
      description: Retourne des pipes (Kanban) selon plusieurs critères.
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/organizationIds'
        - $ref: '#/components/parameters/agencyIds'
        - $ref: '#/components/parameters/userIds'
        - $ref: '#/components/parameters/productTypes'
        - $ref: '#/components/parameters/updateDateMin'
        - $ref: '#/components/parameters/updateDateMax'
        - $ref: '#/components/parameters/creationDateMin'
        - $ref: '#/components/parameters/creationDateMax'
      responses:
        '200':
          description: Les pipes correspondant
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Pipe'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /prospects:
    post:
      tags:
        - Prospects
      summary: Créer un prospect
      description: Retourne le prospect créé
      requestBody:
        required: true
        description: Formulaire pour la création d'un prospect
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Prospect'
      responses:
        '200':
          description: Le prospect a été créé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Prospect'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
        - Prospects
      summary: Chercher des prospects
      description: Récupérer des prospects
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/q'
        - $ref: '#/components/parameters/userIds'
        - $ref: '#/components/parameters/propertyIds'
        - $ref: '#/components/parameters/productTypes'
        - $ref: '#/components/parameters/prospectStatuses'
        - $ref: '#/components/parameters/prospectLostReasons'
        - $ref: '#/components/parameters/creationDateMin'
        - $ref: '#/components/parameters/creationDateMax'
        - $ref: '#/components/parameters/dueDateMin'
        - $ref: '#/components/parameters/dueDateMax'
        - $ref: '#/components/parameters/missingFields'
        - $ref: '#/components/parameters/existingFields'
        - $ref: '#/components/parameters/doneDateMin'
        - $ref: '#/components/parameters/doneDateMax'
        - $ref: '#/components/parameters/savedSearchIds'
        - $ref: '#/components/parameters/organizationIds'
        - $ref: '#/components/parameters/prospectSource'
        - $ref: '#/components/parameters/pipeIds'
        - $ref: '#/components/parameters/pipeStepIds'
        - $ref: '#/components/parameters/positionInPipeStepMin'
        - $ref: '#/components/parameters/positionInPipeStepMax'
        - $ref: '#/components/parameters/archiveDateMin'
        - $ref: '#/components/parameters/archiveDateMax'
      responses:
        '200':
          description: Les prospects correspondant
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/Prospect'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /prospects/{id}:
    get:
      tags:
        - Prospects
      summary: Récupérer un prospect (ID)
      description: Retourne un prospect selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant d'un prospect
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Le prospect demandé
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Prospect'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Prospects
      summary: Supprimer un prospect
      description: Supprime le prospect correspondant à l'id donné
      parameters:
        - name: id
          in: path
          description: L'identifiant du prospect
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /prospect-activities:
    post:
      tags:
        - Activités de prospection
      summary: Créer une activité de prospection
      description: Retourne l'activité de prospection créée
      requestBody:
        required: true
        description: Formulaire pour la création d'une activité de prospection
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProspectActivity'
      responses:
        '200':
          description: L'activité de prospection a été créée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProspectActivity'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
        - Activités de prospection
      summary: Récupérer des activités de prospection
      description: Retourne des activités de prospection selon différents critères
      parameters:
        - name: searchQueryParam
          in: query
          schema:
            $ref: '#/components/schemas/SearchQueryParam'
        - $ref: '#/components/parameters/ProspectIds'
        - $ref: '#/components/parameters/userIds'
        - $ref: '#/components/parameters/organizationId'
        - $ref: '#/components/parameters/productTypes'
        - $ref: '#/components/parameters/dateMin'
        - $ref: '#/components/parameters/dateMax'
        - $ref: '#/components/parameters/types'
        - $ref: '#/components/parameters/done'
      responses:
        '200':
          description: Les activités de prospection correspondantes
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  hits:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProspectActivity'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /prospect-activities/{id}:
    get:
      tags:
        - Activités de prospection
      summary: Récupérer une activité de prospection (ID)
      description: Retourne une activité de prospection selon son identifiant
      parameters:
        - name: id
          in: path
          description: L'identifiant d'une activité de prospection
          required: true
          schema:
            type: string
      responses:
        '200':
          description: L'activité de prospection demandée
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProspectActivity'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
        - Activités de prospection
      summary: Supprimer une activité de prospection
      description: Supprime l'activité de prospection correspondant à l'id donné
      parameters:
        - name: id
          in: path
          description: L'identifiant de l'activité de prospection
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  securitySchemes:
    JWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    SearchQueryParam:
      type: object
      properties:
        from:
          description: Offset à partir du premier résultat
          type: integer
          minimum: 0
          maximum: 2000
          default: 0
        size:
          description: Nombre de résultats
          type: integer
          minimum: 0
          maximum: 1000
          default: 20
        sort:
          description: Trier par
          type: string
    Source:
      type: string
      enum:
        - AD
        - DVF
        - USER
        - CLAMEUR
        - ORGANIZATION
      default: AD
    MarketingType:
      type: string
      enum:
        - SALE
        - RENT
        - LIFE_ANNUITY
    CrawlSource:
      type: string
      enum:
        - EXPLORIMMO
        - EXPLORIMMO_NEUF
        - LE_BON_COIN
        - LE_BON_COIN_NEUF
        - LOGIC_IMMO
        - LOGIC_IMMO_NEUF
        - OUEST_FRANCE_IMMO
        - PARU_VENDU
        - SE_LOGER
        - SE_LOGER_NEUF
        - PAP
        - IMMONOT
        - BELLES_DEMEURES
        - PROPRIETES_DE_FRANCE
        - LUX_RESIDENCE
        - BIEN_ICI
        - A_VENDRE_A_LOUER
        - MEILLEURS_AGENTS
        - SURFACE_PRIVEE
        - IMMONEUF
    Dealer-Type:
      type: string
      enum:
        - PRIVATE
        - AGENCY
        - MANDATARY
      example: AGENCY
    Dealer-SubType:
      type: string
      enum:
        - REAL_ESTATE
        - NOTARY
        - REALTY_DEVELOPER
        - PROPERTY_MANAGER
    ProductType:
      type: string
      enum:
        - AGENT_360
        - DATA_360
        - ADB_360
        - INVEST_360
        - API
        - CLAMEUR_360
    PropertyType:
      type: string
      enum:
        - HOUSE
        - APARTMENT
        - PREMISES
        - LAND
        - BUILDING
        - PARKING
    PropertySubType:
      type: string
      enum:
        - CHALET
        - MANSION
        - CASTLE
        - HOMESTEAD
        - LOFT
        - DUPLEX
        - TRIPLEX
        - SHOP
        - OFFICE
        - BOX
        - GARAGE
        - PARKING_SPOT
    PointSearchQuery:
      type: object
      properties:
        lat:
          type: number
          format: double
        lng:
          type: number
          format: double
        radius:
          type: string
    BoundingBoxSearchQuery:
      type: object
      properties:
        bbox:
          type: string
          example: 46.677582373658055,-5.154210305797569,43.44691443123976,7.7415115092989115
          description: 'Rectangle qui délimite la zone géographique : latitude en haut à gauche, longitude en haut à gauche, latitude en bas à droite, longitude en bas à droite'
    GeoPropertySearchQuery:
      type: object
      properties:
        precision:
          type: string
          enum:
            - ACCURATE
            - APPROXIMATE
            - ADMINISTRATIVE
          default: ACCURATE
          description: 'ACCURATE : uniquement les biens dont la localisation est précisément connue (valeur par défaut) APPROXIMATE : les biens dont la localisation est précise ou approximative ADMINISTRATIVE : les biens dont la localisation est précise ou approximative ou simplement rattachés à un référentiel géographique administratif'
        pointSearchQuery:
          $ref: '#/components/schemas/PointSearchQuery'
        boundingBoxSearchQuery:
          $ref: '#/components/schemas/BoundingBoxSearchQuery'
    PropertySearchQuery:
      type: object
      properties:
        searchQueryParam:
          $ref: '#/components/schemas/SearchQueryParam'
        queryString:
          type: string
        source:
          $ref: '#/components/schemas/Source'
        ids:
          type: array
          items:
            type: string
        marketingTypes:
          type: array
          items:
            $ref: '#/components/schemas/MarketingType'
        crawlSources:
          type: array
          items:
            $ref: '#/components/schemas/CrawlSource'
        excludedCrawlSources:
          type: array
          items:
            $ref: '#/components/schemas/CrawlSource'
        active:
          type: boolean
        dealerTypes:
          type: array
          items:
            $ref: '#/components/schemas/Dealer-Type'
        dealerSubTypes:
          type: array
          items:
            $ref: '#/components/schemas/Dealer-SubType'
        dealerNames:
          type: array
          items:
            type: string
        dealerPhones:
          type: array
          items:
            type: string
        exclusiveMandate:
          type: boolean
        dealerIds:
          type: integer
          format: int64
        excludedDealerIds:
          type: array
          items:
            type: integer
            format: int64
        externalDealerOrganizationIds:
          type: array
          items:
            type: string
        externalDealerIds:
          type: array
          items:
            type: string
        propertyIds:
          type: array
          items:
            type: string
        programIds:
          type: array
          items:
            type: string
        organizationIds:
          type: array
          description: correspond au champ "marketing.dealers.organizationId"
          items:
            type: string
        bloctelStatus:
          type: array
          items:
            type: string
        products:
          type: array
          items:
            $ref: '#/components/schemas/ProductType'
        propertyTypes:
          type: array
          items:
            $ref: '#/components/schemas/PropertyType'
        propertySubTypes:
          type: array
          items:
            $ref: '#/components/schemas/PropertySubType'
        roomCounts:
          type: array
          items:
            type: integer
        departments:
          type: array
          items:
            type: string
        zipCodes:
          type: array
          items:
            type: string
        cityIds:
          type: array
          items:
            type: integer
            format: int64
        agglomerationIds:
          type: array
          items:
            type: integer
            format: int64
        irisIds:
          type: array
          items:
            type: integer
            format: int64
        quarterIds:
          type: array
          items:
            type: integer
            format: int64
        parcelIds:
          type: array
          items:
            type: integer
            format: int64
        publicationDateMin:
          type: string
          format: date-time
        publicationDateMax:
          type: string
          format: date-time
        publicationDateRangeMin:
          type: string
          format: date-time
        publicationDateRangeMax:
          type: string
          format: date-time
        priceEventDateMin:
          type: string
          format: date-time
        priceEventDateMax:
          type: string
          format: date-time
        priceEventRangeDateMin:
          type: string
          format: date-time
        priceEventRangeDateMax:
          type: string
          format: date-time
        lastPriceDecreaseDateMin:
          type: string
          format: date-time
        lastPriceDecreaseDateMax:
          type: string
          format: date-time
        lastPriceUpdateDateMin:
          type: string
          format: date-time
        lastPriceUpdateDateMax:
          type: string
          format: date-time
        deleteDateMin:
          type: string
          format: date-time
        deleteDateMax:
          type: string
          format: date-time
        marketingStartDateMin:
          type: string
          format: date-time
        marketingStartDateMax:
          type: string
          format: date-time
        marketingEndDateMin:
          type: string
          format: date-time
        marketingEndDateMax:
          type: string
          format: date-time
        durationDaysMin:
          type: integer
        durationDaysMax:
          type: integer
        marketingDaysMin:
          type: integer
        marketingDaysMax:
          type: integer
        grossRentalYieldMin:
          type: number
          format: double
        grossRentalYieldMax:
          type: number
          format: double
        saleStatus:
          type: string
        surfaceMin:
          type: number
          format: double
        surfaceMax:
          type: number
          format: double
        roomCountMin:
          type: integer
        roomCountMax:
          type: integer
        priceMin:
          type: number
          format: double
        priceMax:
          type: number
          format: double
        priceM2Min:
          type: number
          format: double
        priceM2Max:
          type: number
          format: double
        priceHCMin:
          type: number
          format: double
        priceHCMax:
          type: number
          format: double
        priceM2HCMin:
          type: number
          format: double
        priceM2HCMax:
          type: number
          format: double
        priceCCMin:
          type: number
          format: double
        priceCCMax:
          type: number
          format: double
        priceM2CCMin:
          type: number
          format: double
        priceM2CCMax:
          type: number
          format: double
        priceEventRangePriceM2Min:
          type: number
          format: double
        priceEventRangePriceM2Max:
          type: number
          format: double
        priceEventCountMin:
          type: integer
        priceEventCountMax:
          type: integer
        negotiationMarginMin:
          type: number
          format: double
        negotiationMarginMax:
          type: number
          format: double
        feesMin:
          type: number
          format: double
        feesMax:
          type: number
          format: double
        depositMin:
          type: number
          format: double
        depositMax:
          type: number
          format: double
        furnished:
          type: boolean
        newBuild:
          type: boolean
        forBuild:
          type: boolean
        serviced:
          type: boolean
        constructionYearMin:
          type: integer
        constructionYearMax:
          type: integer
        floorLevelMin:
          type: integer
        floorLevelMax:
          type: integer
        landSurfaceMin:
          type: number
          format: double
        landSurfaceMax:
          type: number
          format: double
        generalStates:
          type: array
          items:
            type: string
        energyConsumptionDiagnosisLetters:
          type: array
          items:
            type: string
            example: D
        greenhouseGasConsumptionDiagnosisLetters:
          type: array
          items:
            type: string
            example: D
        energyDiagnosisDateMin:
          type: string
          format: date-time
        energyDiagnosisDateMax:
          type: string
          format: date-time
        missingFields:
          type: array
          items:
            type: string
        existingFields:
          type: array
          items:
            type: string
            example: features.geometry.roomCount
        excludedIds:
          type: array
          items:
            type: string
        investmentRentalMonthlyPriceMin:
          type: number
          format: double
        investmentRentalMonthlyPriceMax:
          type: number
          format: double
        creationDateMin:
          type: string
          format: date-time
        creationDateMax:
          type: string
          format: date-time
        updateDateMin:
          type: string
          format: date-time
        updateDateMax:
          type: string
          format: date-time
        anomalyLevelMin:
          type: integer
          minimum: -1
          maximum: 3
          description: Niveau d'anomalie minimal (voir les valeurs correspondantes avec le paramètre `anomalyValues`)
        anomalyLevelMax:
          type: integer
          minimum: -1
          maximum: 3
          description: Niveau d'anomalie maximal (voir les valeurs correspondantes avec le paramètre `anomalyValues`)
        anomalyValues:
          type: array
          items:
            type: string
            enum:
              - UNKNOWN
              - SAFE
              - UNUSUAL
              - SUSPECT
              - ANORMAL
          description: Valeurs d'anomalie (UNKNOWN = -1, SAFE = 0, UNUSUAL = 1, SUSPECT = 2, ANORMAL = 3)
        externalProperties:
          type: array
          items:
            type: string
            example: ID:externalId
        geoSearchQuery:
          $ref: '#/components/schemas/GeoPropertySearchQuery'
    Property-Source:
      type: string
      enum:
        - STUDY
        - AD
        - DVF
        - USER
        - CLAMEUR
        - ORGANIZATION
      example: AD
    State:
      type: string
      enum:
        - NEW
        - VERY_GOOD
        - GOOD
        - NORMAL
        - BAD
        - VERY_BAD
    Detachment:
      type: string
      enum:
        - TERRACED
        - SEMI_DETACHED
        - DETACHED
    Area-Type:
      type: string
      enum:
        - BEDROOM
        - MASTER_BEDROOM
        - BATHROOM
        - SHOWER_ROOM
        - TOILET
        - KITCHEN
        - LUNCHROOM
        - LIVING_ROOM
        - LOUNGE
        - OFFICE_ROOM
        - DRESSING
        - LAUNDRY_ROOM
        - MEZZANINE
        - HALL
        - BALCONY
        - TERRACE
        - VERANDA
        - LOGGIA
        - PATIO
        - STOREROOM
        - CELLAR
        - BASEMENT
        - FOOD_STOREROOM
        - GARDEN
        - COURTYARD
        - ATTIC
        - LOFT
        - ARTIFICIAL
        - FARMLAND
        - NATURAL
        - PARKING
        - SWIMMING_POOL
        - JACUZZI
        - SAUNA
        - SUMMER_KITCHEN
        - BARN
        - GREENHOUSE
        - WORKSHOP
        - GARDEN_SHED
        - OUTBUILDING
        - GARAGE
        - CARPORT
        - HANGAR
        - BOX
        - OTHER
    BoundType:
      type: string
      enum:
        - OPEN
        - CLOSED
    Range:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 200000
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 300000
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    Property-Features:
      type: object
      properties:
        descriptive:
          type: object
          properties:
            description:
              type: string
              maxLength: 10000
              example: Charmante petite maison située dans un quartier calme. La maison de 120m2 environ comporte un séjour de 35m2 environ, une cuisine, une salle de douche, un espace nuit ainsi que deux chambres de 11 m2 environ. Le plus, un sous sol complet et un agréable jardin! Mérite votre attention! Honoraires d'agence à la charge du vendeur.Information d'affichage énergétique sur ce bien DPE F indice 356 et GES G indice 83.
            pros:
              type: array
              maxItems: 10
              items:
                type: string
                maxLength: 1000
              example:
                - Belle exposition
            cons:
              type: array
              maxItems: 10
              items:
                type: string
                maxLength: 1000
              example:
                - Proche d'une route bruyante
            comments:
              type: string
              maxLength: 2000
            generalState:
              $ref: '#/components/schemas/State'
            detachment:
              $ref: '#/components/schemas/Detachment'
            services:
              type: object
              properties:
                CARETAKER:
                  type: boolean
                CLEANING:
                  type: boolean
            equipments:
              type: object
              properties:
                FURNITURE:
                  type: boolean
                  example: true
                  description: valide pour les appartements et maisons uniquement
                FIREPLACE:
                  type: boolean
                  example: true
                  description: valide pour les appartements et maisons uniquement
                AIR_CONDITIONING:
                  type: boolean
                  example: false
                  description: valide pour les appartements, maisons et locaux commerciaux uniquement
                ADSL:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles, maisons et locaux commerciaux uniquement
                CABLE:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles, maisons et locaux commerciaux uniquement
                FIBER:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles, maisons et locaux commerciaux uniquement
                ELEVATOR:
                  type: boolean
                  example: false
                  description: valide pour les immeubles uniquement
                DIGICODE:
                  type: boolean
                  example: false
                  description: valide pour les immeubles uniquement
                INTERCOM:
                  type: boolean
                  example: false
                  description: valide pour les immeubles uniquement
                VIDEOPHONE:
                  type: boolean
                  example: false
                  description: valide pour les immeubles uniquement
                BIKE_AREA:
                  type: boolean
                  example: true
                  description: valide pour les immeubles uniquement
                TWO_WHEEL_PARK:
                  type: boolean
                  example: false
                  description: valide pour les immeubles uniquement
                DISABLED_ACCESS:
                  type: boolean
                  example: false
                  description: valide pour les immeubles et maisons uniquement
                HOME_AUTOMATION:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles, maisons et locaux commerciaux uniquement
                ELECTRIC_VEHICLE_CHARGER:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles, maisons et locaux commerciaux uniquement
                SEPTIC_TANK:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles et maisons uniquement
                COMPACT_FILTER:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles et maisons uniquement
                MICRO_STATION:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles et maisons uniquement
                PHYTODEPURATION:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles et maisons uniquement
                MAINS_DRAINAGE:
                  type: boolean
                  example: false
                  description: valide pour les appartements, immeubles et maisons uniquement
        visual:
          type: object
          properties:
            images:
              type: array
              maxItems: 40
              items:
                type: string
                format: uri
            orientations:
              type: array
              items:
                type: string
                enum:
                  - NORTH
                  - EAST
                  - SOUTH
                  - WEST
            views:
              type: array
              items:
                type: string
                enum:
                  - SEA
                  - MOUNTAIN
                  - RIVER
                  - LAKE
                  - OPEN
                  - NO_OVERLOOK
                  - OUTSTANDING
        geometry:
          type: object
          properties:
            surface:
              type: number
              nullable: true
              format: double
              minimum: 5
            surfaceCarrez:
              type: number
              nullable: true
              format: double
              minimum: 5
            areas:
              type: array
              maxItems: 100
              items:
                type: object
                properties:
                  type:
                    $ref: '#/components/schemas/Area-Type'
                  surface:
                    type: number
                    nullable: true
                    format: double
                  kitchenType:
                    type: string
                    nullable: true
                    enum:
                      - OPENED
                      - CLOSED
                      - KITCHENETTE
                  kitchenEquipments:
                    type: array
                    items:
                      type: string
                      enum:
                        - FITTED
                        - EQUIPPED
                        - NONE
            roomCount:
              type: integer
              nullable: true
              minimum: 1
              maximum: 200
            areaCount:
              type: object
              properties:
                BEDROOM:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 2
                BATHROOM:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 0
                SHOWER_ROOM:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                TOILET:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                KITCHEN:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                LUNCHROOM:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                LIVING_ROOM:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                BALCONY:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 0
                TERRACE:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 2
                CELLAR:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                GARDEN:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 2
                PARKING:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                SWIMMING_POOL:
                  type: integer
                  format: int64
                  minimum: 0
                  example: 1
                OTHER:
                  type: integer
                  format: int64
                  minimum: 0
            floors:
              type: array
              maxItems: 100
              items:
                type: object
                properties:
                  level:
                    type: integer
                    nullable: true
                    minimum: -10
                    maximum: 100
                    example: 2
                  surface:
                    type: number
                    nullable: true
                    format: double
                    minimum: 1
                    maximum: 10000
                    example: 120
                  basementType:
                    type: string
                    nullable: true
                    enum:
                      - PARTIAL
                      - FULL
            floorCount:
              type: integer
              minimum: 0
              maximum: 100
        construction:
          type: object
          properties:
            newBuild:
              type: boolean
            year:
              type: integer
              minimum: 1000
              maximum: 2500
            period:
              $ref: '#/components/schemas/Range'
            urbanismRules:
              type: array
              items:
                type: string
                enum:
                  - SEISMIC_ZONE
                  - TECHNOLOGICAL_ZONE
                  - FLOOD_ZONE
                  - CLASSIFIED_ZONE
                  - NOISE_ZONE
                  - PROTECTED_NATURAL_ZONE
                  - LANDSLIDE_ZONE
        energy:
          type: object
          properties:
            heatingTypes:
              type: array
              items:
                type: string
                enum:
                  - ELECTRIC
                  - GAS
                  - FUEL
                  - WOOD
                  - SOLAR
                  - HEAT_PUMP
                  - UNDERFLOOR
                  - OTHER
                  - NONE
            heatingMode:
              type: string
              enum:
                - INDIVIDUAL
                - COLLECTIVE
                - MIXED
            waterHeatingTypes:
              type: array
              items:
                type: string
                enum:
                  - ELECTRIC
                  - GAS
                  - FUEL
                  - WOOD
                  - SOLAR
                  - HEAT_PUMP
                  - UNDERFLOOR
                  - OTHER
                  - NONE
            waterHeatingMode:
              type: string
              enum:
                - INDIVIDUAL
                - COLLECTIVE
                - MIXED
            diagnosisDate:
              type: string
              format: date
            diagnosisVersion:
              type: integer
              enum:
                - 1
                - 2
            consumption:
              type: integer
              minimum: 0
              maximum: 10000
            consumptionLetter:
              type: string
              enum:
                - A
                - B
                - C
                - D
                - E
                - F
                - G
            consumptionRange:
              $ref: '#/components/schemas/Range'
            greenHouseGasConsumption:
              type: integer
              minimum: 0
              maximum: 10000
            greenhouseGasConsumptionLetter:
              type: string
              enum:
                - A
                - B
                - C
                - D
                - E
                - F
                - G
            greenhouseGasConsumptionRange:
              $ref: '#/components/schemas/Range'
        condominium:
          type: object
          properties:
            lotCount:
              type: integer
              minimum: 1
              maximum: 10000
            expenses:
              type: number
              format: double
              minimum: 1
              maximum: 100000
            inDifficulty:
              type: boolean
        additionalFeatures:
          type: array
          maxItems: 100
          items:
            type: object
            required:
              - type
            properties:
              type:
                type: string
                enum:
                  - HOUSE
                  - APARTMENT
                  - PREMISES
                  - LAND
                  - BUILDING
                  - PARKING
              features:
                $ref: '#/components/schemas/Property-Features'
    PriceEvent:
      type: object
      required:
        - price
        - date
      properties:
        price:
          type: number
          format: double
          minimum: 0
          maximum: 100000000
        date:
          type: string
          format: date
    RangeDate:
      type: object
      properties:
        lowerEndpoint:
          type: string
          format: date
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: string
          format: date
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    PriceEventRange:
      type: object
      required:
        - price
      properties:
        price:
          type: number
          format: double
          minimum: 0
          maximum: 100000000
        date:
          $ref: '#/components/schemas/RangeDate'
        priceM2:
          type: number
          format: double
    Bloctel:
      type: object
      properties:
        status:
          type: string
          enum:
            - OK
            - BLOCKED
            - UNCHECKED
        checkDate:
          type: string
          format: date-time
    Marketing-Dealer:
      type: object
      required:
        - type
      properties:
        id:
          type: integer
          format: int64
          minimum: 0
          example: 4801814507552768
        organizationId:
          type: integer
          format: int64
          minimum: 0
        userId:
          type: integer
          format: int64
          minimum: 0
        externalId:
          type: string
        externalOrganizationId:
          type: string
        externalUserId:
          type: string
        type:
          $ref: '#/components/schemas/Dealer-Type'
        subType:
          $ref: '#/components/schemas/Dealer-SubType'
        name:
          type: string
          minLength: 1
          maxLength: 300
          example: dealer's name
        phoneNumber:
          type: string
          example: 01748596***
        phoneNumberHash:
          type: string
        email:
          type: string
          format: email
          example: example@email.com
        agenciesUnwanted:
          type: boolean
        bloctel:
          $ref: '#/components/schemas/Bloctel'
    RangeDateTime:
      type: object
      properties:
        lowerEndpoint:
          type: string
          format: date-time
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: string
          format: date-time
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    RentalExpensesEvent:
      type: object
      required:
        - year
        - value
      properties:
        year:
          type: integer
        value:
          type: number
          format: double
          minimum: 1
          maximum: 100000
    Owner:
      type: object
      properties:
        coOwner:
          type: boolean
        type:
          type: string
          enum:
            - LEGAL_PERSON
            - PRIVATE
    Property-Marketing:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/MarketingType'
        price:
          type: number
          format: double
          minimum: 10
          maximum: 100000000
          example: 253000
        priceRange:
          $ref: '#/components/schemas/Range'
        sellingPrice:
          type: number
          format: double
          minimum: 10
          maximum: 100000000
          example: 250000
        sellingPriceRange:
          $ref: '#/components/schemas/Range'
        priceHC:
          type: number
          format: double
          minimum: 0
          example: 212000
        priceM2HC:
          type: number
          format: double
          minimum: 0
          example: 2500
        priceCC:
          type: number
          format: double
          minimum: 0
        priceM2CC:
          type: number
          format: double
          minimum: 0
        relevantPrice:
          type: number
          format: double
          minimum: 0
        priceM2:
          type: number
          format: double
        priceM2Range:
          $ref: '#/components/schemas/Range'
        negotiationMargin:
          $ref: '#/components/schemas/Range'
        priceEvents:
          type: array
          items:
            $ref: '#/components/schemas/PriceEvent'
        priceEventsRange:
          type: array
          items:
            $ref: '#/components/schemas/PriceEventRange'
        priceEventsCount:
          type: integer
          format: int64
        lastPriceDecreaseDate:
          type: string
          format: date
        lastPriceUpdateDate:
          type: string
          format: date
        dealers:
          type: array
          maximum: 10
          items:
            $ref: '#/components/schemas/Marketing-Dealer'
        marketingStartDate:
          type: string
          format: date-time
        marketingEndDate:
          type: string
          format: date-time
        marketingDateRange:
          items:
            $ref: '#/components/schemas/RangeDateTime'
        marketingDays:
          type: integer
          format: int64
          minimum: 0
        publicationStartDate:
          type: string
          format: date-time
        publicationEndDate:
          type: string
          format: date-time
        publicationDateRange:
          items:
            $ref: '#/components/schemas/RangeDateTime'
        publicationDays:
          type: integer
          format: int64
          minimum: 0
        active:
          type: boolean
        rentalExpenses:
          type: number
          format: double
          minimum: 1
          maximum: 100000
        rentalExpensesIncluded:
          type: boolean
        rentalExpensesEvents:
          type: array
          items:
            $ref: '#/components/schemas/RentalExpensesEvent'
        deposit:
          type: number
          format: double
          minimum: 1
          maximum: 100000
        propertyTax:
          type: number
          format: double
          minimum: 1
          maximum: 100000
        fees:
          type: number
          format: double
          minimum: 20
          maximum: 1000000
        feesPercent:
          type: number
          format: double
          minimum: 0
          maximum: 100
        feesPayer:
          type: string
          enum:
            - BUYER
            - SELLER
          default: BUYER
        feesIncluded:
          type: boolean
        exclusiveMandate:
          type: boolean
        saleStatus:
          type: string
          enum:
            - OFFER
            - COMPROMISE
            - CANCELLED
            - SIGNED
            - LOST
        occupied:
          type: boolean
        rentalCategory:
          type: string
          enum:
            - FREE
            - AGREED
            - TAX_FREE
        owner:
          $ref: '#/components/schemas/Owner'
    Yield:
      type: object
      properties:
        gross:
          type: number
          format: double
          example: 2530
        net:
          type: number
          format: double
          example: 2530
    Rental:
      type: object
      properties:
        monthlyPrice:
          type: number
          format: double
          minimum: 10
          maximum: 100000
        yield:
          $ref: '#/components/schemas/Yield'
    Property-Investment:
      type: object
      properties:
        rental:
          $ref: '#/components/schemas/Rental'
    Location:
      type: object
      properties:
        lat:
          type: number
          format: double
        lon:
          type: number
          format: double
    Address:
      type: object
      properties:
        cityId:
          type: number
          format: int64
          minimum: 0
          example: 47892974
        quarterId:
          type: number
          format: int64
          minimum: 0
        irisIds:
          type: array
          items:
            type: string
          example: []
        parcelIds:
          type: array
          items:
            type: string
          example: []
        agglomerationId:
          type: number
          format: int64
          example: 4762789950839808
        streetNumber:
          type: string
        street:
          type: string
        city:
          type: string
          example: Cloyes-Les-Trois-Rivières
        zipCode:
          type: string
          example: 28220
        deptCode:
          type: string
          example: 28
        country:
          type: string
        location:
          $ref: '#/components/schemas/Location'
        approximateLocation:
          type: object
          format: GeoJsonObject
    AdRef:
      type: object
      required:
        - crawlSource
        - url
      properties:
        id:
          type: string
          format: uuid
        reference:
          type: boolean
        crawlSource:
          $ref: '#/components/schemas/CrawlSource'
        url:
          type: string
          format: uri
    PropertyRef:
      type: object
      required:
        - id
        - source
      properties:
        id:
          type: string
          format: uuid
        source:
          $ref: '#/components/schemas/Property-Source'
    Cause:
      type: object
      properties:
        type:
          type: string
          enum:
            - SHARED_HOUSING
            - DEVIATION
            - ADDRESS_CITYID
            - NEW_BUILD
            - LIFE_ANNUITY
            - AUCTION
            - SEARCH
          example: DEVIATION
          description: Type d'anomalie (collocation, déviation, localisation, neuf, viager, enchère, recherche)
        value:
          type: string
          enum:
            - UNKNOWN
            - SAFE
            - UNUSUAL
            - SUSPECT
            - ANORMAL
          example: SAFE
          description: Valeur d'anomalie (UNKNOWN = -1, SAFE = 0, UNUSUAL = 1, SUSPECT = 2, ANORMAL = 3)
        level:
          type: integer
          minimum: -1
          maximum: 3
          description: Niveau d'anomalie correspondant à la valeur
    Anomaly:
      type: object
      properties:
        value:
          type: string
          enum:
            - UNKNOWN
            - SAFE
            - UNUSUAL
            - SUSPECT
            - ANORMAL
          example: SAFE
          description: Valeur d'anomalie (UNKNOWN = -1, SAFE = 0, UNUSUAL = 1, SUSPECT = 2, ANORMAL = 3)
        level:
          type: integer
          minimum: -1
          maximum: 3
          description: Niveau d'anomalie correspondant à la valeur
        causes:
          type: array
          items:
            $ref: '#/components/schemas/Cause'
          description: Causes d'anomalie
    Property-Quality:
      type: object
      properties:
        anomaly:
          $ref: '#/components/schemas/Anomaly'
    Property:
      type: object
      required:
        - type
        - marketing
      properties:
        id:
          type: string
          format: uuid
          example: 007d73b0-1421-11eb-9515-0f9ad411d285
        source:
          $ref: '#/components/schemas/Property-Source'
        programId:
          type: string
          format: uuid
        aggregatePropertyId:
          type: string
          format: uuid
        externalProperties:
          type: object
          properties:
            key:
              type: string
              enum:
                - ID
                - REALTY_ID
                - VERSION
                - BAN_INTEROP_KEY
            value:
              type: string
          required:
            - key
          example:
            ID: external property id
        product:
          $ref: '#/components/schemas/ProductType'
        type:
          $ref: '#/components/schemas/PropertyType'
        subType:
          $ref: '#/components/schemas/PropertySubType'
        features:
          $ref: '#/components/schemas/Property-Features'
        marketing:
          $ref: '#/components/schemas/Property-Marketing'
        investment:
          $ref: '#/components/schemas/Property-Investment'
        address:
          $ref: '#/components/schemas/Address'
        ads:
          type: array
          items:
            $ref: '#/components/schemas/AdRef'
        properties:
          type: array
          items:
            $ref: '#/components/schemas/PropertyRef'
        quality:
          $ref: '#/components/schemas/Property-Quality'
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
    DefaultResponse:
      type: object
      properties:
        msg:
          type: string
        status:
          type: integer
    PropertyFeaturesSimilarity:
      type: object
      description: Caractéristiques du bien d'intérêt
      required:
        - marketingType
        - propertyType
        - address
      properties:
        marketingType:
          $ref: '#/components/schemas/MarketingType'
        propertyType:
          $ref: '#/components/schemas/PropertyType'
        surface:
          type: number
          format: double
          example: 50
        landSurface:
          type: number
          format: double
          example: 150
        price:
          type: number
          format: double
          example: 300000
        roomCount:
          type: integer
          example: 2
        furnished:
          type: boolean
          example: true
        newBuild:
          type: boolean
          example: false
        energyConsumptionDiagnosisLetter:
          type: string
          enum:
            - A
            - B
            - C
            - D
            - E
            - F
            - G
        greenhouseGasConsumptionDiagnosisLetter:
          type: string
          enum:
            - A
            - B
            - C
            - D
            - E
            - F
            - G
        address:
          description: adresse exacte ou cityId requis
          properties:
            cityId:
              type: number
              format: int64
              minimum: 0
              example: 47892974
            location:
              $ref: '#/components/schemas/Location'
    Weight:
      type: object
      properties:
        name:
          type: string
          enum:
            - SURFACE
            - PRICE
            - ROOM_COUNT
            - FURNISHED
            - NEW_BUILD
            - ENERGY_CONSUMPTION
            - GREENHOUSE_GAS_CONSUMPTION
            - LAND_SURFACE
            - LOCALISATION
        value:
          type: integer
          description: Facteur d'importance de la variable
          minimum: 0
          maximum: 10
    SimilarProperty:
      type: object
      properties:
        property:
          $ref: '#/components/schemas/Property'
        score:
          type: number
          format: double
          description: Score de similarité du bien (entre 0 et 1)
    SimilarProperties:
      type: object
      properties:
        hits:
          type: array
          items:
            $ref: '#/components/schemas/SimilarProperty'
        weights:
          type: array
          items:
            $ref: '#/components/schemas/Weight'
        query:
          $ref: '#/components/schemas/PropertySearchQuery'
    Program-Features:
      type: object
      properties:
        name:
          type: string
          maxLength: 1000
        description:
          type: string
          maxLength: 10000
        legalDevices:
          type: array
          items:
            type: string
            enum:
              - TVA
              - PINEL
              - PTZ
              - LMP
              - LMNP
              - PLS
        certifications:
          type: array
          items:
            type: string
            enum:
              - RT2012
              - RE2020
              - HPE
              - HQE
    StageEvent:
      type: object
      properties:
        stage:
          type: string
          enum:
            - PRESALE
            - BUILDING_IN_PROGRESS
            - LAST_OFFERS
        date:
          type: string
          format: date
    Program-Marketing:
      type: object
      properties:
        dealers:
          type: array
          items:
            $ref: '#/components/schemas/Marketing-Dealer'
        stage:
          type: string
          enum:
            - PRESALE
            - BUILDING_IN_PROGRESS
            - LAST_OFFERS
          example: BUILDING_IN_PROGRESS
        stageEvents:
          type: array
          items:
            $ref: '#/components/schemas/StageEvent'
        deliveryDate:
          type: string
          format: date-time
        publicationStartDate:
          type: string
          format: date-time
        publicationEndDate:
          type: string
          format: date-time
        publicationDays:
          type: integer
        active:
          type: boolean
    ActiveLotCountEvent:
      type: object
      properties:
        count:
          type: number
          format: integer
        date:
          type: string
          format: date
    Program-Property:
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
          enum:
            - HOUSE
            - APARTMENT
            - PREMISES
            - LAND
            - BUILDING
            - PARKING
        price:
          $ref: '#/components/schemas/Range'
        surface:
          type: number
          format: double
        roomCount:
          type: integer
        orientations:
          type: array
          items:
            type: string
            enum:
              - NORTH
              - EAST
              - SOUTH
              - WEST
        areas:
          type: array
          maxItems: 100
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - BEDROOM
                  - BATHROOM
                  - SHOWER_ROOM
                  - TOILET
                  - KITCHEN
                  - LUNCHROOM
                  - LIVING_ROOM
                  - BALCONY
                  - TERRACE
                  - CELLAR
                  - GARDEN
                  - PARKING
                  - SWIMMING_POOL
                  - OTHER
              surface:
                type: number
                format: double
              kitchenType:
                type: string
                enum:
                  - OPENED
                  - CLOSED
                  - KITCHENETTE
              kitchenEquipments:
                type: array
                items:
                  type: string
                  enum:
                    - FITTED
                    - EQUIPPED
                    - NONE
        floor:
          type: integer
          minimum: -10
          maximum: 100
        ads:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/AdRef'
    Program-Stock:
      type: object
      properties:
        preview:
          type: boolean
        lotCount:
          type: integer
        activeLotCount:
          type: integer
        activeLotCountEvents:
          type: array
          items:
            $ref: '#/components/schemas/ActiveLotCountEvent'
        priceRange:
          $ref: '#/components/schemas/Range'
        surfaceRange:
          $ref: '#/components/schemas/Range'
        roomCountRange:
          $ref: '#/components/schemas/Range'
        properties:
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/Program-Property'
    Program:
      type: object
      properties:
        id:
          type: string
          format: uuid
        externalId:
          type: string
        features:
          $ref: '#/components/schemas/Program-Features'
        marketing:
          $ref: '#/components/schemas/Program-Marketing'
        stock:
          $ref: '#/components/schemas/Program-Stock'
        address:
          $ref: '#/components/schemas/Address'
        ads:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/AdRef'
    EstimationResponse-reliability:
      type: object
      properties:
        score:
          type: integer
          description: Score de fiabilité calculé à partir de l'erreur moyenne et de la zone géographique (0 = non fiable, 100 = très fiable)
          format: int32
          minimum: 0
          maximum: 100
          example: 78
    EstimationResponse:
      type: object
      properties:
        estimation:
          type: object
          properties:
            value:
              type: number
              description: Valeur du champ estimé. S'il s'agit du prix ou loyer, cette valeur correspond à la valeur centrale de la distribution (percentile 50).
              example: 348277.28
            percentiles:
              type: object
              additionalProperties:
                type: number
                format: double
              example:
                '25.0': 328002.78511154104
                '50.0': 348277.28089816734
                '75.0': 362923.32953035925
              description: Percentiles
        reliability:
          $ref: '#/components/schemas/EstimationResponse-reliability'
        evaluation:
          type: object
          description: Statistiques descriptives des erreurs commises sur des biens similaires au bien estimé. L'importance des biens similaires est pondérée par leur degré de similitude.
          properties:
            count:
              type: integer
              format: int32
              description: Nombre de biens similaires au bien estimé considérés.
              example: 30
            residual:
              type: object
              properties:
                mean:
                  type: number
                  format: double
                  description: Erreur moyenne sur les biens similaires au bien estimé.
                  example: 5.85
                percentiles:
                  type: object
                  additionalProperties:
                    type: number
                    format: double
                  example:
                    '50.0': 4.218634115526066
                    '75.0': 8.277662756212566
                    '90.0': 13.359326513857988
                  description: Percentiles
        explanation:
          type: object
          properties:
            baseValue:
              type: number
              description: Valeur de base pour le calcul des contributions
              example: 10751.97
            features:
              type: object
              properties:
                constructionYear:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: -1.8
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '1911'
                generalState:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: -0.55
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: NORMAL
                balconyCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: -0.22
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '0'
                cellarCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: 0
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: false,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '0'
                gardenCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: 0
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: false,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '0'
                parkingCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: 0
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: false,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '0'
                swimmingPoolCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: 0
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: false,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '0'
                terraceCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: -0.19
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: true,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '0'
                floor:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: 1.65
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: false,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '5'
                roomCount:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: -1.88
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: false,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '1'
                surface:
                  type: object
                  properties:
                    contribInPercent:
                      type: number
                      format: double
                      description: Contribution de la variable en pourcentage
                      minimum: -100
                      maximum: 100
                      example: 2.44
                    handled:
                      type: boolean
                      description: Indique si la variable est correctement prise en compte par le modèle
                      example: true,
                    imputed:
                      type: boolean
                      description: Indique si la variable est imputée
                      example: false,
                    value:
                      type: string
                      description: Valeur de la variable
                      example: '29.83'
    MapsZone-Type:
      type: string
      enum:
        - DEPARTMENT
        - AGGLOMERATION
        - CITY
        - IRIS
      example: AGGLOMERATION
    Bounds:
      type: object
      properties:
        min:
          type: number
          format: double
          example: 8257.26
          description: Valeur très basse
        low:
          type: number
          format: double
          example: 9157.83
          description: Valeur basse
        mid:
          type: number
          format: double
          example: 9841.39
          description: Valeur centrale
        high:
          type: number
          format: double
          example: 10576.26
          description: Valeur haute
        max:
          type: number
          format: double
          example: 11734.03
          description: Valeur très haute
      description: Bornes
    Reliability:
      type: object
      properties:
        methods:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                enum:
                  - NUMBER_OF_OBSERVATIONS
                  - INDICATOR_STABILITY
                  - INDICATORS_CONSISTENCY
                  - DEFAULT
                  - FORECASTING
                  - MARKET_INDICATOR
                example: NUMBER_OF_OBSERVATIONS
                description: Nom de la méthode de fiabilité
              score:
                type: integer
                minimum: 0
                maximum: 100
                example: 80
                description: Score de fiabilité de la méthode
              weight:
                type: number
                format: double
                minimum: 0
                maximum: 1
                example: 0.55
                description: Poids de la méthode de fiabilité
          description: Méthodes de fiabilité
        score:
          type: integer
          minimum: 0
          maximum: 100
          example: 80
          description: Score de fiabilité
      description: Fiabilité de l'indicateur
    Growth:
      type: object
      properties:
        lag:
          type: integer
          example: 1
          description: Nombre de périodes à soustraire pour obtenir la période de référence
        value:
          type: number
          format: double
          example: 50.25
          description: Différence entre la période actuelle et la période de référence
        percent:
          type: number
          format: double
          example: 2.75
          description: Différence en pourcentage entre la période actuelle et la période de référence (absent pour le type d'indicateur MARKET_STRESS)
        type:
          type: string
          enum:
            - INTERVAL
            - YEAR
            - CUMULATIVE
          example: INTERVAL
          description: Type de croissance (CUMULATIVE est absent pour le type d'indicateur MARKET_STRESS)
      description: Croissance de l'indicateur
    PropertyIndicator:
      type: object
      properties:
        value:
          type: number
          format: double
          example: 9841.39
          description: Valeur de l'indicateur
        bounds:
          $ref: '#/components/schemas/Bounds'
        reliability:
          $ref: '#/components/schemas/Reliability'
        growths:
          type: array
          items:
            $ref: '#/components/schemas/Growth'
          description: |
            Indicateurs de croissance de l'indicateur par rapport aux points précédents
            (présents uniquement lors d'une requête d'évolution)
      example:
        value: 9841.39
        bounds:
          min: 8257.26
          low: 9157.83
          mid: 9841.39
          high: 10576.26
          max: 11734.03
        reliability:
          methods:
            - name: MARKET_INDICATOR
              score: 65
              weight: 1
          score: 65
        growths: []
      description: Indicateur
    MapsPropertiesIndicatorsResponse:
      type: object
      properties:
        type:
          type: string
          example: FeatureCollection
        features:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                example: Feature
              geometry:
                type: object
                properties:
                  type:
                    type: string
                    example: Polygon
                  coordinates:
                    type: array
                    items:
                      type: array
                      items:
                        type: array
                        items:
                          type: number
                          format: double
                    example:
                      - - - -0.911723509798335
                          - 45.05733089567757
                        - - -0.911055975124278
                          - 45.05760676970961
                        - - -0.904103702869576
                          - 45.06205176416576
                        - - -0.899065711926672
                          - 45.06587034378504
                        - - -0.897691193189008
                          - 45.06841559739828
                        - - -0.897584349390904
                          - 45.06870781423648
                        - - -0.897617728324259
                          - 45.0690041372114
                        - - -0.897496311598921
                          - 45.069269819423255
                        - - -0.886581537775204
                          - 45.08739258863063
                        - - -0.8839033400713
                          - 45.08767532682092
                        - - -0.880838838624768
                          - 45.08661021982145
                        - - -0.87959371326573
                          - 45.08645527276011
                        - - -0.87884327684685
                          - 45.086093773174575
                        - - -0.878169232495036
                          - 45.085549312412624
                        - - -0.873901219141742
                          - 45.08327286900472
                        - - -0.872463128170905
                          - 45.082718892462616
                        - - -0.871331971926177
                          - 45.08237058378576
                        - - -0.871490076901397
                          - 45.08134641794644
                        - - -0.870973941832136
                          - 45.08050795643455
                        - - -0.87050663123155
                          - 45.080190652737386
                        - - -0.870494033977922
                          - 45.07964118984329
                        - - -0.870055855370725
                          - 45.07937696072173
                        - - -0.868953280088036
                          - 45.07907271158247
                        - - -0.868730386692193
                          - 45.07824208320988
                        - - -0.86835680714906
                          - 45.07762402868736
                        - - -0.867577692186378
                          - 45.07702907362786
                        - - -0.867390293313902
                          - 45.075791547924055
                        - - -0.867004173075212
                          - 45.07554353005832
                        - - -0.8662354212423
                          - 45.0752817525987
                        - - -0.865106833314341
                          - 45.0745997540166
                        - - -0.86308457668039
                          - 45.07276782576095
                        - - -0.862171568837982
                          - 45.072258615457116
                        - - -0.860916877630845
                          - 45.07195956990113
                        - - -0.859102943371349
                          - 45.07222077567851
                        - - -0.856022584722102
                          - 45.07238158055216
                        - - -0.854127831009488
                          - 45.07276269342302
                        - - -0.85351584932331
                          - 45.07292810879603
                        - - -0.852483196188203
                          - 45.073450632618695
                        - - -0.847667949474177
                          - 45.07428420770231
                        - - -0.845488254072831
                          - 45.0749634827863
                        - - -0.843849664442419
                          - 45.075371627469146
                        - - -0.840352257123899
                          - 45.07650193350128
                        - - -0.838523259368735
                          - 45.076546965763896
                        - - -0.83074030466215
                          - 45.07603972448953
                        - - -0.82839385499329
                          - 45.07651705831525
                        - - -0.827380932389961
                          - 45.07565944013039
                        - - -0.826299739144128
                          - 45.07529094336581
                        - - -0.82447585213474
                          - 45.075038091971855
                        - - -0.824498187393533
                          - 45.07350486040534
                        - - -0.821750295957835
                          - 45.07331975695838
                        - - -0.821217837833441
                          - 45.0733470449371
                        - - -0.821019560858345
                          - 45.074913353543344
                        - - -0.82060057592497
                          - 45.07641511875469
                        - - -0.821577428757735
                          - 45.078049279478535
                        - - -0.821537399512124
                          - 45.07951100068176
                        - - -0.822986026295999
                          - 45.080786412116495
                        - - -0.823759692106181
                          - 45.08223823046167
                        - - -0.824210885800308
                          - 45.083439697686956
                        - - -0.824675705893198
                          - 45.08539791607215
                        - - -0.824272415404404
                          - 45.087872729620905
                        - - -0.824350046018766
                          - 45.088077398247655
                        - - -0.825011745858464
                          - 45.08882091139745
                        - - -0.824996876445735
                          - 45.09102096870935
                        - - -0.824874451550525
                          - 45.09127757977062
                        - - -0.825803069691341
                          - 45.095176030988775
                        - - -0.825688411362216
                          - 45.095360259872635
                        - - -0.823295072578411
                          - 45.09628078215359
                        - - -0.823668894049687
                          - 45.096907983972066
                        - - -0.823052251376559
                          - 45.09701027909016
                        - - -0.824195805269714
                          - 45.10014414951256
                        - - -0.817982027950691
                          - 45.10141197676993
                        - - -0.815839228796046
                          - 45.1017197685401
                        - - -0.814817086893072
                          - 45.099798626102675
                        - - -0.802818979658626
                          - 45.101732271044746
                        - - -0.804035085804096
                          - 45.104638478701446
                        - - -0.803822868525295
                          - 45.10469981101798
                        - - -0.803354680340805
                          - 45.10530173389151
                        - - -0.803328824845495
                          - 45.10548290553098
                        - - -0.803033369911535
                          - 45.10581751112578
                        - - -0.802979819834606
                          - 45.10615287363243
                        - - -0.801665297620075
                          - 45.10722538105779
                        - - -0.800652008622496
                          - 45.10842281331434
                        - - -0.800661185195656
                          - 45.10855771694205
                        - - -0.800917787510868
                          - 45.10877432489533
                        - - -0.800863462550606
                          - 45.10891139473579
                        - - -0.800428122880041
                          - 45.10906146094739
                        - - -0.800156488018619
                          - 45.10974680878731
                        - - -0.799068467149472
                          - 45.11059521028076
                        - - -0.797624100987232
                          - 45.110509230246485
                        - - -0.797617175024585
                          - 45.110969202299934
                        - - -0.797561005933791
                          - 45.11107928981273
                        - - -0.797411039451643
                          - 45.11112045848443
                        - - -0.794706695478678
                          - 45.11085201267277
                        - - -0.789269240584619
                          - 45.1106404231491
                        - - -0.789221201109439
                          - 45.11124602066471
                        - - -0.789966179639646
                          - 45.113032577156886
                        - - -0.78997422167234
                          - 45.11333879305824
                        - - -0.789215179026571
                          - 45.113409678769
                        - - -0.787365623859378
                          - 45.11129107755715
                        - - -0.781502158228196
                          - 45.11061582766291
                        - - -0.78001074247751
                          - 45.11077460415072
                        - - -0.779549321808307
                          - 45.11091645694899
                        - - -0.779479807712803
                          - 45.11101797246641
                        - - -0.777946763131563
                          - 45.11150264849117
                        - - -0.776126776764579
                          - 45.1113209531931
                        - - -0.775945755560966
                          - 45.11259810604703
                        - - -0.776118360523503
                          - 45.11326833089251
                        - - -0.776067009751854
                          - 45.11345035739913
                        - - -0.769876375854109
                          - 45.11339855042538
                        - - -0.769447623011025
                          - 45.111006241874215
                        - - -0.767203185823787
                          - 45.1113255305969
                        - - -0.766586249489263
                          - 45.111238215275314
                        - - -0.765645173186634
                          - 45.111441293172454
                        - - -0.764713786441865
                          - 45.111788263595884
                        - - -0.764346706152584
                          - 45.112197292118516
                        - - -0.763372079358611
                          - 45.11001270849628
                        - - -0.761855614829954
                          - 45.107530917084134
                        - - -0.760703949556599
                          - 45.10498271313036
                        - - -0.759809443590228
                          - 45.10341738714885
                        - - -0.75921255305601
                          - 45.10305893192096
                        - - -0.756647290276461
                          - 45.10068458447382
                        - - -0.754777533981259
                          - 45.10051324783213
                        - - -0.75445099775141
                          - 45.100389040016566
                        - - -0.753909209588158
                          - 45.09990250357335
                        - - -0.752519672326837
                          - 45.09911099923896
                        - - -0.75133391264331
                          - 45.09870022588366
                        - - -0.749820425201614
                          - 45.0983365288378
                        - - -0.749684992319245
                          - 45.09821488940532
                        - - -0.748967875622547
                          - 45.09795958596507
                        - - -0.748118987762285
                          - 45.097447301823216
                        - - -0.746948405879065
                          - 45.09707203010645
                        - - -0.746093521320289
                          - 45.09646979224641
                        - - -0.745201685109252
                          - 45.09626541180003
                        - - -0.743667032716264
                          - 45.096344037665325
                        - - -0.74284532308122
                          - 45.09623643716564
                        - - -0.742281741482077
                          - 45.09637255437003
                        - - -0.743017119854492
                          - 45.09595122783451
                        - - -0.74615071890415
                          - 45.09466504552594
                        - - -0.749229791782824
                          - 45.09313722446923
                        - - -0.749841120795993
                          - 45.09276509587823
                        - - -0.750832750524071
                          - 45.09237114458445
                        - - -0.751892095657431
                          - 45.09184870530809
                        - - -0.751803857802341
                          - 45.09148209764767
                        - - -0.75215940465487
                          - 45.09109152782304
                        - - -0.752332362489367
                          - 45.090634994623365
                        - - -0.751300953796136
                          - 45.09024607054136
                        - - -0.750593588202832
                          - 45.090134678913664
                        - - -0.750614711561967
                          - 45.09044946216162
                        - - -0.750490159168039
                          - 45.09048971247912
                        - - -0.750024656061655
                          - 45.090189890787606
                        - - -0.745757230347013
                          - 45.09107263411224
                        - - -0.739949112297758
                          - 45.091943850259504
                        - - -0.738683077798732
                          - 45.09185113885194
                        - - -0.739131993421852
                          - 45.09095269201886
                        - - -0.739609595661151
                          - 45.089151873254536
                        - - -0.739721211243185
                          - 45.08796728326948
                        - - -0.740112675373181
                          - 45.08697160600959
                        - - -0.738539043241357
                          - 45.08684415503734
                        - - -0.73772657042624
                          - 45.08668212774137
                        - - -0.738123196933136
                          - 45.08481192263302
                        - - -0.736524840408002
                          - 45.084694289337975
                        - - -0.736282282530483
                          - 45.085062988023566
                        - - -0.735784151349751
                          - 45.08503462697254
                        - - -0.735554650305653
                          - 45.08445641228094
                        - - -0.735564707887421
                          - 45.08346453134616
                        - - -0.735625178527109
                          - 45.08341743296226
                        - - -0.736202471874818
                          - 45.0834882088464
                        - - -0.736581943568582
                          - 45.082312667781636
                        - - -0.73446873310994
                          - 45.08191481711589
                        - - -0.734771682414203
                          - 45.08168832181296
                        - - -0.735059005082308
                          - 45.08122798506403
                        - - -0.73531462058703
                          - 45.07991237872816
                        - - -0.736149127839043
                          - 45.07907312372249
                        - - -0.735980184514472
                          - 45.07825851526271
                        - - -0.735976866566914
                          - 45.07744736468465
                        - - -0.735057504299938
                          - 45.07739707717153
                        - - -0.735051495447432
                          - 45.077307138556705
                        - - -0.735910225223358
                          - 45.07625974991046
                        - - -0.735230256847702
                          - 45.07617439107048
                        - - -0.733916089331865
                          - 45.07497453003177
                        - - -0.733378294837629
                          - 45.07320778963267
                        - - -0.734445695919666
                          - 45.07319002598968
                        - - -0.735279743798485
                          - 45.073297262003834
                        - - -0.735268401621371
                          - 45.072937082216924
                        - - -0.735810803326987
                          - 45.07229692006066
                        - - -0.73592337862781
                          - 45.07188751286482
                        - - -0.736063597562278
                          - 45.07189182237667
                        - - -0.736406719805361
                          - 45.0707445444894
                        - - -0.736196645321473
                          - 45.07007554307095
                        - - -0.736689904631076
                          - 45.069842655011044
                        - - -0.736964784935271
                          - 45.07014892036955
                        - - -0.737462851234626
                          - 45.069987979555954
                        - - -0.736253004297699
                          - 45.06806352953152
                        - - -0.736813310103812
                          - 45.06788247463707
                        - - -0.73742685041736
                          - 45.067546391846506
                        - - -0.737482559900309
                          - 45.067238045695866
                        - - -0.737312964221995
                          - 45.06660374422363
                        - - -0.737063017644265
                          - 45.06590904167467
                        - - -0.736944589581286
                          - 45.06584991856922
                        - - -0.736240494553183
                          - 45.06597270195421
                        - - -0.736110577903706
                          - 45.06593199149371
                        - - -0.735384471983773
                          - 45.06515410903549
                        - - -0.735021313654411
                          - 45.0650491104281
                        - - -0.7340187242594
                          - 45.06508273913036
                        - - -0.733187121542361
                          - 45.06520076551144
                        - - -0.731286623776128
                          - 45.06626502289637
                        - - -0.730438106213742
                          - 45.066320497112905
                        - - -0.730255210583758
                          - 45.06586691267073
                        - - -0.729799019449761
                          - 45.065701916320315
                        - - -0.728774878199134
                          - 45.06293288067473
                        - - -0.729032383583018
                          - 45.062789046924586
                        - - -0.729487443048933
                          - 45.06274676245407
                        - - -0.730479012135629
                          - 45.06292987744086
                        - - -0.730744044318398
                          - 45.06347084822572
                        - - -0.730873951349775
                          - 45.06351156491726
                        - - -0.731457122277358
                          - 45.06348300738086
                        - - -0.731735803157675
                          - 45.06327535976117
                        - - -0.732063873160016
                          - 45.06342661445936
                        - - -0.732391428813962
                          - 45.063379578201456
                        - - -0.732329429403088
                          - 45.06283180465291
                        - - -0.732658515171116
                          - 45.06204557090005
                        - - -0.733003719917078
                          - 45.061691465952634
                        - - -0.732961528753405
                          - 45.06144048955556
                        - - -0.732358570590525
                          - 45.06117225827548
                        - - -0.73166361351821
                          - 45.061240624123926
                        - - -0.731123425692105
                          - 45.06115056157662
                        - - -0.730988812428361
                          - 45.0608485984109
                        - - -0.730286658391615
                          - 45.06080902952438
                        - - -0.730078817953221
                          - 45.060743881695736
                        - - -0.729493557567677
                          - 45.060168568584466
                        - - -0.729193292441524
                          - 45.06005243171616
                        - - -0.728411914429983
                          - 45.06015972814777
                        - - -0.727441483746568
                          - 45.06010208409683
                        - - -0.726738845523614
                          - 45.0598642030223
                        - - -0.727063796546823
                          - 45.059015029360474
                        - - -0.727197988288169
                          - 45.058929411396306
                        - - -0.727108497798795
                          - 45.05567838052291
                        - - -0.727221001666781
                          - 45.05545827963871
                        - - -0.72696133303355
                          - 45.05518754201629
                        - - -0.726701563494037
                          - 45.055106099536054
                        - - -0.726556696996871
                          - 45.054840531697245
                        - - -0.726584183783533
                          - 45.05429877659466
                        - - -0.726241411541868
                          - 45.05354406843529
                        - - -0.725963076473107
                          - 45.053183814831
                        - - -0.72518739660496
                          - 45.05299344186973
                        - - -0.723578199423513
                          - 45.05136168383914
                        - - -0.722556329452682
                          - 45.050719820786
                        - - -0.721938214969877
                          - 45.0498391024161
                        - - -0.721782852607136
                          - 45.04903304826748
                        - - -0.722111525820445
                          - 45.04804855928062
                        - - -0.722516074445463
                          - 45.047440114415586
                        - - -0.722566693836459
                          - 45.04667224199943
                        - - -0.723574633041101
                          - 45.04424083524826
                        - - -0.723855122964777
                          - 45.04291542519814
                        - - -0.723895654631309
                          - 45.041805362775165
                        - - -0.72374975186892
                          - 45.04133250950389
                        - - -0.72375177465252
                          - 45.04098090095498
                        - - -0.723969267940557
                          - 45.038900434264285
                        - - -0.724888097584053
                          - 45.03876151782736
                        - - -0.724946352180065
                          - 45.038299860694615
                        - - -0.724567285399809
                          - 45.03680723266848
                        - - -0.72354227803452
                          - 45.03477736121507
                        - - -0.723011200926007
                          - 45.03405599473166
                        - - -0.722675781860694
                          - 45.03340920553743
                        - - -0.722773530759282
                          - 45.03258567565663
                        - - -0.723439641986601
                          - 45.03170707343067
                        - - -0.723742962826549
                          - 45.031489604907314
                        - - -0.723854347139314
                          - 45.03106222669329
                        - - -0.720734106570206
                          - 45.03135589494339
                        - - -0.718935104701654
                          - 45.03106449587287
                        - - -0.717223574645343
                          - 45.03094140865975
                        - - -0.71571723488913
                          - 45.0310367887081
                        - - -0.714188653931172
                          - 45.0309886699194
                        - - -0.711945013106542
                          - 45.031658447229034
                        - - -0.711569277879439
                          - 45.03174309075799
                        - - -0.711098193939426
                          - 45.03173176141366
                        - - -0.71157108923924
                          - 45.03100390044304
                        - - -0.711817001855202
                          - 45.030878518519074
                        - - -0.713130854839851
                          - 45.030564270036294
                        - - -0.715218656339519
                          - 45.029845587736204
                        - - -0.715732236560912
                          - 45.029539997135515
                        - - -0.716305183302042
                          - 45.028980034857724
                        - - -0.71813185692632
                          - 45.02758496692782
                        - - -0.719143607021062
                          - 45.02731679412142
                        - - -0.719354214794989
                          - 45.02666075985478
                        - - -0.719693904697887
                          - 45.026225755063486
                        - - -0.720590082678683
                          - 45.024411056062625
                        - - -0.721741626607081
                          - 45.02261484805643
                        - - -0.7216410138203
                          - 45.02224864742643
                        - - -0.721374947114381
                          - 45.02187896737154
                        - - -0.721415027819164
                          - 45.0215260881725
                        - - -0.721279366007413
                          - 45.02120612887123
                        - - -0.719043681521999
                          - 45.02064992116877
                        - - -0.718034706880345
                          - 45.02057547989377
                        - - -0.716720606548689
                          - 45.01992532792971
                        - - -0.714845454002492
                          - 45.01943811781057
                        - - -0.715471417448341
                          - 45.01891244293797
                        - - -0.715769782359635
                          - 45.018812340146845
                        - - -0.716010854462212
                          - 45.01861499877511
                        - - -0.71616150817038
                          - 45.01820434669405
                        - - -0.715836377957611
                          - 45.01694426561403
                        - - -0.71581157809245
                          - 45.016187937660135
                        - - -0.715533180852883
                          - 45.015440080377324
                        - - -0.714728211420451
                          - 45.01479994563987
                        - - -0.713736344214125
                          - 45.01383253682636
                        - - -0.713712023611963
                          - 45.01327449645621
                        - - -0.714435764244382
                          - 45.01192531092607
                        - - -0.715382801473794
                          - 45.01145200922296
                        - - -0.71590411427628
                          - 45.01107404540123
                        - - -0.716023877397161
                          - 45.010772590672175
                        - - -0.715316473975377
                          - 45.008921361659304
                        - - -0.714939391757974
                          - 45.0086004479126
                        - - -0.714992635805709
                          - 45.008445436005765
                        - - -0.715511817534228
                          - 45.0076529125134
                        - - -0.716083209229044
                          - 45.00726426040759
                        - - -0.717239108656595
                          - 45.00668481084713
                        - - -0.7186199910092
                          - 45.0054758778153
                        - - -0.718922461389527
                          - 45.00543872338561
                        - - -0.718941294048023
                          - 45.00438348452292
                        - - -0.718828652511393
                          - 45.004026700859576
                        - - -0.718495122783538
                          - 45.00359617878462
                        - - -0.718448392181996
                          - 45.003083957583506
                        - - -0.718275955714844
                          - 45.00278325531263
                        - - -0.718312326246604
                          - 45.002565709486014
                        - - -0.719785786473648
                          - 45.00083988029808
                        - - -0.720245854029981
                          - 45.000689285173834
                        - - -0.720412691174216
                          - 45.00033216786176
                        - - -0.72197870732126
                          - 44.9990448841509
                        - - -0.723078289116926
                          - 44.998386128565635
                        - - -0.723266151242399
                          - 44.99815449512279
                        - - -0.723715873143359
                          - 44.99708482749789
                        - - -0.723742275968056
                          - 44.996335801429716
                        - - -0.724817410519672
                          - 44.9960744508651
                        - - -0.725805709263917
                          - 44.99565375118648
                        - - -0.726530910030232
                          - 44.99509763898542
                        - - -0.726948302109738
                          - 44.994497755763035
                        - - -0.727374565581643
                          - 44.99422206919017
                        - - -0.727670482545541
                          - 44.99389666779891
                        - - -0.728422690940623
                          - 44.99355596741168
                        - - -0.728984673006597
                          - 44.993410930302844
                        - - -0.729546745855487
                          - 44.993076597816966
                        - - -0.73029344774069
                          - 44.99284423420771
                        - - -0.731800020866265
                          - 44.992577352826395
                        - - -0.732602884533616
                          - 44.9922349228523
                        - - -0.732905356502513
                          - 44.992008438072084
                        - - -0.733011795344804
                          - 44.99150910603256
                        - - -0.734916923988024
                          - 44.99055276461959
                        - - -0.735709011461981
                          - 44.989859134335425
                        - - -0.736183634156216
                          - 44.98916715187235
                        - - -0.736630888028126
                          - 44.98901691537343
                        - - -0.737672736239466
                          - 44.98845008337556
                        - - -0.738935293722529
                          - 44.98833552415855
                        - - -0.740939632076136
                          - 44.9879165669582
                        - - -0.745082894933307
                          - 44.98662331572999
                        - - -0.754603735172776
                          - 44.96665196799747
                        - - -0.762684543340601
                          - 44.96124979556571
                        - - -0.762800946657747
                          - 44.96109261850682
                        - - -0.763216549261171
                          - 44.96104249070356
                        - - -0.76346083105145
                          - 44.96089901037516
                        - - -0.786402972746276
                          - 44.94568832633606
                        - - -0.794102400526922
                          - 44.94542566225567
                        - - -0.794781964443144
                          - 44.94533935529412
                        - - -0.794889235737555
                          - 44.94523653717965
                        - - -0.795039341333584
                          - 44.94426691071204
                        - - -0.79644499628148
                          - 44.93391587968898
                        - - -0.796310945931893
                          - 44.93362299947551
                        - - -0.796428232498921
                          - 44.932357032679775
                        - - -0.797353469754623
                          - 44.926159841558196
                        - - -0.79727298056353
                          - 44.92572090879169
                        - - -0.797576051258479
                          - 44.925512238981575
                        - - -0.797735932884864
                          - 44.92319018137725
                        - - -0.798132841219542
                          - 44.92024706900701
                        - - -0.798471660650507
                          - 44.91869409298612
                        - - -0.806100522248863
                          - 44.920623288216284
                        - - -0.806508624478659
                          - 44.92065437079093
                        - - -0.821771636873566
                          - 44.92456509551887
                        - - -0.832375166069595
                          - 44.925065063217396
                        - - -0.832657917142031
                          - 44.92418994615445
                        - - -0.833133606878906
                          - 44.923353240053885
                        - - -0.833288169141214
                          - 44.92264480046551
                        - - -0.833648843825319
                          - 44.92235291151736
                        - - -0.833914535403394
                          - 44.92048682188379
                        - - -0.834555001509343
                          - 44.918535678293594
                        - - -0.834802698767495
                          - 44.91807641692449
                        - - -0.836385532948204
                          - 44.91339748079352
                        - - -0.836999673096548
                          - 44.91254695801525
                        - - -0.836992634128444
                          - 44.91225874827194
                        - - -0.842374847662454
                          - 44.89694686128107
                        - - -0.842785092631201
                          - 44.89571575091374
                        - - -0.842749929720225
                          - 44.89557274193722
                        - - -0.866180956222282
                          - 44.88427553845634
                        - - -0.874052501407526
                          - 44.884974582907546
                        - - -0.884020093674325
                          - 44.88572594222441
                        - - -0.884093693755788
                          - 44.885507022177606
                        - - -0.88302198245861
                          - 44.87607046914343
                        - - -0.883159007273914
                          - 44.875669044365736
                        - - -0.881235098972126
                          - 44.857572592737014
                        - - -0.881155509485496
                          - 44.85752129196646
                        - - -0.884795865462748
                          - 44.84987597280146
                        - - -0.884893883056342
                          - 44.84982746839413
                        - - -0.921803934352376
                          - 44.841253815287615
                        - - -0.922018022436974
                          - 44.841597806615596
                        - - -0.925031208698756
                          - 44.841383024917114
                        - - -0.925749238110067
                          - 44.840960972569526
                        - - -0.928845439944252
                          - 44.83976056992697
                        - - -0.930127068527193
                          - 44.839426691606285
                        - - -0.931200082109043
                          - 44.83937062818332
                        - - -0.932054501271931
                          - 44.839087929150665
                        - - -0.932426764492773
                          - 44.83879527941269
                        - - -0.933379754698604
                          - 44.83847301609422
                        - - -0.934702360416834
                          - 44.838362991887415
                        - - -0.937514469427871
                          - 44.83745186675228
                        - - -0.938184369183572
                          - 44.83670691610612
                        - - -0.939419159862607
                          - 44.835887806088145
                        - - -0.942754906316643
                          - 44.83449819559863
                        - - -0.943176369145916
                          - 44.83418572862933
                        - - -0.94320480160706
                          - 44.834229790142984
                        - - -0.94329136745228
                          - 44.83419966798401
                        - - -0.943865105795126
                          - 44.83371050650247
                        - - -0.944482430158782
                          - 44.833481212727705
                        - - -0.947917144817977
                          - 44.832782038205494
                        - - -0.949171976104856
                          - 44.832611147248436
                        - - -0.950668759473448
                          - 44.832098082015484
                        - - -0.951749185706827
                          - 44.83196943362777
                        - - -0.952634992901356
                          - 44.83177559619052
                        - - -0.953867622668196
                          - 44.83128993194847
                        - - -0.955198221206811
                          - 44.831116269120585
                        - - -0.956225501429311
                          - 44.83077312175122
                        - - -0.958182781232748
                          - 44.830324649999675
                        - - -0.959666246259634
                          - 44.830163504024085
                        - - -0.960174865255026
                          - 44.83019041103527
                        - - -0.960673335131324
                          - 44.830073444401684
                        - - -0.961291872617023
                          - 44.830042331845604
                        - - -1.00638738298686
                          - 44.82981921499032
                        - - -1.006470453596277
                          - 44.83009567440868
                        - - -1.040593906069565
                          - 44.84885278564973
                        - - -1.044331257842017
                          - 44.840747169003336
                        - - -1.045753508489275
                          - 44.83744983752588
                        - - -1.045869186195913
                          - 44.83676948177264
                        - - -1.046922223271057
                          - 44.834504314581345
                        - - -1.047130864263771
                          - 44.833532080069574
                        - - -1.04815265382575
                          - 44.83048372411378
                        - - -1.050092490083643
                          - 44.82348024438339
                        - - -1.083317862670966
                          - 44.82868926202289
                        - - -1.141790097037935
                          - 44.8244645323915
                        - - -1.146886027329556
                          - 44.82399452656047
                        - - -1.14935621373579
                          - 44.822793157892164
                        - - -1.151878821724982
                          - 44.82110291866071
                        - - -1.155153229404264
                          - 44.8194745940311
                        - - -1.156577988806108
                          - 44.819213812196644
                        - - -1.167553085832853
                          - 44.81348237605792
                        - - -1.172473648650451
                          - 44.81305380880922
                        - - -1.173988650132506
                          - 44.81298774536257
                        - - -1.194915078502972
                          - 44.81115177906796
                        - - -1.196419252763273
                          - 44.81094156098544
                        - - -1.196903084376835
                          - 44.810806031667234
                        - - -1.197034882739363
                          - 44.8101969713497
                        - - -1.197375213757672
                          - 44.81017506577925
                        - - -1.224601276650731
                          - 44.80876183324323
                        - - -1.227335943391948
                          - 44.80874770864281
                        - - -1.231982400769209
                          - 44.809228541665554
                        - - -1.232464776670103
                          - 44.80907487674841
                        - - -1.232351659376352
                          - 44.80992671670427
                        - - -1.232298899007493
                          - 44.81208359660962
                        - - -1.23175877908722
                          - 44.81466481605626
                        - - -1.230620773709716
                          - 44.82141630235077
                        - - -1.23037769471392
                          - 44.82256162026226
                        - - -1.229791766394671
                          - 44.824369187177965
                        - - -1.229428042714646
                          - 44.82677235817393
                        - - -1.227820026882274
                          - 44.83452451961265
                        - - -1.227087912273486
                          - 44.83658108373642
                        - - -1.226865469641713
                          - 44.83884361885045
                        - - -1.225871499025612
                          - 44.843651088798325
                        - - -1.22517077542795
                          - 44.846463806336104
                        - - -1.224952944229867
                          - 44.849294187829564
                        - - -1.224412820817011
                          - 44.85137948333916
                        - - -1.22417214090594
                          - 44.854075492195385
                        - - -1.223288510332136
                          - 44.85867136739241
                        - - -1.223073703968037
                          - 44.861375408057874
                        - - -1.222575625674977
                          - 44.863179590646055
                        - - -1.221759379183075
                          - 44.86867451918606
                        - - -1.2215880966068
                          - 44.87061052106568
                        - - -1.221033601035318
                          - 44.87318322805858
                        - - -1.220079731493326
                          - 44.87904403782609
                        - - -1.219959355438953
                          - 44.88132072341166
                        - - -1.219299801173454
                          - 44.884690853878794
                        - - -1.218867953898623
                          - 44.88872854789871
                        - - -1.218240104244492
                          - 44.89201632192926
                        - - -1.218063822694111
                          - 44.894394315238216
                        - - -1.217472180693322
                          - 44.89799628212026
                        - - -1.217148622132822
                          - 44.90145281681328
                        - - -1.2162494709494
                          - 44.90585990062152
                        - - -1.215963162397223
                          - 44.908801088660994
                        - - -1.215429858336187
                          - 44.91065166082124
                        - - -1.215088045151415
                          - 44.91285561425249
                        - - -1.215065338535293
                          - 44.914578601514414
                        - - -1.214531759286737
                          - 44.91625786890986
                        - - -1.213957990513245
                          - 44.92077881553086
                        - - -1.17733495518963
                          - 44.92062990953086
                        - - -1.168712222437302
                          - 44.92054824786548
                        - - -1.165984661873871
                          - 44.92021784479458
                        - - -1.165405214665798
                          - 44.92027564801502
                        - - -1.151192422276765
                          - 44.920275969019585
                        - - -1.127521188878059
                          - 44.920040435394775
                        - - -1.117863995047541
                          - 44.92038096230107
                        - - -1.113844554079524
                          - 44.92111597522613
                        - - -1.113590361022239
                          - 44.92076476152701
                        - - -1.111095026087488
                          - 44.92117272740042
                        - - -1.091878424429096
                          - 44.9157248418522
                        - - -1.089396302905172
                          - 44.91509504000846
                        - - -1.08615483374125
                          - 44.91292442129043
                        - - -1.085574521537975
                          - 44.91314412021526
                        - - -1.085394746448845
                          - 44.91311467316425
                        - - -1.073512351924903
                          - 44.90761005024371
                        - - -1.072809267598686
                          - 44.90753667589832
                        - - -1.064788137677306
                          - 44.917639473320996
                        - - -1.064489364994966
                          - 44.917893828070525
                        - - -1.063857870239534
                          - 44.91880947357128
                        - - -1.057484137248264
                          - 44.92541647794929
                        - - -1.057536428791484
                          - 44.92561290728786
                        - - -1.057443635823533
                          - 44.925733498523414
                        - - -1.053027896116129
                          - 44.93030329191403
                        - - -1.052788044426149
                          - 44.930321060162335
                        - - -1.052610528588083
                          - 44.93049883111766
                        - - -1.047229355947563
                          - 44.936122336196725
                        - - -1.046690203665453
                          - 44.93656570492918
                        - - -1.043890156569178
                          - 44.93751513009275
                        - - -1.043176006304962
                          - 44.93782060501142
                        - - -1.034685295882081
                          - 44.94065364053612
                        - - -1.033478873182496
                          - 44.94117526687146
                        - - -1.029065392030004
                          - 44.94387775749694
                        - - -1.028667343672242
                          - 44.94399136221475
                        - - -1.028410776333173
                          - 44.94430718765139
                        - - -1.027601361464903
                          - 44.94452585815892
                        - - -1.024240131682893
                          - 44.944918128745336
                        - - -1.024233147405711
                          - 44.945351116594125
                        - - -1.023260784203185
                          - 44.94542239681739
                        - - -1.011061708926112
                          - 44.9473780806627
                        - - -1.010496848240675
                          - 44.94729029032747
                        - - -1.010154535763615
                          - 44.947473936479646
                        - - -1.0059012494136
                          - 44.948177309643
                        - - -1.005360622458141
                          - 44.948250893127664
                        - - -1.005214264529577
                          - 44.94815700230868
                        - - -0.996112388599848
                          - 44.95047711070556
                        - - -0.980595799135371
                          - 44.95133161461268
                        - - -0.980750430359185
                          - 44.95154243628453
                        - - -0.981908267690927
                          - 44.95211397228949
                        - - -0.988649510873383
                          - 44.95817374607383
                        - - -0.988924436524038
                          - 44.958290089094326
                        - - -0.988921518409526
                          - 44.95860572374032
                        - - -0.994513898897096
                          - 44.97079169762105
                        - - -0.994713374051096
                          - 44.97145165349531
                        - - -0.994515010840875
                          - 44.97419039134709
                        - - -0.992915603408161
                          - 44.98382201947866
                        - - -0.990334587987503
                          - 44.990919521909376
                        - - -0.990475264095581
                          - 44.9909325034159
                        - - -0.990422799130136
                          - 44.99108764539305
                        - - -0.985900098946623
                          - 45.00340239588935
                        - - -0.985342537967869
                          - 45.00449519178736
                        - - -0.980309759277953
                          - 45.01163518250459
                        - - -0.980348018796634
                          - 45.011994422389044
                        - - -0.979856284351437
                          - 45.01222838429296
                        - - -0.977923715188636
                          - 45.01454230804636
                        - - -0.977887067040306
                          - 45.01474195353382
                        - - -0.978054115497679
                          - 45.01530393822708
                        - - -0.982246041608568
                          - 45.02277182945791
                        - - -0.984552804454107
                          - 45.02410462890462
                        - - -0.988048171679499
                          - 45.025881609105234
                        - - -0.998116823414126
                          - 45.031578545676204
                        - - -0.993934312583997
                          - 45.03657001131855
                        - - -0.994048772076369
                          - 45.03692651757182
                        - - -0.992169998751154
                          - 45.04017636147238
                        - - -0.991894174028389
                          - 45.04023133328951
                        - - -0.988884275217912
                          - 45.04581158534811
                        - - -0.98626098059235
                          - 45.04576133385034
                        - - -0.977590770482673
                          - 45.053310839442744
                        - - -0.967576417437787
                          - 45.05772512677965
                        - - -0.96497129116059
                          - 45.06206413601458
                        - - -0.960616210892826
                          - 45.065410559696815
                        - - -0.960629588094643
                          - 45.06559940389966
                        - - -0.959233121136054
                          - 45.06564006008419
                        - - -0.95832071548912
                          - 45.065510230121006
                        - - -0.95744451319216
                          - 45.065532364743646
                        - - -0.955681927056781
                          - 45.06543273156997
                        - - -0.954185853572589
                          - 45.065503909226585
                        - - -0.951358043384547
                          - 45.06581165994418
                        - - -0.949361981789194
                          - 45.06582839530593
                        - - -0.949143098345151
                          - 45.06597138746374
                        - - -0.948972418142839
                          - 45.06589630511472
                        - - -0.948500365677686
                          - 45.06587698738471
                        - - -0.946814569188671
                          - 45.06614411240745
                        - - -0.945702964336162
                          - 45.06643593881787
                        - - -0.94445239641693
                          - 45.06656138930063
                        - - -0.94212005021044
                          - 45.066139150811395
                        - - -0.939816904131487
                          - 45.06595022470315
                        - - -0.93729749040169
                          - 45.065218978500255
                        - - -0.924454340500604
                          - 45.06057895234887
                        - - -0.923811080404775
                          - 45.06047541721529
                        - - -0.922400495223345
                          - 45.05958756665301
                        - - -0.911723509798335
                          - 45.05733089567757
              properties:
                type: object
                properties:
                  id:
                    type: string
                    example: 4762789835398144
                  name:
                    type: string
                    example: CC Médullienne
                  zoneType:
                    $ref: '#/components/schemas/MapsZone-Type'
                  indicator:
                    $ref: '#/components/schemas/PropertyIndicator'
                example:
                  id: 4762789835398144
                  name: CC Médullienne
                  zoneType: AGGLOMERATION
                  indicator:
                    value: 9841.39
                    bounds:
                      min: 8257.26
                      low: 9157.83
                      mid: 9841.39
                      high: 10576.26
                      max: 11734.03
                    reliability:
                      methods:
                        - name: MARKET_INDICATOR
                          score: 65
                          weight: 1
                      score: 65
                    growths: []
    Field-Numeric-Property:
      type: string
      enum:
        - PRICE
        - PRICE_HC
        - PRICE_CC
        - PRICE_M2
        - PRICE_M2_HC
        - PRICE_M2_CC
        - PRICE_EVENTS_RANGE_PRICE
        - PRICE_EVENTS_RANGE_PRICE_M2
        - PRICE_EVENTS_COUNT
        - SURFACE
        - ROOM_COUNT
        - DURATION_DAYS
        - MARKETING_DAYS
        - FEES_PERCENT
        - GROSS_RENTAL_YIELD
        - NEGOTIATION_MARGIN
        - CONSTRUCTION_YEAR
      example: PRICE_M2
    Percentiles:
      type: object
      properties:
        count:
          type: integer
          format: int64
          minimum: 0
          example: 7568
          description: Nombre d'observations
        values:
          type: object
          additionalProperties:
            type: number
            format: double
          example:
            '25.0': 1419.69
            '50.0': 1755.62
            '75.0': 2102.72
          description: Percentiles
        growths:
          type: array
          items:
            $ref: '#/components/schemas/Growth'
          description: |
            Indicateurs de croissance du percentile par rapport aux points précédents
            (présents uniquement lors d'une requête d'évolution avec un seul percentile)
        forecast:
          type: boolean
          example: false
          description: Indique si les valeurs sont des prévisions ou non
        reliability:
          $ref: '#/components/schemas/Reliability'
    MapsResponse:
      type: object
      properties:
        type:
          type: string
          example: FeatureCollection
        features:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                example: Feature
              geometry:
                type: object
                properties:
                  type:
                    type: string
                    example: Polygon
                  coordinates:
                    type: array
                    items:
                      type: array
                      items:
                        type: array
                        items:
                          type: number
                          format: double
                    example:
                      - - - -0.911723509798335
                          - 45.05733089567757
                        - - -0.911055975124278
                          - 45.05760676970961
                        - - -0.904103702869576
                          - 45.06205176416576
                        - - -0.899065711926672
                          - 45.06587034378504
                        - - -0.897691193189008
                          - 45.06841559739828
                        - - -0.897584349390904
                          - 45.06870781423648
                        - - -0.897617728324259
                          - 45.0690041372114
                        - - -0.897496311598921
                          - 45.069269819423255
                        - - -0.886581537775204
                          - 45.08739258863063
                        - - -0.8839033400713
                          - 45.08767532682092
                        - - -0.880838838624768
                          - 45.08661021982145
                        - - -0.87959371326573
                          - 45.08645527276011
                        - - -0.87884327684685
                          - 45.086093773174575
                        - - -0.878169232495036
                          - 45.085549312412624
                        - - -0.873901219141742
                          - 45.08327286900472
                        - - -0.872463128170905
                          - 45.082718892462616
                        - - -0.871331971926177
                          - 45.08237058378576
                        - - -0.871490076901397
                          - 45.08134641794644
                        - - -0.870973941832136
                          - 45.08050795643455
                        - - -0.87050663123155
                          - 45.080190652737386
                        - - -0.870494033977922
                          - 45.07964118984329
                        - - -0.870055855370725
                          - 45.07937696072173
                        - - -0.868953280088036
                          - 45.07907271158247
                        - - -0.868730386692193
                          - 45.07824208320988
                        - - -0.86835680714906
                          - 45.07762402868736
                        - - -0.867577692186378
                          - 45.07702907362786
                        - - -0.867390293313902
                          - 45.075791547924055
                        - - -0.867004173075212
                          - 45.07554353005832
                        - - -0.8662354212423
                          - 45.0752817525987
                        - - -0.865106833314341
                          - 45.0745997540166
                        - - -0.86308457668039
                          - 45.07276782576095
                        - - -0.862171568837982
                          - 45.072258615457116
                        - - -0.860916877630845
                          - 45.07195956990113
                        - - -0.859102943371349
                          - 45.07222077567851
                        - - -0.856022584722102
                          - 45.07238158055216
                        - - -0.854127831009488
                          - 45.07276269342302
                        - - -0.85351584932331
                          - 45.07292810879603
                        - - -0.852483196188203
                          - 45.073450632618695
                        - - -0.847667949474177
                          - 45.07428420770231
                        - - -0.845488254072831
                          - 45.0749634827863
                        - - -0.843849664442419
                          - 45.075371627469146
                        - - -0.840352257123899
                          - 45.07650193350128
                        - - -0.838523259368735
                          - 45.076546965763896
                        - - -0.83074030466215
                          - 45.07603972448953
                        - - -0.82839385499329
                          - 45.07651705831525
                        - - -0.827380932389961
                          - 45.07565944013039
                        - - -0.826299739144128
                          - 45.07529094336581
                        - - -0.82447585213474
                          - 45.075038091971855
                        - - -0.824498187393533
                          - 45.07350486040534
                        - - -0.821750295957835
                          - 45.07331975695838
                        - - -0.821217837833441
                          - 45.0733470449371
                        - - -0.821019560858345
                          - 45.074913353543344
                        - - -0.82060057592497
                          - 45.07641511875469
                        - - -0.821577428757735
                          - 45.078049279478535
                        - - -0.821537399512124
                          - 45.07951100068176
                        - - -0.822986026295999
                          - 45.080786412116495
                        - - -0.823759692106181
                          - 45.08223823046167
                        - - -0.824210885800308
                          - 45.083439697686956
                        - - -0.824675705893198
                          - 45.08539791607215
                        - - -0.824272415404404
                          - 45.087872729620905
                        - - -0.824350046018766
                          - 45.088077398247655
                        - - -0.825011745858464
                          - 45.08882091139745
                        - - -0.824996876445735
                          - 45.09102096870935
                        - - -0.824874451550525
                          - 45.09127757977062
                        - - -0.825803069691341
                          - 45.095176030988775
                        - - -0.825688411362216
                          - 45.095360259872635
                        - - -0.823295072578411
                          - 45.09628078215359
                        - - -0.823668894049687
                          - 45.096907983972066
                        - - -0.823052251376559
                          - 45.09701027909016
                        - - -0.824195805269714
                          - 45.10014414951256
                        - - -0.817982027950691
                          - 45.10141197676993
                        - - -0.815839228796046
                          - 45.1017197685401
                        - - -0.814817086893072
                          - 45.099798626102675
                        - - -0.802818979658626
                          - 45.101732271044746
                        - - -0.804035085804096
                          - 45.104638478701446
                        - - -0.803822868525295
                          - 45.10469981101798
                        - - -0.803354680340805
                          - 45.10530173389151
                        - - -0.803328824845495
                          - 45.10548290553098
                        - - -0.803033369911535
                          - 45.10581751112578
                        - - -0.802979819834606
                          - 45.10615287363243
                        - - -0.801665297620075
                          - 45.10722538105779
                        - - -0.800652008622496
                          - 45.10842281331434
                        - - -0.800661185195656
                          - 45.10855771694205
                        - - -0.800917787510868
                          - 45.10877432489533
                        - - -0.800863462550606
                          - 45.10891139473579
                        - - -0.800428122880041
                          - 45.10906146094739
                        - - -0.800156488018619
                          - 45.10974680878731
                        - - -0.799068467149472
                          - 45.11059521028076
                        - - -0.797624100987232
                          - 45.110509230246485
                        - - -0.797617175024585
                          - 45.110969202299934
                        - - -0.797561005933791
                          - 45.11107928981273
                        - - -0.797411039451643
                          - 45.11112045848443
                        - - -0.794706695478678
                          - 45.11085201267277
                        - - -0.789269240584619
                          - 45.1106404231491
                        - - -0.789221201109439
                          - 45.11124602066471
                        - - -0.789966179639646
                          - 45.113032577156886
                        - - -0.78997422167234
                          - 45.11333879305824
                        - - -0.789215179026571
                          - 45.113409678769
                        - - -0.787365623859378
                          - 45.11129107755715
                        - - -0.781502158228196
                          - 45.11061582766291
                        - - -0.78001074247751
                          - 45.11077460415072
                        - - -0.779549321808307
                          - 45.11091645694899
                        - - -0.779479807712803
                          - 45.11101797246641
                        - - -0.777946763131563
                          - 45.11150264849117
                        - - -0.776126776764579
                          - 45.1113209531931
                        - - -0.775945755560966
                          - 45.11259810604703
                        - - -0.776118360523503
                          - 45.11326833089251
                        - - -0.776067009751854
                          - 45.11345035739913
                        - - -0.769876375854109
                          - 45.11339855042538
                        - - -0.769447623011025
                          - 45.111006241874215
                        - - -0.767203185823787
                          - 45.1113255305969
                        - - -0.766586249489263
                          - 45.111238215275314
                        - - -0.765645173186634
                          - 45.111441293172454
                        - - -0.764713786441865
                          - 45.111788263595884
                        - - -0.764346706152584
                          - 45.112197292118516
                        - - -0.763372079358611
                          - 45.11001270849628
                        - - -0.761855614829954
                          - 45.107530917084134
                        - - -0.760703949556599
                          - 45.10498271313036
                        - - -0.759809443590228
                          - 45.10341738714885
                        - - -0.75921255305601
                          - 45.10305893192096
                        - - -0.756647290276461
                          - 45.10068458447382
                        - - -0.754777533981259
                          - 45.10051324783213
                        - - -0.75445099775141
                          - 45.100389040016566
                        - - -0.753909209588158
                          - 45.09990250357335
                        - - -0.752519672326837
                          - 45.09911099923896
                        - - -0.75133391264331
                          - 45.09870022588366
                        - - -0.749820425201614
                          - 45.0983365288378
                        - - -0.749684992319245
                          - 45.09821488940532
                        - - -0.748967875622547
                          - 45.09795958596507
                        - - -0.748118987762285
                          - 45.097447301823216
                        - - -0.746948405879065
                          - 45.09707203010645
                        - - -0.746093521320289
                          - 45.09646979224641
                        - - -0.745201685109252
                          - 45.09626541180003
                        - - -0.743667032716264
                          - 45.096344037665325
                        - - -0.74284532308122
                          - 45.09623643716564
                        - - -0.742281741482077
                          - 45.09637255437003
                        - - -0.743017119854492
                          - 45.09595122783451
                        - - -0.74615071890415
                          - 45.09466504552594
                        - - -0.749229791782824
                          - 45.09313722446923
                        - - -0.749841120795993
                          - 45.09276509587823
                        - - -0.750832750524071
                          - 45.09237114458445
                        - - -0.751892095657431
                          - 45.09184870530809
                        - - -0.751803857802341
                          - 45.09148209764767
                        - - -0.75215940465487
                          - 45.09109152782304
                        - - -0.752332362489367
                          - 45.090634994623365
                        - - -0.751300953796136
                          - 45.09024607054136
                        - - -0.750593588202832
                          - 45.090134678913664
                        - - -0.750614711561967
                          - 45.09044946216162
                        - - -0.750490159168039
                          - 45.09048971247912
                        - - -0.750024656061655
                          - 45.090189890787606
                        - - -0.745757230347013
                          - 45.09107263411224
                        - - -0.739949112297758
                          - 45.091943850259504
                        - - -0.738683077798732
                          - 45.09185113885194
                        - - -0.739131993421852
                          - 45.09095269201886
                        - - -0.739609595661151
                          - 45.089151873254536
                        - - -0.739721211243185
                          - 45.08796728326948
                        - - -0.740112675373181
                          - 45.08697160600959
                        - - -0.738539043241357
                          - 45.08684415503734
                        - - -0.73772657042624
                          - 45.08668212774137
                        - - -0.738123196933136
                          - 45.08481192263302
                        - - -0.736524840408002
                          - 45.084694289337975
                        - - -0.736282282530483
                          - 45.085062988023566
                        - - -0.735784151349751
                          - 45.08503462697254
                        - - -0.735554650305653
                          - 45.08445641228094
                        - - -0.735564707887421
                          - 45.08346453134616
                        - - -0.735625178527109
                          - 45.08341743296226
                        - - -0.736202471874818
                          - 45.0834882088464
                        - - -0.736581943568582
                          - 45.082312667781636
                        - - -0.73446873310994
                          - 45.08191481711589
                        - - -0.734771682414203
                          - 45.08168832181296
                        - - -0.735059005082308
                          - 45.08122798506403
                        - - -0.73531462058703
                          - 45.07991237872816
                        - - -0.736149127839043
                          - 45.07907312372249
                        - - -0.735980184514472
                          - 45.07825851526271
                        - - -0.735976866566914
                          - 45.07744736468465
                        - - -0.735057504299938
                          - 45.07739707717153
                        - - -0.735051495447432
                          - 45.077307138556705
                        - - -0.735910225223358
                          - 45.07625974991046
                        - - -0.735230256847702
                          - 45.07617439107048
                        - - -0.733916089331865
                          - 45.07497453003177
                        - - -0.733378294837629
                          - 45.07320778963267
                        - - -0.734445695919666
                          - 45.07319002598968
                        - - -0.735279743798485
                          - 45.073297262003834
                        - - -0.735268401621371
                          - 45.072937082216924
                        - - -0.735810803326987
                          - 45.07229692006066
                        - - -0.73592337862781
                          - 45.07188751286482
                        - - -0.736063597562278
                          - 45.07189182237667
                        - - -0.736406719805361
                          - 45.0707445444894
                        - - -0.736196645321473
                          - 45.07007554307095
                        - - -0.736689904631076
                          - 45.069842655011044
                        - - -0.736964784935271
                          - 45.07014892036955
                        - - -0.737462851234626
                          - 45.069987979555954
                        - - -0.736253004297699
                          - 45.06806352953152
                        - - -0.736813310103812
                          - 45.06788247463707
                        - - -0.73742685041736
                          - 45.067546391846506
                        - - -0.737482559900309
                          - 45.067238045695866
                        - - -0.737312964221995
                          - 45.06660374422363
                        - - -0.737063017644265
                          - 45.06590904167467
                        - - -0.736944589581286
                          - 45.06584991856922
                        - - -0.736240494553183
                          - 45.06597270195421
                        - - -0.736110577903706
                          - 45.06593199149371
                        - - -0.735384471983773
                          - 45.06515410903549
                        - - -0.735021313654411
                          - 45.0650491104281
                        - - -0.7340187242594
                          - 45.06508273913036
                        - - -0.733187121542361
                          - 45.06520076551144
                        - - -0.731286623776128
                          - 45.06626502289637
                        - - -0.730438106213742
                          - 45.066320497112905
                        - - -0.730255210583758
                          - 45.06586691267073
                        - - -0.729799019449761
                          - 45.065701916320315
                        - - -0.728774878199134
                          - 45.06293288067473
                        - - -0.729032383583018
                          - 45.062789046924586
                        - - -0.729487443048933
                          - 45.06274676245407
                        - - -0.730479012135629
                          - 45.06292987744086
                        - - -0.730744044318398
                          - 45.06347084822572
                        - - -0.730873951349775
                          - 45.06351156491726
                        - - -0.731457122277358
                          - 45.06348300738086
                        - - -0.731735803157675
                          - 45.06327535976117
                        - - -0.732063873160016
                          - 45.06342661445936
                        - - -0.732391428813962
                          - 45.063379578201456
                        - - -0.732329429403088
                          - 45.06283180465291
                        - - -0.732658515171116
                          - 45.06204557090005
                        - - -0.733003719917078
                          - 45.061691465952634
                        - - -0.732961528753405
                          - 45.06144048955556
                        - - -0.732358570590525
                          - 45.06117225827548
                        - - -0.73166361351821
                          - 45.061240624123926
                        - - -0.731123425692105
                          - 45.06115056157662
                        - - -0.730988812428361
                          - 45.0608485984109
                        - - -0.730286658391615
                          - 45.06080902952438
                        - - -0.730078817953221
                          - 45.060743881695736
                        - - -0.729493557567677
                          - 45.060168568584466
                        - - -0.729193292441524
                          - 45.06005243171616
                        - - -0.728411914429983
                          - 45.06015972814777
                        - - -0.727441483746568
                          - 45.06010208409683
                        - - -0.726738845523614
                          - 45.0598642030223
                        - - -0.727063796546823
                          - 45.059015029360474
                        - - -0.727197988288169
                          - 45.058929411396306
                        - - -0.727108497798795
                          - 45.05567838052291
                        - - -0.727221001666781
                          - 45.05545827963871
                        - - -0.72696133303355
                          - 45.05518754201629
                        - - -0.726701563494037
                          - 45.055106099536054
                        - - -0.726556696996871
                          - 45.054840531697245
                        - - -0.726584183783533
                          - 45.05429877659466
                        - - -0.726241411541868
                          - 45.05354406843529
                        - - -0.725963076473107
                          - 45.053183814831
                        - - -0.72518739660496
                          - 45.05299344186973
                        - - -0.723578199423513
                          - 45.05136168383914
                        - - -0.722556329452682
                          - 45.050719820786
                        - - -0.721938214969877
                          - 45.0498391024161
                        - - -0.721782852607136
                          - 45.04903304826748
                        - - -0.722111525820445
                          - 45.04804855928062
                        - - -0.722516074445463
                          - 45.047440114415586
                        - - -0.722566693836459
                          - 45.04667224199943
                        - - -0.723574633041101
                          - 45.04424083524826
                        - - -0.723855122964777
                          - 45.04291542519814
                        - - -0.723895654631309
                          - 45.041805362775165
                        - - -0.72374975186892
                          - 45.04133250950389
                        - - -0.72375177465252
                          - 45.04098090095498
                        - - -0.723969267940557
                          - 45.038900434264285
                        - - -0.724888097584053
                          - 45.03876151782736
                        - - -0.724946352180065
                          - 45.038299860694615
                        - - -0.724567285399809
                          - 45.03680723266848
                        - - -0.72354227803452
                          - 45.03477736121507
                        - - -0.723011200926007
                          - 45.03405599473166
                        - - -0.722675781860694
                          - 45.03340920553743
                        - - -0.722773530759282
                          - 45.03258567565663
                        - - -0.723439641986601
                          - 45.03170707343067
                        - - -0.723742962826549
                          - 45.031489604907314
                        - - -0.723854347139314
                          - 45.03106222669329
                        - - -0.720734106570206
                          - 45.03135589494339
                        - - -0.718935104701654
                          - 45.03106449587287
                        - - -0.717223574645343
                          - 45.03094140865975
                        - - -0.71571723488913
                          - 45.0310367887081
                        - - -0.714188653931172
                          - 45.0309886699194
                        - - -0.711945013106542
                          - 45.031658447229034
                        - - -0.711569277879439
                          - 45.03174309075799
                        - - -0.711098193939426
                          - 45.03173176141366
                        - - -0.71157108923924
                          - 45.03100390044304
                        - - -0.711817001855202
                          - 45.030878518519074
                        - - -0.713130854839851
                          - 45.030564270036294
                        - - -0.715218656339519
                          - 45.029845587736204
                        - - -0.715732236560912
                          - 45.029539997135515
                        - - -0.716305183302042
                          - 45.028980034857724
                        - - -0.71813185692632
                          - 45.02758496692782
                        - - -0.719143607021062
                          - 45.02731679412142
                        - - -0.719354214794989
                          - 45.02666075985478
                        - - -0.719693904697887
                          - 45.026225755063486
                        - - -0.720590082678683
                          - 45.024411056062625
                        - - -0.721741626607081
                          - 45.02261484805643
                        - - -0.7216410138203
                          - 45.02224864742643
                        - - -0.721374947114381
                          - 45.02187896737154
                        - - -0.721415027819164
                          - 45.0215260881725
                        - - -0.721279366007413
                          - 45.02120612887123
                        - - -0.719043681521999
                          - 45.02064992116877
                        - - -0.718034706880345
                          - 45.02057547989377
                        - - -0.716720606548689
                          - 45.01992532792971
                        - - -0.714845454002492
                          - 45.01943811781057
                        - - -0.715471417448341
                          - 45.01891244293797
                        - - -0.715769782359635
                          - 45.018812340146845
                        - - -0.716010854462212
                          - 45.01861499877511
                        - - -0.71616150817038
                          - 45.01820434669405
                        - - -0.715836377957611
                          - 45.01694426561403
                        - - -0.71581157809245
                          - 45.016187937660135
                        - - -0.715533180852883
                          - 45.015440080377324
                        - - -0.714728211420451
                          - 45.01479994563987
                        - - -0.713736344214125
                          - 45.01383253682636
                        - - -0.713712023611963
                          - 45.01327449645621
                        - - -0.714435764244382
                          - 45.01192531092607
                        - - -0.715382801473794
                          - 45.01145200922296
                        - - -0.71590411427628
                          - 45.01107404540123
                        - - -0.716023877397161
                          - 45.010772590672175
                        - - -0.715316473975377
                          - 45.008921361659304
                        - - -0.714939391757974
                          - 45.0086004479126
                        - - -0.714992635805709
                          - 45.008445436005765
                        - - -0.715511817534228
                          - 45.0076529125134
                        - - -0.716083209229044
                          - 45.00726426040759
                        - - -0.717239108656595
                          - 45.00668481084713
                        - - -0.7186199910092
                          - 45.0054758778153
                        - - -0.718922461389527
                          - 45.00543872338561
                        - - -0.718941294048023
                          - 45.00438348452292
                        - - -0.718828652511393
                          - 45.004026700859576
                        - - -0.718495122783538
                          - 45.00359617878462
                        - - -0.718448392181996
                          - 45.003083957583506
                        - - -0.718275955714844
                          - 45.00278325531263
                        - - -0.718312326246604
                          - 45.002565709486014
                        - - -0.719785786473648
                          - 45.00083988029808
                        - - -0.720245854029981
                          - 45.000689285173834
                        - - -0.720412691174216
                          - 45.00033216786176
                        - - -0.72197870732126
                          - 44.9990448841509
                        - - -0.723078289116926
                          - 44.998386128565635
                        - - -0.723266151242399
                          - 44.99815449512279
                        - - -0.723715873143359
                          - 44.99708482749789
                        - - -0.723742275968056
                          - 44.996335801429716
                        - - -0.724817410519672
                          - 44.9960744508651
                        - - -0.725805709263917
                          - 44.99565375118648
                        - - -0.726530910030232
                          - 44.99509763898542
                        - - -0.726948302109738
                          - 44.994497755763035
                        - - -0.727374565581643
                          - 44.99422206919017
                        - - -0.727670482545541
                          - 44.99389666779891
                        - - -0.728422690940623
                          - 44.99355596741168
                        - - -0.728984673006597
                          - 44.993410930302844
                        - - -0.729546745855487
                          - 44.993076597816966
                        - - -0.73029344774069
                          - 44.99284423420771
                        - - -0.731800020866265
                          - 44.992577352826395
                        - - -0.732602884533616
                          - 44.9922349228523
                        - - -0.732905356502513
                          - 44.992008438072084
                        - - -0.733011795344804
                          - 44.99150910603256
                        - - -0.734916923988024
                          - 44.99055276461959
                        - - -0.735709011461981
                          - 44.989859134335425
                        - - -0.736183634156216
                          - 44.98916715187235
                        - - -0.736630888028126
                          - 44.98901691537343
                        - - -0.737672736239466
                          - 44.98845008337556
                        - - -0.738935293722529
                          - 44.98833552415855
                        - - -0.740939632076136
                          - 44.9879165669582
                        - - -0.745082894933307
                          - 44.98662331572999
                        - - -0.754603735172776
                          - 44.96665196799747
                        - - -0.762684543340601
                          - 44.96124979556571
                        - - -0.762800946657747
                          - 44.96109261850682
                        - - -0.763216549261171
                          - 44.96104249070356
                        - - -0.76346083105145
                          - 44.96089901037516
                        - - -0.786402972746276
                          - 44.94568832633606
                        - - -0.794102400526922
                          - 44.94542566225567
                        - - -0.794781964443144
                          - 44.94533935529412
                        - - -0.794889235737555
                          - 44.94523653717965
                        - - -0.795039341333584
                          - 44.94426691071204
                        - - -0.79644499628148
                          - 44.93391587968898
                        - - -0.796310945931893
                          - 44.93362299947551
                        - - -0.796428232498921
                          - 44.932357032679775
                        - - -0.797353469754623
                          - 44.926159841558196
                        - - -0.79727298056353
                          - 44.92572090879169
                        - - -0.797576051258479
                          - 44.925512238981575
                        - - -0.797735932884864
                          - 44.92319018137725
                        - - -0.798132841219542
                          - 44.92024706900701
                        - - -0.798471660650507
                          - 44.91869409298612
                        - - -0.806100522248863
                          - 44.920623288216284
                        - - -0.806508624478659
                          - 44.92065437079093
                        - - -0.821771636873566
                          - 44.92456509551887
                        - - -0.832375166069595
                          - 44.925065063217396
                        - - -0.832657917142031
                          - 44.92418994615445
                        - - -0.833133606878906
                          - 44.923353240053885
                        - - -0.833288169141214
                          - 44.92264480046551
                        - - -0.833648843825319
                          - 44.92235291151736
                        - - -0.833914535403394
                          - 44.92048682188379
                        - - -0.834555001509343
                          - 44.918535678293594
                        - - -0.834802698767495
                          - 44.91807641692449
                        - - -0.836385532948204
                          - 44.91339748079352
                        - - -0.836999673096548
                          - 44.91254695801525
                        - - -0.836992634128444
                          - 44.91225874827194
                        - - -0.842374847662454
                          - 44.89694686128107
                        - - -0.842785092631201
                          - 44.89571575091374
                        - - -0.842749929720225
                          - 44.89557274193722
                        - - -0.866180956222282
                          - 44.88427553845634
                        - - -0.874052501407526
                          - 44.884974582907546
                        - - -0.884020093674325
                          - 44.88572594222441
                        - - -0.884093693755788
                          - 44.885507022177606
                        - - -0.88302198245861
                          - 44.87607046914343
                        - - -0.883159007273914
                          - 44.875669044365736
                        - - -0.881235098972126
                          - 44.857572592737014
                        - - -0.881155509485496
                          - 44.85752129196646
                        - - -0.884795865462748
                          - 44.84987597280146
                        - - -0.884893883056342
                          - 44.84982746839413
                        - - -0.921803934352376
                          - 44.841253815287615
                        - - -0.922018022436974
                          - 44.841597806615596
                        - - -0.925031208698756
                          - 44.841383024917114
                        - - -0.925749238110067
                          - 44.840960972569526
                        - - -0.928845439944252
                          - 44.83976056992697
                        - - -0.930127068527193
                          - 44.839426691606285
                        - - -0.931200082109043
                          - 44.83937062818332
                        - - -0.932054501271931
                          - 44.839087929150665
                        - - -0.932426764492773
                          - 44.83879527941269
                        - - -0.933379754698604
                          - 44.83847301609422
                        - - -0.934702360416834
                          - 44.838362991887415
                        - - -0.937514469427871
                          - 44.83745186675228
                        - - -0.938184369183572
                          - 44.83670691610612
                        - - -0.939419159862607
                          - 44.835887806088145
                        - - -0.942754906316643
                          - 44.83449819559863
                        - - -0.943176369145916
                          - 44.83418572862933
                        - - -0.94320480160706
                          - 44.834229790142984
                        - - -0.94329136745228
                          - 44.83419966798401
                        - - -0.943865105795126
                          - 44.83371050650247
                        - - -0.944482430158782
                          - 44.833481212727705
                        - - -0.947917144817977
                          - 44.832782038205494
                        - - -0.949171976104856
                          - 44.832611147248436
                        - - -0.950668759473448
                          - 44.832098082015484
                        - - -0.951749185706827
                          - 44.83196943362777
                        - - -0.952634992901356
                          - 44.83177559619052
                        - - -0.953867622668196
                          - 44.83128993194847
                        - - -0.955198221206811
                          - 44.831116269120585
                        - - -0.956225501429311
                          - 44.83077312175122
                        - - -0.958182781232748
                          - 44.830324649999675
                        - - -0.959666246259634
                          - 44.830163504024085
                        - - -0.960174865255026
                          - 44.83019041103527
                        - - -0.960673335131324
                          - 44.830073444401684
                        - - -0.961291872617023
                          - 44.830042331845604
                        - - -1.00638738298686
                          - 44.82981921499032
                        - - -1.006470453596277
                          - 44.83009567440868
                        - - -1.040593906069565
                          - 44.84885278564973
                        - - -1.044331257842017
                          - 44.840747169003336
                        - - -1.045753508489275
                          - 44.83744983752588
                        - - -1.045869186195913
                          - 44.83676948177264
                        - - -1.046922223271057
                          - 44.834504314581345
                        - - -1.047130864263771
                          - 44.833532080069574
                        - - -1.04815265382575
                          - 44.83048372411378
                        - - -1.050092490083643
                          - 44.82348024438339
                        - - -1.083317862670966
                          - 44.82868926202289
                        - - -1.141790097037935
                          - 44.8244645323915
                        - - -1.146886027329556
                          - 44.82399452656047
                        - - -1.14935621373579
                          - 44.822793157892164
                        - - -1.151878821724982
                          - 44.82110291866071
                        - - -1.155153229404264
                          - 44.8194745940311
                        - - -1.156577988806108
                          - 44.819213812196644
                        - - -1.167553085832853
                          - 44.81348237605792
                        - - -1.172473648650451
                          - 44.81305380880922
                        - - -1.173988650132506
                          - 44.81298774536257
                        - - -1.194915078502972
                          - 44.81115177906796
                        - - -1.196419252763273
                          - 44.81094156098544
                        - - -1.196903084376835
                          - 44.810806031667234
                        - - -1.197034882739363
                          - 44.8101969713497
                        - - -1.197375213757672
                          - 44.81017506577925
                        - - -1.224601276650731
                          - 44.80876183324323
                        - - -1.227335943391948
                          - 44.80874770864281
                        - - -1.231982400769209
                          - 44.809228541665554
                        - - -1.232464776670103
                          - 44.80907487674841
                        - - -1.232351659376352
                          - 44.80992671670427
                        - - -1.232298899007493
                          - 44.81208359660962
                        - - -1.23175877908722
                          - 44.81466481605626
                        - - -1.230620773709716
                          - 44.82141630235077
                        - - -1.23037769471392
                          - 44.82256162026226
                        - - -1.229791766394671
                          - 44.824369187177965
                        - - -1.229428042714646
                          - 44.82677235817393
                        - - -1.227820026882274
                          - 44.83452451961265
                        - - -1.227087912273486
                          - 44.83658108373642
                        - - -1.226865469641713
                          - 44.83884361885045
                        - - -1.225871499025612
                          - 44.843651088798325
                        - - -1.22517077542795
                          - 44.846463806336104
                        - - -1.224952944229867
                          - 44.849294187829564
                        - - -1.224412820817011
                          - 44.85137948333916
                        - - -1.22417214090594
                          - 44.854075492195385
                        - - -1.223288510332136
                          - 44.85867136739241
                        - - -1.223073703968037
                          - 44.861375408057874
                        - - -1.222575625674977
                          - 44.863179590646055
                        - - -1.221759379183075
                          - 44.86867451918606
                        - - -1.2215880966068
                          - 44.87061052106568
                        - - -1.221033601035318
                          - 44.87318322805858
                        - - -1.220079731493326
                          - 44.87904403782609
                        - - -1.219959355438953
                          - 44.88132072341166
                        - - -1.219299801173454
                          - 44.884690853878794
                        - - -1.218867953898623
                          - 44.88872854789871
                        - - -1.218240104244492
                          - 44.89201632192926
                        - - -1.218063822694111
                          - 44.894394315238216
                        - - -1.217472180693322
                          - 44.89799628212026
                        - - -1.217148622132822
                          - 44.90145281681328
                        - - -1.2162494709494
                          - 44.90585990062152
                        - - -1.215963162397223
                          - 44.908801088660994
                        - - -1.215429858336187
                          - 44.91065166082124
                        - - -1.215088045151415
                          - 44.91285561425249
                        - - -1.215065338535293
                          - 44.914578601514414
                        - - -1.214531759286737
                          - 44.91625786890986
                        - - -1.213957990513245
                          - 44.92077881553086
                        - - -1.17733495518963
                          - 44.92062990953086
                        - - -1.168712222437302
                          - 44.92054824786548
                        - - -1.165984661873871
                          - 44.92021784479458
                        - - -1.165405214665798
                          - 44.92027564801502
                        - - -1.151192422276765
                          - 44.920275969019585
                        - - -1.127521188878059
                          - 44.920040435394775
                        - - -1.117863995047541
                          - 44.92038096230107
                        - - -1.113844554079524
                          - 44.92111597522613
                        - - -1.113590361022239
                          - 44.92076476152701
                        - - -1.111095026087488
                          - 44.92117272740042
                        - - -1.091878424429096
                          - 44.9157248418522
                        - - -1.089396302905172
                          - 44.91509504000846
                        - - -1.08615483374125
                          - 44.91292442129043
                        - - -1.085574521537975
                          - 44.91314412021526
                        - - -1.085394746448845
                          - 44.91311467316425
                        - - -1.073512351924903
                          - 44.90761005024371
                        - - -1.072809267598686
                          - 44.90753667589832
                        - - -1.064788137677306
                          - 44.917639473320996
                        - - -1.064489364994966
                          - 44.917893828070525
                        - - -1.063857870239534
                          - 44.91880947357128
                        - - -1.057484137248264
                          - 44.92541647794929
                        - - -1.057536428791484
                          - 44.92561290728786
                        - - -1.057443635823533
                          - 44.925733498523414
                        - - -1.053027896116129
                          - 44.93030329191403
                        - - -1.052788044426149
                          - 44.930321060162335
                        - - -1.052610528588083
                          - 44.93049883111766
                        - - -1.047229355947563
                          - 44.936122336196725
                        - - -1.046690203665453
                          - 44.93656570492918
                        - - -1.043890156569178
                          - 44.93751513009275
                        - - -1.043176006304962
                          - 44.93782060501142
                        - - -1.034685295882081
                          - 44.94065364053612
                        - - -1.033478873182496
                          - 44.94117526687146
                        - - -1.029065392030004
                          - 44.94387775749694
                        - - -1.028667343672242
                          - 44.94399136221475
                        - - -1.028410776333173
                          - 44.94430718765139
                        - - -1.027601361464903
                          - 44.94452585815892
                        - - -1.024240131682893
                          - 44.944918128745336
                        - - -1.024233147405711
                          - 44.945351116594125
                        - - -1.023260784203185
                          - 44.94542239681739
                        - - -1.011061708926112
                          - 44.9473780806627
                        - - -1.010496848240675
                          - 44.94729029032747
                        - - -1.010154535763615
                          - 44.947473936479646
                        - - -1.0059012494136
                          - 44.948177309643
                        - - -1.005360622458141
                          - 44.948250893127664
                        - - -1.005214264529577
                          - 44.94815700230868
                        - - -0.996112388599848
                          - 44.95047711070556
                        - - -0.980595799135371
                          - 44.95133161461268
                        - - -0.980750430359185
                          - 44.95154243628453
                        - - -0.981908267690927
                          - 44.95211397228949
                        - - -0.988649510873383
                          - 44.95817374607383
                        - - -0.988924436524038
                          - 44.958290089094326
                        - - -0.988921518409526
                          - 44.95860572374032
                        - - -0.994513898897096
                          - 44.97079169762105
                        - - -0.994713374051096
                          - 44.97145165349531
                        - - -0.994515010840875
                          - 44.97419039134709
                        - - -0.992915603408161
                          - 44.98382201947866
                        - - -0.990334587987503
                          - 44.990919521909376
                        - - -0.990475264095581
                          - 44.9909325034159
                        - - -0.990422799130136
                          - 44.99108764539305
                        - - -0.985900098946623
                          - 45.00340239588935
                        - - -0.985342537967869
                          - 45.00449519178736
                        - - -0.980309759277953
                          - 45.01163518250459
                        - - -0.980348018796634
                          - 45.011994422389044
                        - - -0.979856284351437
                          - 45.01222838429296
                        - - -0.977923715188636
                          - 45.01454230804636
                        - - -0.977887067040306
                          - 45.01474195353382
                        - - -0.978054115497679
                          - 45.01530393822708
                        - - -0.982246041608568
                          - 45.02277182945791
                        - - -0.984552804454107
                          - 45.02410462890462
                        - - -0.988048171679499
                          - 45.025881609105234
                        - - -0.998116823414126
                          - 45.031578545676204
                        - - -0.993934312583997
                          - 45.03657001131855
                        - - -0.994048772076369
                          - 45.03692651757182
                        - - -0.992169998751154
                          - 45.04017636147238
                        - - -0.991894174028389
                          - 45.04023133328951
                        - - -0.988884275217912
                          - 45.04581158534811
                        - - -0.98626098059235
                          - 45.04576133385034
                        - - -0.977590770482673
                          - 45.053310839442744
                        - - -0.967576417437787
                          - 45.05772512677965
                        - - -0.96497129116059
                          - 45.06206413601458
                        - - -0.960616210892826
                          - 45.065410559696815
                        - - -0.960629588094643
                          - 45.06559940389966
                        - - -0.959233121136054
                          - 45.06564006008419
                        - - -0.95832071548912
                          - 45.065510230121006
                        - - -0.95744451319216
                          - 45.065532364743646
                        - - -0.955681927056781
                          - 45.06543273156997
                        - - -0.954185853572589
                          - 45.065503909226585
                        - - -0.951358043384547
                          - 45.06581165994418
                        - - -0.949361981789194
                          - 45.06582839530593
                        - - -0.949143098345151
                          - 45.06597138746374
                        - - -0.948972418142839
                          - 45.06589630511472
                        - - -0.948500365677686
                          - 45.06587698738471
                        - - -0.946814569188671
                          - 45.06614411240745
                        - - -0.945702964336162
                          - 45.06643593881787
                        - - -0.94445239641693
                          - 45.06656138930063
                        - - -0.94212005021044
                          - 45.066139150811395
                        - - -0.939816904131487
                          - 45.06595022470315
                        - - -0.93729749040169
                          - 45.065218978500255
                        - - -0.924454340500604
                          - 45.06057895234887
                        - - -0.923811080404775
                          - 45.06047541721529
                        - - -0.922400495223345
                          - 45.05958756665301
                        - - -0.911723509798335
                          - 45.05733089567757
              properties:
                type: object
                properties:
                  id:
                    type: string
                    example: 4762789835398144
                  name:
                    type: string
                    example: CC Médullienne
                  zoneType:
                    $ref: '#/components/schemas/MapsZone-Type'
                  percentiles:
                    $ref: '#/components/schemas/Percentiles'
    PropertyIndicatorDateHistogramPoint:
      type: object
      properties:
        x:
          type: string
          format: date
          example: '2025-03-01'
          description: Date
        'y':
          $ref: '#/components/schemas/PropertyIndicator'
      example:
        x: '2025-03-01'
        'y':
          value: 9841.39
          bounds:
            min: 8257.26
            low: 9157.83
            mid: 9841.39
            high: 10576.26
            max: 11734.03
          reliability:
            methods:
              - name: MARKET_INDICATOR
                score: 65
                weight: 1
            score: 65
          growths:
            - type: INTERVAL
              lag: 1
              value: 52.51
              percent: 0.54
            - type: YEAR
              lag: 12
              value: 291.74
              percent: 3.05
            - type: CUMULATIVE
              lag: 110
              value: 126.29
              percent: 26.29
      description: Point
    PropertyIndicatorDateHistogram:
      type: object
      properties:
        points:
          type: array
          items:
            $ref: '#/components/schemas/PropertyIndicatorDateHistogramPoint'
          description: Liste de points
      description: Évolution d'un indicateur
    CountResponse:
      type: object
      properties:
        count:
          type: integer
          format: int64
          example: 64
    Field-Discrete-Property:
      type: string
      enum:
        - CRAWL_SOURCES
        - IRIS_ID
        - CITY_ID
        - AGGLOMERATION_ID
        - CITY_DEPT_CODE
        - DEALERS_TYPE
        - DEALERS_ID
        - MARKETING_TYPE
        - PROPERTY_TYPE
        - SURFACE
        - ROOM_COUNT
        - CONSTRUCTION_YEAR
        - ENERGY_CONSUMPTION_DIAGNOSIS_LETTER
    CountRangesByResponse:
      type: object
      properties:
        ranges:
          type: array
          items:
            type: object
            properties:
              range:
                $ref: '#/components/schemas/Range'
              count:
                $ref: '#/components/schemas/CountResponse'
    Average:
      type: object
      properties:
        count:
          type: integer
          format: int64
          minimum: 0
          example: 7568
          description: Nombre d'observations
        value:
          type: number
          format: double
          description: Moyenne
        growths:
          type: array
          items:
            $ref: '#/components/schemas/Growth'
          description: |
            Indicateurs de croissance de la moyenne par rapport aux points précédents
            (présents uniquement lors d'une requête d'évolution)
        reliability:
          type: number
          format: double
          minimum: 0
          maximum: 100
          example: 80
          description: Score de fiabilité
    Stats:
      type: object
      properties:
        count:
          type: integer
          format: int64
          minimum: 0
          example: 191524
          description: Nombre d'observations
        min:
          type: number
          format: double
          example: 1
          description: Minimum
        max:
          type: number
          format: double
          example: 29000
          description: Maximum
        avg:
          type: number
          format: double
          example: 700.4780763768509
          description: Moyenne
        sum:
          type: number
          format: double
          minimum: 0
          example: 1.341583631E
          description: Somme
        reliability:
          $ref: '#/components/schemas/Reliability'
    ConsumptionLetter:
      type: string
      enum:
        - A
        - B
        - C
        - D
        - E
        - F
        - G
      example: D
    ReliableZoneQuery:
      type: object
      properties:
        marketingType:
          description: Type de marché (vente, location, vente en viager)
          type: string
          enum:
            - SALE
            - RENT
            - LIFE_ANNUITY
          example: SALE
        propertyTypes:
          description: Types de bien (maison, appartement, terrain, parking, immeuble, local)
          type: array
          items:
            type: string
            enum:
              - HOUSE
              - APARTMENT
              - LAND
              - PARKING
              - BUILDING
              - PREMISES
        agglomerationId:
          description: Identifiant de l'agglomération. Requis si `zones` contient `AGGLOMERATION`.
          type: integer
          format: int64
        cityId:
          description: Identifiant de la ville. Requis si `zones` contient `CITY`.
          type: integer
          format: int64
        irisId:
          description: Identifiant de l'iris. Requis si `zones` contient `IRIS`.
          type: string
        zones:
          description: Types de zone possibles (iris, ville, agglomération)
          type: array
          items:
            type: string
            enum:
              - IRIS
              - CITY
              - AGGLOMERATION
        roomCounts:
          description: Nombre de pièces
          type: array
          items:
            type: integer
        newBuild:
          description: Nouvelles constructions
          type: boolean
        furnished:
          description: Biens meublés
          type: boolean
        dateMin:
          description: Date minimale (incluse) de suppression ou de fin de commercialisation des biens (YYYY-mm-ddTHH:mm:ss)
          type: string
          format: date-time
        dateMax:
          description: Date maximale (incluse) de suppression ou de fin de commercialisation des biens (YYYY-mm-ddTHH:mm:ss)
          type: string
          format: date-time
        source:
          description: Source des biens
          type: string
          enum:
            - AD
            - CLAMEUR
            - DVF
        field:
          description: Champ sur lequel sont calculées les statistiques.
          type: string
          default: PRICE_M2
          enum:
            - PRICE_M2
        anomalyLevelMax:
          description: Niveau d'anomalie maximal
          type: integer
          minimum: -1
          maximum: 3
          example: 1
        anomalyLevelMin:
          description: Niveau d'anomalie minimal
          type: integer
          minimum: -1
          maximum: 3
          example: 1
        energyConsumptionDiagnosisLetters:
          description: Classe de diagnostic de performance énergétique (DPE)
          type: array
          items:
            $ref: '#/components/schemas/ConsumptionLetter'
        greenhouseGasConsumptionDiagnosisLetters:
          description: Classe d'émission de gaz à effet de serre (GES)
          type: array
          items:
            $ref: '#/components/schemas/ConsumptionLetter'
    ReliableZone-zone:
      type: object
      properties:
        id:
          type: string
          example: 751062402
        type:
          type: string
          enum:
            - IRIS
            - CITY
            - AGGLOMERATION
          example: IRIS
        selected:
          type: boolean
          example: true
        eligible:
          type: boolean
          example: true
    ReliableZoneQuerySettings:
      type: object
      properties:
        roomCounts:
          type: array
          items:
            type: integer
            example: 3
        intervalUnit:
          type: string
          enum:
            - MONTHS
            - QUARTERS
            - YEARS
          example: QUARTERS
        dateMin:
          type: string
          format: date-time
        dateMax:
          type: string
          format: date-time
        source:
          type: string
          enum:
            - AD
            - CLAMEUR
            - DVF
          example: DVF
        field:
          type: string
          enum:
            - PRICE_M2
          example: PRICE_M2
    ReliableZone-reliability:
      type: object
      properties:
        reliable:
          type: boolean
          example: true
        score:
          type: integer
          format: int32
          minimum: 0
          maximum: 100
          example: 78
    ReliableZone:
      type: object
      properties:
        zones:
          type: array
          items:
            $ref: '#/components/schemas/ReliableZone-zone'
        query:
          $ref: '#/components/schemas/ReliableZoneQuerySettings'
        reliability:
          $ref: '#/components/schemas/ReliableZone-reliability'
    PercentilesHistogramPoint:
      type: object
      properties:
        x:
          type: string
          example: 0
        'y':
          $ref: '#/components/schemas/Percentiles'
    PercentilesHistogram:
      type: object
      properties:
        points:
          type: array
          items:
            $ref: '#/components/schemas/PercentilesHistogramPoint'
    DateHistogramPoint:
      type: object
      properties:
        x:
          type: string
          format: date
        'y':
          $ref: '#/components/schemas/Percentiles'
    DateHistogram:
      type: object
      properties:
        points:
          type: array
          items:
            $ref: '#/components/schemas/DateHistogramPoint'
          description: Liste de points
        type:
          type: string
          enum:
            - PERCENTILES
            - SUM
            - COUNT
            - AVERAGE
            - NONE
          example: PERCENTILES
          description: Type d'agrégation
    CountAgg:
      type: object
      properties:
        count:
          type: integer
          format: int64
          minimum: 0
          example: 7568
          description: Nombre d'observations
        value:
          type: integer
          format: int64
          example: 10068
          description: Nombre de valeurs présentes pour le champ demandé
        growths:
          type: array
          items:
            $ref: '#/components/schemas/Growth'
          description: |
            Indicateurs de croissance du nombre de valeurs présentes pour le champ demandé par rapport aux points précédents
            (présents uniquement lors d'une requête d'évolution)
    CountDateHistogramPoint:
      type: object
      properties:
        x:
          type: string
          format: date
        'y':
          $ref: '#/components/schemas/CountAgg'
      example:
        x: '2025-03-01'
        'y':
          count: 0
          growths: []
      description: Point
    CountDateHistogram:
      type: object
      properties:
        points:
          type: array
          items:
            $ref: '#/components/schemas/CountDateHistogramPoint'
          description: Liste de points
        type:
          type: string
          enum:
            - COUNT
          description: Type d'agrégation
    StockEvolution:
      type: object
      properties:
        in:
          $ref: '#/components/schemas/CountDateHistogram'
        out:
          $ref: '#/components/schemas/CountDateHistogram'
        global:
          $ref: '#/components/schemas/CountDateHistogram'
    Department:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        deptCode:
          type: string
        zipCode:
          type: string
        geometry:
          type: object
          format: GeoJsonObject
        centroid:
          $ref: '#/components/schemas/Location'
    Agglomeration:
      type: object
      properties:
        id:
          type: integer
          format: int64
        code:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
            - CC
            - CA
            - CU
            - METRO
            - SAN
        regionCode:
          type: string
        departmentCodes:
          type: array
          items:
            type: string
          example:
            - '75'
            - '92'
        centroid:
          $ref: '#/components/schemas/Location'
        geometry:
          type: object
          format: GeoJsonObject
        active:
          type: boolean
        years:
          type: array
          items:
            type: integer
    Quarter:
      type: object
      properties:
        id:
          type: number
          format: int64
        cityId:
          type: number
          format: int64
        deptCode:
          type: string
        name:
          type: string
        geometry:
          type: object
          format: GeoJsonObject
        centroid:
          $ref: '#/components/schemas/Location'
    City:
      type: object
      properties:
        id:
          type: integer
          format: int64
        inseeCode:
          type: string
        inseeCodeAssociated:
          type: string
        deptCode:
          type: string
        agglomerationId:
          type: string
        zipCodes:
          type: array
          items:
            type: string
        localities:
          type: array
          items:
            type: string
        name:
          type: string
        usageName:
          type: string
        previousNames:
          type: array
          items:
            type: string
        quarters:
          $ref: '#/components/schemas/Quarter'
        regionCode:
          type: string
        population:
          type: number
          format: double
        centroid:
          $ref: '#/components/schemas/Location'
        geometry:
          type: object
          format: GeoJsonObject
        actuality:
          type: string
          enum:
            - ACTIVE
            - DELEGATED
            - DISTRICT
    Zip-code:
      type: object
      properties:
        id:
          type: string
        cityId:
          type: number
          format: int64
        name:
          type: string
        geometry:
          type: object
          format: GeoJsonObject
        centroid:
          $ref: '#/components/schemas/Location'
    Iris:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        inseeCode:
          type: string
        cityId:
          type: number
          format: int64
        deptCode:
          type: string
        type:
          type: string
          enum:
            - HOUSING
            - ACTIVITY
            - VARIOUS
            - UNCUT
        geometry:
          type: object
          format: GeoJsonObject
        centroid:
          $ref: '#/components/schemas/Location'
    Parcel:
      type: object
      properties:
        id:
          type: string
        inseeCode:
          type: string
        number:
          type: string
        prefix:
          type: string
          example: '071'
        created:
          type: string
        updated:
          type: string
        section:
          type: string
          example: A
        surface:
          type: number
        geometry:
          type: object
          format: GeoJsonObject
    CensusStats-populationRange:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 0
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 14
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    CensusStats-activityRange:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 15
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 24
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    CensusStats-activity:
      type: object
      properties:
        agesPopulation:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-activityRange'
              count:
                type: integer
                format: int64
        ages:
          type: object
          properties:
            ACTIVE:
              type: array
              items:
                type: object
                properties:
                  category:
                    $ref: '#/components/schemas/CensusStats-activityRange'
                  count:
                    type: integer
                    format: int64
            ACTIVE_OCCUPIED:
              type: array
              items:
                type: object
                properties:
                  category:
                    $ref: '#/components/schemas/CensusStats-activityRange'
                  count:
                    type: integer
                    format: int64
        types:
          type: object
          properties:
            ACTIVE:
              type: array
              items:
                type: object
                properties:
                  category:
                    type: string
                    enum:
                      - FARMER
                      - ARTISAN
                      - CADRE
                      - INTERMEDIATE
                      - EMPLOYEE
                      - LABOR
                  count:
                    type: integer
                    format: int64
            ACTIVE_OCCUPIED:
              type: array
              items:
                type: object
                properties:
                  category:
                    type: string
                    enum:
                      - FARMER
                      - ARTISAN
                      - CADRE
                      - INTERMEDIATE
                      - EMPLOYEE
                      - LABOR
                  count:
                    type: integer
                    format: int64
        commuteTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - ON_FOOT
                  - BICYCLE
                  - MOTORCYCLE
                  - CAR
                  - PUBLIC_TRANSPORT
              count:
                type: integer
                format: int64
        locations:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - IN_CITY
                  - OUT_OF_CITY
                  - OUT_OF_COUNTRY
              count:
                type: integer
                format: int64
        retireesCount:
          type: integer
          format: int64
    CensusStats-educationRange:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 2
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 5
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    CensusStats-education:
      type: object
      properties:
        unschooledCount:
          type: integer
          format: int64
        agesPopulation:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-educationRange'
              count:
                type: integer
                format: int64
        agesSchooled:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-educationRange'
              count:
                type: integer
                format: int64
    CensusStats-population:
      type: object
      properties:
        populationCount:
          type: integer
          format: int64
        ages:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-populationRange'
              count:
                type: integer
                format: int64
        activityTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - FARMER
                  - ARTISAN
                  - CADRE
                  - INTERMEDIATE
                  - EMPLOYEE
                  - LABOR
                  - RETIRED
                  - UNEMPLOYED
              count:
                type: integer
                format: int64
        nationalities:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - NATIONALS
                  - FOREIGNERS
                  - IMMIGRANTS
              count:
                type: integer
                format: int64
        activity:
          $ref: '#/components/schemas/CensusStats-activity'
        education:
          $ref: '#/components/schemas/CensusStats-education'
    CensusStats-housingRoomCountRange:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 1
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 1
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    CensusStats-housingSurfacesRange:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 0
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 30
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    CensusStats-housing:
      type: object
      properties:
        housingsCount:
          type: integer
          format: int64
        propertyTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - APARTMENT
                  - HOUSE
                  - SOCIAL
              count:
                type: integer
                format: int64
        roomCounts:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-housingRoomCountRange'
              count:
                type: integer
                format: int64
        surfaces:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-housingSurfacesRange'
              count:
                type: integer
                format: int64
        occupationTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - MAIN
                  - SECONDARY
                  - VACANT
              count:
                type: integer
                format: int64
        occupationStatus:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - OWNER
                  - TENANT
                  - FREE
              count:
                type: integer
                format: int64
        mainPropertyTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - APARTMENT
                  - HOUSE
                  - SOCIAL
              count:
                type: integer
                format: int64
        mainConstructionDates:
          type: object
          properties:
            APARTMENT:
              type: array
              items:
                type: object
                properties:
                  category:
                    $ref: '#/components/schemas/CensusStats-housingRoomCountRange'
                  count:
                    type: integer
                    format: int64
            HOUSE:
              type: array
              items:
                type: object
                properties:
                  category:
                    $ref: '#/components/schemas/CensusStats-housingRoomCountRange'
                  count:
                    type: integer
                    format: int64
        mainNotStudioOvercrowdedCount:
          type: integer
          format: int64
    CensusStats-householdRange:
      type: object
      properties:
        lowerEndpoint:
          type: integer
          example: 0
        lowerBoundType:
          $ref: '#/components/schemas/BoundType'
        upperEndpoint:
          type: integer
          example: 2
        upperBoundType:
          $ref: '#/components/schemas/BoundType'
    CensusStats-household:
      type: object
      properties:
        householdsCount:
          type: integer
          format: int64
        peopleInHouseholdsCount:
          type: integer
          format: int64
        hasParkingCount:
          type: integer
          format: int64
        activityTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - FARMER
                  - ARTISAN
                  - CADRE
                  - INTERMEDIATE
                  - EMPLOYEE
                  - LABOR
                  - RETIRED
                  - UNEMPLOYED
              count:
                type: integer
                format: int64
        cohabitationModes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - SINGLE_PERSON
                  - OTHER_NON_FAMILY
                  - COUPLE_WITHOUT_CHILDREN
                  - COUPLE_WITH_CHILDREN
                  - SINGLE_PARENT_FAMILY
              count:
                type: integer
                format: int64
        housingSeniority:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-householdRange'
              count:
                type: integer
                format: int64
        housingSeniorityPopulation:
          type: array
          items:
            type: object
            properties:
              category:
                $ref: '#/components/schemas/CensusStats-householdRange'
              count:
                type: integer
                format: int64
        carPossession:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - ONE
                  - TWO_OR_MORE
              count:
                type: integer
                format: int64
        incomes:
          type: array
          items:
            type: object
            properties:
              category:
                type: number
                format: double
              count:
                type: integer
                format: int64
                example: Le revenu en euro
        incomeProportionTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - ACTIVITY
                  - RETIREMENT
                  - LEGACY
                  - SOCIAL
                  - TAXES
              count:
                type: integer
                format: int64
                example: part de la catégorie dans le revenu en pourcentage
        lastFirstDecilesIncomeRatio:
          type: number
          format: double
        richPoorIncomeRatio:
          type: number
          format: double
        giniIndex:
          type: number
          format: double
    CensusStats-family:
      type: object
      properties:
        familiesCount:
          type: integer
          format: int64
        familyTypes:
          type: array
          items:
            type: object
            properties:
              category:
                type: string
                enum:
                  - WITHOUT_CHILDREN
                  - WITH_CHILDREN
                  - SINGLE_PARENT
              count:
                type: integer
                format: int64
    CensusStats:
      type: object
      properties:
        id:
          type: string
        zone:
          type: string
          enum:
            - IRIS
            - CITY
            - DEPARTMENT
            - AGGLOMERATION
            - ZIP_CODE
            - QUARTER
        zoneId:
          type: string
        year:
          type: integer
          minimum: 1000
          maximum: 2500
        population:
          $ref: '#/components/schemas/CensusStats-population'
        housing:
          $ref: '#/components/schemas/CensusStats-housing'
        household:
          $ref: '#/components/schemas/CensusStats-household'
        family:
          $ref: '#/components/schemas/CensusStats-family'
    RentControlStatus:
      type: string
      enum:
        - NOT_LOCATED
        - ZONE_NOT_FOUND
        - CONSTRUCTION_YEAR_CONFLICT
        - ZONE_CONFLICT
        - UNDER_MIN_PRICE_M2
        - OVER_MAX_PRICE_M2
        - VALID
      example: VALID
    RentControl-PriceM2:
      type: object
      properties:
        base:
          type: number
          format: double
          minimum: 0
          example: 32.8
        max:
          type: number
          format: double
          minimum: 0
          example: 39.4
        min:
          type: number
          format: double
          minimum: 0
          example: 23
    RentControl-Features-Zone:
      type: object
      properties:
        type:
          type: string
          enum:
            - IRIS
          example: IRIS
        ids:
          type: array
          items:
            type: string
            example: 751072801
    RentControl-Features:
      type: object
      properties:
        code:
          type: string
          example: 1
        name:
          type: string
          example: Gros-Caillou
        propertyTypes:
          type: array
          items:
            type: string
            enum:
              - APARTMENT
              - HOUSE
            example: APARTMENT
        zone:
          $ref: '#/components/schemas/RentControl-Features-Zone'
        roomCount:
          $ref: '#/components/schemas/Range'
        constructionYear:
          $ref: '#/components/schemas/Range'
        furnished:
          type: boolean
        geometry:
          type: object
          format: GeoJsonObject
    RentControl:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 9349b062-6624-4cec-b5cb-d55b0a6fadb0
        priceM2:
          $ref: '#/components/schemas/RentControl-PriceM2'
        features:
          $ref: '#/components/schemas/RentControl-Features'
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        deleteDate:
          type: string
          format: date-time
        active:
          type: boolean
          example: true
    RentControlResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/RentControlStatus'
        address:
          $ref: '#/components/schemas/Address'
        zones:
          type: array
          items:
            $ref: '#/components/schemas/RentControl'
    BuildingPermit-housingCount:
      type: object
      properties:
        totalCreated:
          type: integer
        perTypeCount:
          type: object
          properties:
            SINGLE:
              type: integer
            COLLECTIVE:
              type: integer
            DEMOLISHED:
              type: integer
            SOCIAL:
              type: integer
        perRoomCount:
          type: object
          properties:
            '1':
              type: integer
            '2':
              type: integer
            '3':
              type: integer
            '4':
              type: integer
            '5':
              type: integer
            '6':
              type: integer
    BuildingPermit-features:
      type: object
      properties:
        authorisationDate:
          type: string
          format: date
        constructionStartDate:
          type: string
          format: date
        constructionEndDate:
          type: string
          format: date
        sourceUpdateDate:
          type: string
          format: date
        submissionYear:
          type: integer
        extension:
          type: boolean
        upwardExtension:
          type: boolean
        levelCreation:
          type: boolean
        maxLevel:
          type: integer
        annex:
          type: string
          enum:
            - POOL
            - GARAGE
            - VERANDA
            - GARDEN_HOME
            - OTHER
            - MANY
        projectType:
          type: string
          enum:
            - RESIDENTIAL
            - NON_RESIDENTIAL
            - MIXED
        surfaces:
          type: object
          properties:
            RESIDENTIAL_BEFORE_PROJECT:
              type: integer
            RESIDENTIAL_CREATED:
              type: integer
            TRANSFORMED_TO_RESIDENTIAL:
              type: integer
            RESIDENTIAL_DEMOLISHED:
              type: integer
            TRANSFORMED_FROM_RESIDENTIAL:
              type: integer
            NON_RESIDENTIAL_BEFORE_PROJECT:
              type: integer
            NON_RESIDENTIAL_CREATED:
              type: integer
            TRANSFORMED_TO_NON_RESIDENTIAL:
              type: integer
            NON_RESIDENTIAL_DEMOLISHED:
              type: integer
            TRANSFORMED_FROM_NON_RESIDENTIAL:
              type: integer
        housingCount:
          $ref: '#/components/schemas/BuildingPermit-housingCount'
        residenceTypes:
          type: array
          items:
            type: string
            enum:
              - SENIORS
              - STUDENTS
              - TOURISM
              - SOCIAL_HOSTEL
              - SOCIAL
              - DISABLED_PERSONS
              - OTHER
    BuildingPermit-applicant:
      type: object
      properties:
        name:
          type: string
        category:
          type: string
          enum:
            - PRIVATE
            - SOCIAL_LANDLORD
            - PROPERTY_DEVELOPER
            - PUBLIC_ADMINISTRATION
            - OTHER_COMPANY
        subCategory:
          type: string
          enum:
            - SAI
            - SCI
            - HLM
            - EPL
            - OTHER
            - REAL
            - STATE_ODAC
            - DEP_REG
            - CITY_EPIC
        legalCategory:
          type: string
          enum:
            - 6540
            - 5710
            - 5499
            - 6541
            - 4140
            - 5599
            - 6599
            - 5546
            - 5202
            - 7210
            - 5515
            - 5560
            - 5547
            - 5699
            - 9220
            - 5646
            - 6598
            - 7220
            - 7346
            - 6597
        siren:
          type: string
        siret:
          type: string
        nafCode:
          type: string
        zipCode:
          type: string
          example: 750010
        cityName:
          type: string
    BuildingPermit:
      type: object
      properties:
        id:
          type: string
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        permitNumber:
          type: string
        type:
          type: string
          enum:
            - NEW_BUILD
            - EXISTING_BUILD
        state:
          type: string
          enum:
            - AUTHORISED
            - CANCELED
            - STARTED
            - FINISHED
        purpose:
          type: string
          enum:
            - PERSONAL_USE
            - SALE
            - RENT
        address:
          $ref: '#/components/schemas/Address'
        features:
          $ref: '#/components/schemas/BuildingPermit-features'
        applicant:
          $ref: '#/components/schemas/BuildingPermit-applicant'
    Agency:
      type: object
      properties:
        id:
          type: integer
          format: int64
        externalIds:
          type: object
          properties:
            CLIENT:
              type: string
        organizationId:
          type: integer
          format: int64
        name:
          type: string
        usageName:
          type: string
        siren:
          type: string
        siret:
          type: string
        nafCode:
          type: object
          properties:
            id:
              type: string
            label:
              type: string
        cityRefId:
          type: integer
          format: int64
        address:
          $ref: '#/components/schemas/Address'
        description:
          type: string
        phone:
          type: string
        email:
          type: string
        url:
          type: string
        imageUrl:
          type: string
        active:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        salePropertyCount:
          type: integer
        rentPropertyCount:
          type: integer
    MandataryNetwork:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        siren:
          type: string
        siret:
          type: string
        address:
          $ref: '#/components/schemas/Address'
        phone:
          type: string
        email:
          type: string
        url:
          type: string
        imageUrl:
          type: string
        active:
          type: boolean
    SocialNetwork:
      type: object
      properties:
        type:
          type: string
          enum:
            - LINKEDIN
            - FACEBOOK
            - INSTAGRAM
            - CUSTOM
        url:
          type: string
          format: uri
    PersonalInfo:
      type: object
      properties:
        email:
          type: string
          format: email
          example: user@example.com
        title:
          type: string
          enum:
            - MR
            - MRS
        firstName:
          type: string
        lastName:
          type: string
        position:
          type: string
        mobilePhoneNumber:
          type: string
          example: '+33601020304'
        officePhoneNumber:
          type: string
          example: '+33601020304'
        avatarUrl:
          type: string
          format: uri
        presentation:
          type: string
        socialNetworks:
          type: array
          items:
            $ref: '#/components/schemas/SocialNetwork'
        newsletter:
          type: boolean
          default: false
    Module:
      type: string
      enum:
        - ALERTS
        - ANALYTICS
        - DASHBOARD
        - PROPERTIES
        - PROSPECTS
        - STUDIES
        - BILLING
        - ESTIMATES
        - MAPS
        - MARKET_STUDIES
        - MARKET_ANALYTICS
        - OPPORTUNITIES
        - REPORTING
        - API_TOKENS
    CommercialZone:
      type: object
      properties:
        cities:
          type: array
          items:
            type: integer
            format: int64
        zipCodes:
          type: array
          items:
            type: string
        departments:
          type: array
          items:
            type: string
        quarters:
          type: array
          items:
            type: integer
            format: int64
        locked:
          type: boolean
    ProductDealer:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/Dealer-Type'
        dealerIds:
          type: array
          items:
            type: integer
            format: int64
    Product:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ProductType'
        marketingTypes:
          type: array
          items:
            $ref: '#/components/schemas/MarketingType'
        modules:
          type: array
          items:
            $ref: '#/components/schemas/Module'
        sources:
          type: array
          items:
            $ref: '#/components/schemas/Source'
        commercialZone:
          $ref: '#/components/schemas/CommercialZone'
        dealer:
          $ref: '#/components/schemas/ProductDealer'
        onBoarded:
          type: boolean
          description: Permet de configurer le produit lors de sa première utilisation
    User-Role:
      type: string
      enum:
        - USER
        - MANAGER
        - ADMIN
        - CONSULTANT
        - ASSISTANT
      x-deprecated-enum-values:
        - CONSULTANT
        - ASSISTANT
    AuthenticationMode:
      type: string
      enum:
        - GOOGLE
        - PASSWORD
        - SSO
    Security:
      type: object
      properties:
        active:
          type: boolean
        admin:
          type: boolean
        roles:
          type: array
          items:
            $ref: '#/components/schemas/User-Role'
          description: |
            - `CONSULTANT` : obsolète, utiliser `USER`.
            - `ASSISTANT` : obsolète, utiliser `USER`.
        emailChecked:
          type: boolean
        authenticationModes:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationMode'
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        organizationId:
          type: integer
          format: int64
        externalIds:
          type: object
          properties:
            CLAMEUR:
              type: string
            CLIENT:
              type: string
              example: '123456'
            PIPEDRIVE:
              type: string
            PRODUCT_FRUIT:
              type: string
            SENDINBLUE:
              type: string
            STRIPE:
              type: string
        username:
          type: string
          example: user@example.com
        personalInfo:
          $ref: '#/components/schemas/PersonalInfo'
        products:
          type: array
          items:
            $ref: '#/components/schemas/Product'
        onBoarded:
          type: boolean
          description: Permet de terminer l'inscription de l'utilisateur lors de sa première authentification
        security:
          $ref: '#/components/schemas/Security'
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
    Customer:
      type: object
      properties:
        title:
          type: string
          enum:
            - MR
            - MRS
        name:
          type: string
        address:
          $ref: '#/components/schemas/Address'
        mail:
          type: string
        phone:
          type: string
    Content-frontPage:
      type: object
      properties:
        title:
          type: string
        coverImage:
          type: string
          format: uri
    PriceFormat:
      type: string
      enum:
        - FIXED
        - RANGE
    Content-estimationEngine:
      type: object
      properties:
        priceFormat:
          $ref: '#/components/schemas/PriceFormat'
        price:
          type: number
          format: double
        priceRange:
          $ref: '#/components/schemas/Range'
        reliability:
          $ref: '#/components/schemas/EstimationResponse-reliability'
    BoundingBox:
      type: object
      properties:
        upperLeftCorner:
          $ref: '#/components/schemas/Location'
        lowerRightCorner:
          $ref: '#/components/schemas/Location'
    FeatureCollection:
      type: object
      properties:
        features:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              geometry:
                type: object
                format: GeoJsonObject
              properties:
                type: object
                additionalProperties:
                  type: object
    StudyMap:
      type: object
      properties:
        id:
          type: string
        bbox:
          $ref: '#/components/schemas/BoundingBox'
        data:
          $ref: '#/components/schemas/FeatureCollection'
    Content-propertyFeatures:
      type: object
      properties:
        streetViewImage:
          type: string
          format: uri
        mainImage:
          type: string
          format: uri
        maps:
          type: array
          items:
            $ref: '#/components/schemas/StudyMap'
    Content-marketStats:
      type: object
      properties:
        propertySearchQuery:
          $ref: '#/components/schemas/PropertySearchQuery'
        pricePercentiles:
          $ref: '#/components/schemas/Percentiles'
        priceM2Percentiles:
          $ref: '#/components/schemas/Percentiles'
        durationPercentiles:
          $ref: '#/components/schemas/Percentiles'
        priceM2Distribution:
          $ref: '#/components/schemas/PercentilesHistogram'
        durationDistribution:
          $ref: '#/components/schemas/PercentilesHistogram'
        priceM2Evolution:
          $ref: '#/components/schemas/DateHistogram'
        forecastPriceM2Evolution:
          $ref: '#/components/schemas/DateHistogram'
        durationEvolution:
          $ref: '#/components/schemas/DateHistogram'
        stockEvolution:
          $ref: '#/components/schemas/DateHistogram'
        maps:
          type: array
          items:
            $ref: '#/components/schemas/StudyMap'
    Content-investmentStats:
      type: object
      properties:
        propertySearchQuery:
          $ref: '#/components/schemas/PropertySearchQuery'
        grossRentalYieldEvolution:
          $ref: '#/components/schemas/DateHistogram'
        maps:
          type: array
          items:
            $ref: '#/components/schemas/StudyMap'
    Budget:
      type: object
      properties:
        cohabitationMode:
          type: string
          enum:
            - SINGLE_PERSON
            - OTHER_NON_FAMILY
            - COUPLE_WITHOUT_CHILDREN
            - COUPLE_WITH_CHILDREN
            - SINGLE_PARENT_FAMILY
        priceRange:
          $ref: '#/components/schemas/Range'
    Content-censusStats:
      type: object
      properties:
        zoneData:
          type: object
          properties:
            IRIS:
              $ref: '#/components/schemas/CensusStats'
            CITY:
              $ref: '#/components/schemas/CensusStats'
            DEPARTMENT:
              $ref: '#/components/schemas/CensusStats'
        budgets:
          type: array
          items:
            $ref: '#/components/schemas/Budget'
        loanInterestRates:
          type: array
          items:
            type: object
            properties:
              x:
                type: string
                format: date
              'y':
                type: number
                format: double
        rentReferenceIndexes:
          type: array
          items:
            type: object
            properties:
              x:
                type: string
                format: date
              'y':
                type: number
                format: double
    SimilarPropertiesSourceQuery:
      type: object
      properties:
        searchQuery:
          $ref: '#/components/schemas/PropertySearchQuery'
        weights:
          type: array
          items:
            $ref: '#/components/schemas/Weight'
        active:
          type: boolean
    Content-similarPropertiesSection:
      type: object
      properties:
        sourceQueries:
          type: array
          items:
            $ref: '#/components/schemas/SimilarPropertiesSourceQuery'
        properties:
          type: array
          items:
            $ref: '#/components/schemas/SimilarProperty'
    PropertyPoint:
      type: object
      properties:
        id:
          type: string
          format: uuid
        price:
          type: number
          format: double
          minimum: 10
          maximum: 100000000
          example: 253000
        publicationDays:
          type: integer
        active:
          type: boolean
        surface:
          type: number
          format: double
        roomCount:
          type: integer
    Content-similarProperties:
      type: object
      properties:
        onMarket:
          $ref: '#/components/schemas/Content-similarPropertiesSection'
        offMarket:
          $ref: '#/components/schemas/Content-similarPropertiesSection'
        outdated:
          $ref: '#/components/schemas/Content-similarPropertiesSection'
        organization:
          $ref: '#/components/schemas/Content-similarPropertiesSection'
        competitiveAnalysisProperties:
          type: array
          items:
            $ref: '#/components/schemas/PropertyPoint'
        maps:
          type: array
          items:
            $ref: '#/components/schemas/StudyMap'
        durationMarketInMonth:
          type: number
          format: integer
    Opportunity-ProjectBudget:
      type: object
      required:
        - price
        - notaryFees
      properties:
        price:
          type: number
          format: double
          example: 253000
        negotiationMargin:
          type: number
          format: double
          minimum: 0
          maximum: 100
          example: 10
        worksCost:
          type: number
          format: double
          example: 800
        notaryFees:
          type: integer
          format: int32
          minimum: 0
          maximum: 100
          example: 8
    Opportunity-PropertyFeatures:
      type: object
      required:
        - surface
        - address
      properties:
        surface:
          type: number
          format: double
          example: 150
        address:
          $ref: '#/components/schemas/Address'
        roomCount:
          type: integer
          format: int32
          example: 5
        floorCount:
          type: integer
          format: int32
          example: 2
        generalState:
          $ref: '#/components/schemas/State'
        areas:
          $ref: '#/components/schemas/Area-Type'
        furnished:
          type: boolean
          example: false
        consumptionLetter:
          $ref: '#/components/schemas/ConsumptionLetter'
        greenHouseConsumptionLetter:
          $ref: '#/components/schemas/ConsumptionLetter'
    Opportunity-SelectedMethod:
      type: string
      enum:
        - ESTIMATION_ENGINE
        - SIMILAR_PROPERTIES
        - MARKET_INDICATORS
    Opportunity-SimilarPropertiesMethod:
      type: object
      required:
        - propertySearchQuery
      properties:
        propertySearchQuery:
          $ref: '#/components/schemas/PropertySearchQuery'
        similarProperties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
    CountAggHistogramPoint:
      type: object
      properties:
        x:
          type: string
          example: 0
        'y':
          $ref: '#/components/schemas/CountAgg'
    CountAggHistogram:
      type: object
      properties:
        points:
          type: array
          items:
            $ref: '#/components/schemas/CountAggHistogramPoint'
    Opportunity-MarketIndicatorsMethod:
      type: object
      required:
        - propertySearchQuery
        - priceM2Distribution
        - priceM2Percentiles
      properties:
        propertySearchQuery:
          $ref: '#/components/schemas/PropertySearchQuery'
        priceM2Distribution:
          $ref: '#/components/schemas/CountAggHistogram'
        priceM2Percentiles:
          $ref: '#/components/schemas/Percentiles'
    Opportunity-UserDefinedMethod:
      type: object
      properties:
        price:
          type: number
          format: double
          example: 253000
    Opportunity-Valuations:
      type: object
      required:
        - similarProperties
        - marketIndicators
      properties:
        selectedMethod:
          $ref: '#/components/schemas/Opportunity-SelectedMethod'
        estimationEngine:
          $ref: '#/components/schemas/EstimationResponse'
        similarProperties:
          $ref: '#/components/schemas/Opportunity-SimilarPropertiesMethod'
        marketIndicators:
          $ref: '#/components/schemas/Opportunity-MarketIndicatorsMethod'
        userDefined:
          $ref: '#/components/schemas/Opportunity-UserDefinedMethod'
    Content-investment:
      type: object
      required:
        - budget
        - propertyFeatures
        - selectedMarket
      properties:
        budget:
          $ref: '#/components/schemas/Opportunity-ProjectBudget'
        propertyFeatures:
          $ref: '#/components/schemas/Opportunity-PropertyFeatures'
        selectedMarket:
          $ref: '#/components/schemas/MarketingType'
        buy:
          $ref: '#/components/schemas/Opportunity-Valuations'
        sale:
          $ref: '#/components/schemas/Opportunity-Valuations'
        rent:
          $ref: '#/components/schemas/Opportunity-Valuations'
    Content-propertyPriceStudy:
      type: object
      deprecated: true
      properties:
        priceComment:
          type: string
          deprecated: true
        similarPropertiesComment:
          type: string
          deprecated: true
        propertyPoints:
          type: array
          items:
            $ref: '#/components/schemas/PropertyPoint'
          deprecated: true
    Content-pinel:
      type: object
      required:
        - zone
        - surface
        - priceM2HC
      properties:
        zone:
          type: string
          enum:
            - A
            - A_BIS
            - B1
            - B2
        surface:
          type: number
        priceM2HC:
          type: number
        description:
          type: string
    Content-legal:
      type: object
      properties:
        pinel:
          $ref: '#/components/schemas/Content-pinel'
        rentControlCheckResponse:
          $ref: '#/components/schemas/RentControlResponse'
    FeesFormat:
      type: string
      enum:
        - FIXED
        - PERCENTAGE
    Content-conclusion:
      type: object
      properties:
        recommendation:
          type: string
        priceFormat:
          $ref: '#/components/schemas/PriceFormat'
        feesFormat:
          $ref: '#/components/schemas/FeesFormat'
        maps:
          type: array
          items:
            $ref: '#/components/schemas/StudyMap'
    Summary-studyPage:
      type: object
      required:
        - id
        - hidden
      properties:
        id:
          type: string
        hidden:
          type: boolean
        comment:
          type: string
        hiddenBlocks:
          type: array
          items:
            type: string
        order:
          type: integer
    Summary-renderingMode:
      type: object
      required:
        - id
        - active
      properties:
        id:
          type: string
        active:
          type: boolean
        pages:
          type: array
          items:
            $ref: '#/components/schemas/Summary-studyPage'
    Summary-section:
      type: object
      required:
        - id
        - order
      properties:
        id:
          type: string
        order:
          type: integer
        renderingModes:
          type: array
          items:
            $ref: '#/components/schemas/Summary-renderingMode'
    Summary:
      type: object
      properties:
        sections:
          type: array
          items:
            $ref: '#/components/schemas/Summary-section'
    Content:
      type: object
      properties:
        frontPage:
          $ref: '#/components/schemas/Content-frontPage'
        estimationEngine:
          $ref: '#/components/schemas/Content-estimationEngine'
        propertyFeatures:
          $ref: '#/components/schemas/Content-propertyFeatures'
        saleStats:
          $ref: '#/components/schemas/Content-marketStats'
        rentStats:
          $ref: '#/components/schemas/Content-marketStats'
        investmentStats:
          $ref: '#/components/schemas/Content-investmentStats'
        censusStats:
          $ref: '#/components/schemas/Content-censusStats'
        similarProperties:
          $ref: '#/components/schemas/Content-similarProperties'
        investment:
          $ref: '#/components/schemas/Content-investment'
        propertyPriceStudy:
          $ref: '#/components/schemas/Content-propertyPriceStudy'
        legal:
          $ref: '#/components/schemas/Content-legal'
        conclusion:
          $ref: '#/components/schemas/Content-conclusion'
        summary:
          $ref: '#/components/schemas/Summary'
    Study:
      type: object
      required:
        - organizationId
        - name
        - property
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: integer
          format: int64
        product:
          $ref: '#/components/schemas/ProductType'
        version:
          type: string
          enum:
            - V1
            - V2
        agencyId:
          type: integer
          format: int64
        mandataryNetworkId:
          type: integer
          format: int64
        organizationId:
          type: integer
          format: int64
        externalIds:
          type: object
          properties:
            USER:
              type: string
            AGENCY:
              type: string
        name:
          type: string
        customer:
          $ref: '#/components/schemas/Customer'
        property:
          $ref: '#/components/schemas/Property'
        content:
          $ref: '#/components/schemas/Content'
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
    Estimation-valuations:
      type: object
      properties:
        price:
          $ref: '#/components/schemas/EstimationResponse'
        negotiationMargin:
          $ref: '#/components/schemas/EstimationResponse'
    Estimation-marketIndicator:
      type: object
      properties:
        bounds:
          $ref: '#/components/schemas/Bounds'
        reliability:
          $ref: '#/components/schemas/Reliability'
    Estimation-marketStats:
      type: object
      properties:
        duration:
          $ref: '#/components/schemas/Estimation-marketIndicator'
        marketStress:
          $ref: '#/components/schemas/Estimation-marketIndicator'
    Estimation-targetHouseholds:
      type: object
      properties:
        censusStats:
          $ref: '#/components/schemas/CensusStats'
        budgets:
          type: array
          items:
            $ref: '#/components/schemas/Budget'
    Estimation-similarProperties:
      type: object
      properties:
        onMarket:
          type: array
          items:
            $ref: '#/components/schemas/SimilarProperty'
        offMarket:
          type: array
          items:
            $ref: '#/components/schemas/SimilarProperty'
        outdated:
          type: array
          items:
            $ref: '#/components/schemas/SimilarProperty'
    Estimate-sale:
      type: object
      deprecated: true
      properties:
        price:
          $ref: '#/components/schemas/EstimationResponse'
        marketingDuration:
          $ref: '#/components/schemas/EstimationResponse'
        grossRentalYield:
          $ref: '#/components/schemas/EstimationResponse'
        negotiationMargin:
          $ref: '#/components/schemas/EstimationResponse'
    SimilarPropertyPoints:
      type: object
      deprecated: true
      properties:
        onMarketPropertyPoints:
          type: array
          items:
            $ref: '#/components/schemas/PropertyPoint'
        soldPropertyPoints:
          type: array
          items:
            $ref: '#/components/schemas/PropertyPoint'
    Estimate-stats:
      type: object
      deprecated: true
      properties:
        similarPropertyPoints:
          $ref: '#/components/schemas/SimilarPropertyPoints'
        propertiesDuration:
          $ref: '#/components/schemas/Percentiles'
        similarPropertiesPrice:
          $ref: '#/components/schemas/Percentiles'
    Sale:
      type: object
      deprecated: true
      properties:
        estimate:
          $ref: '#/components/schemas/Estimate-sale'
        stats:
          $ref: '#/components/schemas/Estimate-stats'
    Estimate-rent:
      type: object
      deprecated: true
      properties:
        price:
          $ref: '#/components/schemas/EstimationResponse'
        marketingDuration:
          $ref: '#/components/schemas/EstimationResponse'
    Rent:
      type: object
      deprecated: true
      properties:
        estimate:
          $ref: '#/components/schemas/Estimate-rent'
        stats:
          $ref: '#/components/schemas/Estimate-stats'
    Estimation:
      type: object
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: integer
          format: int64
        organizationId:
          type: integer
          format: int64
        product:
          $ref: '#/components/schemas/ProductType'
        property:
          $ref: '#/components/schemas/Property'
        valuations:
          $ref: '#/components/schemas/Estimation-valuations'
        marketStats:
          $ref: '#/components/schemas/Estimation-marketStats'
        targetHouseholds:
          $ref: '#/components/schemas/Estimation-targetHouseholds'
        similarProperties:
          $ref: '#/components/schemas/Estimation-similarProperties'
        creationDate:
          type: string
          format: date-time
        estimates:
          type: array
          deprecated: true
          items:
            type: object
            properties:
              reference:
                type: string
                format: uuid
              sale:
                $ref: '#/components/schemas/Sale'
              rent:
                $ref: '#/components/schemas/Rent'
      required:
        - userId
        - organizationId
        - product
        - property
    Opportunity:
      type: object
      required:
        - userId
        - organizationId
        - product
        - propertyId
        - budget
        - propertyFeatures
        - selectedMarket
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: integer
          format: int64
        organizationId:
          type: integer
          format: int64
        product:
          $ref: '#/components/schemas/ProductType'
        propertyId:
          type: string
          format: uuid
        budget:
          $ref: '#/components/schemas/Opportunity-ProjectBudget'
        propertyFeatures:
          $ref: '#/components/schemas/Opportunity-PropertyFeatures'
        selectedMarket:
          $ref: '#/components/schemas/MarketingType'
        buy:
          $ref: '#/components/schemas/Opportunity-Valuations'
        sale:
          $ref: '#/components/schemas/Opportunity-Valuations'
        rent:
          $ref: '#/components/schemas/Opportunity-Valuations'
    PipeStep:
      type: object
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
        position:
          type: integer
        type:
          type: string
          enum:
            - SYSTEM
            - CUSTOM
    Pipe:
      type: object
      properties:
        id:
          type: string
          format: uuid
        organizationId:
          type: integer
          format: int64
        agencyId:
          type: integer
          format: int64
        userIds:
          type: array
          items:
            type: integer
            format: int64
        steps:
          type: array
          items:
            $ref: '#/components/schemas/PipeStep'
        creationDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
    ProspectStatus:
      type: string
      enum:
        - WON
        - LOST
        - UNKNOWN
    ProspectLostReason:
      type: string
      enum:
        - REFUSAL
        - UNREACHABLE
        - MARKETING_DONE
        - IN_MANDATE
        - OTHER
    Dealer:
      type: object
      properties:
        title:
          type: string
          enum:
            - MR
            - MRS
        name:
          type: string
        homePhoneNumber:
          type: string
        mobilePhoneNumber:
          type: string
        email:
          type: string
          format: email
          example: example@email.com
        address:
          $ref: '#/components/schemas/Address'
        propertyAddress:
          $ref: '#/components/schemas/Address'
    ProspectSource:
      type: string
      enum:
        - ONLINE_ADS
        - FIELD_PROSPECTING
        - WEBSITE_ESTIMATOR
        - WEBSITE_CONTACT
    ProspectionConsent:
      type: string
      enum:
        - REFUSED
        - UNKNOWN
        - APPROVED
    Prospect:
      type: object
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: integer
          format: int64
        organizationId:
          type: integer
          format: int64
        propertyId:
          type: string
          format: uuid
        product:
          $ref: '#/components/schemas/ProductType'
        dealer:
          $ref: '#/components/schemas/Dealer'
        creationDate:
          type: string
          format: date-time
        dueDate:
          type: string
          format: date-time
        nextActivityId:
          type: string
          format: uuid
        doneDate:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/ProspectStatus'
        lostReason:
          $ref: '#/components/schemas/ProspectLostReason'
        savedSearchIds:
          type: array
          items:
            type: string
            format: uuid
        source:
          $ref: '#/components/schemas/ProspectSource'
        pipeId:
          type: string
          format: uuid
        pipeStepId:
          type: string
          format: uuid
        pipeStepPosition:
          type: integer
        positionInPipeStep:
          type: number
          format: double
        archiveDate:
          type: string
          format: date-time
        fees:
          type: number
          format: int64
        prospectionConsent:
          $ref: '#/components/schemas/ProspectionConsent'
        propertyPros:
          type: array
          items:
            type: string
        propertyCons:
          type: array
          items:
            type: string
    ProspectActivity:
      type: object
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: integer
          format: int64
        prospectId:
          type: string
          format: uuid
        organizationId:
          type: integer
          format: int64
        product:
          $ref: '#/components/schemas/ProductType'
        type:
          type: string
          enum:
            - QUALIFICATION
            - CALL
            - MAIL
            - SMS
            - MEETING
            - TASK
            - NOTE
        date:
          type: string
          format: date
        done:
          type: boolean
  responses:
    BadRequest:
      description: Paramètres de la requête invalides
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DefaultResponse'
          example:
            msg: Bad request
            status: 400
    InternalServerError:
      description: Une erreur coté serveur s'est produite
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DefaultResponse'
          example:
            msg: Internal server error
            status: 500
    ResourceNotFound:
      description: La resource demandée n'existe pas
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DefaultResponse'
          example:
            msg: Not found
            status: 404
    NoContent:
      description: Réponse vide
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DefaultResponse'
          example:
            msg: No content
            status: 204
  parameters:
    ProgramSearchQuery-name:
      name: name
      in: query
      description: Nom de programme
      schema:
        type: string
    ProgramSearchQuery-description:
      name: description
      in: query
      description: Description de programme
      schema:
        type: string
    crawlSources:
      name: crawlSources
      in: query
      description: Portails immobiliers
      style: form
      schema:
        type: array
        items:
          type: string
          enum:
            - A_VENDRE_A_LOUER
            - BELLES_DEMEURES
            - BIEN_ICI
            - EXPLORIMMO
            - EXPLORIMMO_NEUF
            - IMMONOT
            - LE_BON_COIN
            - LE_BON_COIN_NEUF
            - LOGIC_IMMO
            - LOGIC_IMMO_NEUF
            - LUX_RESIDENCE
            - MEILLEURS_AGENTS
            - OUEST_FRANCE_IMMO
            - PAP
            - PARU_VENDU
            - PROPRIETES_DE_FRANCE
            - SE_LOGER
            - SE_LOGER_NEUF
            - SURFACE_PRIVEE
            - IMMONEUF
    excludedCrawlSources:
      name: excludedCrawlSources
      in: query
      description: Portails immobiliers exclus
      style: form
      schema:
        type: array
        items:
          type: string
          enum:
            - A_VENDRE_A_LOUER
            - BELLES_DEMEURES
            - BIEN_ICI
            - EXPLORIMMO
            - EXPLORIMMO_NEUF
            - IMMONOT
            - LE_BON_COIN
            - LE_BON_COIN_NEUF
            - LOGIC_IMMO
            - LOGIC_IMMO_NEUF
            - LUX_RESIDENCE
            - MEILLEURS_AGENTS
            - OUEST_FRANCE_IMMO
            - PAP
            - PARU_VENDU
            - PROPRIETES_DE_FRANCE
            - SE_LOGER
            - SE_LOGER_NEUF
            - SURFACE_PRIVEE
            - IMMONEUF
    active:
      name: active
      in: query
      description: Statut (expiré ou non)
      schema:
        type: boolean
    dealerNames:
      name: dealerNames
      in: query
      description: Liste de noms de vendeurs
      style: form
      schema:
        type: array
        items:
          type: string
    dealerIds:
      name: dealerIds
      in: query
      description: Liste d'identifiants de vendeurs
      style: form
      schema:
        type: array
        items:
          type: integer
          format: int64
    dealerSubTypes:
      name: dealerSubTypes
      in: query
      description: Sous types de vendeur
      style: form
      schema:
        type: array
        items:
          type: string
          enum:
            - REAL_ESTATE
            - NOTARY
            - MANDATARY
            - REALTY_DEVELOPER
            - PROPERTY_MANAGER
            - OTHER
    excludedDealerIds:
      name: excludedDealerIds
      in: query
      description: Liste d'identifiants de vendeurs à exclure
      style: form
      schema:
        type: array
        items:
          type: integer
          format: int64
    ids:
      name: ids
      in: query
      description: Liste d'identifiants
      style: form
      schema:
        type: array
        items:
          type: string
          format: uuid
    propertyIds:
      name: propertyIds
      in: query
      description: Liste d'identifiants de biens
      style: form
      schema:
        type: array
        items:
          type: string
          format: uuid
    roomCountMin:
      name: roomCountMin
      in: query
      description: Nombre de pièces minimum
      schema:
        type: integer
        format: int64
    roomCountMax:
      name: roomCountMax
      in: query
      description: Nombre de pièces maximum
      schema:
        type: integer
        format: int64
    departments:
      name: departments
      in: query
      description: Liste de départements
      style: form
      schema:
        type: array
        items:
          type: string
    zipCodes:
      name: zipCodes
      in: query
      description: Liste de codes postaux
      style: form
      schema:
        type: array
        items:
          type: string
    cityIds:
      name: cityIds
      in: query
      description: Liste d'identifiants de villes
      style: form
      schema:
        type: array
        items:
          type: integer
          format: int64
    quarterIds:
      name: quarterIds
      in: query
      description: Liste d'identifiants de quartiers
      style: form
      schema:
        type: array
        items:
          type: integer
          format: int64
    publicationDateMin:
      name: publicationDateMin
      in: query
      description: Date de publication minimale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date-time
    publicationDateMax:
      name: publicationDateMax
      in: query
      description: Date de publication maximale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date-time
    ProgramSearchQuery-deleteDateMinOrActive:
      name: deleteDateMinOrActive
      in: query
      description: Date minimum de suppression ou actif
      schema:
        type: string
        format: date-time
    ProgramSearchQuery-deleteDateMaxOrActive:
      name: deleteDateMaxOrActive
      in: query
      description: Date maximum de suppression ou actif
      schema:
        type: string
        format: date-time
    durationDaysMin:
      name: durationDaysMin
      in: query
      description: Durée minimale en jours
      schema:
        type: integer
    durationDaysMax:
      name: durationDaysMax
      in: query
      description: Durée maximale en jours
      schema:
        type: integer
    surfaceMin:
      name: surfaceMin
      in: query
      description: Surface minimale
      schema:
        type: integer
        format: double
    surfaceMax:
      name: surfaceMax
      in: query
      description: Surface maximale
      schema:
        type: integer
        format: double
    priceMin:
      name: priceMin
      in: query
      description: Prix minimum
      schema:
        type: integer
        format: double
    priceMax:
      name: priceMax
      in: query
      description: Prix maximum
      schema:
        type: integer
        format: double
    missingFields:
      name: missingFields
      in: query
      description: Attributs manquants
      schema:
        type: array
        items:
          type: string
    existingFields:
      name: existingFields
      in: query
      description: Attributs existants
      schema:
        type: array
        items:
          type: string
    excludedIds:
      name: excludedIds
      in: query
      description: Identifiants à exclure
      schema:
        type: array
        items:
          type: string
    organizationIds:
      name: organizationIds
      in: query
      description: Identifiants d'organisations
      schema:
        type: array
        items:
          type: integer
          format: int64
    ProgramSearchQuery-legalDevices:
      name: legalDevices
      in: query
      description: Liste des dispositifs légaux
      schema:
        type: array
        items:
          type: string
          enum:
            - TVA
            - PINEL
            - PTZ
            - LMP
            - LMNP
            - PLS
    ProgramSearchQuery-certifications:
      name: certifications
      in: query
      description: Liste des certifications
      schema:
        type: array
        items:
          type: string
          enum:
            - RT2012
            - RE2020
            - HPE
            - HQE
    ProgramSearchQuery-deliveryDateMin:
      name: deliveryDateMin
      in: query
      description: Date minimum de livraison
      schema:
        type: string
        format: date-time
    ProgramSearchQuery-deliveryDateMax:
      name: deliveryDateMax
      in: query
      description: Date maximum de livraison
      schema:
        type: string
        format: date-time
    ProgramSearchQuery-lotCountMin:
      name: lotCountMin
      in: query
      description: Nombre de lots minimum
      schema:
        type: integer
        format: int64
    ProgramSearchQuery-lotCountMax:
      name: lotCountMax
      in: query
      description: Nombre de lots maximum
      schema:
        type: integer
        format: int64
    ProgramSearchQuery-activeLotCountMin:
      name: activeLotCountMin
      in: query
      description: Nombre de lots actifs minimum
      schema:
        type: integer
        format: int64
    ProgramSearchQuery-activeLotCountMax:
      name: activeLotCountMax
      in: query
      description: Nombre de lots actifs maximum
      schema:
        type: integer
        format: int64
    ProgramSearchQuery-stockPreview:
      name: stockPreview
      in: query
      description: Le stock est une pré-visualisation des lots
      schema:
        type: boolean
    ProgramSearchQuery-stages:
      name: stages
      in: query
      description: Liste des étapes marketing des programmes
      schema:
        type: array
        items:
          type: string
          enum:
            - PRESALE
            - BUILDING_IN_PROGRESS
            - LAST_OFFERS
    percentiles:
      name: percentiles
      in: query
      description: Percentiles
      example:
        - '25.0'
        - '50.0'
        - '75.0'
      style: form
      schema:
        type: array
        items:
          type: number
          format: double
    PropertyIndicatorQuery-type:
      in: query
      name: type
      schema:
        type: string
        enum:
          - PRICE_M2
          - DURATION
          - NEGOTIATION_MARGIN
          - GROSS_RENTAL_YIELD
          - SOLD_STOCK
          - SUPPLY_STOCK
          - MARKET_STRESS
        example: PRICE_M2
      required: true
      description: Type d'indicateur
    PropertyIndicatorQuery-marketingType:
      in: query
      name: marketingType
      schema:
        type: string
        enum:
          - RENT
          - SALE
        example: RENT
      required: true
      description: Type de marché
    PropertyIndicatorQuery-propertyTypes:
      in: query
      name: propertyTypes
      schema:
        type: array
        items:
          type: string
          enum:
            - APARTMENT
            - HOUSE
          example: APARTMENT
      required: true
      description: Types de bien
    PropertyIndicatorQuery-newBuild:
      in: query
      name: newBuild
      schema:
        type: boolean
      required: true
      description: Marché du neuf
    PropertyIndicatorQuery-frequency:
      in: query
      name: frequency
      schema:
        type: string
        enum:
          - MONTHS
          - QUARTERS
          - YEARS
        default: MONTHS
      description: Fréquence
    bbox:
      in: query
      name: bbox
      schema:
        type: string
        example: 46.677582373658055,-5.154210305797569,43.44691443123976,7.7415115092989115
      description: 'Rectangle qui délimite la zone géographique : latitude en haut à gauche, longitude en haut à gauche, latitude en bas à droite, longitude en bas à droite'
    zoomLevel:
      in: query
      name: zoomLevel
      schema:
        type: number
        format: double
        example: 7.5
      description: Niveau de zoom (requis si `zoneType` est vide)
    zoneType:
      in: query
      name: zoneType
      schema:
        $ref: '#/components/schemas/MapsZone-Type'
      description: Type de zone (requis si `zoomLevel` est vide)
    metric:
      name: metric
      in: query
      description: Méthode de calcul de l'agrégation
      schema:
        type: string
        default: PERCENTILES
        enum:
          - PERCENTILES
          - SUM
          - COUNT
          - AVERAGE
          - NONE
        example: COUNT
    field:
      name: field
      in: query
      description: |
        Champ sur lequel sont calculées les statistiques
      required: true
      schema:
        $ref: '#/components/schemas/Field-Numeric-Property'
    reliability:
      name: reliability
      in: query
      description: Renvoie un score de fiabilité entre 0 et 100 avec le score de chaque méthode
      schema:
        type: boolean
        default: false
    PropertyIndicatorQuery-segmentType:
      in: query
      name: segmentType
      schema:
        type: string
        enum:
          - TYPOLOGY
          - SURFACE
          - ENERGY_PERFORMANCE
          - CONSTRUCTION_PERIOD
          - FURNITURE
        example: TYPOLOGY
      description: Type de segment (voir [les différents segments de marché](https://support.yanport.com/hc/fr/articles/21315793909276-Comment-puis-je-segmenter-ou-filtrer-les-donn%C3%A9es-d-un-indicateur))
    PropertyIndicatorQuery-segments:
      in: query
      name: segments
      schema:
        type: array
        items:
          type: string
          enum:
            - T1
            - T2
            - T3
            - TO_T3
            - T4
            - T5
            - FROM_T5
            - FROM_T6
            - TO_30
            - FROM_30_TO_50
            - FROM_50_TO_70
            - FROM_70_TO_90
            - FROM_90
            - TO_90
            - FROM_90_TO_110
            - FROM_110_TO_140
            - FROM_140
            - A
            - B
            - C
            - D
            - E
            - F
            - G
            - TO_1945
            - FROM_1945_TO_1970
            - FROM_1970_TO_1990
            - FROM_1990_TO_2010
            - FROM_2010
            - FURNISHED
            - UNFURNISHED
          example: T1
      description: Segments (voir [les différents segments de marché](https://support.yanport.com/hc/fr/articles/21315793909276-Comment-puis-je-segmenter-ou-filtrer-les-donn%C3%A9es-d-un-indicateur))
    agglomerationIds:
      name: agglomerationIds
      in: query
      description: Liste d'identifiants d'agglomérations
      style: form
      schema:
        type: array
        items:
          type: integer
          format: int64
    irisIds:
      name: irisIds
      in: query
      description: Liste d'identifiants de zones IRIS
      style: form
      schema:
        type: array
        items:
          type: string
    dateMin:
      name: dateMin
      in: query
      description: Date minimale (incluse)
      schema:
        type: string
        format: date
        example: '2016-01-01'
    dateMax:
      name: dateMax
      in: query
      description: Date maximale (incluse)
      schema:
        type: string
        format: date
        example: '2025-03-01'
    groupBy:
      name: groupBy
      in: path
      description: Grouper par
      required: true
      schema:
        $ref: '#/components/schemas/Field-Discrete-Property'
    termsSize:
      name: termsSize
      in: query
      description: Nombre maximum de groupes
      schema:
        type: integer
        minimum: 10
        maximum: 100
        default: 30
    subGroupBy:
      name: subGroupBy
      in: path
      description: Grouper par
      required: true
      schema:
        $ref: '#/components/schemas/Field-Discrete-Property'
    intervals:
      name: intervals
      in: query
      description: Intervalles de regroupement semi-ouverts à droite
      required: true
      schema:
        type: array
        items:
          type: string
        example:
          - '*:20'
          - '20:40'
          - 40:*
    PropertyHistogramQuery-intervalField:
      name: intervalField
      in: query
      description: Champ sur lequel sont définis les intervalles
      required: true
      schema:
        type: string
        enum:
          - PRICE
          - PRICE_HC
          - PRICE_CC
          - PRICE_M2
          - PRICE_M2_HC
          - PRICE_M2_CC
          - PRICE_EVENTS_RANGE_PRICE
          - PRICE_EVENTS_RANGE_PRICE_M2
          - PRICE_EVENTS_COUNT
          - SURFACE
          - ROOM_COUNT
          - DURATION_DAYS
          - MARKETING_DAYS
          - FEES_PERCENT
          - GROSS_RENTAL_YIELD
          - NEGOTIATION_MARGIN
          - CONSTRUCTION_YEAR
    PropertyHistogramQuery-interval:
      name: interval
      in: query
      description: Valeur de l'intervalle de l'histogramme
      schema:
        type: number
        format: double
        minimum: 0
    PropertyHistogramQuery-extendedBoundMin:
      name: extendedBoundMin
      in: query
      description: Garantit un intervalle minimal
      schema:
        type: number
        format: double
    PropertyHistogramQuery-extendedBoundMax:
      name: extendedBoundMax
      in: query
      description: Garantit un intervalle maximal
      schema:
        type: number
        format: double
    PropertyHistogramQuery-hardBoundMin:
      name: hardBoundMin
      in: query
      description: Tronque les résultats inférieurs à cette valeur
      schema:
        type: number
        format: double
    PropertyHistogramQuery-hardBoundMax:
      name: hardBoundMax
      in: query
      description: Tronque les résultats supérieurs à cette valeur
      schema:
        type: number
        format: double
    DateHistogramQuery-interval:
      name: interval
      in: query
      description: Valeur de l'intervalle
      schema:
        type: integer
        default: 1
        minimum: 1
    PropertyDateHistogramQuery-intervalField:
      name: intervalField
      in: query
      description: Champ de date utilisé pour les regroupements
      required: true
      schema:
        type: string
        enum:
          - PUBLICATION_DATE
          - DELETE_DATE
          - MARKETING_START_DATE
          - MARKETING_END_DATE
          - PRICE_EVENTS_RANGE_DATE
          - PUBLICATION_DATE_RANGE
          - MARKETING_DATE_RANGE
    DateHistogramQuery-intervalUnit:
      name: intervalUnit
      in: query
      description: Unité de temps de l'intervalle
      schema:
        type: string
        default: MONTHS
        enum:
          - DAYS
          - WEEKS
          - MONTHS
          - YEARS
    DateHistogramQuery-intervalOffset:
      name: intervalOffset
      in: query
      description: Décalage de l'intervalle
      schema:
        type: string
    DateHistogramQuery-extendedBoundMin:
      name: extendedBoundMin
      in: query
      description: Date minimale
      schema:
        type: string
        format: date
    DateHistogramQuery-extendedBoundMax:
      name: extendedBoundMax
      in: query
      description: Date maximale
      schema:
        type: string
        format: date
    DateHistogramQuery-hardBoundMin:
      name: hardBoundMin
      in: query
      description: Tronque les résultats inférieurs à cette date
      schema:
        type: string
        format: date
    DateHistogramQuery-hardBoundMax:
      name: hardBoundMax
      in: query
      description: Tronque les résultats supérieurs à cette date
      schema:
        type: string
        format: date
    DateHistogramQuery-timeZone:
      name: timeZone
      in: query
      description: Fuseau horaire à utiliser pour le regroupement des données par date
      example: Europe/Paris ou +01:00 ou encore UTC+1
      schema:
        type: string
        default: UTC
    DateHistogramQuery-movingFunction:
      name: movingFunction
      in: query
      description: Fonction à appliquer sur la fenêtre glissante (alignée à gauche)
      schema:
        type: string
        enum:
          - UNWEIGHTED_AVG
          - LINEAR_WEIGHTED_AVG
        example: UNWEIGHTED_AVG
    DateHistogramQuery-movingWindow:
      name: movingWindow
      in: query
      description: Taille de la fenêtre glissante (alignée à gauche)
      schema:
        type: integer
        example: 12
        minimum: 1
    forecasting:
      name: forecasting
      in: query
      description: Prévision de l'indicateur. Valide uniquement avec la combinaison `source=DVF`, `reliability=true` et `field=PRICE_M2`.
      schema:
        type: boolean
        default: false
    ReliableZoneQuery-intervalUnits:
      name: intervalUnits
      in: query
      description: Unités de temps de l'intervalle possibles (mois, trimestres, années)
      style: form
      schema:
        type: array
        items:
          type: string
          enum:
            - MONTHS
            - QUARTERS
            - YEARS
    q:
      name: q
      in: query
      description: Recherche plein-texte
      schema:
        type: string
    deptCodes:
      name: deptCodes
      in: query
      description: Liste de codes de départements
      style: form
      schema:
        type: array
        items:
          type: string
    codes:
      name: codes
      in: query
      description: Liste de codes
      style: form
      schema:
        type: array
        items:
          type: string
    types:
      name: types
      in: query
      description: Liste de types d'agglomération
      style: form
      schema:
        type: array
        items:
          type: string
    regionCodes:
      name: regionCodes
      in: query
      description: Liste de codes de régions
      style: form
      schema:
        type: array
        items:
          type: string
    departmentCodes:
      name: departmentCodes
      in: query
      description: Liste de codes de départements
      style: form
      schema:
        type: array
        items:
          type: string
    CitySearchQuery-inseeCodes:
      name: inseeCodes
      in: query
      description: Liste des codes insee
      schema:
        type: array
        items:
          type: string
    CitySearchQuery-deptCodes:
      name: deptCodes
      in: query
      description: Liste des codes département
      schema:
        type: array
        items:
          type: string
    inseeCodes:
      name: inseeCodes
      in: query
      description: Liste de codes insee de communes
      style: form
      schema:
        type: array
        items:
          type: string
    irisTypes:
      name: types
      in: query
      description: Liste de types de zones IRIS
      style: form
      schema:
        type: array
        items:
          type: string
          enum:
            - HOUSING
            - ACTIVITY
            - UNCUT
            - VARIOUS
    zone:
      name: zone
      in: query
      description: Type de zone géographique
      schema:
        type: string
        enum:
          - IRIS
          - CITY
          - DEPARTMENT
          - AGGLOMERATION
          - ZIP_CODE
          - QUARTER
    zoneIds:
      name: zoneIds
      in: query
      description: Identifiants de zones liés au champ `zone`
      style: form
      schema:
        type: array
        items:
          type: string
    censusYears:
      name: censusYears
      in: query
      description: Liste des années de publication des statistiques par l'Insee
      style: form
      schema:
        type: array
        items:
          type: integer
          format: int64
    BuildingPermitSearchQuery-permitNumbers:
      name: permitNumbers
      in: query
      description: Liste des numéros de permis de construire
      schema:
        type: array
        items:
          type: string
    BuildingPermitSearchQuery-updateDateMin:
      name: updateDateMin
      in: query
      description: Date de mise à jour minimale du permis de construire dans notre base (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-updateDateMax:
      name: updateDateMax
      in: query
      description: Date de mise à jour maximale du permis de construire dans notre base (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-types:
      name: types
      in: query
      description: Types de permis de construire (nouvelle construction, travaux sur construction existante)
      schema:
        type: array
        items:
          type: string
          enum:
            - NEW_BUILD
            - EXISTING_BUILD
    BuildingPermitSearchQuery-states:
      name: states
      in: query
      description: Etats des travaux du permis de construire (autorisés, annulés, commencés, achevés)
      schema:
        type: array
        items:
          type: string
          enum:
            - AUTHORISED
            - CANCELED
            - STARTED
            - FINISHED
    BuildingPermitSearchQuery-purposes:
      name: purposes
      in: query
      description: Objectifs du projet du permis de construire (occupation personnelle, vente, location)
      schema:
        type: array
        items:
          type: string
          enum:
            - PERSONAL_USE
            - SALE
            - RENT
    BuildingPermitSearchQuery-authorisationDateMin:
      name: authorisationDateMin
      in: query
      description: Date minimale de l'autorisation de permis de construire (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-authorisationDateMax:
      name: authorisationDateMax
      in: query
      description: Date maximale de l'autorisation de permis de construire (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-constructionStartDateMin:
      name: constructionStartDateMin
      in: query
      description: Date minimale du début de la construction du projet (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-constructionStartDateMax:
      name: constructionStartDateMax
      in: query
      description: Date maximale du début de la construction du projet (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-constructionEndDateMin:
      name: constructionEndDateMin
      in: query
      description: Date minimale de la fin de la construction du projet (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-constructionEndDateMax:
      name: constructionEndDateMax
      in: query
      description: Date maximale de la fin de la construction du projet (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-sourceUpdateDateMin:
      name: sourceUpdateDateMin
      in: query
      description: Date de mise à jour minimale du permis de construire dans la base SITADEL (YYYY-mm-dd)
      schema:
        type: string
        format: date
    BuildingPermitSearchQuery-sourceUpdateDateMax:
      name: sourceUpdateDateMax
      in: query
      description: Date de mise à jour maximale du permis de construire dans la base SITADEL (YYYY-mm-dd)
      schema:
        type: string
        format: date
    parcelIds:
      name: parcelIds
      in: query
      description: Liste d'identifiants de parcelles
      style: form
      schema:
        type: array
        items:
          type: string
    BuildingPermitSearchQuery-applicantNames:
      name: applicantNames
      in: query
      description: Dénomination du demandeur de permis de construire (non disponnible pour les demandes de particuliers)
      schema:
        type: array
        items:
          type: string
    BuildingPermitSearchQuery-applicantCategories:
      name: applicantCategories
      in: query
      description: Catégories de demandeurs de permis de construire (particuliers, bailleurs sociaux, promoteurs et professionnels de la construction, administration publique, autre type de société, locaux purs)
      schema:
        type: array
        items:
          type: string
          enum:
            - PRIVATE
            - SOCIAL_LANDLORD
            - PROPERTY_DEVELOPER
            - PUBLIC_ADMINISTRATION
            - OTHER_COMPANY
            - PURE_LOCAL
    BuildingPermitSearchQuery-applicantSubCategories:
      name: applicantSubCategories
      in: query
      description: Sous-catégories des demandeurs de permis de construire
      schema:
        type: array
        items:
          type: string
          enum:
            - SAI
            - SIMPLE
            - SCI
            - HLM
            - EPL
            - OTHER
            - REAL
            - STATE_ODAC
            - DEP_REG
            - CITY_EPIC
    BuildingPermitSearchQuery-applicantSirens:
      name: applicantSirens
      in: query
      description: Liste des numéros SIREN des demandeurs de permis de construire
      schema:
        type: array
        items:
          type: string
    BuildingPermitSearchQuery-applicantSirets:
      name: applicantSirets
      in: query
      description: Liste des numéros SIRET des demandeurs de permis de construire
      schema:
        type: array
        items:
          type: string
    BuildingPermitSearchQuery-applicantZipCodes:
      name: applicantZipCodes
      in: query
      description: Liste de codes postaux des demandeurs de permis de construire
      style: form
      schema:
        type: array
        items:
          type: string
    BuildingPermitSearchQuery-residenceTypes:
      name: residenceTypes
      in: query
      description: Type de résidence avec services spécifiques (personnes âgées, personnes en situation de handicap, étudiants, ...)
      schema:
        type: array
        items:
          type: string
          enum:
            - SENIORS
            - STUDENTS
            - TOURISM
            - SOCIAL_HOSTEL
            - SOCIAL
            - DISABLED_PERSONS
            - OTHER
    AgencySearchQuery-externalId:
      name: externalId
      in: query
      description: Identifiant externe client
      schema:
        type: string
    AgencySearchQuery-organizationId:
      name: organizationId
      in: query
      description: Identifiant de l'organisation
      schema:
        type: integer
        format: int64
    AgencySearchQuery-siren:
      name: siren
      in: query
      description: Siren de l'entreprise
      schema:
        type: array
        items:
          type: string
    AgencySearchQuery-siret:
      name: siret
      in: query
      description: Siret de l'entreprise
      schema:
        type: array
        items:
          type: string
    AgencySearchQuery-cityIds:
      name: cityIds
      in: query
      description: Liste d'identifiants de villes
      schema:
        type: array
        items:
          type: integer
          format: int64
    AgencySearchQuery-salePropertyCountMin:
      name: salePropertyCountMin
      description: Nombre minimal de biens en vente
      in: query
      schema:
        type: integer
        minimum: 0
    AgencySearchQuery-salePropertyCountMax:
      name: salePropertyCountMax
      description: Nombre maximal de biens en vente
      in: query
      schema:
        type: integer
        minimum: 0
    AgencySearchQuery-rentPropertyCountMin:
      name: rentPropertyCountMin
      description: Nombre minimal de biens en location
      in: query
      schema:
        type: integer
        minimum: 0
    AgencySearchQuery-rentPropertyCountMax:
      name: rentPropertyCountMax
      description: Nombre maximal de biens en location
      in: query
      schema:
        type: integer
        minimum: 0
    AgencySearchQuery-active:
      name: active
      description: Agence active
      in: query
      schema:
        type: boolean
    MandataryNetworkSearchQuery-siren:
      name: siren
      in: query
      schema:
        type: array
        items:
          type: string
    agencyIds:
      name: agencyIds
      in: query
      description: Identifiants d'agences
      schema:
        type: array
        items:
          type: integer
          format: int64
    userIds:
      name: userIds
      in: query
      description: Liste d'identifiants d'utilisateurs
      schema:
        type: array
        items:
          type: integer
          format: int64
    productTypes:
      name: products
      in: query
      description: Liste de types de produit
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ProductType'
    StudySearchQuery-externalIds:
      name: externalIds
      in: query
      description: Identifiants externes
      schema:
        type: array
        items:
          type: string
          pattern: ^(USER|AGENCY):.*$
        example: USER:1234 ou AGENCY:1234
    StudySearchQuery-marketingTypes:
      name: marketingTypes
      in: query
      description: Liste de types de marché (vente, location)
      schema:
        type: array
        items:
          type: string
          enum:
            - SALE
            - RENT
    StudySearchQuery-propertyExternalIds:
      name: propertyExternalIds
      in: query
      description: Liste d'identifiants externes de biens
      schema:
        type: array
        items:
          type: string
          pattern: ^ID:.*$
        example: ID:1234
    creationDateMin:
      name: creationDateMin
      in: query
      description: Date de création minimale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date-time
    creationDateMax:
      name: creationDateMax
      in: query
      description: Date de création maximale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date-time
    updateDateMin:
      name: updateDateMin
      in: query
      description: Date de mise à jour minimale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date-time
    updateDateMax:
      name: updateDateMax
      in: query
      description: Date de mise à jour maximale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date-time
    prospectStatuses:
      name: statuses
      in: query
      description: Statuts du prospect
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ProspectStatus'
    prospectLostReasons:
      name: lostReasons
      in: query
      description: Raisons de perte d'un prospect
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ProspectLostReason'
    dueDateMin:
      name: dueDateMin
      in: query
      description: Date d'échéance minimale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date
    dueDateMax:
      name: dueDateMax
      in: query
      description: Date d'échéance maximale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date
    doneDateMin:
      name: doneDateMin
      in: query
      description: Date de fin minimale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date
    doneDateMax:
      name: doneDateMax
      in: query
      description: Date de fin maximale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date
    savedSearchIds:
      name: savedSearchIds
      in: query
      description: Identifiants d'alertes
      schema:
        type: array
        items:
          type: string
          format: uuid
    prospectSource:
      name: source
      in: query
      description: La source du prospect
      schema:
        type: string
        enum:
          - ONLINE_ADS
          - FIELD_PROSPECTING
          - WEBSITE_ESTIMATOR
          - WEBSITE_CONTACT
    pipeIds:
      name: pipeIds
      in: query
      description: Identifiants de pipes
      schema:
        type: array
        items:
          type: string
          format: uuid
    pipeStepIds:
      name: pipeStepIds
      in: query
      description: Identifiants d'étapes de pipe
      schema:
        type: array
        items:
          type: string
          format: uuid
    positionInPipeStepMin:
      name: positionInPipeStepMin
      in: query
      description: Position minimale dans le pipe
      schema:
        type: number
        format: double
    positionInPipeStepMax:
      name: positionInPipeStepMax
      in: query
      description: Position maximale dans le pipe
      schema:
        type: number
        format: double
    archiveDateMin:
      name: archiveDateMin
      in: query
      description: Date d'archivage minimale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date
    archiveDateMax:
      name: archiveDateMax
      in: query
      description: Date d'archivage maximale (YYYY-mm-ddTHH:mm:ss)
      schema:
        type: string
        format: date
    ProspectIds:
      name: prospectIds
      in: query
      description: Liste d'identifiants de prospects
      schema:
        type: array
        items:
          type: integer
          format: int64
    organizationId:
      name: organizationId
      in: query
      description: Identifiant de l'organisation
      schema:
        type: integer
        format: int64
    done:
      name: done
      in: query
      description: Description de done
      schema:
        type: boolean
x-tagGroups:
  - name: MOTEUR DE RECHERCHE
    tags:
      - Les biens (ancien/neuf)
      - Les biens similaires (ancien/neuf)
      - Les programmes (neuf)
  - name: MOTEUR D'ESTIMATION
    tags:
      - Estimation (prix, loyer, etc)
  - name: CARTOGRAPHIE DU MARCHE
    tags:
      - Génération de carte
  - name: INDICATEURS DE MARCHE
    tags:
      - Indicateurs sur les biens (ancien/neuf)
  - name: STATISTIQUES DE MARCHE
    tags:
      - Statistiques sur les biens (ancien/neuf)
      - Statistiques sur les biens similaires (ancien/neuf)
      - Statistiques sur les programmes (neuf)
  - name: REFERENTIEL GEOGRAPHIQUE
    tags:
      - Département
      - Agglomeration (EPCI)
      - Commune
      - Code postal
      - Quartier
      - IRIS
      - Parcelle
  - name: STATISTIQUES SOCIOECONOMIQUES
    tags:
      - Statistiques socioéconomiques
  - name: LEGISLATION
    tags:
      - Encadrement des loyers
  - name: REFERENTIEL DES PERMIS DE CONSTRUIRE
    tags:
      - Permis de construire
  - name: REFERENTIEL DES PROFESIONNELS
    tags:
      - Etablissement (agence, promoteur, etc)
      - Réseaux de mandataires
  - name: INTEGRATION DE NOS SOLUTIONS
    tags:
      - Utilisateurs
      - Etudes
      - Prospects
      - Activités de prospection
      - Estimation
  - name: MODELES
    tags:
      - Modele-bien
      - Modele-programme
      - Modele-departement
      - Modele-agglomeration
      - Modele-commune
      - Modele-code-postal
      - Modele-quartier
      - Modele-IRIS
      - Modele-parcelle
      - Modele-censusStats
      - Modele-rentControl
      - Modele-buildingPermit
      - Modele-utilisateur
      - Modele-etude
      - Modele-prospect
      - Modele-activite-de-prospection
