Page Introduction

Page contract details

This contract page maps concrete frontend page behavior to API calls, payloads, and response fields.

  • Use the endpoint matrix as implementation checklist.
  • Use page-specific try-it for fast request verification.
  • Keep request/response shape aligned with listed frontend usage fields.

Platform Page Contract

04 - Bookings

## Page purpose Bestillingsområdet (`/booking` + `/booking/[id]`) dekker liste, filtrering, walk-in opprettelse, statusstyring og meldingsdialog.

12Mapped endpoints
4Frontend files
35Lines
2.7 KBFile size

Source: API-DOC/page-api-mapping/04-bestillinger.md

Mapped endpoints for this page

MethodPathScopeUI usageTest
GET/api/ws/v2/bookingsSharedFetch bookinglisteTry-It
GET/api/ws/bookingsShared fallback (feature-flagged)Legacy fallback ved migreringTry-It
GET/api/ws/v2/booking-statusesSharedStatusfilter/statusvalgTry-It
GET/api/ws/booking-statusesShared fallback (feature-flagged)Legacy fallbackTry-It
GET/api/ws/v2/bookings/:idPage-specificBookingdetaljTry-It
GET/api/ws/v2/bookings/:id/valid-transitionsPage-specificTillatte overgangerTry-It
POST/api/ws/v2/bookings/status-transitionsPage-specific (kanonisk write)Bekreft/avbestill/fullfør/rescheduleTry-It
POST/api/ws/v2/bookings/:id/messagesPage-specific (kanonisk write)Send melding i bookingtrådTry-It
POST/api/ws/bookings/statusPage-specific fallback (flaggstyrt)Legacy fallback for statusTry-It
POST/api/ws/bookings/message/:booking_idPage-specific fallback (flaggstyrt)Legacy fallback for meldingTry-It
POST/api/ws/bookingsPage-specificCreate walk-in bookingTry-It
GET/api/ws/servicesSharedServices til walk-in dropdownTry-It
GET/api/ws/v2/bookings

Scope: Shared

UI usage: Fetch bookingliste

Response fields used: items[] med booking-kjernefelt

GET/api/ws/bookings

Scope: Shared fallback (feature-flagged)

UI usage: Legacy fallback ved migrering

Response fields used: legacy booking list

GET/api/ws/v2/booking-statuses

Scope: Shared

UI usage: Statusfilter/statusvalg

Response fields used: statuses[].code, label, allowed_transitions, color, icon

GET/api/ws/booking-statuses

Scope: Shared fallback (feature-flagged)

UI usage: Legacy fallback

Response fields used: legacy statusobjekter

GET/api/ws/v2/bookings/:id

Scope: Page-specific

UI usage: Bookingdetalj

Response fields used: booking, messages, timeline, group

GET/api/ws/v2/bookings/:id/valid-transitions

Scope: Page-specific

UI usage: Tillatte overganger

Response fields used: current_status, allowed_transitions[]

POST/api/ws/v2/bookings/status-transitions

Scope: Page-specific (kanonisk write)

UI usage: Bekreft/avbestill/fullfør/reschedule

Response fields used: updated[], failed[], totals

POST/api/ws/v2/bookings/:id/messages

Scope: Page-specific (kanonisk write)

UI usage: Send melding i bookingtråd

Response fields used: booking_id, message

POST/api/ws/bookings/status

Scope: Page-specific fallback (flaggstyrt)

UI usage: Legacy fallback for status

Response fields used: oppdateringsresultat

POST/api/ws/bookings/message/:booking_id

Scope: Page-specific fallback (flaggstyrt)

UI usage: Legacy fallback for melding

Response fields used: melding/OK

POST/api/ws/bookings

Scope: Page-specific

UI usage: Create walk-in booking

Response fields used: opprettet booking

GET/api/ws/services

Scope: Shared

UI usage: Services til walk-in dropdown

Response fields used: items[] med id, title, price

Try this page endpoints

Interactive console below is filtered to endpoints mapped for this page contract.

Source markdown

04 - Bookings

Page purpose

Bestillingsområdet (/booking + /booking/[id]) dekker liste, filtrering, walk-in opprettelse, statusstyring og meldingsdialog.

Frontend methods and components

  • List:
    • src/features/bookings/BookingTable.tsx
    • src/lib/hooks/useBookings.ts
  • Detalj:
    • src/features/bookings/BookingDetails.tsx
  • Walk-in:
    • src/features/bookings/CreateWalkInBookingModal.tsx

Endpoint matrix (liste + detalj)

Scope Method Endpoint UI usage Request Response fields used by frontend
Shared GET /api/ws/v2/bookings Fetch bookingliste limit, cursor, status, from, to, q, sort, format items[] med booking-kjernefelt
Shared fallback (feature-flagged) GET /api/ws/bookings Legacy fallback ved migrering legacy query params legacy booking list
Shared GET /api/ws/v2/booking-statuses Statusfilter/statusvalg ingen statuses[].code, label, allowed_transitions, color, icon
Shared fallback (feature-flagged) GET /api/ws/booking-statuses Legacy fallback ingen legacy statusobjekter
Page-specific GET /api/ws/v2/bookings/{id} Bookingdetalj include=services,messages,timeline,group booking, messages, timeline, group
Page-specific GET /api/ws/v2/bookings/{id}/valid-transitions Tillatte overganger path id current_status, allowed_transitions[]
Page-specific (kanonisk write) POST /api/ws/v2/bookings/status-transitions Bekreft/avbestill/fullfør/reschedule booking_ids, target_status, apply_scope, reason, scheduled_at, metadata updated[], failed[], totals
Page-specific (kanonisk write) POST /api/ws/v2/bookings/{id}/messages Send melding i bookingtråd { content/message, attachments, to_carowner } booking_id, message
Page-specific fallback (flaggstyrt) POST /api/ws/bookings/status Legacy fallback for status legacy body oppdateringsresultat
Page-specific fallback (flaggstyrt) POST /api/ws/bookings/message/{booking_id} Legacy fallback for melding { message, to_carowner, attachments } melding/OK
Page-specific POST /api/ws/bookings Create walk-in booking service_id, start_at, walk_in, kunde-/kjøretøyfelt, notes opprettet booking
Shared GET /api/ws/services Services til walk-in dropdown page_size=200, sort=title items[] med id, title, price

Contract summary

  • Lesekontrakt er v2-first (/v2/bookings*).
  • Skrivekontrakt er v2-first (/v2/bookings/status-transitions + /v2/bookings/{id}/messages).
  • Legacy booking write-ruter er fortsatt tilgjengelige, men deprecated og brukes kun via flaggstyrt fallback.