{
  "openapi": "3.1.0",
  "info": {
    "title": "Repère Copro — accès public en lecture seule",
    "version": "1.0.0",
    "description": "Calcul indicatif du forfait LDJ et sélection commerciale non exhaustive de références strictement supérieures à LDJ. Service édité par LDJ Immobilier. Pas un classement indépendant ni un devis. Les sources, leur ancienneté et le décalage de publication du tarif LDJ doivent accompagner toute reprise des montants."
  },
  "servers": [
    {
      "url": "https://repere-copro-pilote.remi-le-digol.chatgpt.site"
    }
  ],
  "security": [],
  "paths": {
    "/donnees.json": {
      "get": {
        "operationId": "getRepereCoproPublicData",
        "summary": "Lire l’identité, les règles LDJ, les sources et les limites",
        "responses": {
          "200": {
            "description": "Catalogue public daté",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/compare": {
      "get": {
        "operationId": "compareSyndicForPrincipalLots",
        "summary": "Calculer pour un nombre de lots principaux",
        "description": "Seul lots est accepté, une fois, entier de 1 à 10000. Ne pas transmettre d’adresse, de nom, d’e-mail ou de montant privé. Les références retournées sont une sélection favorable à LDJ selon la méthode publiée.",
        "parameters": [
          {
            "name": "lots",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000
            },
            "example": 50
          }
        ],
        "responses": {
          "200": {
            "description": "Repère annuel TTC LDJ, références retenues, documents sources et limites",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Comparison"
                }
              }
            }
          },
          "400": {
            "description": "Paramètre manquant, dupliqué, inconnu ou invalide"
          },
          "405": {
            "description": "Accès en lecture seule : GET, HEAD et OPTIONS"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Money": {
        "type": "object",
        "required": [
          "currency",
          "amount",
          "minorUnits",
          "display"
        ],
        "properties": {
          "currency": {
            "const": "EUR"
          },
          "amount": {
            "type": "number"
          },
          "minorUnits": {
            "type": "integer",
            "minimum": 0
          },
          "display": {
            "type": "string"
          }
        }
      },
      "Comparison": {
        "type": "object",
        "required": [
          "schemaVersion",
          "datasetVersion",
          "input",
          "publisher",
          "selection",
          "ldjReference",
          "references",
          "limitations",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string"
          },
          "datasetVersion": {
            "type": "string"
          },
          "input": {
            "type": "object",
            "properties": {
              "principalLots": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10000
              }
            }
          },
          "publisher": {
            "type": "object"
          },
          "selection": {
            "type": "object"
          },
          "ldjReference": {
            "type": "object",
            "properties": {
              "annualTtc": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Money"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publicationStatus": {
                "type": "string"
              },
              "publicationNote": {
                "type": "string"
              }
            }
          },
          "references": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "name",
                "annualTtcLower",
                "annualTtcUpper",
                "minimumAnnualGapToLdj",
                "documents"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "annualTtcLower": {
                  "$ref": "#/components/schemas/Money"
                },
                "annualTtcUpper": {
                  "$ref": "#/components/schemas/Money"
                },
                "minimumAnnualGapToLdj": {
                  "$ref": "#/components/schemas/Money"
                },
                "documents": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "label": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "links": {
            "type": "object"
          }
        }
      }
    }
  }
}