DELETEAfslut en ordre
Afslutter ordren og registrerer slutforbrug op til ordrens prisloft. Ordren slettes ikke.
Endpoint
https://www.tcgm.dk/api/v1/webshop/orders/{orderid}Autorisation
Bearer-nøgle medwebshop:orders:complete
Path-parametre
orderidstring · påkrævet- TCGM-ordrens id fra oprettelsessvaret eller et ordreopslag (wshop_o_…). Brug ikke externalId, providerOrderId eller orderNumber.
Headers
Authorizationstring · påkrævet- Bearer <api-nøgle>. Nøglen oprettes af en owner/admin på organisationens API-side.
Gemmes kun i denne sides hukommelse.
Idempotency-Keystring · påkrævet- 1–200 synlige ASCII-tegn uden mellemrum. Genbrug ved genforsøg; ny nøgle til en ny handling. Mindst 1 tegn. Højst 200 tegn. Mønster: ^[\x21-\x7e]+$
Genbrug nøglen ved genforsøg. “Ny handling” opretter en ny nøgle.
Content-Typestring · påkrævet- JSON-body, højst 256 KiB. Fast værdi: "application/json".
Request-body
application/json · påkrævet
Ukendte felter afvises.
organizationstring · påkrævet- Trimmes før validering. Mindst 1 tegn. Højst 200 tegn.
webshopstring · påkrævet- Trimmes før validering. Mindst 1 tegn. Højst 200 tegn.
dataobject · valgfri- Standard: {}. Ukendte felter afvises.
Underfelter kræves kun, når det overordnede objekt sendes.
Response · 200
Afsluttet eller allerede afsluttet.
Cache-Control: no-store
{
status: "succeeded";
orderId: string;
changed: boolean;
action?: "create" | "update" | "queue-state" | "complete";
announceTwitch?: boolean;
order?: {
id: string;
externalId: string;
providerOrderId: string;
orderNumber: string | null;
displayName: string;
creatorTag: string | null;
syncedBy: string | null;
createdAt: string;
receivedAt: string;
updatedAt: string;
completedAt: string | null;
queue: {
hidden: boolean;
position: number | null;
preparing: boolean;
};
lines: Array<{
id: string;
externalId: string;
productId: string;
variantId: string | null;
itemName: string;
quantity: number;
}>;
};
}Statuskoder
- 200
- Afsluttet eller allerede afsluttet.
- 400
- Ugyldigt input: invalid_request.
- 401
- Manglende eller ugyldig Bearer-nøgle: invalid_credential.
- 403
- Adgang nægtet: nøgle, scope, ejerskab eller godkendelse er ikke længere gyldig. Direkte handlinger kan også returnere status=failed og en forretningsfejl.
- 404
- Ressourcen findes ikke eller er ikke tilgængelig. Direkte handlinger kan også returnere status=failed og en forretningsfejl.
- 409
- Konflikt: fx idempotency_conflict, external_id_conflict eller order_closed. Samme nøgle med andet valideret indhold afvises. Direkte handlinger kan også returnere status=failed og en forretningsfejl.
- 413
- JSON-body overstiger 256 KiB.
- 415
- Content-Type skal være application/json.
- 503
- Lager eller behandling er utilgængelig. Ingen interne fejl eller skemadetaljer udleveres i produktion.
- 405
- HTTP-metoden understøttes ikke.
Headers og fejlfelter
Cache-Control: no-store
{
error: string;
}Cache-Control: no-store
WWW-Authenticate: Bearer
{
error: string;
}Cache-Control: no-store
{
error: string;
} | {
status: "failed";
error: "access_revoked" | "order_not_found" | "order_closed" | "external_id_conflict" | "queue_unavailable" | "queue_position_limit";
}Adfærd og genforsøg
JSON-body må højst fylde 256 KiB. Ukendte bodyfelter afvises. Identiske genforsøg med samme Idempotency-Key returnerer det oprindelige resultat; ændret indhold giver 409. Genbrug nøglen ved usikkert udfald.
Adgang og ejerskab kontrolleres også ved genforsøg og før beskyttet baggrundsarbejde. En senere fejl fortryder ikke automatisk allerede gennemførte ændringer.
data kan udelades eller være {}. Send ikke orderId i body. Allerede afsluttet ordre er en gratis no-op.
Afslutning anvender den eksisterende slutafregning op til ordrens prisloft på 25 øre ekskl. moms; allerede låste priser bevares. API'et tilbyder ikke genåbning.