{"openapi":"3.1.0","info":{"title":"Telenoa API","version":"1.0.0","description":"REST-API'et til Telenoa: henvendelser, kontakter, opkald og viden. Send nøglen som `Authorization: Bearer tln_live_…`. Højst 60 kald i minuttet pr. nøgle (headerne X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset). Fejl har altid formen `{\"fejl\": {\"kode\": …, \"besked\": …}}`.\n\nWebhook-hændelser: `henvendelse.oprettet` (En ny henvendelse er kommet ind (mail, formular, opkald eller API).), `henvendelse.opdateret` (Status, tildeling, prioritet eller kategori er ændret.), `henvendelse.besvaret` (Der er sendt et svar til kunden.), `opkald.afsluttet` (Noa har afsluttet et opkald.), `kontakt.oprettet` (En ny kontakt er oprettet.), `booking.oprettet` (En booking er lagt i kalenderen.), `underskrift.underskrevet` (En kunde har skrevet under på en aftale.)."},"servers":[{"url":"https://app.telenoa.com/api/v1"}],"tags":[{"name":"Henvendelser"},{"name":"Kontakter"},{"name":"Opkald"},{"name":"Viden"},{"name":"Noa"}],"paths":{"/henvendelser":{"get":{"operationId":"listHenvendelser","summary":"List henvendelser","description":"Nyeste først. Brug `naeste_cursor` som `cursor` for næste side.","tags":["Henvendelser"],"security":[{"noegle":["henvendelser:read"]}],"x-scope":"henvendelser:read","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["modtaget","i_gang","afventer","loest"]}},{"name":"mappe","in":"query","required":false,"description":"Standard: indbakke.","schema":{"default":"indbakke","type":"string","enum":["indbakke","arkiv","spam"]}},{"name":"kanal","in":"query","required":false,"schema":{"type":"string","enum":["mail","formular","opkald"]}},{"name":"tildelt_til","in":"query","required":false,"description":"Et bruger-id, eller \"ingen\" for ikke-tildelte.","schema":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"string","const":"ingen"}]}},{"name":"kategori_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}},{"name":"kontakt_id","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}},{"name":"oprettet_efter","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"oprettet_foer","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"opdateret_efter","in":"query","required":false,"description":"Kun henvendelser ændret efter dette tidspunkt — godt til synkronisering.","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"q","in":"query","required":false,"description":"Fritekst i navn, mail, emne og besked.","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","required":false,"description":"Antal pr. side (1–100, standard 25).","schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"`naeste_cursor` fra forrige side.","schema":{"type":"string","maxLength":300}}],"responses":{"200":{"description":"En side henvendelser.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HenvendelserSide"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen henvendelser:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}},"post":{"operationId":"opretHenvendelse","summary":"Opret en henvendelse","description":"Går samme vej som en formular: fordeling og regler, spamtjek, Noas analyse og udkast, kvittering og notifikationer. Henvendelsen hører under kilden \"API\".","tags":["Henvendelser"],"security":[{"noegle":["henvendelser:write"]}],"x-scope":"henvendelser:write","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Valgfri. Samme nøgle + samme anmodning inden for 24 timer giver det første svar igen (header Idempotent-Replayed: true).","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emne":{"type":"string","maxLength":500},"besked":{"type":"string","maxLength":10000},"kontakt":{"default":{},"type":"object","properties":{"navn":{"type":"string","maxLength":200},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"telefon":{"type":"string","maxLength":50}}},"ekstern_id":{"description":"Jeres eget id (fx ordrenummer). Kommer med tilbage på henvendelsen.","type":"string","maxLength":200},"felter":{"description":"Ekstra felter (som i en formular), fx {\"Ønsket dato\": \"12. maj\"}. Noa ser dem.","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":60},"additionalProperties":{"type":"string","maxLength":300}}}}}}},"responses":{"201":{"description":"Oprettet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Henvendelse"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen henvendelser:write (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"409":{"description":"Kilden \"API\" er sat på pause (kode konflikt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/henvendelser/{id}":{"get":{"operationId":"hentHenvendelse","summary":"Hent en henvendelse med mailtråden","tags":["Henvendelser"],"security":[{"noegle":["henvendelser:read"]}],"x-scope":"henvendelser:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Henvendelsen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HenvendelseDetalje"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen henvendelser:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"404":{"description":"Findes ikke (kode ikke_fundet).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}},"patch":{"operationId":"opdaterHenvendelse","summary":"Ret status, mappe, prioritet, tildeling eller kategori","tags":["Henvendelser"],"security":[{"noegle":["henvendelser:write"]}],"x-scope":"henvendelser:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["modtaget","i_gang","afventer","loest"]},"mappe":{"type":"string","enum":["indbakke","arkiv","spam"]},"prioritet":{"type":"string","enum":["lav","mellem","hoej"]},"tildelt_til":{"description":"Et bruger-id i virksomheden, eller null for at fjerne tildelingen.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null"}]},"kategori_id":{"description":"Kategorien (mærket) — null fjerner den.","anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null"}]},"stjernemarkeret":{"type":"boolean"},"vigtig":{"type":"boolean"},"svarfrist":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Henvendelsen efter ændringen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Henvendelse"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen henvendelser:write (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"404":{"description":"Findes ikke (kode ikke_fundet).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/henvendelser/{id}/svar":{"post":{"operationId":"svarPaaHenvendelse","summary":"Send et svar til kunden","description":"Sendes straks fra virksomhedens mailkonto (den, tråden kom ind på, ellers den første aktive) — samme afsendelse som \"Send Noas kladde\" i appen. Svaret står i navnet på den administrator, der oprettede nøglen.","tags":["Henvendelser"],"security":[{"noegle":["henvendelser:write"]}],"x-scope":"henvendelser:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Valgfri. Samme nøgle + samme anmodning inden for 24 timer giver det første svar igen (header Idempotent-Replayed: true).","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tekst":{"type":"string","minLength":1,"maxLength":50000,"description":"Svaret som almindelig tekst. Tomme linjer bliver til afsnit."},"emne":{"description":"Standard: \"Re: \" + henvendelsens emne.","type":"string","maxLength":500}},"required":["tekst"],"additionalProperties":false}}}},"responses":{"201":{"description":"Sendt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SvarResultat"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen henvendelser:write (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"404":{"description":"Findes ikke (kode ikke_fundet).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"409":{"description":"Ingen mailadresse at svare til eller ingen aktiv mailkonto (kode konflikt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/kontakter":{"get":{"operationId":"listKontakter","summary":"List kontakter","tags":["Kontakter"],"security":[{"noegle":["kontakter:read"]}],"x-scope":"kontakter:read","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["ny","i_gang","tilbud_sendt","vundet","tabt"]}},{"name":"q","in":"query","required":false,"description":"Fritekst i navn, firma, mail og telefon.","schema":{"type":"string","maxLength":200}},{"name":"email","in":"query","required":false,"description":"Præcis mailadresse (uden forskel på store og små bogstaver).","schema":{"type":"string","maxLength":254}},{"name":"telefon","in":"query","required":false,"description":"Telefonnummer (sammenlignes uden mellemrum).","schema":{"type":"string","maxLength":50}},{"name":"opdateret_efter","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"limit","in":"query","required":false,"description":"Antal pr. side (1–100, standard 25).","schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"`naeste_cursor` fra forrige side.","schema":{"type":"string","maxLength":300}}],"responses":{"200":{"description":"En side kontakter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KontakterSide"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen kontakter:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}},"post":{"operationId":"opretKontakt","summary":"Opret en kontakt","description":"Findes en kontakt med samme email eller telefon, returneres den (200, `oprettet: false`) i stedet for at lave en dublet.","tags":["Kontakter"],"security":[{"noegle":["kontakter:write"]}],"x-scope":"kontakter:write","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Valgfri. Samme nøgle + samme anmodning inden for 24 timer giver det første svar igen (header Idempotent-Replayed: true).","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"navn":{"type":"string","maxLength":200},"firma":{"type":"string","maxLength":200},"cvr":{"type":"string","maxLength":20},"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"telefon":{"type":"string","maxLength":40},"adresse":{"type":"string","maxLength":400},"status":{"type":"string","enum":["ny","i_gang","tilbud_sendt","vundet","tabt"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Fandtes i forvejen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpretKontaktResultat"}}}},"201":{"description":"Oprettet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpretKontaktResultat"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen kontakter:write (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/kontakter/{id}":{"get":{"operationId":"hentKontakt","summary":"Hent en kontakt","tags":["Kontakter"],"security":[{"noegle":["kontakter:read"]}],"x-scope":"kontakter:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Kontakten.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kontakt"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen kontakter:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"404":{"description":"Findes ikke (kode ikke_fundet).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}},"patch":{"operationId":"opdaterKontakt","summary":"Ret en kontakt","tags":["Kontakter"],"security":[{"noegle":["kontakter:write"]}],"x-scope":"kontakter:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"navn":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"firma":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"cvr":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]},"email":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"telefon":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"adresse":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}]},"status":{"type":"string","enum":["ny","i_gang","tilbud_sendt","vundet","tabt"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Kontakten efter ændringen.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kontakt"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen kontakter:write (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"404":{"description":"Findes ikke (kode ikke_fundet).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/opkald":{"get":{"operationId":"listOpkald","summary":"List Noas opkald","tags":["Opkald"],"security":[{"noegle":["opkald:read"]}],"x-scope":"opkald:read","parameters":[{"name":"udfald","in":"query","required":false,"schema":{"type":"string","enum":["besked","booket","omstillet","ubesvaret"]}},{"name":"startet_efter","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"startet_foer","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"limit","in":"query","required":false,"description":"Antal pr. side (1–100, standard 25).","schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"`naeste_cursor` fra forrige side.","schema":{"type":"string","maxLength":300}}],"responses":{"200":{"description":"En side opkald.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpkaldSide"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen opkald:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/opkald/{id}":{"get":{"operationId":"hentOpkald","summary":"Hent et opkald med udskrift","tags":["Opkald"],"security":[{"noegle":["opkald:read"]}],"x-scope":"opkald:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Opkaldet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpkaldDetalje"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen opkald:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"404":{"description":"Findes ikke (kode ikke_fundet).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/viden/noter":{"post":{"operationId":"laegVidenInd","summary":"Læg en note ind til Noa","description":"Noten lægges i Vidensbase og bruges af Noa i mails, chat og telefon.","tags":["Viden"],"security":[{"noegle":["viden:write"]}],"x-scope":"viden:write","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Valgfri. Samme nøgle + samme anmodning inden for 24 timer giver det første svar igen (header Idempotent-Replayed: true).","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":120},"indhold":{"type":"string","minLength":1,"maxLength":20000,"description":"Teksten, Noa skal kunne svare ud fra."}},"required":["titel","indhold"],"additionalProperties":false}}}},"responses":{"201":{"description":"Gemt.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VidenNote"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen viden:write (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"409":{"description":"Vidensbasen er fuld (kode konflikt).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}},"/noa/linje":{"get":{"operationId":"noaLinje","summary":"Noa Voices status og nummer","tags":["Noa"],"security":[{"noegle":["noa:read"]}],"x-scope":"noa:read","parameters":[],"responses":{"200":{"description":"Linjen (har_linje: false, hvis I ikke har en).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoaLinje"}}}},"400":{"description":"Ugyldig forespørgsel (kode ugyldig_foresporgsel).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"401":{"description":"Manglende, ugyldig, udløbet eller tilbagekaldt nøgle (kode uautoriseret).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"403":{"description":"Nøglen mangler adgangen noa:read (kode mangler_adgang).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}},"429":{"description":"Over 60 kald i minuttet (kode for_mange_kald). Se Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fejl"}}}}}}}},"components":{"schemas":{"Henvendelse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"emne":{"type":["string","null"]},"besked":{"type":["string","null"]},"kanal":{"type":"string","enum":["mail","formular","opkald"]},"status":{"type":"string","enum":["modtaget","i_gang","afventer","loest"],"description":"Sagsstatus: modtaget → i_gang → afventer → loest."},"mappe":{"type":"string","enum":["indbakke","arkiv","spam"],"description":"Hvor henvendelsen ligger: indbakke, arkiv eller spam."},"prioritet":{"type":"string","enum":["lav","mellem","hoej"]},"kontakt":{"type":"object","properties":{"navn":{"type":["string","null"]},"email":{"type":["string","null"]},"telefon":{"type":["string","null"]}},"required":["navn","email","telefon"],"additionalProperties":false},"kontakt_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null"}],"description":"Kontakten (GET /kontakter/{id}), hvis henvendelsen er knyttet til en."},"kategori":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]}},"required":["id","navn"],"additionalProperties":false},{"type":"null"}],"description":"Kategorien (Telenoas mærke/tag på henvendelsen)."},"tildelt_til":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]}},"required":["id","navn"],"additionalProperties":false},{"type":"null"}],"description":"Medarbejderen, henvendelsen er tildelt."},"stjernemarkeret":{"type":"boolean"},"vigtig":{"type":"boolean"},"resume":{"description":"Noas resumé af henvendelsen.","type":["string","null"]},"svarfrist":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"kilde":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]}},"required":["id","navn"],"additionalProperties":false},{"type":"null"}],"description":"Kilden (formular, widget, API, Email, Telefon …)."},"ekstern_id":{"description":"Jeres eget id, hvis henvendelsen er oprettet via API'et med ekstern_id.","type":["string","null"]},"oprettet":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"opdateret":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","emne","besked","kanal","status","mappe","prioritet","kontakt","kontakt_id","kategori","tildelt_til","stjernemarkeret","vigtig","resume","svarfrist","kilde","ekstern_id","oprettet","opdateret"],"additionalProperties":false},"HenvendelseDetalje":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"emne":{"type":["string","null"]},"besked":{"type":["string","null"]},"kanal":{"type":"string","enum":["mail","formular","opkald"]},"status":{"type":"string","enum":["modtaget","i_gang","afventer","loest"],"description":"Sagsstatus: modtaget → i_gang → afventer → loest."},"mappe":{"type":"string","enum":["indbakke","arkiv","spam"],"description":"Hvor henvendelsen ligger: indbakke, arkiv eller spam."},"prioritet":{"type":"string","enum":["lav","mellem","hoej"]},"kontakt":{"type":"object","properties":{"navn":{"type":["string","null"]},"email":{"type":["string","null"]},"telefon":{"type":["string","null"]}},"required":["navn","email","telefon"],"additionalProperties":false},"kontakt_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null"}],"description":"Kontakten (GET /kontakter/{id}), hvis henvendelsen er knyttet til en."},"kategori":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]}},"required":["id","navn"],"additionalProperties":false},{"type":"null"}],"description":"Kategorien (Telenoas mærke/tag på henvendelsen)."},"tildelt_til":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]}},"required":["id","navn"],"additionalProperties":false},{"type":"null"}],"description":"Medarbejderen, henvendelsen er tildelt."},"stjernemarkeret":{"type":"boolean"},"vigtig":{"type":"boolean"},"resume":{"description":"Noas resumé af henvendelsen.","type":["string","null"]},"svarfrist":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"kilde":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]}},"required":["id","navn"],"additionalProperties":false},{"type":"null"}],"description":"Kilden (formular, widget, API, Email, Telefon …)."},"ekstern_id":{"description":"Jeres eget id, hvis henvendelsen er oprettet via API'et med ekstern_id.","type":["string","null"]},"oprettet":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"opdateret":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"beskeder":{"type":"array","items":{"$ref":"#/components/schemas/Besked"},"description":"Mailtråden, ældste først."}},"required":["id","emne","besked","kanal","status","mappe","prioritet","kontakt","kontakt_id","kategori","tildelt_til","stjernemarkeret","vigtig","resume","svarfrist","kilde","ekstern_id","oprettet","opdateret","beskeder"],"additionalProperties":false},"Besked":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"retning":{"type":"string","enum":["ind","ud"]},"fra":{"type":["string","null"]},"til":{"type":["string","null"]},"emne":{"type":["string","null"]},"tekst":{"type":["string","null"]},"status":{"type":"string","enum":["kladde","planlagt","sender","sendt","fejlet","modtaget"]},"tidspunkt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","retning","fra","til","emne","tekst","status","tidspunkt"],"additionalProperties":false},"Opkald":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","description":"Samme id som henvendelsen, opkaldet er gemt som."},"kanal":{"type":"string","enum":["telefon","web"]},"nummer":{"type":"string","description":"Kalderens nummer, som det vises."},"startet":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"varighed_sek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"udfald":{"type":"string","enum":["besked","booket","omstillet","ubesvaret"]},"resultat":{"type":"object","properties":{"titel":{"type":"string"},"tekst":{"type":["string","null"]}},"required":["titel","tekst"],"additionalProperties":false},"resume":{"type":["string","null"]},"booking":{"anyOf":[{"type":"object","properties":{"dato":{"type":"string"},"tid":{"type":"string"},"personer":{"type":"number"}},"required":["dato","tid","personer"],"additionalProperties":false},{"type":"null"}]},"omstillet_til":{"anyOf":[{"type":"object","properties":{"navn":{"type":"string"},"tog":{"type":"boolean"}},"required":["navn","tog"],"additionalProperties":false},{"type":"null"}]},"kontakt_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null"}]},"oprettet":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","kanal","nummer","startet","varighed_sek","udfald","resultat","resume","booking","omstillet_til","kontakt_id","oprettet"],"additionalProperties":false},"Kontakt":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"navn":{"type":["string","null"]},"firma":{"type":["string","null"]},"cvr":{"type":["string","null"]},"email":{"type":["string","null"]},"telefon":{"type":["string","null"]},"adresse":{"type":["string","null"]},"status":{"type":"string","enum":["ny","i_gang","tilbud_sendt","vundet","tabt"]},"sidste_aktivitet":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"oprettet":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","navn","firma","cvr","email","telefon","adresse","status","sidste_aktivitet","oprettet"],"additionalProperties":false},"OpkaldDetalje":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$","description":"Samme id som henvendelsen, opkaldet er gemt som."},"kanal":{"type":"string","enum":["telefon","web"]},"nummer":{"type":"string","description":"Kalderens nummer, som det vises."},"startet":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"varighed_sek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"udfald":{"type":"string","enum":["besked","booket","omstillet","ubesvaret"]},"resultat":{"type":"object","properties":{"titel":{"type":"string"},"tekst":{"type":["string","null"]}},"required":["titel","tekst"],"additionalProperties":false},"resume":{"type":["string","null"]},"booking":{"anyOf":[{"type":"object","properties":{"dato":{"type":"string"},"tid":{"type":"string"},"personer":{"type":"number"}},"required":["dato","tid","personer"],"additionalProperties":false},{"type":"null"}]},"omstillet_til":{"anyOf":[{"type":"object","properties":{"navn":{"type":"string"},"tog":{"type":"boolean"}},"required":["navn","tog"],"additionalProperties":false},{"type":"null"}]},"kontakt_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},{"type":"null"}]},"oprettet":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"udskrift":{"type":"array","items":{"type":"object","properties":{"hvem":{"type":"string","enum":["gaest","noa","handling"]},"tekst":{"type":"string"},"t":{"type":"number","description":"Sekunder fra opkaldets start."}},"required":["hvem","tekst","t"],"additionalProperties":false}}},"required":["id","kanal","nummer","startet","varighed_sek","udfald","resultat","resume","booking","omstillet_til","kontakt_id","oprettet","udskrift"],"additionalProperties":false},"HenvendelserSide":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Henvendelse"}},"naeste_cursor":{"description":"null = sidste side.","type":["string","null"]}},"required":["data","naeste_cursor"],"additionalProperties":false},"KontakterSide":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Kontakt"}},"naeste_cursor":{"description":"null = sidste side.","type":["string","null"]}},"required":["data","naeste_cursor"],"additionalProperties":false},"OpkaldSide":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Opkald"}},"naeste_cursor":{"description":"null = sidste side.","type":["string","null"]}},"required":["data","naeste_cursor"],"additionalProperties":false},"SvarResultat":{"type":"object","properties":{"besked":{"$ref":"#/components/schemas/Besked"},"henvendelse_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"}},"required":["besked","henvendelse_id"],"additionalProperties":false},"OpretKontaktResultat":{"type":"object","properties":{"kontakt":{"$ref":"#/components/schemas/Kontakt"},"oprettet":{"type":"boolean","description":"false = kontakten fandtes i forvejen (samme email eller telefon)."}},"required":["kontakt","oprettet"],"additionalProperties":false},"VidenNote":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"},"titel":{"type":"string"},"afsnit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Antal afsnit, noten er delt op i til søgning."},"oprettet":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","titel","afsnit","oprettet"],"additionalProperties":false},"NoaLinje":{"type":"object","properties":{"har_linje":{"type":"boolean"},"status":{"anyOf":[{"type":"string","enum":["opsaettes","aktiv","pause","opsagt"]},{"type":"null"}]},"nummer":{"description":"Noas nummer, som det vises, fx \"+45 35 15 37 20\".","type":["string","null"]},"nummer_e164":{"type":["string","null"]},"viderestillet_fra":{"type":["string","null"]},"aktiveret":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"denne_maaned":{"anyOf":[{"type":"object","properties":{"opkald":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minutter":{"type":"number"},"klaret_af_noa":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"beskeder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"omstillet":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["opkald","minutter","klaret_af_noa","beskeder","omstillet"],"additionalProperties":false},{"type":"null"}]}},"required":["har_linje","status","nummer","nummer_e164","viderestillet_fra","aktiveret","denne_maaned"],"additionalProperties":false},"Fejl":{"type":"object","properties":{"fejl":{"type":"object","properties":{"kode":{"type":"string","enum":["uautoriseret","mangler_adgang","ikke_fundet","metode_ikke_tilladt","konflikt","idempotens_igang","for_stor","idempotens_konflikt","ugyldig_foresporgsel","for_mange_kald","intern_fejl","ikke_klar"]},"besked":{"type":"string"},"detaljer":{"type":"array","items":{"type":"object","properties":{"felt":{"type":"string"},"besked":{"type":"string"}},"required":["felt","besked"],"additionalProperties":false}}},"required":["kode","besked"],"additionalProperties":false}},"required":["fejl"],"additionalProperties":false}},"securitySchemes":{"noegle":{"type":"http","scheme":"bearer","bearerFormat":"tln_live_…","description":"API-nøgle fra Forbindelser → API og webhooks. Adgange: henvendelser:read (Læse henvendelser og mailtråde), henvendelser:write (Oprette, ændre og besvare henvendelser), kontakter:read (Læse kontakter), kontakter:write (Oprette og rette kontakter), opkald:read (Læse opkald med udskrift og resumé), viden:write (Lægge viden ind til Noa), noa:read (Se Noa Voices status og nummer)."}}}}