Erste Schritte
Installation
pnpm add belgicanpm install belgicayarn add belgicaDas Package ist ESM, bringt eigene Typdefinitionen mit, hat keine Laufzeitabhängigkeiten und läuft in Browsern und auf Node 22.12 oder neuer, wo es auch mit require() geladen werden kann. Getestet wird es auf Node 22.12, 22, 24 und 26.
Nur importieren, was Sie brauchen
Die Daten sind in das JavaScript gebündelt; wer aus dem Root des Package importiert, lädt also jeden Datensatz. Jeder Datensatz hat einen eigenen Entry Point, und die Gerichte und die Kantone (mit dem Gesetzestext ihres Gebiets) sind mit Abstand die größten:
import { getInterestRate } from 'belgica/interest-rates'
import { getCourt } from 'belgica/courts'
import { getCanton } from 'belgica/territory'
import { getMunicipalitiesForPostalCode } from 'belgica/postal-codes'Die Kantonsgrenzen sind die Ausnahme: eine Million Positionen Geometrie, nur in belgica/canton-boundaries, nie vom Root des Package geladen.
| Entry Point | Geladenes JavaScript | gzip |
|---|---|---|
belgica | 1031 KB | 110 KB |
belgica/territory | 251 KB | 33 KB |
belgica/canton-boundaries | 254 KB | 34 KB |
belgica/arrondissement-boundaries | 254 KB | 34 KB |
belgica/courts | 587 KB | 55 KB |
belgica/court-locations | 80 KB | 10 KB |
belgica/courts/format | 1 KB | 1 KB |
belgica/courts/load | 16 KB | 2 KB |
belgica/cantons | 67 KB | 8 KB |
belgica/cantons/territory | 78 KB | 17 KB |
belgica/prisons | 62 KB | 7 KB |
belgica/houses-of-justice | 27 KB | 4 KB |
belgica/interest-rates | 13 KB | 3 KB |
belgica/calendar | 8 KB | 3 KB |
belgica/postal-codes | 169 KB | 19 KB |
Ein erster Blick
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: geteilte Stadt, siehe `territory` jedes Kantons
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, … }Häufige Aufgaben
Welches Friedensgericht ist für eine Adresse zuständig?
Schlagen Sie den REFNIS-Code der Gemeinde nach, holen Sie ihre Kantone und dann das Friedensgericht des Kantons.
import { getCantonsForMunicipality, getJusticeOfThePeace } from 'belgica'
const cantons = getCantonsForMunicipality('44088')
if (cantons.length === 1) {
const court = getJusticeOfThePeace(cantons[0].id) // jeder Kanton hat sein Friedensgericht
}
// Am Tag der Zustellung der Ladung statt heute
getCantonsForMunicipality('44088', { on: '2025-09-15' })Ist eine Stadt auf mehrere Kantone aufgeteilt (Antwerpen, Gent, Brüssel, Lüttich, …), erhalten Sie mehr als ein Ergebnis. Dann entscheidet die Straßenadresse, und territory jedes Kantons enthält die gesetzliche Beschreibung seines Teils. Probieren Sie es auf der Seite Gebiet und Kantone aus.
Mit den Koordinaten der Adresse entscheiden die Kantonsgrenzen:
import { findCantonsAt } from 'belgica/canton-boundaries'
const [canton] = findCantonsAt(3.7268, 51.053) // Längengrad, Breitengrad: gent-1
const court = getJusticeOfThePeace(canton.id)Welches Gericht für eine Gemeinde?
Jedes Gericht außer einem Friedensgericht führt die Kantone auf, die es abdeckt (cantons), so wie das Gesetz sie festlegt. findCourtsWithJurisdiction sucht die Kantone einer Gemeinde darin.
import { findCourtsWithJurisdiction, getDivisions } from 'belgica'
findCourtsWithJurisdiction('23088', 'police-court') // [police-court-vilvoorde], nicht Brüssel
findCourtsWithJurisdiction('21004', 'labour-court') // das niederländischsprachige und das französischsprachige Gericht von Brüssel
// Das Gericht als Ganzes; welche Abteilung die Sache verhandelt, steht noch nicht in den Daten
const [court] = findCourtsWithJurisdiction('44021', 'enterprise-court')
getDivisions(court.id) // enterprise-court-gent-gent, enterprise-court-gent-brugge, …Ausgehend von einer Postleitzahl
Eine Adresse hat eine Postleitzahl, keinen REFNIS-Code. findCourtsForPostalCode geht von der Postleitzahl zur Gemeinde (Postleitzahlen) und von dort zu den Friedensgerichten und den Gerichten eines Typs. Die Antwort kommt pro Gemeinde: Drei Postleitzahlen (1040, 1050, 1804) gehören zu zwei Gemeinden, und dann entscheidet die Straße.
import { findCourtsForPostalCode, getMunicipalitiesForPostalCode } from 'belgica'
const [gent] = findCourtsForPostalCode('9050', 'labour-court')
gent.municipality.name.nl // 'Gent'
gent.courts.map((c) => c.id) // ['labour-court-gent']
gent.justicesOfThePeace.map((c) => c.canton.id) // ['gent-1', …, 'gent-5']: die Straße entscheidet
findCourtsForPostalCode('1040', 'police-court').map((r) => r.municipality.name.nl) // ['Brussel', 'Etterbeek']
getMunicipalitiesForPostalCode('9050').map((m) => m.id) // ['44021']In einer auf Kantone aufgeteilten Stadt grenzt die Postleitzahl die Frage auf die Gemeinde ein; für den Kanton braucht es weiterhin die Straße, und seine Grenzen sind juristischer Fließtext, bis #29 sie als Geometrie hinzufügt.
Geschuldete Zinsen an einem Tag
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 gibt null zurück für einen Tag, für den kein Zinssatz hinterlegt ist, sodass Sie warnen können, statt stillschweigend 0 % zu verwenden. Bei einem fehlerhaften Tag wie '2024-6-1' wirft es einen RangeError: Übergeben Sie YYYY-MM-DD oder ein Date.
Gerichtsnamen in einer anderen Sprache
Die Namen stehen so, wie jedes Gericht sie veröffentlicht, in jeder Sprache, in der es eine Seite hat. Ein Gericht in Flandern veröffentlicht nur auf Niederländisch, die zweisprachigen Gerichte in Brüssel auf Niederländisch und Französisch, die Gerichte in Eupen auf Deutsch und Französisch.
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'Rohes JSON
Die Datendateien werden ebenfalls exportiert:
import courts from 'belgica/data/courts.json' with { type: 'json' }IDs sind öffentliche API
Projekte speichern IDs wie justice-of-the-peace-gent-1 oder oost-vlaanderen; deshalb ändern sie sich innerhalb einer Major-Version nie (siehe Identifikatoren), und die Versionen folgen diesen Regeln:
| Änderung | Version |
|---|---|
| Daten hinzufügen | minor |
| Einen Wert korrigieren | patch |
| Eine ID entfernen oder umbenennen | major |