Vetmanager

v2 · för utvecklare

Vetmanager API

Ger partners tillgång till veterinärpraktikernas djurägare, djur, artiklar, onlinebokning och journal i Vetmanager — alltid med praktikens uttryckliga godkännande och bara den åtkomst integrationen behöver.

Samma sida som JSON → Partner-API (YAML) Scribe-API (YAML) Hoppa till endpointsen
Den här sidan förklarar upplägget. Det fullständiga kontraktet — fältnamn, scheman, exakta felsvar — står i OpenAPI-specarna. Vid konflikt är det de filerna som gäller.

Vilket API?

Två API:er med var sin inloggningsmodell. Välj efter hur er tjänst används.

Partner-API

En integration som arbetar i bakgrunden, till exempel en bokningstjänst, en synk av djurägarregistret eller en tjänst som skickar in journaltext. Ingen veterinär loggar in i er app via Vetmanager.

OAuth 2.0 Client Credentials + headern X-Practice-Token per praktik.

Scribe-API

En app som veterinären använder under besöket, till exempel AI-diktering. Veterinären startar appen från ett besök i Vetmanager, eller öppnar den direkt, och appen skriver tillbaka till journalen.

OAuth 2.0 Authorization Code (OIDC) — veterinären loggar in, tokenet binds till ett besök.

Kom igång: Partner-API

En integration som arbetar i bakgrunden, till exempel en bokningstjänst, en synk av djurägarregistret eller en tjänst som skickar in journaltext. Ingen veterinär loggar in i er app via Vetmanager.

  1. 1

    Registrera er som partner

    Ni accepterar partneravtalet, beskriver tjänsten och svarar på frågor om dataskydd, informationssäkerhet och AI-användning. Ansökan signeras med BankID eller FrejaEID.

  2. 2

    Bli godkända

    Vetmanager granskar ansökan. När den är godkänd får ni client_id och client_secret med de scopes ni ansökt om.

  3. 3

    Praktiken aktiverar er

    Varje praktik aktiverar er själv i Vetmanager och godkänner de scopes integrationen behöver. Utan det kommer ni inte åt praktiken, hur giltigt ert token än är.

  4. 4

    Hämta ett access-token

    Tokenet gäller i två timmar. Hämta ett nytt när det gått ut.

    POST /oauth/token

  5. 5

    Hämta praktikerna

    Svaret har ett practice_token per praktik som aktiverat er. Det skickas som X-Practice-Token i allt som gäller den praktiken.

    GET /api/v2/practices

  6. 6

    Läs och skriv

    Läs djurägare, djur, artiklar, personal, förbrukningar och fakturor med cursor-paginering och deltasynk på updated_at. Skapa besök med journaltext med POST /api/v2/resons.

    GET /api/v2/clients · GET /api/v2/animals · POST /api/v2/resons

  7. 7

    Boka

    Med read:availability och write:bookings ser ni praktikens lediga onlinetider och kan boka dem. Djurägaren matchas på personnummer inom praktiken, eller skapas, och bokningen sköts sedan som en vanlig onlinebokning.

    GET /api/v2/available_times · POST /api/v2/vet_visits

  8. 8

    Koppla en växel

    Växlar rapporterar samtal, så att receptionen ser vem som ringer (write:calls), och skriver anteckningar i djurägarens kontaktjournal (write:journal).

    POST /api/v2/calls · POST /api/v2/animals/{id}/notes

Kom igång: Scribe-API

En app som veterinären använder under besöket, till exempel AI-diktering. Veterinären startar appen från ett besök i Vetmanager, eller öppnar den direkt, och appen skriver tillbaka till journalen.

  1. 1

    Registrera er och bli godkända

    Samma registrering och granskning som för partner-API:t. Ni anger era redirect-URI:er, och Vetmanager lägger upp den launch_url som knappen i besöket ska leda till.

  2. 2

    Veterinären startar er app

    En knapp i besöket skickar veterinären till er launch_url med reson och return_url. Starten gäller i tio minuter och bara för den veterinär som klickade.

  3. 3

    Kör inloggningen

    Standard Authorization Code mot /oauth/authorize med reson_id. Veterinären är redan inloggad, så det märks knappt. Tokenet som utfärdas är bundet till just det besöket.

    GET /oauth/authorize

  4. 4

    Hämta besöket

    Djur, djurägare och ansvarig veterinär, som underlag för er app.

    GET /api/v2/scribe/resons/{id}

  5. 5

    Skriv tillbaka

    Fyll på anamnes, status och hemråd, skapa AI-anteckningen och lägg till diagnoser och förbrukningar. Allt läggs till — inget som veterinären skrivit skrivs över.

    PATCH /api/v2/scribe/resons/{id} · POST /api/v2/scribe/resons/{id}/events

Så hänger det ihop

Fält- och parameternamn är på engelska — det är själva API-kontraktet. Så här motsvarar de orden i Vetmanager. Vissa begrepp kan kännas märkliga, men Vetmanager är sprunget ur Horsemanager, ett system för hästgårdar.

