Product Configurator 3000 · API v1.2

Product Configurator API.

REST + Webhooks. JSON-only. Versioniert via Header apps3k-version: 2024-12-01. Stabilitätsgarantie nach Semver.

Authentifizierung

Alle Requests verlangen einen Bearer-Token im Authorization-Header. Tokens werden im Workspace-Settings unter API Keys erzeugt und können auf bestimmte Scopes (events:read, bookings:write …) eingeschränkt werden.

Base URL https://api.apps3k.ch/pc3000/v1

Fehler

Wir verwenden konventionelle HTTP-Statuscodes. 2xx = Erfolg, 4xx = Client-Fehler (validate, fix, retry), 5xx = Server-Fehler (idempotent retry mit Backoff).

Status Code Bedeutung
400 invalid_request Body- oder Query-Validierung fehlgeschlagen. Details in errors[].
401 unauthorized Token fehlt oder ist ungültig.
403 forbidden_scope Token hat den benötigten Scope nicht.
404 not_found Ressource existiert nicht oder gehört nicht zu diesem Workspace.
409 conflict Versionskonflikt; Idempotency-Key ggf. erneut prüfen.
429 rate_limited Limit überschritten, Retry-After Header beachten.
503 temporarily_unavailable Backend kurz nicht erreichbar; idempotent retry empfohlen.

Rate-Limits

600 req/min pro Token. Pricing-Calc-Burst: 1500/min für 30s. Headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset in jeder Antwort.

POST /pricing/calculate

Berechnet den Preis einer Konfiguration in Echtzeit. Wertet alle aktiven Pricing-Rules aus und gibt Subtotal, Adjustments und finalen Preis zurück. Idempotent — gleiche Inputs ergeben immer gleiche Outputs.

Body-Parameter

Parameter Typ Pflicht Beschreibung
config_id string · uuid Required ID der Konfiguration, deren Preis berechnet werden soll.
options object Required Map von Option-IDs auf gewählte Werte (z. B. {"farbe": "matt-schwarz", "groesse": "L"}).
quantity integer Optional Stückzahl. Default: 1. Min: 1, Max: 10000.
currency string · ISO 4217 Optional Währungscode. Default: Workspace-Standard.

Antworten

Status Beschreibung
200 Preis erfolgreich berechnet.
400 Option-Werte sind ungültig oder unvollständig.
404 config_id nicht gefunden.