{
  "openapi": "3.1.0",
  "info": {
    "title": "Ilicompta — catalogue public de cabinets",
    "version": "1.0.0",
    "description": "Accès public en lecture seule aux fiches, périmètres et sources Ilicompta. 120 requêtes/minute/origine réseau partagées avec le MCP. Les sources d'origine sont conservées ; les dates inconnues restent null. Documentation : https://ilicompta.fr/developers",
    "contact": {
      "url": "https://ilicompta.fr/methodologie"
    }
  },
  "servers": [
    {
      "url": "https://ilicompta.fr/api/v1"
    }
  ],
  "security": [],
  "paths": {
    "/cabinets": {
      "get": {
        "operationId": "search_cabinets",
        "summary": "Rechercher des cabinets",
        "description": "Consultation publique sans clé. Données non exhaustives et dates historiques inconnues. Aucun classement de qualité.",
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": false,
            "schema": {
              "description": "Slug de ville recommandé (lyon-69000), sinon nom exact ou code postal ; les ambiguïtés sont retournées.",
              "type": "string",
              "minLength": 2,
              "maxLength": 180
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "description": "Nom de cabinet ou SIREN. Pas de recherche libre de prestations.",
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "pattern": "^[a-zA-Z0-9_+.-]+$"
            }
          },
          {
            "name": "service",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "pattern": "^[a-zA-Z0-9_+.-]+$"
            }
          },
          {
            "name": "software",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "pattern": "^[a-zA-Z0-9_+.-]+$"
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "pattern": "^[a-zA-Z0-9_+.-]+$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "default": 5,
              "type": "integer",
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 1600
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse du catalogue public",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/search_cabinets"
                }
              }
            }
          },
          "400": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/cabinets/{slug}": {
      "get": {
        "operationId": "get_cabinet",
        "summary": "Consulter une fiche et ses sources",
        "description": "Consultation publique sans clé. Données non exhaustives et dates historiques inconnues. Aucun classement de qualité.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 180,
              "pattern": "^[a-z0-9][a-z0-9_-]*$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse du catalogue public",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get_cabinet"
                }
              }
            }
          },
          "400": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/cities/{city}/stats": {
      "get": {
        "operationId": "get_city_stats",
        "summary": "Couverture du catalogue dans une ville",
        "description": "Consultation publique sans clé. Données non exhaustives et dates historiques inconnues. Aucun classement de qualité.",
        "parameters": [
          {
            "name": "city",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 180
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse du catalogue public",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get_city_stats"
                }
              }
            }
          },
          "400": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/cities": {
      "get": {
        "operationId": "cities",
        "summary": "Résoudre un nom de ville ou un code postal",
        "description": "Consultation publique sans clé. Données non exhaustives et dates historiques inconnues. Aucun classement de qualité.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "default": 8,
              "type": "integer",
              "minimum": 1,
              "maximum": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse du catalogue public",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/cities"
                }
              }
            }
          },
          "400": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/taxonomies": {
      "get": {
        "operationId": "taxonomies",
        "summary": "Valeurs des filtres d'activité",
        "description": "Consultation publique sans clé. Données non exhaustives et dates historiques inconnues. Aucun classement de qualité.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse du catalogue public",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/taxonomies"
                }
              }
            }
          },
          "400": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/meta": {
      "get": {
        "operationId": "meta",
        "summary": "Version du catalogue et limites",
        "description": "Consultation publique sans clé. Données non exhaustives et dates historiques inconnues. Aucun classement de qualité.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse du catalogue public",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/meta"
                }
              }
            }
          },
          "400": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Erreur explicite ; 409 : préciser une ville ambiguë ou recommencer la pagination ; 429 : attendre Retry-After.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "search_cabinets": {
        "type": "object",
        "properties": {
          "dataset_version": {
            "type": "string"
          },
          "export_generated_at": {
            "type": "string"
          },
          "publisher": {
            "type": "string",
            "const": "Ilicompta"
          },
          "methodology_url": {
            "type": "string",
            "format": "uri"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string"
          },
          "scope": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "slug": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "postal_codes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "department": {
                    "type": "string"
                  },
                  "canonical_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "includes_districts": {
                    "type": "boolean"
                  },
                  "total_cabinets": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "slug",
                  "name",
                  "postal_codes",
                  "department",
                  "canonical_url",
                  "includes_districts",
                  "total_cabinets"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            ]
          },
          "filters": {
            "type": "object",
            "properties": {
              "city": {
                "description": "Slug de ville recommandé (lyon-69000), sinon nom exact ou code postal ; les ambiguïtés sont retournées.",
                "type": "string",
                "minLength": 2,
                "maxLength": 180
              },
              "q": {
                "description": "Nom de cabinet ou SIREN. Pas de recherche libre de prestations.",
                "type": "string",
                "minLength": 2,
                "maxLength": 120
              },
              "sector": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "pattern": "^[a-zA-Z0-9_+.-]+$"
              },
              "service": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "pattern": "^[a-zA-Z0-9_+.-]+$"
              },
              "software": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "pattern": "^[a-zA-Z0-9_+.-]+$"
              },
              "language": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "pattern": "^[a-zA-Z0-9_+.-]+$"
              },
              "limit": {
                "default": 5,
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "required": [
              "limit"
            ],
            "additionalProperties": false
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "canonical_url": {
                  "type": "string",
                  "format": "uri"
                },
                "citation_url": {
                  "type": "string",
                  "format": "uri"
                },
                "city": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "postal_code": {
                      "type": "string"
                    },
                    "canonical_url": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uri"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "name",
                    "postal_code",
                    "canonical_url"
                  ],
                  "additionalProperties": false
                },
                "address": {
                  "type": "string"
                },
                "activities": {
                  "type": "object",
                  "properties": {
                    "sector": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "service": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "software": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "language": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "sector",
                    "service",
                    "software",
                    "language"
                  ],
                  "additionalProperties": false
                },
                "evidence": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "legacy_unverified",
                        "extracted_from_website",
                        "not_available"
                      ]
                    },
                    "source_url": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uri"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "granularity": {
                      "type": "string",
                      "const": "website"
                    },
                    "observed_at": {
                      "type": "null"
                    },
                    "verified_at": {
                      "type": "null"
                    },
                    "note": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "source_url",
                    "granularity",
                    "observed_at",
                    "verified_at",
                    "note"
                  ],
                  "additionalProperties": false
                },
                "detail_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "slug",
                "title",
                "name",
                "canonical_url",
                "citation_url",
                "city",
                "address",
                "activities",
                "evidence",
                "detail_url"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "dataset_version",
          "export_generated_at",
          "publisher",
          "methodology_url",
          "limitations",
          "scope",
          "filters",
          "total",
          "results",
          "next_cursor",
          "note"
        ],
        "additionalProperties": false
      },
      "get_cabinet": {
        "type": "object",
        "properties": {
          "dataset_version": {
            "type": "string"
          },
          "export_generated_at": {
            "type": "string"
          },
          "publisher": {
            "type": "string",
            "const": "Ilicompta"
          },
          "methodology_url": {
            "type": "string",
            "format": "uri"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string"
          },
          "cabinet": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "canonical_url": {
                "type": "string",
                "format": "uri"
              },
              "citation_url": {
                "type": "string",
                "format": "uri"
              },
              "city": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "postal_code": {
                    "type": "string"
                  },
                  "canonical_url": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "name",
                  "postal_code",
                  "canonical_url"
                ],
                "additionalProperties": false
              },
              "address": {
                "type": "string"
              },
              "activities": {
                "type": "object",
                "properties": {
                  "sector": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "service": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "software": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "language": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "sector",
                  "service",
                  "software",
                  "language"
                ],
                "additionalProperties": false
              },
              "publisher": {
                "type": "string",
                "const": "Ilicompta"
              },
              "summary": {
                "type": "string"
              },
              "website_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "legal": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "siren": {
                        "type": "string"
                      },
                      "creation_date": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "creation_scope": {
                        "type": "string"
                      },
                      "employee_range": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "employee_scope": {
                        "type": "string"
                      },
                      "reference_period": {
                        "type": "null"
                      },
                      "verification_url": {
                        "type": "string",
                        "format": "uri"
                      }
                    },
                    "required": [
                      "siren",
                      "creation_date",
                      "creation_scope",
                      "employee_range",
                      "employee_scope",
                      "reference_period",
                      "verification_url"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "evidence": {
                "type": "object",
                "properties": {
                  "identity": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "const": "legacy_unverified"
                      },
                      "source_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "observed_at": {
                        "type": "null"
                      },
                      "verified_at": {
                        "type": "null"
                      }
                    },
                    "required": [
                      "status",
                      "source_url",
                      "observed_at",
                      "verified_at"
                    ],
                    "additionalProperties": false
                  },
                  "activities": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "legacy_unverified",
                          "extracted_from_website",
                          "not_available"
                        ]
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "granularity": {
                        "type": "string",
                        "const": "website"
                      },
                      "observed_at": {
                        "type": "null"
                      },
                      "verified_at": {
                        "type": "null"
                      },
                      "note": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "status",
                      "source_url",
                      "granularity",
                      "observed_at",
                      "verified_at",
                      "note"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "identity",
                  "activities"
                ],
                "additionalProperties": false
              },
              "methodology_url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "slug",
              "title",
              "name",
              "canonical_url",
              "citation_url",
              "city",
              "address",
              "activities",
              "publisher",
              "summary",
              "website_url",
              "legal",
              "evidence",
              "methodology_url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "dataset_version",
          "export_generated_at",
          "publisher",
          "methodology_url",
          "limitations",
          "cabinet"
        ],
        "additionalProperties": false
      },
      "get_city_stats": {
        "type": "object",
        "properties": {
          "dataset_version": {
            "type": "string"
          },
          "export_generated_at": {
            "type": "string"
          },
          "publisher": {
            "type": "string",
            "const": "Ilicompta"
          },
          "methodology_url": {
            "type": "string",
            "format": "uri"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string"
          },
          "city": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "postal_codes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "department": {
                "type": "string"
              },
              "canonical_url": {
                "type": "string",
                "format": "uri"
              },
              "includes_districts": {
                "type": "boolean"
              },
              "total_cabinets": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "slug",
              "name",
              "postal_codes",
              "department",
              "canonical_url",
              "includes_districts",
              "total_cabinets"
            ],
            "additionalProperties": false
          },
          "citation_url": {
            "type": "string",
            "format": "uri"
          },
          "coverage": {
            "type": "object",
            "properties": {
              "total_cabinets": {
                "type": "number"
              },
              "with_activity_data": {
                "type": "number"
              },
              "with_extraction_source_url": {
                "type": "number"
              }
            },
            "required": [
              "total_cabinets",
              "with_activity_data",
              "with_extraction_source_url"
            ],
            "additionalProperties": false
          },
          "mentions": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "value": {
                    "type": "string"
                  },
                  "count": {
                    "type": "number"
                  },
                  "denominator": {
                    "type": "number"
                  },
                  "percent": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "value",
                  "count",
                  "denominator",
                  "percent"
                ],
                "additionalProperties": false
              }
            }
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "dataset_version",
          "export_generated_at",
          "publisher",
          "methodology_url",
          "limitations",
          "city",
          "citation_url",
          "coverage",
          "mentions",
          "note"
        ],
        "additionalProperties": false
      },
      "cities": {
        "type": "object",
        "properties": {
          "dataset_version": {
            "type": "string"
          },
          "export_generated_at": {
            "type": "string"
          },
          "publisher": {
            "type": "string",
            "const": "Ilicompta"
          },
          "methodology_url": {
            "type": "string",
            "format": "uri"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string"
          },
          "total": {
            "type": "number"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "postal_codes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "department": {
                  "type": "string"
                },
                "canonical_url": {
                  "type": "string",
                  "format": "uri"
                },
                "includes_districts": {
                  "type": "boolean"
                },
                "total_cabinets": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "slug",
                "name",
                "postal_codes",
                "department",
                "canonical_url",
                "includes_districts",
                "total_cabinets"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "dataset_version",
          "export_generated_at",
          "publisher",
          "methodology_url",
          "limitations",
          "total",
          "results"
        ],
        "additionalProperties": false
      },
      "taxonomies": {
        "type": "object",
        "properties": {
          "dataset_version": {
            "type": "string"
          },
          "export_generated_at": {
            "type": "string"
          },
          "publisher": {
            "type": "string",
            "const": "Ilicompta"
          },
          "methodology_url": {
            "type": "string",
            "format": "uri"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string"
          },
          "values": {
            "type": "object",
            "properties": {
              "sector": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "service": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "software": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "language": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "sector",
              "service",
              "software",
              "language"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "dataset_version",
          "export_generated_at",
          "publisher",
          "methodology_url",
          "limitations",
          "values"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "properties": {
          "dataset_version": {
            "type": "string"
          },
          "export_generated_at": {
            "type": "string"
          },
          "publisher": {
            "type": "string",
            "const": "Ilicompta"
          },
          "methodology_url": {
            "type": "string",
            "format": "uri"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "dataset_version",
          "export_generated_at",
          "publisher",
          "methodology_url",
          "limitations"
        ],
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "details": {}
            }
          },
          "request_id": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  },
  "externalDocs": {
    "url": "https://ilicompta.fr/developers/api"
  }
}
