List a published model's battery units
GET/api/v1/products/:id/units
Required scope: dpp:read. One row per battery unit (one passport per
battery) with its serial, batch, opaque code and the registry details
recorded on this platform. Keyset pagination: pass the previous page's
nextAfter as after; nextAfter is null on the last page. A
malformed (non-UUID) {id} returns 400 VALIDATION. Cross-tenant,
cross-mode or unknown id returns 404.
Request
Responses
- 200
- 400
- 403
- 404
- 429
- 503
One page of units
400 — INVALID_JSON, VALIDATION_ERROR, VALIDATION (the {id} path segment is not a UUID), or IDEMPOTENCY_KEY_REQUIRED.
403 — missing scope (FORBIDDEN_SCOPE) or module (FORBIDDEN_MODULE).
404 — not found OR owned by another tenant (NOT_FOUND; IDOR-safe).
429 — RATE_LIMITED (per-key limit, reads and writes alike; fails closed,
so a limiter outage also returns 429). A limiter-down 429 is deliberately
indistinguishable from a quota 429. Carries Retry-After (seconds).
Response Headers
Seconds to wait before retrying (429 only).
Per-minute request ceiling for this key's tier.
Requests left in the current window (floored at 0).
Seconds until the window resets.
503 — the API is not enabled on this environment (FEATURE_DISABLED).