Validation envelope
POST /api/v1/supplier/validate accepts a strict JSON object with schemaVersion, source and records. Unknown fields are rejected, including caller-supplied company IDs or approval flags. The API key determines the company.
source contains a stable id, a system name and mode (api or sdk). records contains one to 50 records. The full request must fit in 256 KiB. Required nullable fields must be present as null when unknown.
Record fields
Identifiers start with an alphanumeric character and may contain letters, numbers,
., _, :, / and -, up to 160 characters. An MPN is not automatically the same as a supplier listing ID.
Availability
quantity: unsigned decimal string ornull.window:{ "start": "…", "end": "…" }ornull; required forcapacity, with end after start.location: string ornull.leadTimeDays: whole number from 0 to 3650, ornull.
Pricing
When a price is known, providecurrency (three uppercase letters), country (two uppercase letters), audience: "public", taxBasis (net, gross or unknown), taxRate (decimal proportion or null), positive minimumOrderQuantity, positive orderMultiple and one to 50 tiers.
Each tier has a positive minimumQuantity and nonnegative unitPrice. Decimal strings support up to 12 integer digits and eight fractional digits. Tier thresholds must be unique and ascending. A zero price is allowed only when the source actually says zero. Currency/country syntax validation is not proof that a market context is valid.
Freshness
Expiry must follow observation by at most 24 hours. An observation more than 60 seconds in the future is rejected. Expired observations are rejected. A known source modification time cannot follow observation. Never freshen cached source data by replacing its timestamps. The JSON schema covers structural constraints. Cross-field rules, freshness and tier ordering are also enforced by the server.Successful validation
Supplier-hosted interface: proposed
For a later pull integration, we propose that your service expose a provider manifest, cursor-paginated catalogue, read-only availability checks and health endpoint. These paths would be on your service, not the Middleman API:
This transport and its authentication/admission process are not yet released. Do not deploy an unauthenticated endpoint or send us credentials on the assumption that it will be polled. Prepare the record mapping first; confirm transport details before production work.