{
  "openapi": "3.0.3",
  "info": {
    "title": "API OTB Studio",
    "version": "1.0.0",
    "description": "Le registre belge des entreprises via REST : recherche, profils, actionnariat, comptes annuels déposés et mandats. Chaque route demande un jeton `otb_live_`, et chaque réponse livrée coûte des crédits pour les données qu'elle contient."
  },
  "servers": [
    {
      "url": "https://api.otbstudio.ai"
    }
  ],
  "security": [
    {
      "token": []
    }
  ],
  "tags": [
    {
      "name": "Companies",
      "description": "Un registre des entreprises, lu de cinq façons."
    }
  ],
  "paths": {
    "/v1/companies": {
      "get": {
        "tags": [
          "Companies"
        ],
        "operationId": "searchCompanies",
        "summary": "Rechercher des entreprises",
        "description": "Trouve des entreprises par leur nom. Un résultat est volontairement succinct : choisissez l'entreprise visée et demandez son profil avec le numéro d'entreprise. Les dénominations légales, commerciales, néerlandaises et françaises sont toutes cherchées.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Le nom à chercher.",
            "schema": {
              "type": "string"
            },
            "example": "noordkaap"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Nombre de résultats renvoyés, de 1 à 25. Une valeur absente, nulle, négative ou plus grande donne 10.",
            "schema": {
              "type": "integer",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Les résultats, le meilleur d'abord. Une liste vide si rien ne correspond.",
            "headers": {
              "X-Credits-Cost": {
                "$ref": "#/components/headers/X-Credits-Cost"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/X-Credits-Remaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchReply"
                },
                "example": {
                  "companies": [
                    {
                      "enterpriseNumber": "BE0734567835",
                      "name": "Noordkaap Warehousing",
                      "employees": 214,
                      "statusCode": "AC"
                    },
                    {
                      "enterpriseNumber": "BE0712345630",
                      "name": "Noordkaap Logistics",
                      "employees": 187,
                      "statusCode": "AC"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "`q` est absent ou vide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueryRequired"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/Internal"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          }
        }
      }
    },
    "/v1/companies/{id}": {
      "get": {
        "tags": [
          "Companies"
        ],
        "operationId": "getCompany",
        "summary": "Obtenir une entreprise",
        "description": "Le profil d'une entreprise : dénominations, statut, forme juridique, adresse, coordonnées, activités, les derniers chiffres déposés, et des indicateurs qui disent quelles autres données existent pour elle.",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Le profil.",
            "headers": {
              "X-Credits-Cost": {
                "$ref": "#/components/headers/X-Credits-Cost"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/X-Credits-Remaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Profile"
                },
                "example": {
                  "enterpriseNumber": "BE0712345630",
                  "nameNl": "Noordkaap Logistics",
                  "statusCode": "AC",
                  "juridicalFormCode": "014",
                  "juridicalSituationCode": "000",
                  "typeOfEnterpriseCode": "2",
                  "deleted": false,
                  "startDate": "1998-06-15",
                  "street": "Kaaiweg 14",
                  "zipCode": "9000",
                  "city": "Gent",
                  "website": "noordkaap.example",
                  "activities": "MAIN :: 006 :: 2025 :: 49410;MAIN :: 001 :: 2025 :: 52100",
                  "financials": {
                    "closingDate": "2025-03-31",
                    "reference": "2025-00184417",
                    "schemaType": "full",
                    "employees": 186.4,
                    "equity": 12480310.52,
                    "operatingIncome": 3912774.18,
                    "ebitda": 5240118.66,
                    "resultForPeriod": 2731905.07,
                    "healthIndicator": 10
                  },
                  "has": {
                    "annualAccounts": true,
                    "participations": true,
                    "accountants": true,
                    "valuations": false,
                    "socialBalances": true
                  },
                  "snapshotDate": "2026-04-29"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/Internal"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          }
        }
      }
    },
    "/v1/companies/{id}/ownership": {
      "get": {
        "tags": [
          "Companies"
        ],
        "operationId": "getCompanyOwnership",
        "summary": "Obtenir l'actionnariat",
        "description": "Qui détient une participation dans cette entreprise, et les participations qu'elle détient dans d'autres. Les deux sens ont la même forme, et le numéro d'entreprise de chaque autre partie peut revenir directement dans cette route, pour suivre une chaîne.",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Les deux sens. Chaque liste peut être vide.",
            "headers": {
              "X-Credits-Cost": {
                "$ref": "#/components/headers/X-Credits-Cost"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/X-Credits-Remaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Ownership"
                },
                "example": {
                  "enterpriseNumber": "BE0712345630",
                  "shareholders": [
                    {
                      "name": "Noordkaap Holding NV",
                      "enterpriseNumber": "BE0723456781",
                      "stakePercent": 72.5,
                      "shareClass": "Gewone aandelen",
                      "asOf": "2025-03-31",
                      "sourceReference": "2025-00184417",
                      "sourceSystem": "NBB",
                      "exact": true
                    }
                  ],
                  "participations": [
                    {
                      "name": "Noordkaap Warehousing",
                      "enterpriseNumber": "BE0734567835",
                      "stakePercent": 100,
                      "asOf": "2025-03-31",
                      "sourceReference": "2025-00184417",
                      "sourceSystem": "NBB",
                      "exact": true
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/Internal"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          }
        }
      }
    },
    "/v1/companies/{id}/financials": {
      "get": {
        "tags": [
          "Companies"
        ],
        "operationId": "getCompanyFinancials",
        "summary": "Obtenir les comptes annuels déposés",
        "description": "Les chiffres déposés, une ligne par exercice, le plus récent d'abord. Une rectification remplace le dépôt qu'elle rectifie et est signalée plutôt que cachée. Chaque exercice coûte des crédits, donc dix ans coûtent dix fois un an.",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "description": "Nombre d'exercices renvoyés, de 1 à 20. Une valeur absente, nulle, négative ou plus grande donne 10.",
            "schema": {
              "type": "integer",
              "default": 10
            }
          },
          {
            "name": "detail",
            "in": "query",
            "required": false,
            "description": "`true` ajoute le tableau des flux de trésorerie et les postes de bilan nommés à chaque exercice.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Les exercices. Une liste vide si l'entreprise n'a rien déposé.",
            "headers": {
              "X-Credits-Cost": {
                "$ref": "#/components/headers/X-Credits-Cost"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/X-Credits-Remaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FinancialsReply"
                },
                "example": {
                  "periods": [
                    {
                      "closingDate": "2025-03-31",
                      "reference": "2025-00184417",
                      "schemaType": "full",
                      "employees": 186.4,
                      "equity": 12480310.52,
                      "operatingIncome": 3912774.18,
                      "ebitda": 5240118.66,
                      "resultForPeriod": 2731905.07,
                      "healthIndicator": 10,
                      "cashFlow": {
                        "operating": 4410228.35,
                        "investing": -1876340.12,
                        "financing": -1504377.8,
                        "free": 2533888.23,
                        "cashAtPeriodEnd": 1388902.41,
                        "distributionsToOwners": 600000
                      },
                      "balanceSheet": {
                        "operatingProfit": 3480112.9,
                        "depreciation": 1328006.48,
                        "staffCosts": 9876540.21,
                        "totalAssets": 31902554.7,
                        "totalDebt": 8044120.33,
                        "interestPaid": 288410.12
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/Internal"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          }
        }
      }
    },
    "/v1/companies/{id}/people": {
      "get": {
        "tags": [
          "Companies"
        ],
        "operationId": "getCompanyPeople",
        "summary": "Obtenir les personnes",
        "description": "Administrateurs et autres mandats déposés pour cette entreprise, les mandats en cours d'abord, puis l'historique. Le parti politique, la rémunération et l'adresse du domicile ne sont jamais renvoyés, et les personnes que la source marque comme masquées sont omises.",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Nombre de mandats renvoyés, de 1 à 200. Une valeur absente, nulle, négative ou plus grande donne 50.",
            "schema": {
              "type": "integer",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Les mandats. Une liste vide si aucun n'est déposé.",
            "headers": {
              "X-Credits-Cost": {
                "$ref": "#/components/headers/X-Credits-Cost"
              },
              "X-Credits-Remaining": {
                "$ref": "#/components/headers/X-Credits-Remaining"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PeopleReply"
                },
                "example": {
                  "people": [
                    {
                      "lastName": "Verhaegen",
                      "firstName": "Lotte",
                      "category": "ADMINISTER",
                      "role": "13",
                      "profession": "Gedelegeerd bestuurder",
                      "startDate": "2024-09-25",
                      "endDate": "2028-09-27",
                      "current": true,
                      "viaCompany": "Verhaegen Consult BV",
                      "viaEnterpriseNumber": "BE1023456797",
                      "sourceSystem": "NBB",
                      "sourceReference": "2025-00184417"
                    },
                    {
                      "lastName": "Peeters",
                      "firstName": "Luc",
                      "category": "OTHERMANDATE",
                      "role": "Aankoper",
                      "current": true,
                      "sourceSystem": "BSDM"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/Internal"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "token": {
        "type": "http",
        "scheme": "bearer",
        "description": "Un jeton `otb_live_`, créé dans le tableau de bord OTB Studio."
      }
    },
    "parameters": {
      "id": {
        "name": "id",
        "in": "path",
        "required": true,
        "description": "Le numéro d'entreprise. `0712.345.630`, `BE 0712 345 630` et `BE0712345630` sont tous acceptés.",
        "schema": {
          "type": "string"
        },
        "example": "BE0712345630"
      }
    },
    "headers": {
      "X-Credits-Cost": {
        "description": "Ce que cette réponse a coûté, en crédits.",
        "schema": {
          "type": "integer"
        }
      },
      "X-Credits-Remaining": {
        "description": "Le solde après cette réponse.",
        "schema": {
          "type": "integer"
        }
      },
      "Retry-After": {
        "description": "Secondes à attendre avant de réessayer.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "Aucun jeton, ou un jeton non valide. `missing_token` sans en-tête `Authorization: Bearer`, `invalid_token` si le jeton est inconnu, révoqué ou du mauvais type.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Unauthorized"
            }
          }
        }
      },
      "PaymentRequired": {
        "description": "L'organisation n'a pas d'abonnement, son solde est vide, ou le solde ne couvre pas cette réponse. Si la réponse était trop chère, les en-têtes disent ce qu'elle aurait coûté et ce qui reste.",
        "headers": {
          "X-Credits-Cost": {
            "$ref": "#/components/headers/X-Credits-Cost"
          },
          "X-Credits-Remaining": {
            "$ref": "#/components/headers/X-Credits-Remaining"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PaymentRequired"
            }
          }
        }
      },
      "NotFound": {
        "description": "Aucune entreprise n'a ce numéro d'entreprise.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/NotFound"
            }
          }
        }
      },
      "RateLimited": {
        "description": "L'organisation dépasse sa limite (10 appels par seconde, pointes de 20) ou a 4 appels en cours. Réessayez après `Retry-After`.",
        "headers": {
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/RateLimited"
            }
          }
        }
      },
      "Internal": {
        "description": "Une erreur s'est produite de notre côté.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Internal"
            }
          }
        }
      },
      "Busy": {
        "description": "Les données n'ont pas pu être lues en 15 secondes. Réessayez après `Retry-After`.",
        "headers": {
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Busy"
            }
          }
        }
      }
    },
    "schemas": {
      "SearchReply": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "companies"
        ],
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Match"
            }
          }
        }
      },
      "Match": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "enterpriseNumber",
          "name"
        ],
        "properties": {
          "enterpriseNumber": {
            "type": "string",
            "description": "La clé pour toutes les autres routes."
          },
          "name": {
            "type": "string",
            "description": "Le nom qui correspond. Ce n'est pas toujours le nom sous lequel vous connaissez l'entreprise."
          },
          "employees": {
            "type": "number",
            "description": "Moyenne des équivalents temps plein sur l'exercice le plus récent, pas le nombre de personnes. Ce n'est pas un nombre entier."
          },
          "statusCode": {
            "type": "string",
            "description": "Le code de statut BCE brut, par exemple `AC` pour active."
          }
        }
      },
      "Profile": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "enterpriseNumber",
          "deleted",
          "has"
        ],
        "properties": {
          "enterpriseNumber": {
            "type": "string"
          },
          "nameNl": {
            "type": "string",
            "description": "La dénomination néerlandaise."
          },
          "nameFr": {
            "type": "string",
            "description": "La dénomination française."
          },
          "abbreviationNl": {
            "type": "string"
          },
          "commercialName": {
            "type": "string"
          },
          "statusCode": {
            "type": "string",
            "description": "Code BCE brut, sans libellé."
          },
          "juridicalFormCode": {
            "type": "string",
            "description": "Code BCE brut de la forme juridique, sans libellé."
          },
          "juridicalSituationCode": {
            "type": "string",
            "description": "Code BCE brut, sans libellé."
          },
          "typeOfEnterpriseCode": {
            "type": "string",
            "description": "Code BCE brut, sans libellé."
          },
          "deleted": {
            "type": "boolean",
            "description": "L'entreprise n'existe plus. Renvoyée plutôt que cachée."
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "street": {
            "type": "string"
          },
          "zipCode": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "telephone": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "website": {
            "type": "string"
          },
          "activities": {
            "type": "string",
            "description": "Une chaîne composée : `MAIN :: 006 :: 2025 :: 58120`, répétée et séparée par `;`. La dernière partie est le code NACE et la troisième est une année. Les deux premières parties sont des codes source sans signification publiée."
          },
          "financials": {
            "$ref": "#/components/schemas/Period"
          },
          "has": {
            "$ref": "#/components/schemas/Available"
          },
          "snapshotDate": {
            "type": "string",
            "format": "date",
            "description": "Date de la dernière mise à jour de cette entreprise depuis la source. Chaque réponse vaut à une date."
          }
        }
      },
      "Available": {
        "type": "object",
        "additionalProperties": false,
        "description": "Quelles autres données la source détient pour cette entreprise. Une borne supérieure : un indicateur à true signifie que la source a ces données, pas qu'un appel renverra des lignes.",
        "required": [
          "annualAccounts",
          "participations",
          "accountants",
          "valuations",
          "socialBalances"
        ],
        "properties": {
          "annualAccounts": {
            "type": "boolean",
            "description": "Lisible via la route des comptes annuels."
          },
          "participations": {
            "type": "boolean",
            "description": "Lisible via la route de l'actionnariat."
          },
          "accountants": {
            "type": "boolean",
            "description": "Déposé, pas encore servi par cette API."
          },
          "valuations": {
            "type": "boolean",
            "description": "Déposé, pas encore servi par cette API."
          },
          "socialBalances": {
            "type": "boolean",
            "description": "Déposé, pas encore servi par cette API."
          }
        }
      },
      "FinancialsReply": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "periods"
        ],
        "properties": {
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Period"
            }
          }
        }
      },
      "Period": {
        "type": "object",
        "additionalProperties": false,
        "description": "Un exercice, tel que déposé. Les montants sont en euros.",
        "required": [
          "closingDate"
        ],
        "properties": {
          "closingDate": {
            "type": "string",
            "format": "date"
          },
          "reference": {
            "type": "string",
            "description": "La référence du dépôt à la Banque nationale de Belgique, pour vérifier un chiffre dans le document source."
          },
          "schemaType": {
            "type": "string",
            "description": "Le schéma du dépôt, par exemple `full` ou `abbreviated`. Une entreprise qui change de schéma rapporte un autre niveau de détail."
          },
          "corrected": {
            "type": "boolean",
            "description": "Ce dépôt a remplacé un dépôt antérieur pour le même exercice. C'est le chiffre qui fait foi."
          },
          "comparative": {
            "type": "boolean",
            "description": "Ces chiffres viennent de la colonne de l'exercice précédent d'un dépôt ultérieur, pas d'un dépôt propre. La référence ne peut pas être consultée."
          },
          "employees": {
            "type": "number",
            "description": "Moyenne des équivalents temps plein sur l'exercice, pas le nombre de personnes."
          },
          "equity": {
            "type": "number"
          },
          "operatingIncome": {
            "type": "number"
          },
          "ebitda": {
            "type": "number",
            "description": "Le chiffre dérivé de la source. Les comptes annuels belges n'ont pas de poste EBITDA."
          },
          "resultForPeriod": {
            "type": "number"
          },
          "healthIndicator": {
            "type": "number",
            "description": "Le score de la source, un nombre entier de 1 à 10. La méthode n'est pas publiée."
          },
          "cashFlow": {
            "$ref": "#/components/schemas/CashFlow"
          },
          "balanceSheet": {
            "$ref": "#/components/schemas/BalanceSheet"
          }
        }
      },
      "CashFlow": {
        "type": "object",
        "additionalProperties": false,
        "description": "Le tableau des flux de trésorerie déposé. Seulement avec `detail=true`.",
        "properties": {
          "operating": {
            "type": "number"
          },
          "investing": {
            "type": "number"
          },
          "financing": {
            "type": "number"
          },
          "free": {
            "type": "number"
          },
          "cashAtPeriodEnd": {
            "type": "number"
          },
          "distributionsToOwners": {
            "type": "number",
            "description": "Dividendes et autres distributions aux propriétaires, tels que déposés."
          }
        }
      },
      "BalanceSheet": {
        "type": "object",
        "additionalProperties": false,
        "description": "Les postes du bilan demandés par leur nom. Seulement avec `detail=true`.",
        "properties": {
          "operatingProfit": {
            "type": "number"
          },
          "depreciation": {
            "type": "number"
          },
          "staffCosts": {
            "type": "number"
          },
          "totalAssets": {
            "type": "number",
            "description": "Le total du bilan."
          },
          "totalDebt": {
            "type": "number"
          },
          "interestPaid": {
            "type": "number",
            "description": "Le coût des dettes pour l'exercice."
          }
        }
      },
      "Ownership": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "enterpriseNumber",
          "shareholders",
          "participations"
        ],
        "properties": {
          "enterpriseNumber": {
            "type": "string"
          },
          "shareholders": {
            "type": "array",
            "description": "Participations détenues dans cette entreprise.",
            "items": {
              "$ref": "#/components/schemas/Stake"
            }
          },
          "participations": {
            "type": "array",
            "description": "Participations que cette entreprise détient dans d'autres.",
            "items": {
              "$ref": "#/components/schemas/Stake"
            }
          }
        }
      },
      "Stake": {
        "type": "object",
        "additionalProperties": false,
        "description": "Un lien d'actionnariat, lu depuis l'un ou l'autre côté.",
        "required": [
          "exact"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "L'autre partie."
          },
          "enterpriseNumber": {
            "type": "string",
            "description": "Le numéro de l'autre partie. Pas toujours belge."
          },
          "stakePercent": {
            "type": "number",
            "description": "La participation directe, 50 pour la moitié."
          },
          "indirectPercent": {
            "type": "number",
            "description": "Une participation détenue via une autre entité, sur la même échelle."
          },
          "shareClass": {
            "type": "string",
            "description": "La catégorie d'actions telle que déposée, dans la langue du dépôt."
          },
          "asOf": {
            "type": "string",
            "format": "date",
            "description": "La fin de l'exercice couvert par le dépôt."
          },
          "sourceReference": {
            "type": "string",
            "description": "Le dépôt dont la participation est tirée."
          },
          "sourceSystem": {
            "type": "string",
            "description": "`NBB` pour les dépôts à la Banque nationale. Leurs références peuvent être consultées."
          },
          "exact": {
            "type": "boolean",
            "description": "La confiance de la source dans la précision de ce lien. False signale une entrée périmée ou déduite."
          }
        }
      },
      "PeopleReply": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "people"
        ],
        "properties": {
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Mandate"
            }
          }
        }
      },
      "Mandate": {
        "type": "object",
        "additionalProperties": false,
        "description": "Une fonction qu'une personne exerce, ou a exercée, dans cette entreprise.",
        "required": [
          "current"
        ],
        "properties": {
          "lastName": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "description": "`ADMINISTER`, `SHAREHOLDER`, `LOCALPOLITICALMANDATE` ou `OTHERMANDATE`."
          },
          "role": {
            "type": "string",
            "description": "Pour `ADMINISTER`, un code source sans libellé, par exemple `13`. Pour les autres catégories, la fonction en toutes lettres, dans la langue du dépôt."
          },
          "profession": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "En général la fin du mandat, pas le jour où la personne est partie."
          },
          "current": {
            "type": "boolean",
            "description": "Si le mandat est en cours aujourd'hui. Lisez ce champ plutôt que les dates."
          },
          "viaCompany": {
            "type": "string",
            "description": "Rempli quand le mandat est exercé via une société, avec cette personne comme représentant permanent."
          },
          "viaEnterpriseNumber": {
            "type": "string"
          },
          "sourceSystem": {
            "type": "string"
          },
          "sourceReference": {
            "type": "string"
          }
        }
      },
      "QueryRequired": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "query_required"
            ]
          }
        }
      },
      "Unauthorized": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "missing_token",
              "invalid_token"
            ]
          }
        }
      },
      "PaymentRequired": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "insufficient_credits"
            ]
          }
        }
      },
      "NotFound": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "not_found"
            ]
          }
        }
      },
      "RateLimited": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "rate_limited"
            ]
          }
        }
      },
      "Internal": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "internal"
            ]
          }
        }
      },
      "Busy": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": [
              "busy"
            ]
          }
        }
      }
    }
  }
}
