/api/v1/scope/catalogueGet catalogue scope report
Returns the catalogue scope report: for every product (and every distinct passport fact set), whether the product type needs a Digital Product Passport, from when, at which level, the governing act and article, and the passport status (`missing`, `draft_only`, `published_incomplete`, `published`, `not_required`, `open_questions`, or `not_covered`). The full answer for any item is `POST /api/v1/scope/check` with its `productId`.
Requires Growth or higher (`scopeCatalogueEnabled`). Below that tier, the endpoint returns 403 `plan_upgrade_required`. One read on the daily read cap per page (same counter as `GET /api/v1/passports`). Results come from the last finished run; call `POST /api/v1/scope/catalogue/runs` to refresh.
Query parameters: `classification` (one of the status values), `category` (template category slug), `act` (CELEX code, e.g. `32023R1542`), `changed=true` (only rows changed since the last run), `q` (free-text search on product name or GTIN), `cursor` (opaque string from `nextCursor`), `limit` (1–500, default 50). Response: `{ run, totals, items, nextCursor, disclaimer }`.
Query parameters
- classification
string
Filter by passport status: `missing`, `draft_only`, `published_incomplete`, `published`, `not_required`, `open_questions`, or `not_covered`.
- category
string
Filter by product category slug (e.g. `battery`, `textile`).
- changed
boolean
When `true`, return only rows changed since the last run.
- cursor
string
Opaque cursor from the previous page's `nextCursor` field.
- limit
integer (1–500)
Page size (default 50, maximum 500).
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/scope/catalogue?classification=missing&limit=50" \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"Response
{
"run": { "id": "6acbb533c5553f06d833479e", "finishedAt": "2026-10-11T16:11:31.619Z", "rulesFingerprint": "86a23cce6480bffb91d360b7a199b473" },
"running": null,
"totals": {
"rows": 1,
"byClassification": { "missing": 0, "draft_only": 0, "published_incomplete": 0, "published": 0, "not_required": 0, "open_questions": 1, "not_covered": 0 },
"tiles": { "now": 0, "later": 0, "waiting": 0, "not_required": 0, "depends": 1, "not_covered": 0, "changed": 0 }
},
"items": [
{
"productId": "6acbb529ef6a5037c63fff80",
"productName": "e2e-fixture product",
"category": "battery",
"gtin": "09506000E2EFIX",
"passportIds": ["6acbb529ef6a5037c63fff81"],
"passportCount": 1,
"publishedCount": 1,
"summary": { "status": "needs_input", "inScope": "depends", "governing": { "celex": "32023R1542" }, "alsoApplies": [], "openQuestions": ["battery.sealed", "battery.weightKg", "battery.capacityKWh", "battery.use", "battery.vehicleCategory"], "ruleStatus": "verified" },
"classification": "open_questions",
"changed": false,
"changedAt": null
}
],
"nextCursor": null,
"disclaimer": "Regulatory information as of 9 Oct 2026, not legal advice. Check the cited articles before relying on it. — TracePass"
}