TracePass
Regulatory assistant

Get required fields

Returns the required and anticipated fields for a passport of the given category, with the EU regulation article each field rests on, its access tier (public / restricted / authority), and — for batteries — whether the data is usually held by the maker, a supplier, or the operator. Without group, the endpoint returns a summary: total counts broken down per group and per access tier, plus requiredByHolder (battery only) grouping required fields by data source. With group, it returns the full field list for that group.

GET/api/v1/regulatory/required-fields
Download OpenAPI 3.1
GET/api/v1/regulatory/required-fields

Get required fields

Returns the required and anticipated fields for a passport of the given category, with the EU regulation article each field rests on, its access tier (public / restricted / authority), and — for batteries — whether the data is usually held by the maker, a supplier, or the operator. Without group, the endpoint returns a summary: total counts broken down per group and per access tier, plus requiredByHolder (battery only) grouping required fields by data source. With group, it returns the full field list for that group.

Available on every plan. Counts one scope answer against the per-company answer cap (~100 answers per day, ~30 per minute, shared across the dashboard, API, and the DPP Assistant). At the cap the endpoint returns 429 scope_answer_cap. An unknown category returns 400 invalid_input with the allowed list of template categories. An invalid subType for the given category also returns 400. For batteries, subType filters requiredBy the same way the compliance engine does.

Add X-Source: assistant when calling on behalf of the DPP Assistant MCP server — the answer is then signed by the assistant and the OAuth account gate applies (verified, non-disposable email required). API keys bypass the account gate.

Query parameters

  • categoryrequired

    string

    Template category key — e.g. battery, detergents, toys. Returns 400 invalid_input with the allowed list when not recognised.

    e.g. detergents

  • group

    string

    Template group key (the category field on each template field). When absent, returns a summary; when present, returns the full field list for that group.

    e.g. general_info

  • subType

    string

    Battery sub-type — EV, LMT, or industrial_gt_2kwh. Filters requiredBy the same way the compliance engine does. Returns 400 when the category has no sub-types or the value is not recognised.

    e.g. industrial_gt_2kwh

  • locale

    string

    Response language for the answer text — en, bg, de, or it. Defaults to the Accept-Language header, then en.

    e.g. en

Headers

  • Authorizationrequired

    string

    Bearer <token> — either a tp_ API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list.

    e.g. Bearer tp_REDACTED_xxxxxxxxxxxx

Request

curl -sS "https://app.tracepass.eu/api/v1/regulatory/required-fields?category=detergents&locale=en" \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"

Response

{
  "status": "answered",
  "answer": "detergents passports require 12 fields now, with 4 additional fields anticipated.",
  "locale": "en",
  "data": {
    "category": "detergents",
    "locale": "en",
    "summary": {
      "requiredNow": 12,
      "anticipated": 4,
      "optional": 61,
      "byGroup": {
        "product_id": { "required": 4, "anticipated": 0, "dynamic": 0, "total": 11 },
        "economic_operator": { "required": 6, "anticipated": 0, "dynamic": 0, "total": 11 },
        "composition": { "required": 0, "anticipated": 1, "dynamic": 0, "total": 11 },
        "data_carrier": { "required": 2, "anticipated": 3, "dynamic": 0, "total": 8 },
        "…": {}
      },
      "byAccessTier": { "public": 64, "restricted": 10, "authority": 3 }
    }
  },
  "profileUsed": [],
  "learnable": [],
  "citations": [
    { "celex": "32026R0405", "ref": "Annex VI Part A, point (a)", "url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32026R0405" },
    "…"
  ],
  "ruleIds": [],
  "asOf": "2026-10-09",
  "ruleStatus": "verified",
  "machineTranslated": false,
  "disclaimer": "Regulatory information as of 9 Oct 2026, not legal advice. Check the cited articles before relying on it. — TracePass"
}