Rechtspraak

2 routes under /api/rechtspraak.

POST/api/rechtspraak

Query Dutch case law (Rechtspraak) citation networks directly from PostgreSQL (`rs_document`, `rs_edge`, `rs_document_text`). Same response envelope as `/api/network` — the frontend graph code targets either with minimal branching — with extra filters unlocked by the migrated schema (typed appeal relations, publication-date windows, opendata status, BWB-resource and journal-abbr lookups). All parameters are wrapped inside an `arguments` object in the request body.

Request parameters (inside arguments)

FieldTypeNotes
degreesSourceintRequired. 0 to 5. Levels to traverse incoming citations (cited_by).
degreesTargetintRequired. 0 to 5. Levels to traverse outgoing citations (cites).
eclisstring[]Optional. ECLI identifiers. When supplied alone, the endpoint uses an ECLI fast path that bypasses the full builder.
keywordsstring[]Optional. Full-text terms; searches the summary and the fulltext_tsv GIN index. Multi-word entries use phraseto_tsquery.
articlesstringOptional. Article reference query string; matched against summary, legal_provisions, and fulltext.
selectedLawsstring[]Optional. Law items in format "BWBx123|456" (bwb_id|bwb_label_id). Resolved to an ECLI whitelist via LIDO.
selectedLawsIntersectbooleanOptional. If true, require all selected laws (AND). Default: false (OR).
docTypesstring[]Optional. "DEC" (Uitspraak) and/or "OPI" (Conclusie).
instancesstring[]Optional. Court instances (e.g. "Hoge Raad", "Raad van State").
domainsstring[]Optional. Domain labels. Matched against the domains TEXT[] column via && overlap (GIN-friendly).
procedureTypesstring[]Optional. rs_document.procedure_type (e.g. "Cassatie", "Hoger beroep").
languagesstring[]Optional. rs_document.language (e.g. "nl").
jurisdictionCountriesstring[]Optional. rs_document.jurisdiction_country.
zaaknummersstring[]Optional. Docket numbers; substring-matched against rs_document.zaaknummer.
bwbResourcesstring[]Optional. Filter via rs_document_law_reference.bwb_resource.
journalAbbrsstring[]Optional. Journal abbreviations (e.g. "NJ", "AB"); filter via rs_document_publication.
relationTypesstring[]Optional. Restrict edges to these rs_edge.relation_type values (e.g. "cassatie", "hogerBeroep").
edgeSourcesstring[]Optional. Restrict edges to these rs_edge.source tags (e.g. "body-cite", "formal-relation", "replaces").
includeDepublicatedstringOptional. "public" (default), "depublicated", or "all". Filters on rs_document.opendata_status.
dateStartstringOptional. YYYY-MM-DD. Lower bound on date_decision. Defaults to 1900-01-01.
dateEndstringOptional. YYYY-MM-DD. Upper bound on date_decision. Must not be in the future.
datePublishedStartstringOptional. YYYY-MM-DD. Lower bound on rs_document.date_published.
datePublishedEndstringOptional. YYYY-MM-DD. Upper bound on rs_document.date_published.
attributesToFetchstringOptional. "ALL", "ID", "MINIMAL", "NETWORKSTATS", "QUERYHANDLER", "KEYWORDSEARCH", "ARTICLESEARCH".
onlyCaseIdsbooleanOptional. If true, return only ECLI identifiers without full case data.
isSubgraphbooleanOptional. If true, only return edges between the supplied eclis.
pageSizeintOptional. 1 to 1000 when cursor pagination is requested.
cursorstringOptional. Opaque cursor token from a previous response.
engine / dataSourcesanyOptional. Accepted as no-ops for compatibility with /api/network request bodies. The endpoint always reads from rs_*.

Response node fields (nodes[].data)

FieldDescription
isResult"True" for direct search results, "False" for expanded citation nodes.
ecliECLI identifier.
date_decisionDecision date (ISO).
date_publishedPublication date (ISO).
date_issued / date_modifiedIssue / modification timestamps from the source XML.
document_type"Uitspraak" or "Conclusie".
instanceCourt instance.
domainsArray of legal domain strings. Synthetic "<top>-Algemeen/Overig/Niet-gelabeld" leaves are rendered for parity with the legacy /api/network response.
jurisdiction_countrye.g. "NL".
procedure_typeProcedure type (e.g. "Cassatie").
zaaknummerDocket number.
summaryCase summary text.
legal_provisionsArray of statute labels aggregated from rs_v_document_legal_provisions (mixes source-faithful opschrift values with canonical formal labels).
vindplaatsen / subject_urisPublication metadata and subject taxonomy URIs from the source XML.
opendata_status"public" or "depublicated".
citesArray of cited ECLI identifiers (from rs_edge).
cited_byArray of ECLI identifiers citing this case (from rs_edge).
url_publicationLink to the original publication.