practice
Praktiken — veterinärkliniken eller djursjukhuset som använder Vetmanager och har aktiverat er.
client
Djurägaren. Kan vara en privatperson eller ett företag.
animal
Djuret. animal_kind anger djurslaget, till exempel 13 häst, 51 hund och 52 katt. Se SJVs baslitor. Det kan förekomma att animal kallas horse.
reson
Besöksorsaken — ett djurs del av ett besök, med anamnes, status, hemråd och journalanteckningar.
assignment
Besöket. Ett besök kan ha flera djur och flera besöksorsaker.
vet_visit
Bokningen i kalendern, innan besöket har ägt rum.
farm_admin_contact
En person i praktikens personal. Det är den man bokar mot och anger som ansvarig.
plant
Anläggningen — platsen där praktiken tar emot.

Autentisering och behörighet

Tre saker måste stämma för att ett anrop ska gå igenom. Ett giltigt token räcker inte ensamt.

Partnern är godkänd och aktiv

Ett avstängt eller avslaget partnerkonto stoppas i varje anrop, oavsett token.

Tokenet har scopet

Scopen bestäms när ni godkänns, och begärs när tokenet hämtas.

Praktiken har godkänt scopet

Varje praktik godkänner själv vilka scopes ni får använda hos just den. Praktiken kan stänga av er när som helst.

Journaltext lämnas aldrig ut till en partner. Veterinärjournaler kan innehålla uppgifter som omfattas av tystnadsplikt. Ni kan skriva journal, och scribe-appar kan läsa det besök de är bundna till.

Konventioner

Fel
Alla fel är application/problem+json (RFC 9457). Grena på status och på code där den finns, aldrig på detail — det är en läsbar text på svenska som kan ändras.
Listor
Cursor-paginering med first/after och last/before. Svaret har page_info och färdiga länkar till nästa och föregående sida.
Filter och sortering
fält__operator=värde, till exempel updated_at__gte=2026-10-01T00:00:00+02:00. Sortera med ordering=-updated_at. Okänt fält eller okänd operator ger 400 i stället för att ignoreras.
Idempotens
Anrop som skapar något kräver headern Idempotency-Key. Samma nyckel och samma body inom 24 timmar ger det första svaret i stället för en dubblett.
Tider
ISO 8601 med offset, i svensk lokaltid (Europe/Stockholm).
Ingen testkonsol
Det finns ingen "try it out" mot produktion. Testa mot en praktik som har aktiverat er, i samråd med praktiken.

Endpoints

Listan läses direkt ur OpenAPI-specarna. Där finns parametrar, scheman och exempel för varje endpoint.

Partner-API

OpenAPI (YAML)
GET /api/v2/practices Lista praktikerna som har aktiverat er
GET /api/v2/clients Lista djurägare read:contacts
GET /api/v2/clients/{id} Hämta en djurägare read:contacts
GET /api/v2/animals Lista djur read:contacts
GET /api/v2/animals/{id} Hämta ett djur read:contacts
GET /api/v2/articles Lista artiklar read:articles
GET /api/v2/articles/{id} Hämta en artikel read:articles
GET /api/v2/farm_admin_contacts Lista personal read:calendar
GET /api/v2/farm_admin_contacts/{id} Hämta en person i personalen read:calendar
POST /api/v2/resons Skapa ett besök med journaltext write:journal
GET /api/v2/available_times/first Första lediga tid för ett djurslag, hos alla era praktiker read:availability
GET /api/v2/vet_visit_types Besökstyper ni kan boka hos praktiken read:availability
GET /api/v2/plants Praktikens aktiva anläggningar read:availability
GET /api/v2/available_times Lediga tider för en besökstyp hos praktiken read:availability
GET /api/v2/vet_visits Era egna bokningar hos praktiken write:bookings
POST /api/v2/vet_visits Boka en tid write:bookings
PATCH /api/v2/vet_visits/{id} Uppdatera anamnesen på en egen bokning write:bookings
GET /api/v2/consumptions Lista förbrukningar read:economy
GET /api/v2/consumptions/{id} Hämta en förbrukning read:economy
GET /api/v2/invoices Lista fakturor read:economy
GET /api/v2/invoices/{id} Hämta en faktura read:economy
POST /api/v2/calls Rapportera ett samtal write:calls
POST /api/v2/animals/{id}/notes Skriv en journalanteckning på ett djur write:journal
GET /api/v2/breeds Lista raser
GET /api/v2/breeds/{id} Hämta en ras
GET /api/v2/sales_statistics Försäljningsstatistik för en period read:economy read:contacts

Scribe-API

OpenAPI (YAML)
POST /api/v2/scribe/resons Skapa en besöksorsak utan start från besöket write:journal
GET /api/v2/scribe/clients Sök bland praktikens djurägare write:journal
GET /api/v2/scribe/clients/{id} Hämta en djurägare (kräver read:contacts hos praktiken) write:journal
GET /api/v2/scribe/animals Sök bland praktikens djur write:journal
GET /api/v2/scribe/animals/{id} Hämta ett djur (kräver read:contacts hos praktiken) write:journal
GET /api/v2/scribe/resons/{id} Hämta besöket med djur och djurägare read:journal write:journal
PATCH /api/v2/scribe/resons/{id} Fyll på besökets kliniska fält write:journal
POST /api/v2/scribe/resons/{id}/events Skapa AI-anteckningen på besöket write:journal
POST /api/v2/scribe/resons/{id}/diagnoses Lägg till en diagnos på besöket write:journal
POST /api/v2/scribe/events/{event_id}/consumptions Lägg till en förbrukning på AI-anteckningen write:journal
GET /api/v2/scribe/articles Lista praktikens artiklar read:articles
Partneravtalet · Registrera er som partner · OIDC-discovery: /.well-known/openid-configuration