API REST · OpenAPI 3.0.3

Interrogare il corpus OpenCaseLaw da qualsiasi linguaggio

Endpoint pubblici di ricerca per ricerche, grafo delle citazioni, leggi ed esportazioni. Questi endpoint sono gratuiti, senza chiave API e compatibili con CORS. Usano lo stesso backend di MCP e della ricerca web. La specifica completa dell’applicazione contiene anche altre funzioni.

Automatizzare la ricerca dal terminale

Installate il client leggero con pipx o uv. Salvate risultati limitati, recuperate considerandi esatti, risolvete liste di citazioni e conservate le fonti. Il client è pubblicato su PyPI come opencaselaw-cli.

pipx install opencaselaw-cli   # or: uv tool install opencaselaw-cli
ocl --help
ocl bundle create 'missbräuchliche Kündigung Rachekündigung' \
  --max-results 5 --law OR:336 --out research-bundle

Guida CLI: pipeline, raccolte di fonti e risoluzione delle citazioni →

Avvio rapido — cercare nel corpus

curl -s "https://mcp.opencaselaw.ch/api/decisions?q=Mietrecht+K%C3%BCndigung&limit=5"

Restituisce:

{
  "total": 1006,
  "total_is_lower_bound": false,
  "returned": 5,
  "results": [
    { "decision_id": "bge_BGE_140_III_86", "court": "bge",
      "decision_date": "2014-04-15", "language": "de",
      "title": "Mietrecht; …", "regeste": "…",
      "citation_string_de": "BGE 140 III 86", "canonical_url": "https://mcp.opencaselaw.ch/entscheid/…" },
    …
  ],
  "limit": 5, "offset": 0, "has_more": true, "next_offset": 5
}

Controllate total_is_lower_bound prima di considerare total esatto. Seguite next_offset finché has_more è vero. Una ricerca per rilevanza può esaurire il proprio insieme limitato di candidati prima di restituire tutti i risultati: has_more: false non prova una ricerca esaustiva. I filtri restringono la selezione; per analizzare tutto il corpus usate il download Parquet.

Avvio rapido — consultare un articolo

curl -s "https://mcp.opencaselaw.ch/api/laws/OR?article=41"
{
  "sr_number": "220",
  "abbreviation": "OR",
  "title": "Bundesgesetz vom 30. März 1911 …",
  "consolidation_date": "2026-01-01",
  "language": "de",
  "articles": [
    { "article_num": "41", "heading": null,
      "text": "1 Wer einem andern widerrechtlich Schaden zufügt, …" }
  ]
}

I nomi sono riconosciuti in DE/FR/IT, indipendentemente da maiuscole, punti e spazi (Cost, OPP2, o.p.p. 2); i trattati con il nome corrente (Patto ONU II, CEDU, CISG) e le denominazioni precedenti (OG → LTF, con una nota) sono risolti tramite la tabella CC0 law_aliases.json; gli atti cantonali portano il cantone in entrambi gli ordini: /api/laws/LT/TI.

Parametri comuni

ParametroUsato daNote
qtutti gli endpoint di ricercaRicerca a testo libero; la ricerca di decisioni accetta query e q. Operatori booleani (AND, OR, NOT), frasi esatte, numeri di fascicolo e riferimenti BGE. I risultati per rilevanza formano un insieme limitato; controllate paginazione e indicazioni del limite inferiore.
querytutti gli endpoint di ricercaRicerca a testo libero. Su /decisions, un query non vuoto prevale su q. Consultate i parametri di ogni endpoint.
limitovunqueValori predefiniti e massimi dipendono dall’endpoint. La ricerca di decisioni può ridurre il dettaglio o la dimensione della pagina. Usate il numero restituito e i campi di continuazione per la paginazione, non il limite richiesto.
offset/decisions · /citations/{decision_id}Offset di paginazione, dove supportato. Seguite next_offset; le liste di citazioni indicano la continuazione per ogni direzione.
language/decisionsde / fr / it. Filtra per lingua della decisione.
canton/decisions · /laws/searchCodice cantonale di due lettere (ZH, BE, …) o CH per il federale.
court/decisionsChiave del tribunale (bger, bvger, ge_gerichte, …). Vedi /courts.
jurisdiction/laws/searchall, federal o cantonal.
article/laws/{abbreviation}Numero di articolo (es. 41, 266l).

