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

05 - Services

## Page purpose Tjenestesiden (`/services`) lar verkstedet: - liste tjenester - opprette/redigere tjenester - slette tjenester - knytte tjenester til servicekategorier/workshop-kategorier

8Mapped endpoints
2Frontend files
41Lines
2.3 KBFile size

Source: API-DOC/page-api-mapping/05-tjenester.md

Mapped endpoints for this page

MethodPathScopeUI usageTest
GET/api/ws/servicesPage-specificList alle tjenesterTry-It
GET/api/ws/categories/servicesSharedFetch servicekategorierTry-It
GET/api/co/categories/servicesShared fallbackFallback ved ws-kategori-feilTry-It
GET/api/ws/categoriesSharedFetch workshop-kategorier for gruppering i UITry-It
GET/api/co/categoriesShared fallbackFallback ved ws-kategori-feilTry-It
POST/api/ws/servicesPage-specificCreate ny tjenesteTry-It
PUT/api/ws/services/:idPage-specificUpdate tjenesteTry-It
DELETE/api/ws/services/:idPage-specificDelete tjenesteTry-It
GET/api/ws/services

Scope: Page-specific

UI usage: List alle tjenester

Response fields used: items[] med id, title, description, price, estimated_time, category_ids, images

GET/api/ws/categories/services

Scope: Shared

UI usage: Fetch servicekategorier

Response fields used: id, name, workshop_category_id, level

GET/api/co/categories/services

Scope: Shared fallback

UI usage: Fallback ved ws-kategori-feil

Response fields used: servicekategorier

GET/api/ws/categories

Scope: Shared

UI usage: Fetch workshop-kategorier for gruppering i UI

Response fields used: workshop_category_id, workshop_category_name, workshop_category_code

GET/api/co/categories

Scope: Shared fallback

UI usage: Fallback ved ws-kategori-feil

Response fields used: workshop-kategorier

POST/api/ws/services

Scope: Page-specific

UI usage: Create ny tjeneste

Response fields used: opprettet service

PUT/api/ws/services/:id

Scope: Page-specific

UI usage: Update tjeneste

Response fields used: oppdatert service

DELETE/api/ws/services/:id

Scope: Page-specific

UI usage: Delete tjeneste

Response fields used: message/OK

Try this page endpoints

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

Source markdown

05 - Services

Page purpose

Tjenestesiden (/services) lar verkstedet:

  • liste tjenester
  • opprette/redigere tjenester
  • slette tjenester
  • knytte tjenester til servicekategorier/workshop-kategorier

Frontend methods and components

  • src/app/(private)/services/page.tsx
    • getServices, getServiceCategories, deleteService
  • src/features/services/AddServiceModal.tsx
    • createService, updateService
    • getServiceCategories, getWorkshopCategories

Endpoint matrix

Scope Method Endpoint UI usage Request Response fields used by frontend
Page-specific GET /api/ws/services List alle tjenester valgfri paging/filter items[] med id, title, description, price, estimated_time, category_ids, images
Shared GET /api/ws/categories/services Fetch servicekategorier ingen id, name, workshop_category_id, level
Shared fallback GET /api/co/categories/services Fallback ved ws-kategori-feil ingen servicekategorier
Shared GET /api/ws/categories Fetch workshop-kategorier for gruppering i UI ingen workshop_category_id, workshop_category_name, workshop_category_code
Shared fallback GET /api/co/categories Fallback ved ws-kategori-feil ingen workshop-kategorier
Page-specific POST /api/ws/services Create ny tjeneste JSON eller multipart (title, description, price, estimated_time, category_ids, valgfri file/images) opprettet service
Page-specific PUT /api/ws/services/{id} Update tjeneste samme felter som create oppdatert service
Page-specific DELETE /api/ws/services/{id} Delete tjeneste path id message/OK

Contract and field usage

  • Frontend forventer at tjenester enten returneres direkte som array eller som data.items.
  • Kategorivisning i modal bygger på to lag:
    • workshop-kategori (gruppe)
    • service-kategori (valgchips)
  • Ved manglende categories i serviceobjekt beriker frontend selv via category_ids + kategorioppslag.

Functional flow

  1. Side lastes -> getServices + kategorioppslag.
  2. Modal åpnes -> bruker fyller felter og velger kategorier.
  3. Save -> createService eller updateService.
  4. Slett -> deleteService + reload av liste.