Response edge fields (edges[])

FieldDescription
source / targetEndpoint ECLIs.
relation_typeOptional typed-relation label (e.g. "cassatie", "hogerBeroep").
edge_sourceProvenance: "body-cite", "formal-relation", or "replaces".

Examples

Exact ECLI (fast path)

{
  "arguments": {
    "eclis": ["ECLI:NL:HR:2020:1097"],
    "degreesSource": 0,
    "degreesTarget": 0
  }
}

Typed-edge filter

{
  "arguments": {
    "eclis": ["ECLI:NL:HR:2020:1097"],
    "degreesSource": 1,
    "degreesTarget": 1,
    "relationTypes": ["cassatie", "hogerBeroep"],
    "edgeSources": ["formal-relation"]
  }
}

Publication-date window + BWB filter

{
  "arguments": {
    "bwbResources": ["BWBR0001840"],
    "datePublishedStart": "2020-01-01",
    "datePublishedEnd": "2020-12-31",
    "docTypes": ["DEC"],
    "degreesSource": 0,
    "degreesTarget": 0,
    "pageSize": 50
  }
}

Response

{
  "nodes": [
    {
      "id": "ECLI:NL:HR:2020:1097",
      "data": {
        "isResult": "True",
        "ecli": "ECLI:NL:HR:2020:1097",
        "date_decision": "2020-06-23",
        "date_published": "2020-06-23",
        "document_type": "Uitspraak",
        "instance": "Hoge Raad",
        "domains": ["Strafrecht", "Strafrecht-Algemeen/Overig/Niet-gelabeld"],
        "jurisdiction_country": "NL",
        "procedure_type": "Cassatie",
        "opendata_status": "public",
        "cites": ["ECLI:NL:HR:2018:..."],
        "cited_by": ["ECLI:NL:RBAMS:2021:..."],
        "url_publication": "https://uitspraken.rechtspraak.nl/..."
      }
    }
  ],
  "edges": [
    {
      "id": "ECLI:NL:HR:2020:1097_ECLI:NL:HR:2018:...",
      "source": "ECLI:NL:HR:2020:1097",
      "target": "ECLI:NL:HR:2018:...",
      "relation_type": "cassatie",
      "edge_source": "formal-relation"
    }
  ],
  "message": "",
  "limits": {
    "queryResultLimit": 10000,
    "responseNodeLimit": 5000,
    "responseEdgeLimit": 30000,
    "pageSizeDefault": 1000,
    "pageSizeMax": 1000
  },
  "graph": {
    "paginationRequested": false,
    "graphComplete": true,
    "statisticsSafe": true,
    "partialReasons": []
  }
}

POST/api/rechtspraak/text

Fetch full-text Rechtspraak judgments by ECLI from the migrated PostgreSQL `rs_document_text` table. Sibling of `/api/network/text` but reads from Postgres instead of Elasticsearch. Supports single or batch retrieval. Use JSON body.

Parameters

FieldTypeNotes
eclistring | string[]Required. String or array in JSON body. Max 200 ECLIs per request.

Response fields

FieldDescription
ecliThe requested ECLI identifier.
full_textComplete judgment text from rs_document_text.fulltext. May be null when no text is stored.
full_text_availableBoolean flag indicating whether full text is present.
  • Single ECLI returns one object; multiple ECLIs return an array of objects. ECLIs without an rs_document row are silently dropped from the array response (single-ECLI form returns 404).
  • When full_text is null, the entry also includes a message field explaining the absence.

Examples

POST (single)

{
  "ecli": "ECLI:NL:HR:2020:1097"
}

POST (batch)

{
  "ecli": [
    "ECLI:NL:HR:2020:1097",
    "ECLI:NL:PHR:2020:739"
  ]
}

Response (single)

{
  "ecli": "ECLI:NL:HR:2020:1097",
  "full_text": "HOGE RAAD DER NEDERLANDEN\nSTRAFKAMER\n...",
  "full_text_available": true
}

Response (no text)

{
  "ecli": "ECLI:NL:HR:2020:1097",
  "full_text": null,
  "full_text_available": false,
  "message": "Full text not available for this ECLI."
}