Skip to content

Premiers pas ​

Installation ​

bash
pnpm add belgica
bash
npm install belgica
bash
yarn add belgica

Le package est en ESM, fournit ses propres définitions de types, n'a aucune dépendance à l'exécution et fonctionne dans les navigateurs et sous Node 22.12 ou plus récent, où require() le charge aussi. Il est testé sous Node 22.12, 22, 24 et 26.

N'importez que ce dont vous avez besoin ​

Les données sont intégrées au JavaScript : importer depuis la racine du package charge donc tous les jeux de données. Chaque jeu de données a son propre point d'entrée, et les juridictions et les cantons (avec le texte légal de leurs territoires) sont de loin les plus volumineux :

ts
import { getInterestRate } from 'belgica/interest-rates'
import { getCourt } from 'belgica/courts'
import { getCanton } from 'belgica/territory'
import { getMunicipalitiesForPostalCode } from 'belgica/postal-codes'

Les limites des cantons font exception : un million de positions de géométrie, seulement dans belgica/canton-boundaries, jamais chargées par la racine du package.

Point d'entréeJavaScript chargégzip
belgica1031 Ko110 Ko
belgica/territory251 Ko33 Ko
belgica/canton-boundaries254 Ko34 Ko
belgica/arrondissement-boundaries254 Ko34 Ko
belgica/courts587 Ko55 Ko
belgica/court-locations80 Ko10 Ko
belgica/courts/format1 Ko1 Ko
belgica/courts/load16 Ko2 Ko
belgica/cantons67 Ko8 Ko
belgica/cantons/territory78 Ko17 Ko
belgica/prisons62 Ko7 Ko
belgica/houses-of-justice27 Ko4 Ko
belgica/interest-rates13 Ko3 Ko
belgica/calendar8 Ko3 Ko
belgica/postal-codes169 Ko19 Ko

Un premier aperçu ​

ts
import {
    getCourt,
    findCourts,
    getCanton,
    getCantonsForMunicipality,
    getInterestRate,
} from 'belgica'

getCourt('justice-of-the-peace-gent-1').name.nl // 'Vredegerecht Gent 1'
findCourts({ type: 'enterprise-court', arrondissement: 'west-vlaanderen' })

getCantonsForMunicipality('44088') // [Canton merelbeke-melle]
getCantonsForMunicipality('44021') // Gent 1–5 : ville scindée, voyez le `territory` de chaque canton
getCanton('oudergem').seat.nl // 'Etterbeek'

getInterestRate('2024-06-15', 'legal') // { rate: 5.75, period: { from: '2024-01-01', to: '2024-12-31' } }
getInterestRate(new Date(2014, 5, 15), 'commercial', { contractAfter20130316: true }) // { rate: 8.5, … }

Tâches courantes ​

Quelle justice de paix pour une adresse ? ​

Cherchez le code REFNIS de la commune et obtenez ses cantons, puis la justice de paix du canton.

ts
import { getCantonsForMunicipality, getJusticeOfThePeace } from 'belgica'

const cantons = getCantonsForMunicipality('44088')
if (cantons.length === 1) {
    const court = getJusticeOfThePeace(cantons[0].id) // chaque canton a sa justice de paix
}

// Au jour de la signification de la citation, plutôt qu'aujourd'hui
getCantonsForMunicipality('44088', { on: '2025-09-15' })

Quand une ville est scindée en plusieurs cantons (Anvers, Gand, Bruxelles, Liège, …), vous obtenez plus d'un résultat. C'est l'adresse (la rue) qui tranche, et le territory de chaque canton contient la description légale de sa partie. Essayez-le sur la page Territoire et cantons.

Avec les coordonnées de l'adresse, les limites des cantons tranchent :

ts
import { findCantonsAt } from 'belgica/canton-boundaries'

const [canton] = findCantonsAt(3.7268, 51.053) // longitude, latitude : gent-1
const court = getJusticeOfThePeace(canton.id)

