Skip to main content
GET
Get end-to-end compliance rollup for an order.

Authorizations

Authorization
string
header
required

OAuth 2.0 client_credentials grant via Keycloak service account. Clients are provisioned per IntegrationOrganization in the nt24-idp realm.

Path Parameters

sellerId
string<uuid>
required

UUID of the seller trade partner (must be in caller's authorized list).

uuid
string<uuid>
required

Response

OK

orderUuid
string<uuid>
required
complianceStatus
enum<string>
required

Where the order stands, as the platform records it.

  • INCOMPLETE — the order is open. blockers[] says what is missing.
  • VALID — Novatrade24 staff closed the order.
  • CANCELLED — the order was cancelled. Terminal, and it is why this enum is not simply "open or closed": a cancelled order would otherwise report INCOMPLETE forever.

VALID is a record of a decision staff made, not a proof that every artifact is on file. Staff may force-close an order, so VALID with a non-empty blockers[] is possible and is not a contradiction — read it as "closed, with these items still outstanding".

Available options:
INCOMPLETE,
VALID,
CANCELLED
blockers
object[]
required

What the order is still waiting for, as the platform's own missing-items analysis reports it. Empty on an order with nothing outstanding — and possibly non-empty on a VALID one, see ComplianceStatus.

modules
object
required

The five module projections, each typed as the schema its own operation returns. Nothing here is computed for the rollup — these are the same reads, composed into one response so you do not make five calls.

updatedAt
string<date-time>

The newest of three timestamps: the order's, its live shipments' and their transports'. There is no rollup row of its own, so this is the latest of those rather than a field anybody writes.

It is not a change detector, and the ETag is. Three of the things this rollup reads carry no timestamp of their own — the buyer's KYC record, the buyer's contacts and the order's VINs — so blockers[] can change while this field stands still. Poll with If-None-Match: the validator is derived from the whole composed body, so it moves when any published value moves. Comparing updatedAt is not equivalent to comparing the ETag.