---
title: "Required DPP fields for a category with EU article citations."
method: GET
path: "/api/v1/regulatory/required-fields"
tags: ["Regulatory"]
---

# Required DPP fields for a category with EU article citations.

`GET /api/v1/regulatory/required-fields`

## Request

- Base URL: `https://app.tracepass.eu`
- URL: `https://app.tracepass.eu/api/v1/regulatory/required-fields`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.tracepass.eu/api/oauth/authorize`, token URL `https://app.tracepass.eu/api/oauth/token`, scopes: `regulatory:read`)
  - OAuth 2 (authorization code, authorization URL `https://app.tracepass.eu/api/oauth/authorize`, token URL `https://app.tracepass.eu/api/oauth/token`, scopes: `passports:read`)

Returns the mandatory fields for a DPP product category, each
annotated with the EU regulation article that requires it and —
for battery passports — the role that holds the field
(manufacturer / importer / distributor).

Auth: Bearer API key OR OAuth with `regulatory:read` OR
`passports:read`. Counts as one scope answer against the daily cap
when called via the assistant channel (`X-Source: assistant`).

**Account gate (OAuth + `X-Source: assistant` only):** the
requesting user's email must be verified and not from a disposable
domain. API-key callers bypass this gate.

## Query parameters

- `category` string, required
- `group` string
- `subType` string
- `locale` 'en' | 'bg' | 'de' | 'it'

## Headers

- `Authorization` string, required

## Response `200`

Required fields with EU citations.

- object
  - `category` string, required: The requested category key.
  - `fieldCount` integer, required: Total number of required fields returned.
  - `requiredFields` object[], required
    - `key` string, required: Field key (matches the template schema).
    - `label` string, required: Human-readable field name in the requested locale.
    - `regulation` string, required: Primary regulation name (e.g. `EU 2023/1542 (Battery Regulation)`).
    - `article` string, required: The specific article reference (e.g. `Art. 10(1)(a)`).
    - `holder` 'manufacturer' | 'importer' | 'distributor' | 'null', nullable: Supply-chain role that holds this field; `null` when not role-specific.
  - `ruleIds` string[], required: Rule identifiers backing this answer — pass back to `POST /api/v1/scope/reports` to route a correction.

## Other responses

- `400`: Invalid or missing `category` (or invalid `group`/`subType`). `allowed` lists the valid values.
- `401`: Missing or invalid API key.
- `403`: Account not eligible (OAuth + `X-Source: assistant` only). `reason` is `email_not_verified` or `disposable_email`.
- `429`: Daily scope-answer cap reached for this company. The counter resets at 00:00 UTC.
- `503`: Regulatory data temporarily unavailable. Retry after the `Retry-After` header value (seconds).

---

[API](https://skmtc.dev/tracepass/apis/tracepass-api.md) · [All operations](https://skmtc.dev/tracepass/apis/tracepass-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tracepass/apis/tracepass-api/revisions/60ddeb25638b?raw)
