List Audit Trail Records
List the EUDR audit-trail records (DDS records) visible to the caller,
newest first. This is the single read surface for both working
drafts and submitted statements — the former GET /dds
submitted-only list was folded into this endpoint via the status
filter (the /dds namespace now only exposes
Submit DDS). Each item's resource type is
audit-trail-summary.
▶Filters
Filters use the shared filter[<attribute>]=<condition>:<value>
format (same as Locations / Artifacts). eq is the default when the
condition: prefix is omitted; in: takes a comma-separated value.
| Filter | Conditions | Meaning |
|---|---|---|
filter[supplier_name] | eq, contains, startsWith | Case-insensitive match on the record's scope supplier name (eq = exact, contains = substring, startsWith = prefix) |
filter[supplier_external_id] | eq, in | Per-org external id(s) of the record's scope supplier (organization_supplier.external_id) |
filter[commodity] | eq, in | Record scope commodity (dds_record.commodity). Alias-aware and case-insensitive — wood and timber match the same records |
filter[country_code] | eq, in | Record scope country (dds_record.country_code). Coerced to ISO 3166-1 alpha-2; lower-case accepted |
filter[assets.task_id] | eq, in | Records whose current version contains at least one plot from this ingestion task. "Touches this task" — a task can map to several records and a record to several tasks |
filter[status] | eq | submitted → only filed records (former GET /dds view) |
Filtering is applied server-side (SQL), so meta.count and pagination
reflect the filtered set. An unknown filter attribute (or an
unsupported condition / enum value) is rejected with 400.
▶Pagination
| Param | Default | Max | Meaning |
|---|---|---|---|
page[number] | 1 | — | 1-based page index |
page[size] | 20 | 100 | Records per page |
Records are returned created_at DESC, id DESC.
▶filter[status]=eq:submitted
filter[status]=eq:submittedNarrows to records whose current version has been filed — its
derived lifecycle_status is in the submitted set:
lifecycle_status | Returned? |
|---|---|
submitted | ✅ filed; TRACES has not yet returned a terminal status |
accepted / rejected | ✅ TRACES round-trip result (reserved; not surfaced yet) |
stale | ✅ filed, but newer monitoring data has since arrived (reserved) |
draft / awaiting_submission / submitting | ❌ not yet filed |
Without filter[status], every record visible to the caller is
returned regardless of lifecycle state.
▶supplier block
supplier blockEach record carries its scope-supplier registry details (resolved from
dds_record.supplier_id): id, name, per-org external_id, and an
address object (line1, line2, city, region, postcode,
country). null when the record has no resolvable scope supplier
(legacy / unlinked / facility-only set).
▶Per-record shape
Otherwise identical to the
Audit Trail summary —
see that page for the field-by-field reference. Read a single record
(any lifecycle state) at GET /regulations/eudr/audit-trail/:recordId.
▶Errors
| Status | Code | When |
|---|---|---|
| 400 | VALIDATION_ERROR | Unknown filter attribute / bad condition / bad enum value |
| 401 | UNAUTHORIZED | Missing/invalid API key |
Required scope:
eudr:read