API-dokumentasjon
REST-API v1 · OpenAPI-spec (JSON)
Autentisering
Lag en nøkkel i dashbordet (Innstillinger → Utviklere) og send den som Bearer-token. Rate limit: 60 kall per minutt per nøkkel. All bruk logges.
Authorization: Bearer kv_live_…
Opprett hull
POST /api/v1/openings
{
"resource_id": "…",
"starts_at": "2026-07-10T14:30:00+02:00",
"duration_min": 30,
"extra": { "klasse": "B" } // valgfritt, vertikal-avhengig
}
→ 201 { "id": "…", "status": "open", "offers_sent": 8,
"queued_for_morning": false }
SMS sendes aldri 21:00–07:00 – da køes utsendelsen til morgenen (queued_for_morning: true).
Status og tilbaketrekking
GET /api/v1/openings/{id} → { "status": "open|filled|expired|withdrawn", … }
DELETE /api/v1/openings/{id} → { "status": "withdrawn" }
Kortvarsel-lista
POST /api/v1/waitlist
{
"name": "Anne Johansen",
"phone": "+4791000001",
"consent": true, // påkrevd
"consent_at": "2026-07-08T12:00:00Z" // påkrevd – når samtykket ble gitt
}
GET /api/v1/waitlist → numre maskeres; full eksport kun via dashbordet
Avtaler (påminnelse + auto-utlysning)
POST /api/v1/appointments
{
"resource_id": "…",
"starts_at": "2026-07-11T10:00:00+02:00",
"customer_name": "Per",
"customer_phone": "+4791000002"
}
Webhooks
Registrer URL i dashbordet. Hendelser: opening.filled, opening.expired, waitlist.entry.opted_out, appointment.cancelled_by_customer. Payload signeres:
X-Kortvarsel-Event: opening.filled
X-Kortvarsel-Signature: sha256=<hex HMAC-SHA256(body, secret)>
{ "event": "opening.filled", "created_at": "…", "data": { … } }
Retry ved feil: 1, 5, 30, 120, 720 minutter – svar 2xx for å kvittere.