{"openapi":"3.1.0","info":{"title":"Webspesialisten CRM API","version":"1.0.0","description":"REST API for Webspesialisten CRM. Alle forespørsler bruker JSON og en API-nøkkel i «Authorization: Bearer wcrm_…». Lister er sidevis med cursor (`{ data, next_cursor, has_more }`). Feil har formen `{ error: { code, message, fields? } }`. Grense: 600 forespørsler per 10 minutter per nøkkel.\n\nDokumentasjon: https://crm.webspesialisten.no/api-dokumentasjon","contact":{"name":"Webspesialisten AS","url":"https://webspesialisten.no"}},"servers":[{"url":"https://crm.webspesialisten.no/api/v1","description":"Produksjon"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Konto","description":"Informasjon om kontoen og nøkkelen som brukes."},{"name":"Leads","description":"Henvendelser fra nettskjema rett inn i CRM-et."},{"name":"Oppslag","description":"Søk, faser i salgspipelinen og tagger."},{"name":"Bedrifter","description":"Firmaregisteret: kunder, leads, leverandører og partnere. Org.nr. valideres (MOD11) og må være unikt i kontoen."},{"name":"Kontakter","description":"Personregisteret. En kontakt kan være knyttet til en bedrift. Minst ett av fornavn, etternavn eller e-post må fylles ut."},{"name":"Salgsmuligheter","description":"Salgsmuligheter i pipelinen. Flytt en mulighet ved å endre «stage_id»; fasens type (open/won/lost) styrer status, «closed_at» og webhookene deal.won / deal.lost."},{"name":"Aktiviteter","description":"Oppgaver, samtaler, møter og notater. Vises på tidslinjen til bedrift, kontakt og salgsmulighet. Notater og aktiviteter opprettet med «completed: true» registreres som utført."},{"name":"Produkter","description":"Produkt- og tjenestekatalogen som brukes på tilbud og salg. Priser er i NOK eks. mva."},{"name":"Saker","description":"Kundeservicesaker. Hver sak får et løpenummer per konto. Enkeltoppslag inkluderer kommentarer."},{"name":"Tilbud","description":"Tilbud med linjer. Summene beregnes av CRM-et. Enkeltoppslag inkluderer linjene («items») og «public_url» – lenken kunden bruker for å se og akseptere tilbudet."},{"name":"Brukere","description":"Brukerne i kontoen (skrivebeskyttet). Brukes for å finne ID-er til «owner_id», «assigned_to» osv."}],"paths":{"/me":{"get":{"operationId":"getMe","tags":["Konto"],"summary":"Hvem er jeg?","description":"Kontoen, planen og nøkkelen som brukes. Fungerer med alle nøkkeltyper – fin for å teste at nøkkelen virker.\n\nKrever nøkkel med scope: **leads eller write**.","parameters":[],"responses":{"200":{"description":"Konto og nøkkel.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"org":{"type":"object","description":"Kontoen: id, name, org_number, status, trial_ends_at."},"plan":{"type":"object","description":"Planen: id, name, modules (moduler som er låst opp)."},"token":{"type":"object","description":"Nøkkelen: id, name, prefix, scope."},"user":{"type":"object","description":"Brukeren nøkkelen opptrer som: id, email, first_name, last_name, role."},"rate_limit":{"type":"object","description":"limit og window_seconds."}}}}},"example":{"data":{"org":{"id":"a0a55924-1633-4c46-8f54-33daa984e898","name":"Utvikling AS","org_number":null,"status":"active","trial_ends_at":null},"plan":{"id":"pro","name":"Pro","modules":["quotes","api","webhooks"]},"token":{"id":"…","name":"Nettside","prefix":"wcrm_Ab12Cd","scope":"write"},"user":{"id":"…","email":"ola@firma.no","first_name":"Ola","last_name":"Nordmann","role":"owner"},"rate_limit":{"limit":600,"window_seconds":600}}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/leads":{"post":{"operationId":"createLead","tags":["Leads"],"summary":"Send inn henvendelse fra nettskjema","description":"Ett kall fra kontaktskjemaet på nettsiden: finner eller oppretter bedrift (org.nr./navn) og kontakt (e-post), oppretter eventuelt en salgsmulighet og lagrer meldingen som notat. Kan brukes med en «leads»-nøkkel, som ikke har tilgang til noe annet.\n\nKrever nøkkel med scope: **leads eller write**.","parameters":[],"responses":{"201":{"description":"IDer til det som ble funnet/opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LeadResult"}}},"example":{"data":{"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":"b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d","activity_id":"c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4","created":{"company":true,"contact":true,"deal":true}}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadInput"},"example":{"name":"Kari Nordmann","email":"kari@firma.no","phone":"912 34 567","company_name":"Firma AS","message":"Vi ønsker tilbud på nytt nettsted.","deal_value":50000,"consent_marketing":true}}}}}},"/search":{"get":{"operationId":"search","tags":["Oppslag"],"summary":"Søk på tvers","description":"Søker i kontakter, bedrifter, salgsmuligheter, tilbud og saker samtidig.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Søketekst, minst 2 tegn. Treffer navn, e-post, telefon, org.nr., titler og nummer.","schema":{"type":"string"},"example":"nordmann"},{"name":"limit","in":"query","required":false,"description":"Maks treff per type, 1–20. Standard 6.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Treff.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type treff.","enum":["contact","company","deal","quote","ticket"]},"id":{"type":"string","format":"uuid","description":"ID."},"label":{"type":"string","description":"Visningsnavn."},"sub":{"type":["string","null"],"description":"Tilleggsinfo (firma, sted, verdi …)."},"url":{"type":"string","format":"uri","description":"Lenke i CRM-et."}}}}}},"example":{"data":[{"type":"contact","id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","label":"Kari Nordmann","sub":"Fjordkraft Konsult AS","url":"https://crm.webspesialisten.no/app/kontakter/0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}]}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pipeline-stages":{"get":{"operationId":"listPipelineStages","tags":["Oppslag"],"summary":"Faser i salgspipelinen","description":"Alle faser i rekkefølge. Bruk «id» som «stage_id» på salgsmuligheter.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[],"responses":{"200":{"description":"Faser.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Fase-ID (brukes som «stage_id» på salgsmuligheter)."},"name":{"type":"string","description":"Navn."},"probability":{"type":"integer","description":"Standard sannsynlighet 0–100 %."},"sort":{"type":"integer","description":"Rekkefølge i tavlen."},"kind":{"type":"string","description":"Type fase.","enum":["open","won","lost"]},"color":{"type":["string","null"],"description":"Farge (hex)."}}}}}},"example":{"data":[{"id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f","name":"Tilbud sendt","probability":50,"sort":3,"kind":"open","color":"#1173d4"}]}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tags":{"get":{"operationId":"listTags","tags":["Oppslag"],"summary":"Tagger","description":"Alle tagger i kontoen med antall bruk.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[],"responses":{"200":{"description":"Tagger.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Tagg-ID."},"name":{"type":"string","description":"Navn."},"color":{"type":"string","description":"Farge (hex)."},"usage":{"type":"integer","description":"Antall oppføringer med taggen."}}}}}},"example":{"data":[{"id":"8a9b0c1d-7777-4a2b-8c3d-4e5f6a7b8c9d","name":"vip","color":"#1173d4","usage":12}]}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/companies":{"get":{"operationId":"listCompanies","tags":["Bedrifter"],"summary":"List bedrifter","description":"Firmaregisteret: kunder, leads, leverandører og partnere. Org.nr. valideres (MOD11) og må være unikt i kontoen. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"org_number","in":"query","required":false,"description":"Eksakt org.nr.","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"Kategori.","schema":{"type":"string","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]}},{"name":"status","in":"query","required":false,"description":"Status.","schema":{"type":"string","enum":["active","inactive"]}},{"name":"owner_id","in":"query","required":false,"description":"Bare oppføringer med denne ansvarlige.","schema":{"type":"string","format":"uuid"}},{"name":"tag","in":"query","required":false,"description":"Bare oppføringer med denne taggen (navn, uavhengig av store/små bokstaver).","schema":{"type":"string"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Company"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","name":"Fjordkraft Konsult AS","org_number":"923456783","industry":"Rådgivning","nace_code":"70.220","employees":12,"website":"https://fjordkraftkonsult.no","email":"post@fjordkraftkonsult.no","phone":"55 12 34 56","address":"Strandkaien 2","postal_code":"5013","city":"Bergen","municipality":"Bergen","country":"Norge","category":"kunde","status":"active","description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["vip"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T13:02:11.000Z","url":"https://crm.webspesialisten.no/app/bedrifter/7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createCompany","tags":["Bedrifter"],"summary":"Opprett bedrift","description":"Oppretter bedrift. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}},"example":{"data":{"id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","name":"Fjordkraft Konsult AS","org_number":"923456783","industry":"Rådgivning","nace_code":"70.220","employees":12,"website":"https://fjordkraftkonsult.no","email":"post@fjordkraftkonsult.no","phone":"55 12 34 56","address":"Strandkaien 2","postal_code":"5013","city":"Bergen","municipality":"Bergen","country":"Norge","category":"kunde","status":"active","description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["vip"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T13:02:11.000Z","url":"https://crm.webspesialisten.no/app/bedrifter/7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyInput"},"example":{"name":"Fjordkraft Konsult AS","org_number":"923456783","city":"Bergen","category":"lead","tags":["nettside"]}}}}}},"/companies/{id}":{"get":{"operationId":"getCompany","tags":["Bedrifter"],"summary":"Hent bedrift","description":"Én bedrift med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til bedrift.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}},"example":{"data":{"id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","name":"Fjordkraft Konsult AS","org_number":"923456783","industry":"Rådgivning","nace_code":"70.220","employees":12,"website":"https://fjordkraftkonsult.no","email":"post@fjordkraftkonsult.no","phone":"55 12 34 56","address":"Strandkaien 2","postal_code":"5013","city":"Bergen","municipality":"Bergen","country":"Norge","category":"kunde","status":"active","description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["vip"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T13:02:11.000Z","url":"https://crm.webspesialisten.no/app/bedrifter/7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateCompany","tags":["Bedrifter"],"summary":"Endre bedrift","description":"Delvis oppdatering: bare feltene du sender, endres. Send null for å tømme et felt.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til bedrift.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}}},"example":{"data":{"id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","name":"Fjordkraft Konsult AS","org_number":"923456783","industry":"Rådgivning","nace_code":"70.220","employees":12,"website":"https://fjordkraftkonsult.no","email":"post@fjordkraftkonsult.no","phone":"55 12 34 56","address":"Strandkaien 2","postal_code":"5013","city":"Bergen","municipality":"Bergen","country":"Norge","category":"kunde","status":"active","description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["vip"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T13:02:11.000Z","url":"https://crm.webspesialisten.no/app/bedrifter/7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Firmanavn.","examples":["Fjordkraft Konsult AS"]},"org_number":{"type":["string","null"],"description":"Organisasjonsnummer, 9 siffer (mellomrom fjernes).","examples":["923456783"]},"industry":{"type":["string","null"],"description":"Bransje."},"nace_code":{"type":["string","null"],"description":"NACE-kode fra Brønnøysund."},"employees":{"type":["integer","null"],"description":"Antall ansatte."},"website":{"type":["string","null"],"format":"uri","description":"Nettside. «https://» legges til om det mangler."},"email":{"type":["string","null"],"format":"email","description":"Firmaets e-post."},"phone":{"type":["string","null"],"description":"Telefon."},"address":{"type":["string","null"],"description":"Gateadresse."},"postal_code":{"type":["string","null"],"description":"Postnummer."},"city":{"type":["string","null"],"description":"Poststed."},"municipality":{"type":["string","null"],"description":"Kommune."},"country":{"type":"string","description":"Land. Standard «Norge»."},"category":{"type":"string","description":"Kategori. Standard «lead».","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]},"status":{"type":"string","description":"Standard «active».","enum":["active","inactive"]},"description":{"type":["string","null"],"description":"Fritekst om firmaet."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]}}},"example":{"category":"kunde","employees":14}}}}},"delete":{"operationId":"deleteCompany","tags":["Bedrifter"],"summary":"Slett bedrift","description":"Sletter permanent. Svarer 204 uten innhold.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til bedrift.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Slettet."},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/contacts":{"get":{"operationId":"listContacts","tags":["Kontakter"],"summary":"List kontakter","description":"Personregisteret. En kontakt kan være knyttet til en bedrift. Minst ett av fornavn, etternavn eller e-post må fylles ut. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"company_id","in":"query","required":false,"description":"Kontakter i denne bedriften.","schema":{"type":"string","format":"uuid"}},{"name":"email","in":"query","required":false,"description":"Eksakt e-post (uavhengig av store/små bokstaver).","schema":{"type":"string","format":"email"}},{"name":"category","in":"query","required":false,"description":"Kategori.","schema":{"type":"string","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]}},{"name":"status","in":"query","required":false,"description":"Status.","schema":{"type":"string","enum":["active","inactive"]}},{"name":"consent_marketing","in":"query","required":false,"description":"true = bare kontakter med markedsføringssamtykke.","schema":{"type":"boolean"}},{"name":"owner_id","in":"query","required":false,"description":"Bare oppføringer med denne ansvarlige.","schema":{"type":"string","format":"uuid"}},{"name":"tag","in":"query","required":false,"description":"Bare oppføringer med denne taggen (navn, uavhengig av store/små bokstaver).","schema":{"type":"string"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contact"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","first_name":"Kari","last_name":"Nordmann","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","company_name":"Fjordkraft Konsult AS","email":"kari@fjordkraftkonsult.no","phone":null,"mobile":"912 34 567","title":"Daglig leder","department":null,"address":null,"postal_code":null,"city":"Bergen","birthday":null,"linkedin":null,"category":"kunde","status":"active","source":"Nettside","notes":null,"consent_marketing":true,"consent_source":"Nyhetsbrev-skjema","consent_at":"2026-09-20T08:15:00.000Z","last_contacted_at":"2026-09-24T10:00:00.000Z","owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["nyhetsbrev"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/kontakter/0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createContact","tags":["Kontakter"],"summary":"Opprett kontakt","description":"Oppretter kontakt. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Contact"}}},"example":{"data":{"id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","first_name":"Kari","last_name":"Nordmann","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","company_name":"Fjordkraft Konsult AS","email":"kari@fjordkraftkonsult.no","phone":null,"mobile":"912 34 567","title":"Daglig leder","department":null,"address":null,"postal_code":null,"city":"Bergen","birthday":null,"linkedin":null,"category":"kunde","status":"active","source":"Nettside","notes":null,"consent_marketing":true,"consent_source":"Nyhetsbrev-skjema","consent_at":"2026-09-20T08:15:00.000Z","last_contacted_at":"2026-09-24T10:00:00.000Z","owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["nyhetsbrev"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/kontakter/0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactInput"},"example":{"first_name":"Kari","last_name":"Nordmann","email":"kari@fjordkraftkonsult.no","mobile":"912 34 567","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","tags":["nettside"]}}}}}},"/contacts/{id}":{"get":{"operationId":"getContact","tags":["Kontakter"],"summary":"Hent kontakt","description":"Én kontakt med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til kontakt.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Contact"}}},"example":{"data":{"id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","first_name":"Kari","last_name":"Nordmann","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","company_name":"Fjordkraft Konsult AS","email":"kari@fjordkraftkonsult.no","phone":null,"mobile":"912 34 567","title":"Daglig leder","department":null,"address":null,"postal_code":null,"city":"Bergen","birthday":null,"linkedin":null,"category":"kunde","status":"active","source":"Nettside","notes":null,"consent_marketing":true,"consent_source":"Nyhetsbrev-skjema","consent_at":"2026-09-20T08:15:00.000Z","last_contacted_at":"2026-09-24T10:00:00.000Z","owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["nyhetsbrev"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/kontakter/0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateContact","tags":["Kontakter"],"summary":"Endre kontakt","description":"Delvis oppdatering: bare feltene du sender, endres. Send null for å tømme et felt.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til kontakt.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Contact"}}},"example":{"data":{"id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","first_name":"Kari","last_name":"Nordmann","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","company_name":"Fjordkraft Konsult AS","email":"kari@fjordkraftkonsult.no","phone":null,"mobile":"912 34 567","title":"Daglig leder","department":null,"address":null,"postal_code":null,"city":"Bergen","birthday":null,"linkedin":null,"category":"kunde","status":"active","source":"Nettside","notes":null,"consent_marketing":true,"consent_source":"Nyhetsbrev-skjema","consent_at":"2026-09-20T08:15:00.000Z","last_contacted_at":"2026-09-24T10:00:00.000Z","owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["nyhetsbrev"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/kontakter/0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","description":"Fornavn.","examples":["Kari"]},"last_name":{"type":"string","description":"Etternavn.","examples":["Nordmann"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften kontakten jobber i."},"email":{"type":["string","null"],"format":"email","description":"E-post (lagres med små bokstaver)."},"phone":{"type":["string","null"],"description":"Fasttelefon."},"mobile":{"type":["string","null"],"description":"Mobil."},"title":{"type":["string","null"],"description":"Stilling."},"department":{"type":["string","null"],"description":"Avdeling."},"address":{"type":["string","null"],"description":"Adresse."},"postal_code":{"type":["string","null"],"description":"Postnummer."},"city":{"type":["string","null"],"description":"Poststed."},"birthday":{"type":["string","null"],"format":"date","description":"Fødselsdato (YYYY-MM-DD)."},"linkedin":{"type":["string","null"],"format":"uri","description":"LinkedIn-profil."},"category":{"type":"string","description":"Kategori. Standard «lead».","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]},"status":{"type":"string","description":"Standard «active».","enum":["active","inactive"]},"source":{"type":["string","null"],"description":"Kilde, f.eks. «Nettside», «Messe»."},"notes":{"type":["string","null"],"description":"Notater."},"consent_marketing":{"type":"boolean","description":"Samtykke til markedsføring (GDPR). Tidspunktet lagres i «consent_at»."},"consent_source":{"type":["string","null"],"description":"Hvor samtykket ble gitt."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]}}},"example":{"title":"Daglig leder","category":"kunde"}}}}},"delete":{"operationId":"deleteContact","tags":["Kontakter"],"summary":"Slett kontakt","description":"Sletter permanent. Svarer 204 uten innhold.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til kontakt.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Slettet."},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/deals":{"get":{"operationId":"listDeals","tags":["Salgsmuligheter"],"summary":"List salgsmuligheter","description":"Salgsmuligheter i pipelinen. Flytt en mulighet ved å endre «stage_id»; fasens type (open/won/lost) styrer status, «closed_at» og webhookene deal.won / deal.lost. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"company_id","in":"query","required":false,"description":"Bedrift.","schema":{"type":"string","format":"uuid"}},{"name":"contact_id","in":"query","required":false,"description":"Kontakt.","schema":{"type":"string","format":"uuid"}},{"name":"stage_id","in":"query","required":false,"description":"Fase.","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"description":"Åpne, vunne eller tapte.","schema":{"type":"string","enum":["open","won","lost"]}},{"name":"owner_id","in":"query","required":false,"description":"Bare oppføringer med denne ansvarlige.","schema":{"type":"string","format":"uuid"}},{"name":"tag","in":"query","required":false,"description":"Bare oppføringer med denne taggen (navn, uavhengig av store/små bokstaver).","schema":{"type":"string"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Deal"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d","title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","stage_id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f","stage_name":"Tilbud sendt","status":"open","value":45000,"recurring":false,"probability":null,"effective_probability":50,"expected_close":"2026-10-15","closed_at":null,"source":"Nettside","lost_reason":null,"description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-21T09:00:00.000Z","updated_at":"2026-09-23T14:30:00.000Z","url":"https://crm.webspesialisten.no/app/muligheter/b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createDeal","tags":["Salgsmuligheter"],"summary":"Opprett salgsmulighet","description":"Oppretter salgsmulighet. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Deal"}}},"example":{"data":{"id":"b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d","title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","stage_id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f","stage_name":"Tilbud sendt","status":"open","value":45000,"recurring":false,"probability":null,"effective_probability":50,"expected_close":"2026-10-15","closed_at":null,"source":"Nettside","lost_reason":null,"description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-21T09:00:00.000Z","updated_at":"2026-09-23T14:30:00.000Z","url":"https://crm.webspesialisten.no/app/muligheter/b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DealInput"},"example":{"title":"Nytt nettsted","value":45000,"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","expected_close":"2026-10-15"}}}}}},"/deals/{id}":{"get":{"operationId":"getDeal","tags":["Salgsmuligheter"],"summary":"Hent salgsmulighet","description":"Én salgsmulighet med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til salgsmulighet.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Deal"}}},"example":{"data":{"id":"b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d","title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","stage_id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f","stage_name":"Tilbud sendt","status":"open","value":45000,"recurring":false,"probability":null,"effective_probability":50,"expected_close":"2026-10-15","closed_at":null,"source":"Nettside","lost_reason":null,"description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-21T09:00:00.000Z","updated_at":"2026-09-23T14:30:00.000Z","url":"https://crm.webspesialisten.no/app/muligheter/b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateDeal","tags":["Salgsmuligheter"],"summary":"Endre salgsmulighet","description":"Delvis oppdatering: bare feltene du sender, endres. Send null for å tømme et felt.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til salgsmulighet.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Deal"}}},"example":{"data":{"id":"b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d","title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","stage_id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f","stage_name":"Tilbud sendt","status":"open","value":45000,"recurring":false,"probability":null,"effective_probability":50,"expected_close":"2026-10-15","closed_at":null,"source":"Nettside","lost_reason":null,"description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-21T09:00:00.000Z","updated_at":"2026-09-23T14:30:00.000Z","url":"https://crm.webspesialisten.no/app/muligheter/b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Tittel.","examples":["Nytt nettsted"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontaktpersonen. Bedrift fylles ut fra kontakten om den mangler."},"stage_id":{"type":"string","format":"uuid","description":"Fase i pipelinen (se GET /pipeline-stages). Standard: første åpne fase."},"value":{"type":"number","description":"Verdi i NOK eks. mva. For «recurring» er dette per måned.","examples":[45000]},"recurring":{"type":"boolean","description":"Månedlig gjentakende inntekt (MRR)."},"probability":{"type":["integer","null"],"description":"Sannsynlighet 0–100 %. null = fasens standard."},"expected_close":{"type":["string","null"],"format":"date","description":"Forventet lukkedato (YYYY-MM-DD)."},"source":{"type":["string","null"],"description":"Kilde."},"lost_reason":{"type":["string","null"],"description":"Tapsårsak (for tapte muligheter)."},"description":{"type":["string","null"],"description":"Beskrivelse."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."}}},"example":{"stage_id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f"}}}}},"delete":{"operationId":"deleteDeal","tags":["Salgsmuligheter"],"summary":"Slett salgsmulighet","description":"Sletter permanent. Svarer 204 uten innhold.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til salgsmulighet.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Slettet."},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/activities":{"get":{"operationId":"listActivities","tags":["Aktiviteter"],"summary":"List aktiviteter","description":"Oppgaver, samtaler, møter og notater. Vises på tidslinjen til bedrift, kontakt og salgsmulighet. Notater og aktiviteter opprettet med «completed: true» registreres som utført. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"company_id","in":"query","required":false,"description":"Bedrift.","schema":{"type":"string","format":"uuid"}},{"name":"contact_id","in":"query","required":false,"description":"Kontakt.","schema":{"type":"string","format":"uuid"}},{"name":"deal_id","in":"query","required":false,"description":"Salgsmulighet.","schema":{"type":"string","format":"uuid"}},{"name":"ticket_id","in":"query","required":false,"description":"Sak.","schema":{"type":"string","format":"uuid"}},{"name":"owner_id","in":"query","required":false,"description":"Bare oppføringer med denne ansvarlige.","schema":{"type":"string","format":"uuid"}},{"name":"type","in":"query","required":false,"description":"Type.","schema":{"type":"string","enum":["call","email","meeting","task","note","follow_up","lunch","demo"]}},{"name":"completed","in":"query","required":false,"description":"true = utførte, false = åpne.","schema":{"type":"boolean"}},{"name":"due_from","in":"query","required":false,"description":"Frist fra og med.","schema":{"type":"string","format":"date-time"}},{"name":"due_to","in":"query","required":false,"description":"Frist før.","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Activity"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4","type":"call","title":"Ring om tilbudet","description":null,"due_at":"2026-09-29T08:00:00.000Z","duration_min":15,"location":null,"priority":"normal","outcome":null,"completed_at":null,"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"ticket_id":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T10:00:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/aktiviteter/c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createActivity","tags":["Aktiviteter"],"summary":"Opprett aktivitet","description":"Oppretter aktivitet. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Activity"}}},"example":{"data":{"id":"c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4","type":"call","title":"Ring om tilbudet","description":null,"due_at":"2026-09-29T08:00:00.000Z","duration_min":15,"location":null,"priority":"normal","outcome":null,"completed_at":null,"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"ticket_id":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T10:00:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/aktiviteter/c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityInput"},"example":{"type":"call","title":"Ring om tilbudet","due_at":"2026-09-29T10:00:00+02:00","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}}}}}},"/activities/{id}":{"get":{"operationId":"getActivity","tags":["Aktiviteter"],"summary":"Hent aktivitet","description":"Én aktivitet med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til aktivitet.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Activity"}}},"example":{"data":{"id":"c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4","type":"call","title":"Ring om tilbudet","description":null,"due_at":"2026-09-29T08:00:00.000Z","duration_min":15,"location":null,"priority":"normal","outcome":null,"completed_at":null,"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"ticket_id":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T10:00:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/aktiviteter/c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateActivity","tags":["Aktiviteter"],"summary":"Endre aktivitet","description":"Delvis oppdatering: bare feltene du sender, endres. Send null for å tømme et felt.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til aktivitet.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Activity"}}},"example":{"data":{"id":"c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4","type":"call","title":"Ring om tilbudet","description":null,"due_at":"2026-09-29T08:00:00.000Z","duration_min":15,"location":null,"priority":"normal","outcome":null,"completed_at":null,"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"ticket_id":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T10:00:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/aktiviteter/c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Type. Standard «task».","enum":["call","email","meeting","task","note","follow_up","lunch","demo"]},"title":{"type":"string","description":"Tittel. Standard: typens navn (f.eks. «Telefonsamtale»)."},"description":{"type":["string","null"],"description":"Beskrivelse / notat."},"due_at":{"type":["string","null"],"format":"date-time","description":"Frist eller tidspunkt. ISO 8601, eller «YYYY-MM-DDTHH:mm» tolket som norsk tid."},"duration_min":{"type":["integer","null"],"description":"Varighet i minutter."},"location":{"type":["string","null"],"description":"Sted."},"priority":{"type":"string","description":"Prioritet. Standard «normal».","enum":["low","normal","high","urgent"]},"outcome":{"type":["string","null"],"description":"Resultat av samtalen/møtet."},"completed":{"type":"boolean","description":"Marker som utført (true) eller gjenåpne (false).","writeOnly":true},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"deal_id":{"type":["string","null"],"format":"uuid","description":"ID til salgsmuligheten."},"ticket_id":{"type":["string","null"],"format":"uuid","description":"ID til saken."},"participants":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Bruker-IDer som deltar (bare ved opprettelse).","writeOnly":true},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."}}},"example":{"completed":true,"outcome":"Kunden ønsker oppstart i november."}}}}},"delete":{"operationId":"deleteActivity","tags":["Aktiviteter"],"summary":"Slett aktivitet","description":"Sletter permanent. Svarer 204 uten innhold.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til aktivitet.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Slettet."},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/products":{"get":{"operationId":"listProducts","tags":["Produkter"],"summary":"List produkter","description":"Produkt- og tjenestekatalogen som brukes på tilbud og salg. Priser er i NOK eks. mva. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"active","in":"query","required":false,"description":"true = bare aktive produkter.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5","name":"Webhotell Pro","sku":"WH-PRO","description":"Webhotell med daglig backup","unit":"mnd","price":299,"vat_rate":25,"recurring":true,"active":true,"created_at":"2026-09-01T12:00:00.000Z","url":"https://crm.webspesialisten.no/app/produkter/d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createProduct","tags":["Produkter"],"summary":"Opprett produkt","description":"Oppretter produkt. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Product"}}},"example":{"data":{"id":"d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5","name":"Webhotell Pro","sku":"WH-PRO","description":"Webhotell med daglig backup","unit":"mnd","price":299,"vat_rate":25,"recurring":true,"active":true,"created_at":"2026-09-01T12:00:00.000Z","url":"https://crm.webspesialisten.no/app/produkter/d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductInput"},"example":{"name":"Webhotell Pro","sku":"WH-PRO","unit":"mnd","price":299,"recurring":true}}}}}},"/products/{id}":{"get":{"operationId":"getProduct","tags":["Produkter"],"summary":"Hent produkt","description":"Én produkt med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til produkt.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Product"}}},"example":{"data":{"id":"d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5","name":"Webhotell Pro","sku":"WH-PRO","description":"Webhotell med daglig backup","unit":"mnd","price":299,"vat_rate":25,"recurring":true,"active":true,"created_at":"2026-09-01T12:00:00.000Z","url":"https://crm.webspesialisten.no/app/produkter/d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateProduct","tags":["Produkter"],"summary":"Endre produkt","description":"Delvis oppdatering: bare feltene du sender, endres. Send null for å tømme et felt.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til produkt.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Product"}}},"example":{"data":{"id":"d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5","name":"Webhotell Pro","sku":"WH-PRO","description":"Webhotell med daglig backup","unit":"mnd","price":299,"vat_rate":25,"recurring":true,"active":true,"created_at":"2026-09-01T12:00:00.000Z","url":"https://crm.webspesialisten.no/app/produkter/d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Navn.","examples":["Webhotell Pro"]},"sku":{"type":["string","null"],"description":"Varenummer (unikt i kontoen)."},"description":{"type":["string","null"],"description":"Beskrivelse (brukes som linjetekst på tilbud)."},"unit":{"type":"string","description":"Enhet. Standard «stk».","enum":["stk","time","mnd","år","lisens","km","kg"]},"price":{"type":"number","description":"Pris eks. mva.","examples":[299]},"vat_rate":{"type":"number","description":"Mva-sats i prosent. Standard 25.","enum":[25,15,12,0]},"recurring":{"type":"boolean","description":"Gjentakende (abonnement)."},"active":{"type":"boolean","description":"Aktiv i katalogen. Standard true."}}},"example":{"price":349}}}}},"delete":{"operationId":"deleteProduct","tags":["Produkter"],"summary":"Slett produkt","description":"Sletter permanent. Svarer 204 uten innhold.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til produkt.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Slettet."},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tickets":{"get":{"operationId":"listTickets","tags":["Saker"],"summary":"List saker (kundeservice)","description":"Kundeservicesaker. Hver sak får et løpenummer per konto. Enkeltoppslag inkluderer kommentarer. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"company_id","in":"query","required":false,"description":"Bedrift.","schema":{"type":"string","format":"uuid"}},{"name":"contact_id","in":"query","required":false,"description":"Kontakt.","schema":{"type":"string","format":"uuid"}},{"name":"assigned_to","in":"query","required":false,"description":"Saksbehandler.","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"description":"Status.","schema":{"type":"string","enum":["open","in_progress","waiting","resolved","closed"]}},{"name":"priority","in":"query","required":false,"description":"Prioritet.","schema":{"type":"string","enum":["low","normal","high","urgent"]}},{"name":"tag","in":"query","required":false,"description":"Bare oppføringer med denne taggen (navn, uavhengig av store/små bokstaver).","schema":{"type":"string"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Ticket"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6","number":42,"title":"Får ikke logget inn","description":"Kunden får feilmelding ved innlogging.","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","priority":"high","status":"open","category":"Innlogging","channel":"api","due_at":"2026-09-27T12:00:00.000Z","resolved_at":null,"assigned_to":null,"tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T09:12:00.000Z","updated_at":"2026-09-26T09:12:00.000Z","url":"https://crm.webspesialisten.no/app/saker/e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createTicket","tags":["Saker"],"summary":"Opprett sak","description":"Oppretter sak. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ticket"}}},"example":{"data":{"id":"e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6","number":42,"title":"Får ikke logget inn","description":"Kunden får feilmelding ved innlogging.","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","priority":"high","status":"open","category":"Innlogging","channel":"api","due_at":"2026-09-27T12:00:00.000Z","resolved_at":null,"assigned_to":null,"tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T09:12:00.000Z","updated_at":"2026-09-26T09:12:00.000Z","url":"https://crm.webspesialisten.no/app/saker/e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketInput"},"example":{"title":"Får ikke logget inn","description":"Kunden får feilmelding ved innlogging.","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","priority":"high"}}}}}},"/tickets/{id}":{"get":{"operationId":"getTicket","tags":["Saker"],"summary":"Hent sak","description":"Én sak med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til sak.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ticket"}}},"example":{"data":{"id":"e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6","number":42,"title":"Får ikke logget inn","description":"Kunden får feilmelding ved innlogging.","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","priority":"high","status":"open","category":"Innlogging","channel":"api","due_at":"2026-09-27T12:00:00.000Z","resolved_at":null,"assigned_to":null,"tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T09:12:00.000Z","updated_at":"2026-09-26T09:12:00.000Z","url":"https://crm.webspesialisten.no/app/saker/e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateTicket","tags":["Saker"],"summary":"Endre sak","description":"Delvis oppdatering: bare feltene du sender, endres. Send null for å tømme et felt.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til sak.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Ticket"}}},"example":{"data":{"id":"e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6","number":42,"title":"Får ikke logget inn","description":"Kunden får feilmelding ved innlogging.","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","priority":"high","status":"open","category":"Innlogging","channel":"api","due_at":"2026-09-27T12:00:00.000Z","resolved_at":null,"assigned_to":null,"tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T09:12:00.000Z","updated_at":"2026-09-26T09:12:00.000Z","url":"https://crm.webspesialisten.no/app/saker/e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Tittel.","examples":["Får ikke logget inn"]},"description":{"type":["string","null"],"description":"Beskrivelse."},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"priority":{"type":"string","description":"Prioritet.","enum":["low","normal","high","urgent"]},"status":{"type":"string","description":"Status.","enum":["open","in_progress","waiting","resolved","closed"]},"category":{"type":["string","null"],"description":"Kategori."},"channel":{"type":"string","description":"Kanal saken kom inn fra. Standard «api» ved opprettelse via API-et.","enum":["manual","email","phone","web","api"]},"due_at":{"type":["string","null"],"format":"date-time","description":"Frist (SLA). Standard ut fra prioritet: haster 4 t, høy 24 t, normal 72 t, lav 7 dager."},"assigned_to":{"type":["string","null"],"format":"uuid","description":"Saksbehandler (bruker-ID)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]}}},"example":{"status":"resolved"}}}}},"delete":{"operationId":"deleteTicket","tags":["Saker"],"summary":"Slett sak","description":"Sletter permanent. Svarer 204 uten innhold.\n\nKrever nøkkel med scope: **write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til sak.","schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Slettet."},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/quotes":{"get":{"operationId":"listQuotes","tags":["Tilbud"],"summary":"List tilbud","description":"Tilbud med linjer. Summene beregnes av CRM-et. Enkeltoppslag inkluderer linjene («items») og «public_url» – lenken kunden bruker for å se og akseptere tilbudet. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"company_id","in":"query","required":false,"description":"Bedrift.","schema":{"type":"string","format":"uuid"}},{"name":"contact_id","in":"query","required":false,"description":"Kontakt.","schema":{"type":"string","format":"uuid"}},{"name":"deal_id","in":"query","required":false,"description":"Salgsmulighet.","schema":{"type":"string","format":"uuid"}},{"name":"owner_id","in":"query","required":false,"description":"Bare oppføringer med denne ansvarlige.","schema":{"type":"string","format":"uuid"}},{"name":"status","in":"query","required":false,"description":"Status.","schema":{"type":"string","enum":["draft","sent","viewed","accepted","rejected","expired"]}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Quote"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7","number":1001,"title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"status":"sent","issue_date":"2026-09-26","valid_until":"2026-10-26","intro":null,"notes":null,"terms":null,"subtotal":40000,"discount_total":0,"vat_total":10000,"total":50000,"public_url":"https://crm.webspesialisten.no/tilbud/abc123","sent_at":"2026-09-26T10:00:00.000Z","accepted_at":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","items":[{"id":"a1b2c3d4-6666-4f70-8b1c-d3e4f5a6b7c8","product_id":null,"description":"Design og utvikling","quantity":40,"unit":"time","unit_price":1000,"discount_pct":0,"vat_rate":25,"line_total":40000,"sort":0}],"created_at":"2026-09-26T09:40:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/tilbud/f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createQuote","tags":["Tilbud"],"summary":"Opprett tilbud","description":"Oppretter tilbud. Ukjente felt ignoreres. Returnerer hele objektet.\n\nKrever nøkkel med scope: **write**.","parameters":[],"responses":{"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Quote"}}},"example":{"data":{"id":"f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7","number":1001,"title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"status":"sent","issue_date":"2026-09-26","valid_until":"2026-10-26","intro":null,"notes":null,"terms":null,"subtotal":40000,"discount_total":0,"vat_total":10000,"total":50000,"public_url":"https://crm.webspesialisten.no/tilbud/abc123","sent_at":"2026-09-26T10:00:00.000Z","accepted_at":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","items":[{"id":"a1b2c3d4-6666-4f70-8b1c-d3e4f5a6b7c8","product_id":null,"description":"Design og utvikling","quantity":40,"unit":"time","unit_price":1000,"discount_pct":0,"vat_rate":25,"line_total":40000,"sort":0}],"created_at":"2026-09-26T09:40:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/tilbud/f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7"}}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Planens grense nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Konflikt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteInput"},"example":{"title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","valid_until":"2026-10-26","items":[{"description":"Design og utvikling","quantity":40,"unit":"time","unit_price":1000}]}}}}}},"/quotes/{id}":{"get":{"operationId":"getQuote","tags":["Tilbud"],"summary":"Hent tilbud","description":"Én tilbud med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til tilbud.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Quote"}}},"example":{"data":{"id":"f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7","number":1001,"title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"status":"sent","issue_date":"2026-09-26","valid_until":"2026-10-26","intro":null,"notes":null,"terms":null,"subtotal":40000,"discount_total":0,"vat_total":10000,"total":50000,"public_url":"https://crm.webspesialisten.no/tilbud/abc123","sent_at":"2026-09-26T10:00:00.000Z","accepted_at":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","items":[{"id":"a1b2c3d4-6666-4f70-8b1c-d3e4f5a6b7c8","product_id":null,"description":"Design og utvikling","quantity":40,"unit":"time","unit_price":1000,"discount_pct":0,"vat_rate":25,"line_total":40000,"sort":0}],"created_at":"2026-09-26T09:40:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/tilbud/f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users":{"get":{"operationId":"listUsers","tags":["Brukere"],"summary":"List brukere","description":"Brukerne i kontoen (skrivebeskyttet). Brukes for å finne ID-er til «owner_id», «assigned_to» osv. Sidevis med cursor, nyeste først.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"q","in":"query","required":false,"description":"Fritekstsøk (delstreng, uavhengig av store/små bokstaver).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Antall per side, 1–200. Standard 50.","schema":{"type":"integer"},"example":50},{"name":"cursor","in":"query","required":false,"description":"Hent neste side: send verdien fra «next_cursor» i forrige svar.","schema":{"type":"string"}},{"name":"order","in":"query","required":false,"description":"Sortering på opprettet-tidspunkt. Standard «desc» (nyeste først).","schema":{"type":"string","enum":["desc","asc"]}},{"name":"updated_since","in":"query","required":false,"description":"Bare oppføringer endret etter dette tidspunktet (ISO 8601). Nyttig for synkronisering.","schema":{"type":"string","format":"date-time"},"example":"2026-09-01T00:00:00Z"},{"name":"role","in":"query","required":false,"description":"Rolle.","schema":{"type":"string","enum":["owner","admin","user","readonly"]}},{"name":"active","in":"query","required":false,"description":"true = bare aktive brukere.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"En side med resultater.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/User"}},"next_cursor":{"type":["string","null"],"description":"Send som «cursor» for neste side. null = siste side."},"has_more":{"type":"boolean"}}},"example":{"data":[{"id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","email":"ola@firma.no","first_name":"Ola","last_name":"Nordmann","phone":null,"title":"Selger","role":"user","active":true,"created_at":"2026-09-01T08:00:00.000Z","updated_at":"2026-09-01T08:00:00.000Z"}],"next_cursor":"WyIyMDI2LTA5LTIwIDA4OjE1OjAwKzAwIiwiLi4uIl0","has_more":true}}}},"400":{"description":"Ugyldig forespørsel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/users/{id}":{"get":{"operationId":"getUser","tags":["Brukere"],"summary":"Hent bruker","description":"Én bruker med alle felt.\n\nKrever nøkkel med scope: **read eller write**.","parameters":[{"name":"id","in":"path","required":true,"description":"ID til bruker.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Funnet.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/User"}}},"example":{"data":{"id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","email":"ola@firma.no","first_name":"Ola","last_name":"Nordmann","phone":null,"title":"Selger","role":"user","active":true,"created_at":"2026-09-01T08:00:00.000Z","updated_at":"2026-09-01T08:00:00.000Z"}}}}},"401":{"description":"Ikke autentisert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Ingen tilgang","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Finnes ikke","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"For mange forespørsler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"company.created":{"post":{"operationId":"webhook_company_created","summary":"Bedrift opprettet","tags":["Bedrifter"],"description":"Sendes når: bedrift opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"company.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"company.updated":{"post":{"operationId":"webhook_company_updated","summary":"Bedrift endret","tags":["Bedrifter"],"description":"Sendes når: bedrift endret. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"company.updated"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"company.deleted":{"post":{"operationId":"webhook_company_deleted","summary":"Bedrift slettet","tags":["Bedrifter"],"description":"Sendes når: bedrift slettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"company.deleted"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"contact.created":{"post":{"operationId":"webhook_contact_created","summary":"Kontakt opprettet","tags":["Kontakter"],"description":"Sendes når: kontakt opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"contact.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"contact.updated":{"post":{"operationId":"webhook_contact_updated","summary":"Kontakt endret","tags":["Kontakter"],"description":"Sendes når: kontakt endret. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"contact.updated"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"contact.deleted":{"post":{"operationId":"webhook_contact_deleted","summary":"Kontakt slettet","tags":["Kontakter"],"description":"Sendes når: kontakt slettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"contact.deleted"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"deal.created":{"post":{"operationId":"webhook_deal_created","summary":"Salgsmulighet opprettet","tags":["Salgsmuligheter"],"description":"Sendes når: salgsmulighet opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"deal.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"deal.updated":{"post":{"operationId":"webhook_deal_updated","summary":"Salgsmulighet endret","tags":["Salgsmuligheter"],"description":"Sendes når: salgsmulighet endret. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"deal.updated"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"deal.won":{"post":{"operationId":"webhook_deal_won","summary":"Salgsmulighet vunnet","tags":["Salgsmuligheter"],"description":"Sendes når: salgsmulighet vunnet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"deal.won"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"deal.lost":{"post":{"operationId":"webhook_deal_lost","summary":"Salgsmulighet tapt","tags":["Salgsmuligheter"],"description":"Sendes når: salgsmulighet tapt. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"deal.lost"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"deal.deleted":{"post":{"operationId":"webhook_deal_deleted","summary":"Salgsmulighet slettet","tags":["Salgsmuligheter"],"description":"Sendes når: salgsmulighet slettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"deal.deleted"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"activity.created":{"post":{"operationId":"webhook_activity_created","summary":"Aktivitet opprettet","tags":["Aktiviteter"],"description":"Sendes når: aktivitet opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"activity.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"activity.completed":{"post":{"operationId":"webhook_activity_completed","summary":"Aktivitet fullført","tags":["Aktiviteter"],"description":"Sendes når: aktivitet fullført. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"activity.completed"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"quote.created":{"post":{"operationId":"webhook_quote_created","summary":"Tilbud opprettet","tags":["Tilbud"],"description":"Sendes når: tilbud opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"quote.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"quote.sent":{"post":{"operationId":"webhook_quote_sent","summary":"Tilbud sendt","tags":["Tilbud"],"description":"Sendes når: tilbud sendt. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"quote.sent"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"quote.accepted":{"post":{"operationId":"webhook_quote_accepted","summary":"Tilbud akseptert av kunden","tags":["Tilbud"],"description":"Sendes når: tilbud akseptert av kunden. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"quote.accepted"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"quote.rejected":{"post":{"operationId":"webhook_quote_rejected","summary":"Tilbud avslått av kunden","tags":["Tilbud"],"description":"Sendes når: tilbud avslått av kunden. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"quote.rejected"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"ticket.created":{"post":{"operationId":"webhook_ticket_created","summary":"Sak opprettet","tags":["Kundeservice"],"description":"Sendes når: sak opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"ticket.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"ticket.updated":{"post":{"operationId":"webhook_ticket_updated","summary":"Sak endret","tags":["Kundeservice"],"description":"Sendes når: sak endret. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"ticket.updated"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"sale.created":{"post":{"operationId":"webhook_sale_created","summary":"Salg registrert","tags":["Salg og kontrakter"],"description":"Sendes når: salg registrert. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"sale.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}},"contract.created":{"post":{"operationId":"webhook_contract_created","summary":"Kontrakt opprettet","tags":["Salg og kontrakter"],"description":"Sendes når: kontrakt opprettet. Verifiser X-Webhook-Signature (sha256=HMAC-SHA256(hemmelighet, rå body)).","parameters":[{"name":"X-Webhook-Event","in":"header","required":true,"schema":{"type":"string","const":"contract.created"}},{"name":"X-Webhook-Signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Mottatt. Alle 2xx-svar regnes som vellykket."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"wcrm_…","description":"API-nøkkel fra Innstillinger → API og webhooks. Scopes: read (Kun GET-forespørsler.) write (Kan opprette, endre og slette data.) leads (Kan bare sende inn henvendelser til POST /api/v1/leads. Trygg å bruke i et nettskjema.)"}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Maskinlesbar kode.","enum":["validation_error","invalid_json","invalid_cursor","unauthorized","plan_limit","insufficient_scope","plan_upgrade_required","forbidden","account_suspended","not_found","method_not_allowed","conflict","payload_too_large","rate_limited","internal_error"]},"message":{"type":"string","description":"Norsk feilmelding som kan vises til brukeren."},"fields":{"type":"object","additionalProperties":{"type":"string"},"description":"Feil per felt (ved validation_error)."}}}},"examples":[{"error":{"code":"validation_error","message":"Ugyldig e-postadresse.","fields":{"email":"Ugyldig e-post"}}}]},"WebhookPayload":{"type":"object","required":["event","created_at","data"],"properties":{"event":{"type":"string","enum":["company.created","company.updated","company.deleted","contact.created","contact.updated","contact.deleted","deal.created","deal.updated","deal.won","deal.lost","deal.deleted","activity.created","activity.completed","quote.created","quote.sent","quote.accepted","quote.rejected","ticket.created","ticket.updated","sale.created","contract.created"],"description":"Hendelsen."},"created_at":{"type":"string","format":"date-time","description":"Når hendelsen ble sendt."},"data":{"type":"object","description":"Objektet hendelsen gjelder (for *.deleted bare { id })."}},"examples":[{"event":"contact.created","created_at":"2026-09-26T10:15:00.000Z","data":{"id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","first_name":"Kari","last_name":"Nordmann","email":"kari@firma.no","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","category":"lead","created_at":"2026-09-26T10:15:00.000Z"}}]},"LeadInput":{"type":"object","properties":{"name":{"type":"string","description":"Fullt navn (deles i fornavn/etternavn). Alternativ til first_name/last_name.","examples":["Kari Nordmann"]},"first_name":{"type":"string","description":"Fornavn."},"last_name":{"type":"string","description":"Etternavn."},"email":{"type":"string","format":"email","description":"E-post. Brukes til å finne eksisterende kontakt. E-post eller telefon er påkrevd.","examples":["kari@firma.no"]},"phone":{"type":"string","description":"Telefon."},"mobile":{"type":"string","description":"Mobil."},"title":{"type":"string","description":"Stilling."},"company_name":{"type":"string","description":"Firmanavn. Eksisterende bedrift matches på org.nr., deretter navn.","examples":["Firma AS"]},"org_number":{"type":"string","description":"Org.nr. (9 siffer, valideres)."},"website":{"type":"string","format":"uri","description":"Firmaets nettside (ved ny bedrift)."},"message":{"type":"string","description":"Meldingen fra skjemaet. Lagres som notat på tidslinjen.","examples":["Vi ønsker tilbud på nytt nettsted."]},"subject":{"type":"string","description":"Tittel på notatet. Standard «Henvendelse via nettskjema»."},"source":{"type":"string","description":"Kilde. Standard «Nettskjema»."},"deal_title":{"type":"string","description":"Opprett en salgsmulighet med denne tittelen."},"deal_value":{"type":"number","description":"Verdi på salgsmuligheten (NOK eks. mva). Oppretter salgsmulighet selv uten tittel."},"consent_marketing":{"type":"boolean","description":"Samtykke til markedsføring (avkrysset i skjemaet)."},"consent_source":{"type":"string","description":"Hvor samtykket ble gitt. Standard = source."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger på ny kontakt/bedrift."}}},"LeadResult":{"type":"object","properties":{"company_id":{"type":["string","null"],"format":"uuid","description":"Bedriften (ny eller eksisterende)."},"contact_id":{"type":"string","format":"uuid","description":"Kontakten (ny eller eksisterende)."},"deal_id":{"type":["string","null"],"format":"uuid","description":"Ny salgsmulighet."},"activity_id":{"type":["string","null"],"format":"uuid","description":"Notatet med meldingen."},"created":{"type":"object","description":"Hva som ble opprettet: { company, contact, deal } (boolean)."}}},"Company":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for bedriften.","readOnly":true},"name":{"type":"string","description":"Firmanavn.","examples":["Fjordkraft Konsult AS"]},"org_number":{"type":["string","null"],"description":"Organisasjonsnummer, 9 siffer (mellomrom fjernes).","examples":["923456783"]},"industry":{"type":["string","null"],"description":"Bransje."},"nace_code":{"type":["string","null"],"description":"NACE-kode fra Brønnøysund."},"employees":{"type":["integer","null"],"description":"Antall ansatte."},"website":{"type":["string","null"],"format":"uri","description":"Nettside. «https://» legges til om det mangler."},"email":{"type":["string","null"],"format":"email","description":"Firmaets e-post."},"phone":{"type":["string","null"],"description":"Telefon."},"address":{"type":["string","null"],"description":"Gateadresse."},"postal_code":{"type":["string","null"],"description":"Postnummer."},"city":{"type":["string","null"],"description":"Poststed."},"municipality":{"type":["string","null"],"description":"Kommune."},"country":{"type":"string","description":"Land. Standard «Norge»."},"category":{"type":"string","description":"Kategori. Standard «lead».","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]},"status":{"type":"string","description":"Standard «active».","enum":["active","inactive"]},"description":{"type":["string","null"],"description":"Fritekst om firmaet."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]},"created_by":{"type":["string","null"],"format":"uuid","description":"Brukeren som opprettet oppføringen (for API-kall: eieren av nøkkelen).","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet (ISO 8601, UTC).","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret (ISO 8601, UTC).","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Firmaregisteret: kunder, leads, leverandører og partnere. Org.nr. valideres (MOD11) og må være unikt i kontoen.","examples":[{"id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","name":"Fjordkraft Konsult AS","org_number":"923456783","industry":"Rådgivning","nace_code":"70.220","employees":12,"website":"https://fjordkraftkonsult.no","email":"post@fjordkraftkonsult.no","phone":"55 12 34 56","address":"Strandkaien 2","postal_code":"5013","city":"Bergen","municipality":"Bergen","country":"Norge","category":"kunde","status":"active","description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["vip"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T13:02:11.000Z","url":"https://crm.webspesialisten.no/app/bedrifter/7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c"}]},"CompanyInput":{"type":"object","properties":{"name":{"type":"string","description":"Firmanavn.","examples":["Fjordkraft Konsult AS"]},"org_number":{"type":["string","null"],"description":"Organisasjonsnummer, 9 siffer (mellomrom fjernes).","examples":["923456783"]},"industry":{"type":["string","null"],"description":"Bransje."},"nace_code":{"type":["string","null"],"description":"NACE-kode fra Brønnøysund."},"employees":{"type":["integer","null"],"description":"Antall ansatte."},"website":{"type":["string","null"],"format":"uri","description":"Nettside. «https://» legges til om det mangler."},"email":{"type":["string","null"],"format":"email","description":"Firmaets e-post."},"phone":{"type":["string","null"],"description":"Telefon."},"address":{"type":["string","null"],"description":"Gateadresse."},"postal_code":{"type":["string","null"],"description":"Postnummer."},"city":{"type":["string","null"],"description":"Poststed."},"municipality":{"type":["string","null"],"description":"Kommune."},"country":{"type":"string","description":"Land. Standard «Norge»."},"category":{"type":"string","description":"Kategori. Standard «lead».","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]},"status":{"type":"string","description":"Standard «active».","enum":["active","inactive"]},"description":{"type":["string","null"],"description":"Fritekst om firmaet."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]}},"required":["name"]},"Contact":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for kontakten.","readOnly":true},"first_name":{"type":"string","description":"Fornavn.","examples":["Kari"]},"last_name":{"type":"string","description":"Etternavn.","examples":["Nordmann"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften kontakten jobber i."},"company_name":{"type":["string","null"],"description":"Navnet på bedriften.","readOnly":true},"email":{"type":["string","null"],"format":"email","description":"E-post (lagres med små bokstaver)."},"phone":{"type":["string","null"],"description":"Fasttelefon."},"mobile":{"type":["string","null"],"description":"Mobil."},"title":{"type":["string","null"],"description":"Stilling."},"department":{"type":["string","null"],"description":"Avdeling."},"address":{"type":["string","null"],"description":"Adresse."},"postal_code":{"type":["string","null"],"description":"Postnummer."},"city":{"type":["string","null"],"description":"Poststed."},"birthday":{"type":["string","null"],"format":"date","description":"Fødselsdato (YYYY-MM-DD)."},"linkedin":{"type":["string","null"],"format":"uri","description":"LinkedIn-profil."},"category":{"type":"string","description":"Kategori. Standard «lead».","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]},"status":{"type":"string","description":"Standard «active».","enum":["active","inactive"]},"source":{"type":["string","null"],"description":"Kilde, f.eks. «Nettside», «Messe»."},"notes":{"type":["string","null"],"description":"Notater."},"consent_marketing":{"type":"boolean","description":"Samtykke til markedsføring (GDPR). Tidspunktet lagres i «consent_at»."},"consent_source":{"type":["string","null"],"description":"Hvor samtykket ble gitt."},"consent_at":{"type":["string","null"],"format":"date-time","description":"Når samtykke ble gitt.","readOnly":true},"last_contacted_at":{"type":["string","null"],"format":"date-time","description":"Siste samtale/møte/e-post logget.","readOnly":true},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]},"created_by":{"type":["string","null"],"format":"uuid","description":"Brukeren som opprettet oppføringen (for API-kall: eieren av nøkkelen).","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet (ISO 8601, UTC).","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret (ISO 8601, UTC).","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Personregisteret. En kontakt kan være knyttet til en bedrift. Minst ett av fornavn, etternavn eller e-post må fylles ut.","examples":[{"id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","first_name":"Kari","last_name":"Nordmann","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","company_name":"Fjordkraft Konsult AS","email":"kari@fjordkraftkonsult.no","phone":null,"mobile":"912 34 567","title":"Daglig leder","department":null,"address":null,"postal_code":null,"city":"Bergen","birthday":null,"linkedin":null,"category":"kunde","status":"active","source":"Nettside","notes":null,"consent_marketing":true,"consent_source":"Nyhetsbrev-skjema","consent_at":"2026-09-20T08:15:00.000Z","last_contacted_at":"2026-09-24T10:00:00.000Z","owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":["nyhetsbrev"],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-20T08:15:00.000Z","updated_at":"2026-09-24T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/kontakter/0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10"}]},"ContactInput":{"type":"object","properties":{"first_name":{"type":"string","description":"Fornavn.","examples":["Kari"]},"last_name":{"type":"string","description":"Etternavn.","examples":["Nordmann"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften kontakten jobber i."},"email":{"type":["string","null"],"format":"email","description":"E-post (lagres med små bokstaver)."},"phone":{"type":["string","null"],"description":"Fasttelefon."},"mobile":{"type":["string","null"],"description":"Mobil."},"title":{"type":["string","null"],"description":"Stilling."},"department":{"type":["string","null"],"description":"Avdeling."},"address":{"type":["string","null"],"description":"Adresse."},"postal_code":{"type":["string","null"],"description":"Postnummer."},"city":{"type":["string","null"],"description":"Poststed."},"birthday":{"type":["string","null"],"format":"date","description":"Fødselsdato (YYYY-MM-DD)."},"linkedin":{"type":["string","null"],"format":"uri","description":"LinkedIn-profil."},"category":{"type":"string","description":"Kategori. Standard «lead».","enum":["kunde","lead","prospekt","leverandor","partner","tidligere"]},"status":{"type":"string","description":"Standard «active».","enum":["active","inactive"]},"source":{"type":["string","null"],"description":"Kilde, f.eks. «Nettside», «Messe»."},"notes":{"type":["string","null"],"description":"Notater."},"consent_marketing":{"type":"boolean","description":"Samtykke til markedsføring (GDPR). Tidspunktet lagres i «consent_at»."},"consent_source":{"type":["string","null"],"description":"Hvor samtykket ble gitt."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]}}},"Deal":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for salgsmuligheten.","readOnly":true},"title":{"type":"string","description":"Tittel.","examples":["Nytt nettsted"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontaktpersonen. Bedrift fylles ut fra kontakten om den mangler."},"stage_id":{"type":"string","format":"uuid","description":"Fase i pipelinen (se GET /pipeline-stages). Standard: første åpne fase."},"stage_name":{"type":"string","description":"Navnet på fasen.","readOnly":true},"status":{"type":"string","description":"Utledet fra fasen.","enum":["open","won","lost"],"readOnly":true},"value":{"type":"number","description":"Verdi i NOK eks. mva. For «recurring» er dette per måned.","examples":[45000]},"recurring":{"type":"boolean","description":"Månedlig gjentakende inntekt (MRR)."},"probability":{"type":["integer","null"],"description":"Sannsynlighet 0–100 %. null = fasens standard."},"effective_probability":{"type":"integer","description":"Sannsynligheten som faktisk brukes (egen eller fasens).","readOnly":true},"expected_close":{"type":["string","null"],"format":"date","description":"Forventet lukkedato (YYYY-MM-DD)."},"closed_at":{"type":["string","null"],"format":"date-time","description":"Når muligheten ble vunnet/tapt.","readOnly":true},"source":{"type":["string","null"],"description":"Kilde."},"lost_reason":{"type":["string","null"],"description":"Tapsårsak (for tapte muligheter)."},"description":{"type":["string","null"],"description":"Beskrivelse."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn).","readOnly":true},"created_by":{"type":["string","null"],"format":"uuid","description":"Brukeren som opprettet oppføringen (for API-kall: eieren av nøkkelen).","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet (ISO 8601, UTC).","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret (ISO 8601, UTC).","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Salgsmuligheter i pipelinen. Flytt en mulighet ved å endre «stage_id»; fasens type (open/won/lost) styrer status, «closed_at» og webhookene deal.won / deal.lost.","examples":[{"id":"b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d","title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","stage_id":"5d6e7f80-1111-4c2d-8e3f-4a5b6c7d8e9f","stage_name":"Tilbud sendt","status":"open","value":45000,"recurring":false,"probability":null,"effective_probability":50,"expected_close":"2026-10-15","closed_at":null,"source":"Nettside","lost_reason":null,"description":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-21T09:00:00.000Z","updated_at":"2026-09-23T14:30:00.000Z","url":"https://crm.webspesialisten.no/app/muligheter/b1d2c3e4-0000-4a1b-9c2d-3e4f5a6b7c8d"}]},"DealInput":{"type":"object","properties":{"title":{"type":"string","description":"Tittel.","examples":["Nytt nettsted"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontaktpersonen. Bedrift fylles ut fra kontakten om den mangler."},"stage_id":{"type":"string","format":"uuid","description":"Fase i pipelinen (se GET /pipeline-stages). Standard: første åpne fase."},"value":{"type":"number","description":"Verdi i NOK eks. mva. For «recurring» er dette per måned.","examples":[45000]},"recurring":{"type":"boolean","description":"Månedlig gjentakende inntekt (MRR)."},"probability":{"type":["integer","null"],"description":"Sannsynlighet 0–100 %. null = fasens standard."},"expected_close":{"type":["string","null"],"format":"date","description":"Forventet lukkedato (YYYY-MM-DD)."},"source":{"type":["string","null"],"description":"Kilde."},"lost_reason":{"type":["string","null"],"description":"Tapsårsak (for tapte muligheter)."},"description":{"type":["string","null"],"description":"Beskrivelse."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."}},"required":["title"]},"Activity":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for aktiviteten.","readOnly":true},"type":{"type":"string","description":"Type. Standard «task».","enum":["call","email","meeting","task","note","follow_up","lunch","demo"]},"title":{"type":"string","description":"Tittel. Standard: typens navn (f.eks. «Telefonsamtale»)."},"description":{"type":["string","null"],"description":"Beskrivelse / notat."},"due_at":{"type":["string","null"],"format":"date-time","description":"Frist eller tidspunkt. ISO 8601, eller «YYYY-MM-DDTHH:mm» tolket som norsk tid."},"duration_min":{"type":["integer","null"],"description":"Varighet i minutter."},"location":{"type":["string","null"],"description":"Sted."},"priority":{"type":"string","description":"Prioritet. Standard «normal».","enum":["low","normal","high","urgent"]},"outcome":{"type":["string","null"],"description":"Resultat av samtalen/møtet."},"completed_at":{"type":["string","null"],"format":"date-time","description":"Når aktiviteten ble utført.","readOnly":true},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"deal_id":{"type":["string","null"],"format":"uuid","description":"ID til salgsmuligheten."},"ticket_id":{"type":["string","null"],"format":"uuid","description":"ID til saken."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"created_by":{"type":["string","null"],"format":"uuid","description":"Brukeren som opprettet oppføringen (for API-kall: eieren av nøkkelen).","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet (ISO 8601, UTC).","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret (ISO 8601, UTC).","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Oppgaver, samtaler, møter og notater. Vises på tidslinjen til bedrift, kontakt og salgsmulighet. Notater og aktiviteter opprettet med «completed: true» registreres som utført.","examples":[{"id":"c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4","type":"call","title":"Ring om tilbudet","description":null,"due_at":"2026-09-29T08:00:00.000Z","duration_min":15,"location":null,"priority":"normal","outcome":null,"completed_at":null,"company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"ticket_id":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T10:00:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/aktiviteter/c4a1e2f3-2222-4b5c-9d6e-7f8091a2b3c4"}]},"ActivityInput":{"type":"object","properties":{"type":{"type":"string","description":"Type. Standard «task».","enum":["call","email","meeting","task","note","follow_up","lunch","demo"]},"title":{"type":"string","description":"Tittel. Standard: typens navn (f.eks. «Telefonsamtale»)."},"description":{"type":["string","null"],"description":"Beskrivelse / notat."},"due_at":{"type":["string","null"],"format":"date-time","description":"Frist eller tidspunkt. ISO 8601, eller «YYYY-MM-DDTHH:mm» tolket som norsk tid."},"duration_min":{"type":["integer","null"],"description":"Varighet i minutter."},"location":{"type":["string","null"],"description":"Sted."},"priority":{"type":"string","description":"Prioritet. Standard «normal».","enum":["low","normal","high","urgent"]},"outcome":{"type":["string","null"],"description":"Resultat av samtalen/møtet."},"completed":{"type":"boolean","description":"Marker som utført (true) eller gjenåpne (false).","writeOnly":true},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"deal_id":{"type":["string","null"],"format":"uuid","description":"ID til salgsmuligheten."},"ticket_id":{"type":["string","null"],"format":"uuid","description":"ID til saken."},"participants":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Bruker-IDer som deltar (bare ved opprettelse).","writeOnly":true},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."}}},"Product":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for produktet.","readOnly":true},"name":{"type":"string","description":"Navn.","examples":["Webhotell Pro"]},"sku":{"type":["string","null"],"description":"Varenummer (unikt i kontoen)."},"description":{"type":["string","null"],"description":"Beskrivelse (brukes som linjetekst på tilbud)."},"unit":{"type":"string","description":"Enhet. Standard «stk».","enum":["stk","time","mnd","år","lisens","km","kg"]},"price":{"type":"number","description":"Pris eks. mva.","examples":[299]},"vat_rate":{"type":"number","description":"Mva-sats i prosent. Standard 25.","enum":[25,15,12,0]},"recurring":{"type":"boolean","description":"Gjentakende (abonnement)."},"active":{"type":"boolean","description":"Aktiv i katalogen. Standard true."},"created_at":{"type":"string","format":"date-time","description":"Opprettet.","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Produkt- og tjenestekatalogen som brukes på tilbud og salg. Priser er i NOK eks. mva.","examples":[{"id":"d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5","name":"Webhotell Pro","sku":"WH-PRO","description":"Webhotell med daglig backup","unit":"mnd","price":299,"vat_rate":25,"recurring":true,"active":true,"created_at":"2026-09-01T12:00:00.000Z","url":"https://crm.webspesialisten.no/app/produkter/d5e6f708-3333-4c5d-8e9f-a0b1c2d3e4f5"}]},"ProductInput":{"type":"object","properties":{"name":{"type":"string","description":"Navn.","examples":["Webhotell Pro"]},"sku":{"type":["string","null"],"description":"Varenummer (unikt i kontoen)."},"description":{"type":["string","null"],"description":"Beskrivelse (brukes som linjetekst på tilbud)."},"unit":{"type":"string","description":"Enhet. Standard «stk».","enum":["stk","time","mnd","år","lisens","km","kg"]},"price":{"type":"number","description":"Pris eks. mva.","examples":[299]},"vat_rate":{"type":"number","description":"Mva-sats i prosent. Standard 25.","enum":[25,15,12,0]},"recurring":{"type":"boolean","description":"Gjentakende (abonnement)."},"active":{"type":"boolean","description":"Aktiv i katalogen. Standard true."}},"required":["name"]},"Ticket":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for saken.","readOnly":true},"number":{"type":"integer","description":"Saksnummer.","readOnly":true},"title":{"type":"string","description":"Tittel.","examples":["Får ikke logget inn"]},"description":{"type":["string","null"],"description":"Beskrivelse."},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"priority":{"type":"string","description":"Prioritet.","enum":["low","normal","high","urgent"]},"status":{"type":"string","description":"Status.","enum":["open","in_progress","waiting","resolved","closed"]},"category":{"type":["string","null"],"description":"Kategori."},"channel":{"type":"string","description":"Kanal saken kom inn fra. Standard «api» ved opprettelse via API-et.","enum":["manual","email","phone","web","api"]},"due_at":{"type":["string","null"],"format":"date-time","description":"Frist (SLA). Standard ut fra prioritet: haster 4 t, høy 24 t, normal 72 t, lav 7 dager."},"resolved_at":{"type":["string","null"],"format":"date-time","description":"Når saken ble løst.","readOnly":true},"assigned_to":{"type":["string","null"],"format":"uuid","description":"Saksbehandler (bruker-ID)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID."},"user_id":{"type":["string","null"],"format":"uuid","description":"Forfatter."},"body":{"type":"string","description":"Tekst."},"internal":{"type":"boolean","description":"Intern kommentar."},"created_at":{"type":"string","format":"date-time","description":"Tidspunkt."}}},"description":"Kommentarer (bare i enkeltoppslag).","readOnly":true},"created_by":{"type":["string","null"],"format":"uuid","description":"Brukeren som opprettet oppføringen (for API-kall: eieren av nøkkelen).","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet (ISO 8601, UTC).","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret (ISO 8601, UTC).","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Kundeservicesaker. Hver sak får et løpenummer per konto. Enkeltoppslag inkluderer kommentarer.","examples":[{"id":"e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6","number":42,"title":"Får ikke logget inn","description":"Kunden får feilmelding ved innlogging.","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","priority":"high","status":"open","category":"Innlogging","channel":"api","due_at":"2026-09-27T12:00:00.000Z","resolved_at":null,"assigned_to":null,"tags":[],"created_by":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","created_at":"2026-09-26T09:12:00.000Z","updated_at":"2026-09-26T09:12:00.000Z","url":"https://crm.webspesialisten.no/app/saker/e6f70819-4444-4d5e-9f0a-b1c2d3e4f5a6"}]},"TicketInput":{"type":"object","properties":{"title":{"type":"string","description":"Tittel.","examples":["Får ikke logget inn"]},"description":{"type":["string","null"],"description":"Beskrivelse."},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"priority":{"type":"string","description":"Prioritet.","enum":["low","normal","high","urgent"]},"status":{"type":"string","description":"Status.","enum":["open","in_progress","waiting","resolved","closed"]},"category":{"type":["string","null"],"description":"Kategori."},"channel":{"type":"string","description":"Kanal saken kom inn fra. Standard «api» ved opprettelse via API-et.","enum":["manual","email","phone","web","api"]},"due_at":{"type":["string","null"],"format":"date-time","description":"Frist (SLA). Standard ut fra prioritet: haster 4 t, høy 24 t, normal 72 t, lav 7 dager."},"assigned_to":{"type":["string","null"],"format":"uuid","description":"Saksbehandler (bruker-ID)."},"tags":{"type":"array","items":{"type":"string"},"description":"Tagger (navn). Ved PATCH erstattes hele listen. Nye tagger opprettes automatisk.","examples":[["nettside","vip"]]}},"required":["title"]},"Quote":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for tilbudet.","readOnly":true},"number":{"type":"integer","description":"Tilbudsnummer.","readOnly":true},"title":{"type":"string","description":"Tittel.","examples":["Nytt nettsted"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"deal_id":{"type":["string","null"],"format":"uuid","description":"ID til salgsmuligheten."},"status":{"type":"string","description":"Status. Ved opprettelse kan du sende «draft» (standard) eller «sent». Sending på e-post gjøres i CRM-et.","enum":["draft","sent","viewed","accepted","rejected","expired"]},"issue_date":{"type":"string","format":"date","description":"Tilbudsdato. Standard i dag."},"valid_until":{"type":["string","null"],"format":"date","description":"Gyldig til. Standard 30 dager etter tilbudsdato."},"intro":{"type":["string","null"],"description":"Innledning."},"notes":{"type":["string","null"],"description":"Merknader."},"terms":{"type":["string","null"],"description":"Vilkår. Standard: kontoens vilkår."},"subtotal":{"type":"number","description":"Sum eks. mva før rabatt.","readOnly":true},"discount_total":{"type":"number","description":"Total rabatt.","readOnly":true},"vat_total":{"type":"number","description":"Mva.","readOnly":true},"total":{"type":"number","description":"Totalt inkl. mva.","readOnly":true},"public_url":{"type":["string","null"],"format":"uri","description":"Kundens lenke til tilbudet.","readOnly":true},"sent_at":{"type":["string","null"],"format":"date-time","description":"Sendt.","readOnly":true},"accepted_at":{"type":["string","null"],"format":"date-time","description":"Akseptert.","readOnly":true},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Linje-ID.","readOnly":true},"product_id":{"type":["string","null"],"format":"uuid","description":"Produkt (valgfritt)."},"description":{"type":"string","description":"Linjetekst."},"quantity":{"type":"number","description":"Antall. Standard 1."},"unit":{"type":"string","description":"Enhet. Standard «stk»."},"unit_price":{"type":"number","description":"Enhetspris eks. mva."},"discount_pct":{"type":"number","description":"Rabatt i prosent."},"vat_rate":{"type":"number","description":"Mva-sats. Standard 25."},"line_total":{"type":"number","description":"Linjesum eks. mva etter rabatt.","readOnly":true},"sort":{"type":"integer","description":"Rekkefølge.","readOnly":true}}},"description":"Linjer."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."},"created_by":{"type":["string","null"],"format":"uuid","description":"Brukeren som opprettet oppføringen (for API-kall: eieren av nøkkelen).","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet (ISO 8601, UTC).","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret (ISO 8601, UTC).","readOnly":true},"url":{"type":"string","format":"uri","description":"Lenke til oppføringen i CRM-et.","readOnly":true}},"description":"Tilbud med linjer. Summene beregnes av CRM-et. Enkeltoppslag inkluderer linjene («items») og «public_url» – lenken kunden bruker for å se og akseptere tilbudet.","examples":[{"id":"f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7","number":1001,"title":"Nytt nettsted","company_id":"7c0e7f1e-5b8e-4a55-9b7e-3f7f0f0a1b2c","contact_id":"0f3c6a4e-2d71-4f7b-8f65-2e4c1d9b7a10","deal_id":null,"status":"sent","issue_date":"2026-09-26","valid_until":"2026-10-26","intro":null,"notes":null,"terms":null,"subtotal":40000,"discount_total":0,"vat_total":10000,"total":50000,"public_url":"https://crm.webspesialisten.no/tilbud/abc123","sent_at":"2026-09-26T10:00:00.000Z","accepted_at":null,"owner_id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","items":[{"id":"a1b2c3d4-6666-4f70-8b1c-d3e4f5a6b7c8","product_id":null,"description":"Design og utvikling","quantity":40,"unit":"time","unit_price":1000,"discount_pct":0,"vat_rate":25,"line_total":40000,"sort":0}],"created_at":"2026-09-26T09:40:00.000Z","updated_at":"2026-09-26T10:00:00.000Z","url":"https://crm.webspesialisten.no/app/tilbud/f7081920-5555-4e6f-8a0b-c2d3e4f5a6b7"}]},"QuoteInput":{"type":"object","properties":{"title":{"type":"string","description":"Tittel.","examples":["Nytt nettsted"]},"company_id":{"type":["string","null"],"format":"uuid","description":"ID til bedriften."},"contact_id":{"type":["string","null"],"format":"uuid","description":"ID til kontakten."},"deal_id":{"type":["string","null"],"format":"uuid","description":"ID til salgsmuligheten."},"status":{"type":"string","description":"Status. Ved opprettelse kan du sende «draft» (standard) eller «sent». Sending på e-post gjøres i CRM-et.","enum":["draft","sent","viewed","accepted","rejected","expired"]},"issue_date":{"type":"string","format":"date","description":"Tilbudsdato. Standard i dag."},"valid_until":{"type":["string","null"],"format":"date","description":"Gyldig til. Standard 30 dager etter tilbudsdato."},"intro":{"type":["string","null"],"description":"Innledning."},"notes":{"type":["string","null"],"description":"Merknader."},"terms":{"type":["string","null"],"description":"Vilkår. Standard: kontoens vilkår."},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Linje-ID.","readOnly":true},"product_id":{"type":["string","null"],"format":"uuid","description":"Produkt (valgfritt)."},"description":{"type":"string","description":"Linjetekst."},"quantity":{"type":"number","description":"Antall. Standard 1."},"unit":{"type":"string","description":"Enhet. Standard «stk»."},"unit_price":{"type":"number","description":"Enhetspris eks. mva."},"discount_pct":{"type":"number","description":"Rabatt i prosent."},"vat_rate":{"type":"number","description":"Mva-sats. Standard 25."},"line_total":{"type":"number","description":"Linjesum eks. mva etter rabatt.","readOnly":true},"sort":{"type":"integer","description":"Rekkefølge.","readOnly":true}}},"description":"Linjer."},"owner_id":{"type":["string","null"],"format":"uuid","description":"Ansvarlig bruker (se GET /users). Standard: eieren av API-nøkkelen."}},"required":["title"]},"User":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Unik ID for brukeren.","readOnly":true},"email":{"type":"string","format":"email","description":"E-post.","readOnly":true},"first_name":{"type":"string","description":"Fornavn.","readOnly":true},"last_name":{"type":"string","description":"Etternavn.","readOnly":true},"phone":{"type":["string","null"],"description":"Telefon.","readOnly":true},"title":{"type":["string","null"],"description":"Stilling.","readOnly":true},"role":{"type":"string","description":"Rolle.","enum":["owner","admin","user","readonly"],"readOnly":true},"active":{"type":"boolean","description":"false = deaktivert.","readOnly":true},"created_at":{"type":"string","format":"date-time","description":"Opprettet.","readOnly":true},"updated_at":{"type":"string","format":"date-time","description":"Sist endret.","readOnly":true}},"description":"Brukerne i kontoen (skrivebeskyttet). Brukes for å finne ID-er til «owner_id», «assigned_to» osv.","examples":[{"id":"33a10e0f-3dbf-4d63-b2e8-81a9ac8bf75f","email":"ola@firma.no","first_name":"Ola","last_name":"Nordmann","phone":null,"title":"Selger","role":"user","active":true,"created_at":"2026-09-01T08:00:00.000Z","updated_at":"2026-09-01T08:00:00.000Z"}]}}}}