Riferimento degli endpoint

Decisioni
  • GET/api/decisionsCercare decisioni. Restituisce risultati paginati con stringhe di citazione + URL canonici.
  • GET/api/decisions/{decision_id}Recuperare una singola decisione con testo integrale.
  • GET/api/decisions/{decision_id}/export.docxEsportare come documento Word (citazione, regesto, considerandi strutturati).
  • GET/api/decisions/{decision_id}/export.bibVoce BibTeX per bibliografie LaTeX.
  • GET/api/decisions/{decision_id}/export.risRecord RIS per Zotero / EndNote / Mendeley.
  • GET/api/decisions/{decision_id}/export.pdfRi-rendering PDF della decisione.
  • GET/api/case-brief/{case}Scheda strutturata: fatti · motivazione · leggi · autorità · correlate.
  • GET/api/structure/{decision_id}Fatti + considerandi (paragrafi) + dispositivo + regesto.
  • GET/api/erwaegung/{decision_id}/{e_number}Unità di citazione svizzera verbatim (es. 2.3).
  • GET/api/regeste/{decision_id}Testo ufficiale del regesto del TF / TAF.
Grafo delle citazioni
  • GET/api/citations/{decision_id}Entrambe le direzioni: cosa cita + cosa la cita.
  • GET/api/appeal-chain/{decision_id}Storia procedurale attraverso le istanze.
  • GET/api/leading-casesDecisioni ordinate per autorità per una legge / un tema.
  • GET/api/citeCostruire una stringa di citazione formattata dal server.
Leggi & dottrina
  • GET/api/laws/searchFTS5 federata su articoli federali + cantonali. Restituisce snippet.
  • GET/api/laws/{abbreviation}Singolo articolo per abbreviazione (OR, ZGB, StGB, …).
  • GET/api/legislation/searchRicerca nel catalogo LexFind (33 000+ atti federali + cantonali).
  • GET/api/legislation/{lexfind_id}Singolo record legislativo.
  • GET/api/legislation/changesModifiche del diritto federale recenti e imminenti.
  • GET/api/doctrineTesto di legge + BGE ordinati + cronologia dottrinale + estratto di commentario.
  • GET/api/materialienMessaggi del Consiglio federale — intento legislativo.
  • GET/api/materialien/{law_code}Materiali per una legge specifica.
  • GET/api/amendment-refRisolvere i modelli "Art. X (versione riveduta Y)".
Commentario & insegnamento
  • GET/api/commentaries/searchCercare estratti OnlineKommentar + OpenLegalCommentary.
  • GET/api/commentaries/{abbreviation}Indice del commentario per una legge (OR, ZGB, …).
  • GET/api/exam-questionVero schema di fatti BGE come caso pratico con analisi nascosta.
  • GET/api/mock-decisionDecisione fittizia (solo ricerca) da fatti + giurisprudenza + leggi.
Verifica & introspezione
  • POST/api/attestVerificare una bozza di risposta — controlla ogni BGE / art. / stringa citata rispetto al corpus prima che lasci il server. Certifica le citazioni, i passaggi citati e i riferimenti di legge della bozza stessa; non certifica che non manchi alcuna autorità rilevante.
  • GET/api/courtsElencare tutti i 121 tribunali (federali, di regolazione, internazionali, cantonali).
  • GET/api/statisticsStatistiche aggregate — corpus, grafo delle citazioni, leggi, lingue.
  • GET/api/scraper-healthStato dell'ultima esecuzione per fonte (alimenta /coverage).
  • GET/api/atom/{court}.xmlFeed Atom — le 50 decisioni più recenti per tribunale.

La specifica dell’applicazione descrive le rotte distribuite; la copertura degli schemi di risposta varia. Questa versione sorgente aggiunge un sottoinsieme pubblico tipizzato a /api/research/openapi.json. Sarà disponibile dopo la distribuzione; vedere le note sul contratto.

Limiti di frequenza

Limitato in modo morbido a livello nginx per proteggere i worker a monte. Cadenza i lavori batch a ≤ 5 richieste/secondo per IP. Per un throughput maggiore, esegui lo stack localmente — istruzioni complete nel README (~65 GB di disco, ~30 min di configurazione).