Skip to main content

Product tariff draft API

The Vendor Console Management API exposes a Product-scoped tariff draft aggregate and strict draft creation. These routes are not part of the public Partner API subset.

Operations

Method and pathPermissionsResult
GET /api/v1/catalog/products/{productId}/tariff-drafts?offset=0&limit=50catalog.read + commerce.readTariff series, current Draft state and optional management choices
POST /api/v1/catalog/products/{productId}/tariff-draftscatalog.read + commerce.read + commerce.manage + policies.readCreates a NewTariff or NextVersion Draft

managementOptions is null unless the reader also has commerce.manage and policies.read. It is a UI hint; POST revalidates every permission and owner source.

Creation rules

POST requires one printable ASCII Idempotency-Key of 1–128 characters and a strict JSON discriminator creationMode with exact value NewTariff or NextVersion. Unknown or duplicate members are rejected.

Tenant and actor come from the authenticated context. Product comes only from the path. The body never accepts Tenant, Product or a canonical technical package reference as authority. Policy id/hash and latest-version fields are stale assertions that the service revalidates against current owner data.

The first success returns 201; an exact durable replay returns the same safe receipt with 200 and isIdempotentReplay: true. A reused key with changed content returns 409 commerce.tariff_idempotency_conflict.

Safe failures

The route uses the stable commerce.tariff_* family: invalid request (400), source not found (404), invalid state, stale data, idempotency conflict or contradictory owner evidence (409), and dependency unavailable (503). No partial aggregate or foreign-owner details are returned.

The authoritative wire schemas are in the repository's committed Management OpenAPI document; the full Management artifact is not published as a public Partner API download.