Quel tribunal pour une commune ? ​

Tout tribunal autre qu'une justice de paix liste les cantons qu'il couvre (cantons), tels que la loi les fixe. findCourtsWithJurisdiction y recherche les cantons d'une commune.

ts
import { findCourtsWithJurisdiction, getDivisions } from 'belgica'

findCourtsWithJurisdiction('23088', 'police-court') // [police-court-vilvoorde], pas Bruxelles
findCourtsWithJurisdiction('21004', 'labour-court') // le tribunal néerlandophone et le tribunal francophone de Bruxelles

// Le tribunal dans son ensemble ; la division qui connaît de l'affaire n'est pas encore dans les données
const [court] = findCourtsWithJurisdiction('44021', 'enterprise-court')
getDivisions(court.id) // enterprise-court-gent-gent, enterprise-court-gent-brugge, …

À partir d'un code postal ​

Une adresse vient avec un code postal, pas avec un code REFNIS. findCourtsForPostalCode va du code postal à la commune (codes postaux) et de là aux justices de paix et aux juridictions d'un type. Il répond par commune : trois codes postaux (1040, 1050, 1804) appartiennent à deux communes, et c'est alors la rue qui tranche.

ts
import { findCourtsForPostalCode, getMunicipalitiesForPostalCode } from 'belgica'

const [gent] = findCourtsForPostalCode('9050', 'labour-court')
gent.municipality.name.fr // 'Gand'
gent.courts.map((c) => c.id) // ['labour-court-gent']
gent.justicesOfThePeace.map((c) => c.canton.id) // ['gent-1', …, 'gent-5'] : la rue tranche

findCourtsForPostalCode('1040', 'police-court').map((r) => r.municipality.name.fr) // ['Bruxelles', 'Etterbeek']
getMunicipalitiesForPostalCode('9050').map((m) => m.id) // ['44021']

Dans une ville scindée en cantons, le code postal ramène la question à la commune ; le canton a toujours besoin de la rue, et ses limites restent de la prose juridique jusqu'à ce que #29 les ajoute en géométrie.

Intérêts dus à une date donnée ​

ts
import { getInterestRate, getLatestKnownRateDate } from 'belgica'

const result = getInterestRate(new Date(), 'commercial')
if (!result) {
    console.warn(`No rate on file; latest known day is ${getLatestKnownRateDate('commercial')}`)
}

getInterestRate renvoie null pour un jour sans taux connu, de sorte que vous pouvez avertir au lieu d'appliquer 0 % en silence. Elle lève une RangeError pour une date mal formée telle que '2024-6-1' : passez YYYY-MM-DD ou une Date.

Le nom des tribunaux dans une autre langue ​

Les noms sont ceux que chaque tribunal publie, dans chaque langue où il a une page. Un tribunal en Flandre publie uniquement en néerlandais ; les tribunaux bilingues de Bruxelles en néerlandais et en français ; les tribunaux d'Eupen en allemand et en français.

ts
getCourt('court-of-appeal-brussel').name.fr // "Cour d'appel de Bruxelles"
getCourt('police-court-eupen-sankt-vith').name.de // 'Polizeigericht Eupen, Abteilung Sankt Vith'

JSON brut ​

Les fichiers de données sont exportés eux aussi :

ts
import courts from 'belgica/data/courts.json' with { type: 'json' }

Les identifiants font partie de l'API publique ​

Les projets stockent des identifiants tels que justice-of-the-peace-gent-1 ou oost-vlaanderen ; ils ne changent donc jamais au sein d'une version majeure (voir Identifiants), et les versions suivent ces règles :

ChangementVersion
Ajout de donnéesmineure
Correction d'une valeurpatch
Suppression ou renommage d'un identifiantmajeure

Code sous licence MIT, données sous CC BY 4.0. Données de référence, pas un avis juridique : vérifiez les sources officielles.