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
| Parametro | Usato da | Note |
|---|---|---|
| q | tutti gli endpoint di ricerca | Ricerca 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. |
| query | tutti gli endpoint di ricerca | Ricerca a testo libero. Su /decisions, un query non vuoto prevale su q. Consultate i parametri di ogni endpoint. |
| limit | ovunque | Valori 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 | /decisions | de / fr / it. Filtra per lingua della decisione. |
| canton | /decisions · /laws/search | Codice cantonale di due lettere (ZH, BE, …) o CH per il federale. |
| court | /decisions | Chiave del tribunale (bger, bvger, ge_gerichte, …). Vedi /courts. |
| jurisdiction | /laws/search | all, federal o cantonal. |
| article | /laws/{abbreviation} | Numero di articolo (es. 41, 266l). |
Riferimento degli endpoint
- 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.
- 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.
- 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)".
- 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.
- 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).