openapi: 3.1.0
info:
  title: 1dex Free Parcel Connector API
  version: 0.1.0
  description: Public contract for the free 1dex connector. Send a French address, retrieve nearby cadastral parcels as JSON/GeoJSON, and optionally inspect verified complementary public layers exposed on 1dex.fr.
servers:
  - url: https://1dex.fr
    description: Public 1dex website host.
paths:
  /explore/map-layer/{layer}:
    get:
      summary: Fetch nearby parcels around an address
      operationId: getPublicMapLayer
      parameters:
        - name: layer
          in: path
          required: true
          schema:
            type: string
            enum:
              - context
              - iris
              - parcelles
              - parcelles_dvf
              - parcelles_travaux
              - parcelles_labels
          example: parcelles
        - name: address
          in: query
          required: true
          schema:
            type: string
          example: 50 rue des tanneurs aix
        - name: city_code
          in: query
          required: false
          schema:
            type: string
          example: "13001"
        - name: lon
          in: query
          required: false
          schema:
            type: number
          example: 5.446245
        - name: lat
          in: query
          required: false
          schema:
            type: number
          example: 43.52782
        - name: viewport_bbox
          in: query
          required: false
          schema:
            type: string
          example: 5.4457,43.5274,5.4468,43.5282
        - name: viewport_zoom
          in: query
          required: false
          schema:
            type: number
          example: 19
        - name: viewport_render_mode
          in: query
          required: false
          schema:
            type: string
            enum:
              - features
          example: features
      responses:
        "200":
          description: Public map-layer payload.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MapLayerResponse"
components:
  schemas:
    MapLayerResponse:
      type: object
      required:
        - layerKey
        - label
        - status
        - warnings
        - data
      properties:
        layerKey:
          type: string
          example: parcelles
        label:
          type: string
          example: Parcelles
        summary:
          type: string
        status:
          type: string
          example: success
        warnings:
          type: array
          items: {}
        data:
          $ref: "#/components/schemas/MapFeatureCollection"
      additionalProperties: true
    MapFeatureCollection:
      type: object
      required:
        - type
        - features
      properties:
        type:
          type: string
          const: FeatureCollection
        features:
          type: array
          items:
            type: object
            additionalProperties: true
        selected_radius_meters:
          type: number
        total_parcel_count:
          type: integer
        visible_parcel_count:
          type: integer
        results_capped:
          type: boolean
        viewport_stream:
          type: boolean
        viewport_bounds:
          type: object
          additionalProperties: true
        viewport_zoom:
          type: number
        render_mode:
          type: string
      additionalProperties: true
