Premiers pas
Installation
pnpm add belgicanpm install belgicayarn add belgicaLe 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 :
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ée | JavaScript chargé | gzip |
|---|---|---|
belgica | 1031 Ko | 110 Ko |
belgica/territory | 251 Ko | 33 Ko |
belgica/canton-boundaries | 254 Ko | 34 Ko |
belgica/arrondissement-boundaries | 254 Ko | 34 Ko |
belgica/courts | 587 Ko | 55 Ko |
belgica/court-locations | 80 Ko | 10 Ko |
belgica/courts/format | 1 Ko | 1 Ko |
belgica/courts/load | 16 Ko | 2 Ko |
belgica/cantons | 67 Ko | 8 Ko |
belgica/cantons/territory | 78 Ko | 17 Ko |
belgica/prisons | 62 Ko | 7 Ko |
belgica/houses-of-justice | 27 Ko | 4 Ko |
belgica/interest-rates | 13 Ko | 3 Ko |
belgica/calendar | 8 Ko | 3 Ko |
belgica/postal-codes | 169 Ko | 19 Ko |
Un premier aperçu
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.
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 :
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.
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.
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
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.
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 :
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 :
| Changement | Version |
|---|---|
| Ajout de données | mineure |
| Correction d'une valeur | patch |
| Suppression ou renommage d'un identifiant | majeure |