openapi: 3.2.0 info: title: California DOJ OpenJustice Open Data Portal JSON… version: '1.0' summary: Anonymous JSON:API 1.0 over the California Department of Justice OpenJustice open-data portal — the Attorney General's criminal-justice datasets (Arrests, Crimes & Clearances, Homicide, Hate Crime, Use of Force, RIPA stop data, deaths in custody and 19 more), their CSV/XLSX distributions, CJSC publications and data stories. description: The California Attorney General heads the California Department of Justice, whose Criminal Justice Statistics Center runs the OpenJustice initiative (https://openjustice.doj.ca.gov). contact: name: California Department of Justice — Criminal Justice Statistics Center email: datarequests@doj.ca.gov url: https://oag.ca.gov/research-services/request-process termsOfService: https://oag.ca.gov/conditions license: name: California DOJ conditions of use (public government data; no licence text is attached to the files) url: https://oag.ca.gov/conditions x-derived-by: API Evangelist enrichment pipeline x-derived-from: https://data-openjustice.doj.ca.gov/jsonapi x-derived-on: '2026-09-17' x-publisher-provided: false servers: - url: https://data-openjustice.doj.ca.gov/jsonapi description: Production JSON:API entry point (Drupal 9, behind an F5 load balancer that sets an `oag.ca.gov` persistence cookie). Public, anonymous reads. security: [] tags: - name: Paragraphs description: Composable page fragments (charts, tabs, report years, blocks). paths: /paragraph/data_chart: get: operationId: listParagraphDataChart summary: List paragraph--data_chart resources tags: - Paragraphs description: 'Chart paragraphs used by data stories; `field_chart_file` points at the CSV a chart is drawn from. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 3 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/data_chart?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphDataChart' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/data_chart?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 3 /paragraph/data_chart/{id}: get: operationId: getParagraphDataChart summary: Get one paragraph--data_chart resource by UUID tags: - Paragraphs description: Returns a single `paragraph--data_chart` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphDataChart' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/data_tab: get: operationId: listParagraphDataTab summary: List paragraph--data_tab resources tags: - Paragraphs description: 'Tab paragraphs grouping charts inside a data story. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 3 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/data_tab?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphDataTab' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/data_tab?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 3 /paragraph/data_tab/{id}: get: operationId: getParagraphDataTab summary: Get one paragraph--data_tab resource by UUID tags: - Paragraphs description: Returns a single `paragraph--data_tab` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphDataTab' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/publication_report: get: operationId: listParagraphPublicationReport summary: List paragraph--publication_report resources tags: - Paragraphs description: 'One published report year of a publication, with `field_publication_year` and the PDF in `field_publication_file`. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 3 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/publication_report?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphPublicationReport' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/publication_report?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 3 /paragraph/publication_report/{id}: get: operationId: getParagraphPublicationReport summary: Get one paragraph--publication_report resource by UUID tags: - Paragraphs description: Returns a single `paragraph--publication_report` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphPublicationReport' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/section_block: get: operationId: listParagraphSectionBlock summary: List paragraph--section_block resources tags: - Paragraphs description: 'Landing-page section blocks. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 2 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/section_block?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphSectionBlock' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/section_block?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 2 /paragraph/section_block/{id}: get: operationId: getParagraphSectionBlock summary: Get one paragraph--section_block resource by UUID tags: - Paragraphs description: Returns a single `paragraph--section_block` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphSectionBlock' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/block_item: get: operationId: listParagraphBlockItem summary: List paragraph--block_item resources tags: - Paragraphs description: 'Individual items within a landing-page block. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 3 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/block_item?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphBlockItem' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/block_item?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 3 /paragraph/block_item/{id}: get: operationId: getParagraphBlockItem summary: Get one paragraph--block_item resource by UUID tags: - Paragraphs description: Returns a single `paragraph--block_item` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphBlockItem' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/blocks_quad: get: operationId: listParagraphBlocksQuad summary: List paragraph--blocks_quad resources tags: - Paragraphs description: 'Four-up block layout paragraphs. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 1 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/blocks_quad?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphBlocksQuad' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/blocks_quad?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 1 /paragraph/blocks_quad/{id}: get: operationId: getParagraphBlocksQuad summary: Get one paragraph--blocks_quad resource by UUID tags: - Paragraphs description: Returns a single `paragraph--blocks_quad` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphBlocksQuad' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/highlight_item: get: operationId: listParagraphHighlightItem summary: List paragraph--highlight_item resources tags: - Paragraphs description: 'Highlight items on landing pages. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 3 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/highlight_item?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphHighlightItem' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/highlight_item?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 3 /paragraph/highlight_item/{id}: get: operationId: getParagraphHighlightItem summary: Get one paragraph--highlight_item resource by UUID tags: - Paragraphs description: Returns a single `paragraph--highlight_item` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphHighlightItem' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/highlight_tri: get: operationId: listParagraphHighlightTri summary: List paragraph--highlight_tri resources tags: - Paragraphs description: 'Three-up highlight layout paragraphs. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 1 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/highlight_tri?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphHighlightTri' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/highlight_tri?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 1 /paragraph/highlight_tri/{id}: get: operationId: getParagraphHighlightTri summary: Get one paragraph--highlight_tri resource by UUID tags: - Paragraphs description: Returns a single `paragraph--highlight_tri` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphHighlightTri' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/intro_header: get: operationId: listParagraphIntroHeader summary: List paragraph--intro_header resources tags: - Paragraphs description: 'Intro header paragraphs. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 1 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/intro_header?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphIntroHeader' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/intro_header?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 1 /paragraph/intro_header/{id}: get: operationId: getParagraphIntroHeader summary: Get one paragraph--intro_header resource by UUID tags: - Paragraphs description: Returns a single `paragraph--intro_header` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphIntroHeader' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' /paragraph/link: get: operationId: listParagraphLink summary: List paragraph--link resources tags: - Paragraphs description: 'Link paragraphs. Probed anonymously 2026-09-17: HTTP 200, `application/vnd.api+json`, 3 resource object(s) returned from https://data-openjustice.doj.ca.gov/jsonapi/paragraph/link?page[limit]=3.' parameters: - $ref: '#/components/parameters/pageLimit' - $ref: '#/components/parameters/pageOffset' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/filter' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API collection document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/CollectionDocument' - type: object properties: data: type: array items: $ref: '#/components/schemas/ParagraphLink' '400': $ref: '#/components/responses/BadRequest' '503': $ref: '#/components/responses/ServiceUnavailable' x-probe: url: https://data-openjustice.doj.ca.gov/jsonapi/paragraph/link?page[limit]=3 http_status: 200 content_type: application/vnd.api+json fetched: '2026-09-17' resources_returned: 3 /paragraph/link/{id}: get: operationId: getParagraphLink summary: Get one paragraph--link resource by UUID tags: - Paragraphs description: Returns a single `paragraph--link` resource object. Individual reads were verified on 2026-09-17 against `node--stats` (self link of the Adult Probation Caseload & Actions page). An unknown UUID returns HTTP 404 with a JSON:API error document. parameters: - $ref: '#/components/parameters/resourceId' - $ref: '#/components/parameters/include' - $ref: '#/components/parameters/fields' responses: '200': description: JSON:API individual document. content: application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/IndividualDocument' - type: object properties: data: $ref: '#/components/schemas/ParagraphLink' '404': $ref: '#/components/responses/NotFound' '503': $ref: '#/components/responses/ServiceUnavailable' components: schemas: ParagraphSectionBlockRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_link_block: type: object description: To-many relationship to paragraph--link. properties: data: type: array items: $ref: '#/components/schemas/ResourceIdentifier' links: $ref: '#/components/schemas/Links' ParagraphDataTabAttributes: type: object description: Attributes observed on live `paragraph--data_tab` resources (3 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean field_tab_title: type: string nullable: true ParagraphPublicationReportAttributes: type: object description: Attributes observed on live `paragraph--publication_report` resources (3 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean nullable: true field_publication_year: type: string nullable: true ParagraphDataTabRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_data_chart: type: object description: To-many relationship to paragraph--data_chart. properties: data: type: array items: $ref: '#/components/schemas/ResourceIdentifier' links: $ref: '#/components/schemas/Links' ParagraphHighlightItem: type: object description: Highlight items on landing pages. properties: type: type: string const: paragraph--highlight_item id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphHighlightItemAttributes' relationships: $ref: '#/components/schemas/ParagraphHighlightItemRelationships' ParagraphHighlightItemAttributes: type: object description: Attributes observed on live `paragraph--highlight_item` resources (3 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean field_description: type: object field_link: type: array field_title: type: string Links: type: object additionalProperties: oneOf: - type: string format: uri - type: object properties: href: type: string format: uri meta: type: object ParagraphIntroHeaderRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_image: type: object description: To-one relationship to file--file. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' ErrorObject: type: object properties: title: type: string examples: - Bad Request - Not Found - Unauthorized - Method Not Allowed status: type: string description: HTTP status as a STRING, per JSON:API 1.0. examples: - '400' - '404' - '401' detail: type: string links: type: object properties: via: type: object properties: href: type: string format: uri info: type: object properties: href: type: string format: uri source: type: object properties: pointer: type: string parameter: type: string ParagraphBlocksQuadAttributes: type: object description: Attributes observed on live `paragraph--blocks_quad` resources (1 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean ParagraphSectionBlockAttributes: type: object description: Attributes observed on live `paragraph--section_block` resources (2 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean nullable: true field_description: type: object nullable: true field_section_link: type: object nullable: true field_subtitle: type: string nullable: true field_title: type: string nullable: true ParagraphDataChartAttributes: type: object description: Attributes observed on live `paragraph--data_chart` resources (3 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean field_chart_title: type: string nullable: true field_chart_type: type: string nullable: true field_custom_chart: type: string nullable: true field_custom_chart_js: type: string nullable: true field_custom_legend: type: string nullable: true field_focus_box: type: string nullable: true field_spline_marker: type: string nullable: true field_y_axis_label: type: string nullable: true CollectionDocument: type: object properties: jsonapi: $ref: '#/components/schemas/JsonApiObject' data: type: array items: $ref: '#/components/schemas/ResourceObject' included: type: array items: $ref: '#/components/schemas/ResourceObject' description: Present when ?include= names relationships. meta: type: object properties: omitted: type: object description: Present when Drupal withheld resources the anonymous caller may not view; carries a detail message and per-item links. links: type: object properties: self: $ref: '#/components/schemas/Links' next: $ref: '#/components/schemas/Links' prev: $ref: '#/components/schemas/Links' ParagraphDataChart: type: object description: Chart paragraphs used by data stories; `field_chart_file` points at the CSV a chart is drawn from. properties: type: type: string const: paragraph--data_chart id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphDataChartAttributes' relationships: $ref: '#/components/schemas/ParagraphDataChartRelationships' ParagraphLink: type: object description: Link paragraphs. properties: type: type: string const: paragraph--link id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphLinkAttributes' relationships: $ref: '#/components/schemas/ParagraphLinkRelationships' ParagraphDataTab: type: object description: Tab paragraphs grouping charts inside a data story. properties: type: type: string const: paragraph--data_tab id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphDataTabAttributes' relationships: $ref: '#/components/schemas/ParagraphDataTabRelationships' ErrorDocument: type: object required: - errors properties: jsonapi: $ref: '#/components/schemas/JsonApiObject' errors: type: array items: $ref: '#/components/schemas/ErrorObject' ParagraphBlocksQuadRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_block: type: object description: To-many relationship to paragraph--block_item. properties: data: type: array items: $ref: '#/components/schemas/ResourceIdentifier' links: $ref: '#/components/schemas/Links' ParagraphBlockItemAttributes: type: object description: Attributes observed on live `paragraph--block_item` resources (3 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean field_description: type: object field_icon: type: string field_link: type: array field_title: type: string ParagraphHighlightTri: type: object description: Three-up highlight layout paragraphs. properties: type: type: string const: paragraph--highlight_tri id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphHighlightTriAttributes' relationships: $ref: '#/components/schemas/ParagraphHighlightTriRelationships' ParagraphSectionBlock: type: object description: Landing-page section blocks. properties: type: type: string const: paragraph--section_block id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphSectionBlockAttributes' relationships: $ref: '#/components/schemas/ParagraphSectionBlockRelationships' IndividualDocument: type: object properties: jsonapi: $ref: '#/components/schemas/JsonApiObject' data: $ref: '#/components/schemas/ResourceObject' included: type: array items: $ref: '#/components/schemas/ResourceObject' links: $ref: '#/components/schemas/Links' ParagraphLinkRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' ResourceObject: type: object required: - type - id properties: type: type: string id: type: string format: uuid attributes: type: object relationships: type: object links: $ref: '#/components/schemas/Links' ParagraphLinkAttributes: type: object description: Attributes observed on live `paragraph--link` resources (3 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean field_link: type: array field_title: type: string nullable: true ParagraphHighlightTriRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_highlight: type: object description: To-many relationship to paragraph--highlight_item. properties: data: type: array items: $ref: '#/components/schemas/ResourceIdentifier' links: $ref: '#/components/schemas/Links' ParagraphHighlightItemRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_image: type: object description: To-one relationship to file--file. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' ResourceIdentifier: type: object required: - type - id properties: type: type: string description: entity--bundle id: type: string format: uuid meta: type: object properties: drupal_internal__target_id: oneOf: - type: integer - type: string ParagraphBlocksQuad: type: object description: Four-up block layout paragraphs. properties: type: type: string const: paragraph--blocks_quad id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphBlocksQuadAttributes' relationships: $ref: '#/components/schemas/ParagraphBlocksQuadRelationships' JsonApiObject: type: object properties: version: type: string const: '1.0' meta: type: object ParagraphIntroHeader: type: object description: Intro header paragraphs. properties: type: type: string const: paragraph--intro_header id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphIntroHeaderAttributes' relationships: $ref: '#/components/schemas/ParagraphIntroHeaderRelationships' ParagraphIntroHeaderAttributes: type: object description: Attributes observed on live `paragraph--intro_header` resources (1 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean field_description: type: object field_title: type: string ParagraphBlockItemRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' ParagraphHighlightTriAttributes: type: object description: Attributes observed on live `paragraph--highlight_tri` resources (1 sampled on 2026-09-17). Names are the Drupal field machine names. properties: drupal_internal__id: type: integer drupal_internal__revision_id: type: integer langcode: type: string status: type: boolean created: type: string format: date-time parent_id: type: string parent_type: type: string parent_field_name: type: string behavior_settings: type: array default_langcode: type: boolean revision_translation_affected: type: boolean ParagraphDataChartRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_chart_file: type: object description: To-one relationship to file--file. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' ParagraphPublicationReport: type: object description: One published report year of a publication, with `field_publication_year` and the PDF in `field_publication_file`. properties: type: type: string const: paragraph--publication_report id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphPublicationReportAttributes' relationships: $ref: '#/components/schemas/ParagraphPublicationReportRelationships' ParagraphBlockItem: type: object description: Individual items within a landing-page block. properties: type: type: string const: paragraph--block_item id: type: string format: uuid links: $ref: '#/components/schemas/Links' attributes: $ref: '#/components/schemas/ParagraphBlockItemAttributes' relationships: $ref: '#/components/schemas/ParagraphBlockItemRelationships' ParagraphPublicationReportRelationships: type: object properties: paragraph_type: type: object description: To-one relationship to paragraphs_type--paragraphs_type. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' field_publication_file: type: object description: To-one relationship to file--file. properties: data: oneOf: - $ref: '#/components/schemas/ResourceIdentifier' - type: 'null' links: $ref: '#/components/schemas/Links' responses: NotFound: description: No resource with that UUID. JSON:API error document. content: application/vnd.api+json: schema: $ref: '#/components/schemas/ErrorDocument' example: jsonapi: version: '1.0' meta: links: self: href: http://jsonapi.org/format/1.0/ errors: - title: Not Found status: '404' detail: 'The "entity" parameter was not converted for the path "/jsonapi/node/dataset/{entity}" (route name: "jsonapi.node--dataset.individual")' links: via: href: https://data-openjustice.doj.ca.gov/jsonapi/node/dataset/00000000-0000-0000-0000-000000000000 info: href: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5 ServiceUnavailable: description: Not observed during the probe; listed because the site runs behind an F5 load balancer (persistence cookie `oag.ca.gov`) that answers on behalf of an unavailable origin. BadRequest: description: Malformed query (unknown filter field, bad sort, empty request body). JSON:API error document. content: application/vnd.api+json: schema: $ref: '#/components/schemas/ErrorDocument' example: jsonapi: version: '1.0' meta: links: self: href: http://jsonapi.org/format/1.0/ errors: - title: Bad Request status: '400' detail: Invalid nested filtering. The field `nonexistent_field`, given in the path `nonexistent_field`, does not exist. links: via: href: https://data-openjustice.doj.ca.gov/jsonapi/node/dataset?filter%5Bnonexistent_field%5D=x info: href: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1 parameters: filter: name: filter in: query style: deepObject explode: true schema: type: object additionalProperties: true description: 'Drupal JSON:API filter family: `filter[]=value` for equality, or `filter[][operator]=CONTAINS&filter[][value]=...` for other operators (=, <>, >, >=, <, <=, STARTS_WITH, CONTAINS, ENDS_WITH, IN, NOT IN, IS NULL, IS NOT NULL, BETWEEN). Verified 2026-09-17: `filter[title][operator]=CONTAINS&filter[title][value]=Arrest` on node/dataset returned 3 datasets; an unknown field returns HTTP 400 "Invalid nested filtering."' example: filter[title][operator]=CONTAINS&filter[title][value]=Arrest pageLimit: name: page[limit] in: query schema: type: integer minimum: 1 maximum: 50 default: 50 description: 'Page size. Drupal caps the page at 50 and silently clamps larger values — verified 2026-09-17: `?page[limit]=100` on node/data_story returned 50 items and a `links.next` offset of 50.' resourceId: name: id in: path required: true schema: type: string format: uuid description: Resource UUID (the JSON:API `id`, not `drupal_internal__nid`). pageOffset: name: page[offset] in: query schema: type: integer minimum: 0 default: 0 description: Zero-based offset. Follow `links.next` rather than computing offsets. sort: name: sort in: query schema: type: string description: Comma-separated attribute names; prefix with `-` for descending (JSON:API 1.0). Verified with `sort=title`. example: title include: name: include in: query schema: type: string description: 'Comma-separated relationship paths to side-load into `included` (JSON:API compound documents). Verified 2026-09-17: `include=field_source,field_data_type` on node/dataset side-loaded 148 file--file distributions across the 26 datasets.' example: field_source,field_data_type fields: name: fields in: query style: deepObject explode: true schema: type: object additionalProperties: type: string description: 'Sparse fieldsets keyed by resource type: `fields[file--file]=uri,filesize,filemime,filename`. Verified.' example: fields[file--file]=uri,filesize,filemime,filename x-provenance: generated: '2026-09-17' method: probed source: https://data-openjustice.doj.ca.gov/jsonapi author: API Evangelist discovery: https://openjustice.doj.ca.gov/static/js/app.27bd7a2568ccfb17905a.js (axios baseURL) x-probe: fetched: '2026-09-17' index: url: https://data-openjustice.doj.ca.gov/jsonapi http_status: 200 content_type: application/vnd.api+json resource_types_advertised: 70 described: 32 page_limit_cap: 50 writes: anonymous_create_granted: - node--signup - node--suggestion - node--bug requires_credentials: - method: POST path: /node/dataset status: 401 - method: PATCH path: /node/stats/{id} status: 401 - method: DELETE path: /node/dataset/{id} status: 401 excluded: omitted_insufficient_authorization: - action--action - base_field_override--base_field_override - block_content_type--block_content_type - corresponding_reference--corresponding_reference - editor--editor - embed_button--embed_button - entity_form_display--entity_form_display - entity_form_mode--entity_form_mode - entity_view_display--entity_view_display - entity_view_mode--entity_view_mode - field_config--field_config - field_storage_config--field_storage_config - filter_format--filter_format - image_style--image_style - node--bug - node--signup - node--suggestion - path_alias--path_alias - pathauto_pattern--pathauto_pattern - rdf_mapping--rdf_mapping - rest_resource_config--rest_resource_config - shortcut--default - shortcut_set--shortcut_set - taxonomy_vocabulary--taxonomy_vocabulary - tour--tour - user_role--user_role - view--view - webform--webform - webform_options--webform_options - workflow--workflow empty_collection: - block_content--basic - taxonomy_menu--taxonomy_menu - taxonomy_term--tags - webform_submission--contact post_only_405_on_get: - contact_message--feedback - contact_message--personal excluded_by_api_evangelist_on_privacy_grounds: - user--user (anonymous GET returns 22 Drupal account display names) - webform_submission--kinetic_energy_ab48_2022 (anonymous GET returns form-submission metadata including remote_addr and token fields)