/api/ws/shopScope: Page-specific
UI usage: Load full verkstedprofil
Response fields used: workshop (navn, orgnr, adresse, kontakter, social, media, services, ratings, opening_hours)
Overview
Docs HomeWorkshop StartCarOwner StartWorkshop Onboarding
Get Started01 API key setup02 API key in requests03 Auth testing04 Bearer token callsCollections
Platform API Collection (Soft Launch)Soft Launch All EndpointsSoft Launch InteractiveFundamentalsCanonical SpecAPI Reference
API RootWorkshop IndexWorkshop InteractiveWorkshop Auth InteractiveAll Workshop EndpointsCarOwner IndexCarOwner InteractiveCarOwner Auth InteractiveAll CarOwner EndpointsCore/Common IndexCore InteractiveAll Core EndpointsWorkshop Namespaces
AuthUserProfileWorkshopCoreWorkshopOwnershipRequestContactsAddressesOpeningHoursServicesManagersCertificatesSocialMediaBookingsRatingsServiceHistoryEmailVerificationNotificationsMessagesBrregLookupBookingStatusesCategoriesReportsServiceRecordsUsersAccessV2RealtimePresenceSupportCarOwner Namespaces
AuthBookingBookingStatusCarBrandsCarOwnerPaymentsCarOwnerServiceRecordsCategoriesFavoritesMarketplaceMarketplaceCompatMarketplaceFiltersMessagesNotificationsPresenceProfileRatingsRealtimeServiceLogSettingsVehiclesCore Namespaces
CoreVehicleServiceHistoryWorkshopCommonCarOwnerCommonPage Introduction
This contract page maps concrete frontend page behavior to API calls, payloads, and response fields.
Platform Page Contract
## Page purpose Workshopsområdet (`/workshop`) dekker: - visning av verkstedprofil - redigering av basisinfo, adresse, kontakt, åpningstider og galleri - growth-seksjon (media, sertifikater, sosial, presence, support) - workshop ownership onboarding when ownership is missing
Source: API-DOC/page-api-mapping/11-verksted.md
| Method | Path | Scope | UI usage | Test |
|---|---|---|---|---|
| GET | /api/ws/shop | Page-specific | Load full verkstedprofil | Try-It |
| GET | /api/ws/categories | Shared | Workshop-kategorier for visning/redigering | Try-It |
| PUT | /api/ws/shop | Page-specific | Update verkstedinfo/logo/kategorier | Try-It |
| POST | /api/ws/address | Page-specific | Create adresse | Try-It |
| PUT | /api/ws/address | Page-specific | Update adresse | Try-It |
| GET | /api/ws/contact | Page-specific | Fetch kontakter | Try-It |
| POST | /api/ws/contact | Page-specific | Create kontakt | Try-It |
| PUT | /api/ws/contact | Page-specific | Update kontakt | Try-It |
| GET | /api/ws/social | Shared | Fetch sosial/nettside | Try-It |
| POST | /api/ws/social | Shared | Create sosialprofil | Try-It |
| PUT | /api/ws/social | Shared | Update sosialprofil | Try-It |
| POST | /api/ws/opening-hours/validate | Page-specific | Validering før lagring av åpningstider | Try-It |
| PUT | /api/ws/opening-hours | Page-specific | Save åpningstider | Try-It |
| POST | /api/ws/opening-hours | Page-specific fallback | Fallback hvis PUT ikke finnes | Try-It |
| POST | /api/ws/media | Page-specific | Load opp galleribilde | Try-It |
| GET | /api/ws/media | Page-specific | List media | Try-It |
| PUT | /api/ws/media/:id | Page-specific | Endre mediatittel | Try-It |
| DELETE | /api/ws/media/:id | Page-specific | Delete media | Try-It |
| GET | /api/ws/certificates | Page-specific | List sertifikater | Try-It |
| POST | /api/ws/certificates | Page-specific | Create sertifikat | Try-It |
| PUT | /api/ws/certificates | Page-specific | Update sertifikatstatus | Try-It |
| DELETE | /api/ws/certificates | Page-specific | Delete sertifikat | Try-It |
| DELETE | /api/ws/certificates/:id | Page-specific fallback | Fallback delete-rute | Try-It |
| PUT | /api/ws/presence | Page-specific | Update presence-status | Try-It |
| GET | /api/ws/support/contact | Page-specific | Fetch supportkontakt | Try-It |
| POST | /api/ws/support/ownership-dispute | Page-specific | Sende supportsak om eierskap | Try-It |
| GET | /api/ws/realtime/config | Page-specific | Fetch realtime-konfig | Try-It |
| POST | /api/ws/shop/add | Page-related | Steg 1: preview Brreg-data | Try-It |
| POST | /api/ws/shop/add/confirm | Page-related | Steg 2: send verifikasjonskode | Try-It |
| POST | /api/ws/shop/add/confirm-ownership | Page-related | Steg 3: bekreft eierskap | Try-It |
| POST | /api/ws/shop/confirm-ownership | Page-related fallback | Legacy fallback i frontend | Try-It |
/api/ws/shopScope: Page-specific
UI usage: Load full verkstedprofil
Response fields used: workshop (navn, orgnr, adresse, kontakter, social, media, services, ratings, opening_hours)
/api/ws/categoriesScope: Shared
UI usage: Workshop-kategorier for visning/redigering
Response fields used: workshop_category_id, workshop_category_name
/api/ws/shopScope: Page-specific
UI usage: Update verkstedinfo/logo/kategorier
Response fields used: message/oppdatert workshop
/api/ws/addressScope: Page-specific
UI usage: Create adresse
Response fields used: opprettet adresse
/api/ws/addressScope: Page-specific
UI usage: Update adresse
Response fields used: oppdatert adresse
/api/ws/contactScope: Page-specific
UI usage: Fetch kontakter
Response fields used: kontaktliste
/api/ws/contactScope: Page-specific
UI usage: Create kontakt
Response fields used: opprettet kontakt
/api/ws/contactScope: Page-specific
UI usage: Update kontakt
Response fields used: oppdatert kontakt
/api/ws/socialScope: Shared
UI usage: Fetch sosial/nettside
Response fields used: website, facebook, instagram, etc.
/api/ws/socialScope: Shared
UI usage: Create sosialprofil
Response fields used: opprettet sosialprofil
/api/ws/socialScope: Shared
UI usage: Update sosialprofil
Response fields used: oppdatert sosialprofil
/api/ws/opening-hours/validateScope: Page-specific
UI usage: Validering før lagring av åpningstider
Response fields used: validering OK/feil
/api/ws/opening-hoursScope: Page-specific
UI usage: Save åpningstider
Response fields used: oppdatert åpningstidsett
/api/ws/opening-hoursScope: Page-specific fallback
UI usage: Fallback hvis PUT ikke finnes
Response fields used: opprettet/oppdatert åpningstidsett
/api/ws/mediaScope: Page-specific
UI usage: Load opp galleribilde
Response fields used: mediaobjekt med url
/api/ws/mediaScope: Page-specific
UI usage: List media
Response fields used: items[] (id, title, media_url, media_type)
/api/ws/media/:idScope: Page-specific
UI usage: Endre mediatittel
Response fields used: oppdatert media
/api/ws/media/:idScope: Page-specific
UI usage: Delete media
Response fields used: message
/api/ws/certificatesScope: Page-specific
UI usage: List sertifikater
Response fields used: items[] (id, certificate_name, issued_date, expiry_date, is_active)
/api/ws/certificatesScope: Page-specific
UI usage: Create sertifikat
Response fields used: opprettet sertifikat
/api/ws/certificatesScope: Page-specific
UI usage: Update sertifikatstatus
Response fields used: oppdatert sertifikat
/api/ws/certificatesScope: Page-specific
UI usage: Delete sertifikat
Response fields used: message
/api/ws/certificates/:idScope: Page-specific fallback
UI usage: Fallback delete-rute
Response fields used: message
/api/ws/presenceScope: Page-specific
UI usage: Update presence-status
Response fields used: away
/api/ws/support/contactScope: Page-specific
UI usage: Fetch supportkontakt
Response fields used: support-kontaktdata
/api/ws/support/ownership-disputeScope: Page-specific
UI usage: Sende supportsak om eierskap
Response fields used: confirmation/ID
/api/ws/realtime/configScope: Page-specific
UI usage: Fetch realtime-konfig
Response fields used: realtime config
/api/ws/shop/addScope: Page-related
UI usage: Steg 1: preview Brreg-data
Response fields used: enhet/company, next_action
/api/ws/shop/add/confirmScope: Page-related
UI usage: Steg 2: send verifikasjonskode
Response fields used: verification_code_sent, expires_at
/api/ws/shop/add/confirm-ownershipScope: Page-related
UI usage: Steg 3: bekreft eierskap
Response fields used: verified=true, org_nr
/api/ws/shop/confirm-ownershipScope: Page-related fallback
UI usage: Legacy fallback i frontend
Response fields used: confirmationsrespons
Interactive console below is filtered to endpoints mapped for this page contract.
Workshopsområdet (/workshop) dekker:
src/app/(private)/workshop/page.tsxfetchWorkshopData, getWorkshopCategoriesEditWorkshopTab, EditAddressTab, EditContactTab, EditOpeningHoursTab, EditImageGalleryTabsrc/features/workshops/WorkshopGrowthSection.tsxWorkshopOnboardingModal, ShopVerificationModal| Scope | Method | Endpoint | UI usage | Request | Response fields used by frontend |
|---|---|---|---|---|---|
| Page-specific | GET |
/api/ws/shop?full=true |
Load full verkstedprofil | query full=true |
workshop (navn, orgnr, adresse, kontakter, social, media, services, ratings, opening_hours) |
| Shared | GET |
/api/ws/categories |
Workshop-kategorier for visning/redigering | ingen | workshop_category_id, workshop_category_name |
| Page-specific | PUT |
/api/ws/shop |
Update verkstedinfo/logo/kategorier | multipart/json med org_nr, name, description, employees, category_ids, file/logo |
message/oppdatert workshop |
| Page-specific | POST |
/api/ws/address |
Create adresse | street_name, street_number, postal_code, city, county, country |
opprettet adresse |
| Page-specific | PUT |
/api/ws/address |
Update adresse | samme felter | oppdatert adresse |
| Page-specific | GET |
/api/ws/contact |
Fetch kontakter | ingen | kontaktliste |
| Page-specific | POST |
/api/ws/contact |
Create kontakt | first_name, last_name, email, phone_number, mobile_number |
opprettet kontakt |
| Page-specific | PUT |
/api/ws/contact?id={id} |
Update kontakt | kontaktfelt + query id |
oppdatert kontakt |
| Shared | GET |
/api/ws/social |
Fetch sosial/nettside | ingen | website, facebook, instagram, etc. |
| Shared | POST |
/api/ws/social |
Create sosialprofil | sosialfelt | opprettet sosialprofil |
| Shared | PUT |
/api/ws/social |
Update sosialprofil | sosialfelt | oppdatert sosialprofil |
| Page-specific | POST |
/api/ws/opening-hours/validate |
Validering før lagring av åpningstider | regular_hours, special_hours |
validering OK/feil |
| Page-specific | PUT |
/api/ws/opening-hours |
Save åpningstider | regular_hours, special_hours |
oppdatert åpningstidsett |
| Page-specific fallback | POST |
/api/ws/opening-hours |
Fallback hvis PUT ikke finnes |
samme payload | opprettet/oppdatert åpningstidsett |
| Page-specific | POST |
/api/ws/media |
Load opp galleribilde | multipart file, title, media_type |
mediaobjekt med url |
| Scope | Method | Endpoint | UI usage | Request | Response fields used by frontend |
|---|---|---|---|---|---|
| Page-specific | GET |
/api/ws/media |
List media | page_size, order, sort |
items[] (id, title, media_url, media_type) |
| Page-specific | PUT |
/api/ws/media/{id} |
Endre mediatittel | { title } |
oppdatert media |
| Page-specific | DELETE |
/api/ws/media/{id} |
Delete media | path id |
message |
| Page-specific | GET |
/api/ws/certificates |
List sertifikater | ingen | items[] (id, certificate_name, issued_date, expiry_date, is_active) |
| Page-specific | POST |
/api/ws/certificates |
Create sertifikat | multipart med certificate_name, file, valgfri dato/beskrivelse |
opprettet sertifikat |
| Page-specific | PUT |
/api/ws/certificates |
Update sertifikatstatus | { certificate_id, is_active } |
oppdatert sertifikat |
| Page-specific | DELETE |
/api/ws/certificates |
Delete sertifikat | certificate_id, valgfri delete_file |
message |
| Page-specific fallback | DELETE |
/api/ws/certificates/{id} |
Fallback delete-rute | path id |
message |
| Page-specific | PUT |
/api/ws/presence |
Update presence-status | `{ status: online | away |
| Page-specific | GET |
/api/ws/support/contact |
Fetch supportkontakt | ingen | support-kontaktdata |
| Page-specific | POST |
/api/ws/support/ownership-dispute |
Sende supportsak om eierskap | name, email, phone, org_nr, description |
confirmation/ID |
| Page-specific | GET |
/api/ws/realtime/config |
Fetch realtime-konfig | ingen | realtime config |
| Scope | Method | Endpoint | UI usage | Request | Response fields used by frontend |
|---|---|---|---|---|---|
| Page-related | POST |
/api/ws/shop/add |
Steg 1: preview Brreg-data | org_nr (multipart/json) |
enhet/company, next_action |
| Page-related | POST |
/api/ws/shop/add/confirm |
Steg 2: send verifikasjonskode | { org_nr } |
verification_code_sent, expires_at |
| Page-related | POST |
/api/ws/shop/add/confirm-ownership |
Steg 3: bekreft eierskap | { org_nr, verification_code } |
verified=true, org_nr |
| Page-related fallback | POST |
/api/ws/shop/confirm-ownership |
Legacy fallback i frontend | { org_nr, verification_code } |
confirmationsrespons |
/shop?full=true må være stabil som hoved-readmodel for verkstedprofil.