---
title: "List the DPP category templates (regulatory schemas)."
method: GET
path: "/api/v1/templates"
tags: ["Templates"]
---

# List the DPP category templates (regulatory schemas).

`GET /api/v1/templates`

## Request

- Base URL: `https://app.tracepass.eu`
- URL: `https://app.tracepass.eu/api/v1/templates`
- Auth: none required

Lists all DPP category templates — the regulatory field
schemas (battery, textile, electronics, …). Reference data:
each entry gives the field count, required-field count, and
the governing EU regulation, so an integrator or AI assistant
can discover what a compliant passport in a category needs
before creating products or passports. Not company-scoped —
templates are global.

**No authentication required.** This is regulatory reference
data — the identical field definitions ship as the Apache-2.0
`@tracepass/dpp-schemas` npm package — so it is readable
without a key. Bounded by an IP rate limit (60 requests/min).

## Response `200`

The available category templates.

- object
  - `templates` object[]
    - `category` string
    - `categoryLabel` object: Localized category label, keyed by locale.
    - `fieldCount` integer
    - `requiredFieldCount` integer: Category-agnostic required count. Where a template carries `requiredFieldCountByCategory`, prefer that map — for battery this flat number matches none of the per-category totals.
    - `requiredFieldCountByCategory` object, nullable: Required-field totals per sub-category, present only where required-ness varies: battery (keyed by the categories that owe a passport under Art. 77(1) of Reg (EU) 2023/1542 — `EV`, `LMT`, `industrial_gt_2kwh`), detergents (`consumer`, `industrial_institutional`) and fmcg (`productSubcategory`). `portable`, `SLI` and `industrial_lte_2kwh` are deliberately ABSENT rather than zero: those batteries owe no passport at all, which is a different statement from "zero fields required".
    - `version` integer
    - `regulation` object
      - `name` string
      - `number` string
      - `effectiveDate` string, date-time
      - `mandatoryDate` string, date-time
      - `dateBasis` 'statutory' | 'indicative' | 'none': statutory = dates fixed by an adopted act; indicative = planning estimates with no legal force; none = no passport act is adopted or scheduled, and the dates are the sentinel 9999-12-31 — never display or compare them.

## Other responses

- `429`: Rate limit exceeded (60 requests/min per IP).

---

[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)
