Visena Dokumentasjon
Partner API

Guide

Kom i gang

Tre trekk tar deg fra ingenting til en ekte post i din egen terminal: skaff en legitimasjon, bytt den i et tilgangstoken, kall API-et. Denne siden slutter med at du har gjort det kallet.

Alt er ren HTTPS og JSON over standard OAuth 2.0, så et hvilket som helst språk med en HTTP-klient fungerer — og eksemplene under trenger ikke annet enn curl og et skall. Les siden én gang fra ende til ende, og du har formen på hvert kall du noen gang sender til Partner API; guidene etter denne fyller inn detaljene.

Hele flyten i tre trekk

Det er ingen håndtrykk å forhandle, ingen SDK å installere og ingen sesjon å holde i live. En legitimasjon identifiserer integrasjonen din, et token beviser den en stund, og tokenet autoriserer hvert kall. Det som først og fremst skiller trekkene, er hvor lenge det de gir deg varer — og det avgjør hvor du skal oppbevare det.

De tre trekkene — legitimasjon, token, kall — og det du beholder fra hvert av dem. Trekk 1 Skaff legitimasjon i Visena-instansen clientId + secret Trekk 2 Bytt den i et token et standard OAuth 2.0-grant /auth/api/v1/token Trekk 3 Kall API-et les eller skriv en post /api/v1/{locale}/person clientId clientSecret access_token som Bearer Hemmeligheten i et nøkkelhvelv varer til tilbakekall Tokenet i minnet, gjenbrukt expires_in 86399 s Dataene i ditt eget system application/json Alle tre trekkene kjøres på din egen backend hemmeligheten og tokenet skal aldri nå en nettleser, en telefon eller kode du sender ut til sluttbrukere
De tre trekkene, og det hvert av dem etterlater deg med: en legitimasjon som varer til noen trekker den tilbake, et token som utløper av seg selv, og data som hører hjemme i ditt eget system. De stiplede linjene er ikke kall — de viser hvor resultatet av hvert trekk bor.
  1. Skaff en legitimasjon. Et par av clientId og hemmelighet, opprettet inne i kundens Visena-instans av en administrator der. Det identifiserer integrasjonen din og avgjør hvilken bruker kallene opptrer som — se Legitimasjon og tokener.
  2. Bytt den i et tilgangstoken. Én standard OAuth 2.0-forespørsel med client_credentials mot /{instanceName}/auth/api/v1/token gir et kortlevd bearer-token med nøyaktig de rettighetene du ba om. Det finnes ikke noe refresh-token: når det utløper, spør du på nytt.
  3. Kall API-et. Send tokenet som Authorization: Bearer på hvert kall. Opprett, les, oppdater, slett, list og synkroniser — konvensjonene er de samme for alle ni ressursene, og Å gjøre kall dekker dem.
i

Vil du helst se skjermbilder? Legitimasjon og tokener går gjennom samme runde i Visena-grensesnittet, skjerm for skjerm, og Skrivebeskyttet tilgang viser hva et lese-token ikke får gjøre — med 403-svaret som bevis.

Dette trenger du før du starter

Fire verdier, og du har alle før du skriver en linje kode. Hvert eksempel på denne siden bruker plassholderne i høyre kolonne, så du kan bytte ut dine egne én gang og kopiere resten ordrett.

VerdiHva det erEksemplene bruker
Base-URL Verten du fikk under oppsettet. Alt annet hektes på den. https://api.visena.example
Instansnavn Kortnavnet på kundens Visena-instans, og det første segmentet i hver URL du kaller. acme
Klient-ID Identifiserer API-legitimasjonen. Heter Klient-ID i Visena-grensesnittet. acme-partner-3f9a
Klienthemmelighet Passordet til legitimasjonen — en vco_…-verdi som vises én gang og lagres bare som en enveis hash. Heter Klienthemmelighet i grensesnittet. $CLIENT_SECRET

Selve legitimasjonen opprettes av en administrator i kundens egen instans, under Admin → TilgangskontrollAdministrer API-tilganger. Har noen allerede gitt deg en klient-ID og en hemmelighet, har du alt denne siden trenger; hvis ikke er Legitimasjon og tokener siden du sender dem til.

i

Ble legitimasjonen din opprettet «på vegne av en annen»? En på-vegne-av-legitimasjon (opprettet for en navngitt bruker og ikke for administratoren selv) har rettighetene act-as-user:read og act-as-user:write i stedet for vanlig read og write. Be om de første under, ellers svarer token-endepunktet 400 invalid_scope. Er legitimasjonen dessuten opprettet som bare lesing, er act-as-user:read alene det den kan utstede. Begreper forklarer forskjellen mellom de to typene.

Bare server til server. Legitimasjon og tokener hører hjemme på baksiden din. Legg dem aldri i en mobilapp, en nettleserside eller annen kode du sender ut til sluttbrukere — den som har hemmeligheten, kan opptre som integrasjonen din, med rettighetene til brukeren den autentiserer som.

En 60-sekunders smakebit

Fire kommandoer i en terminal: sett verdiene dine, bytt legitimasjonen i et token, og les den første siden med personer i instansen. Ingenting opprettes eller endres, og tokenet ber bare om read, så dette er trygt å kjøre mot en instans i drift.

Sett verdiene dine

Bytt inn de tre verdiene fra tabellen over. Hemmeligheten leses fra en ledetekst i stedet for å skrives inn i kommandoen, slik at den aldri havner i kommandohistorikken.

Terminal — verdiene dine
# The values from the table above — substitute your own.
export VISENA_BASE_URL="https://api.visena.example"
export VISENA_INSTANCE="acme"
export CLIENT_ID="acme-partner-3f9a"

# Prompt for the secret, so it stays out of your shell history.
read -rs -p "Client secret: " CLIENT_SECRET && echo
export CLIENT_SECRET

Hent et tilgangstoken

Token-endepunktet tar legitimasjonen over HTTP Basic — formen som hører hjemme i produksjon — og standardgrantet client_credentials. scope er obligatorisk og har ingen standardverdi: si nøyaktig hva tokenet får gjøre.

Terminal — 1. legitimasjon → token
curl -sS -X POST "$VISENA_BASE_URL/$VISENA_INSTANCE/auth/api/v1/token" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials" \
  -d "scope=read"
Svar — 200 OK
{
  "access_token": "dcrEUVpMEpYqbdsDKawBb1yTqIAELMgqIO4KrN…",
  "scope": "read",
  "token_type": "Bearer",
  "expires_in": 86399
}

Tokenet er ugjennomsiktig — ikke tolk det — og lever i expires_in sekunder. Legg merke til at svaret gjentar den scope som faktisk ble gitt; det er verdien det er verdt å sjekke i en test. En integrasjon i produksjon henter ett token, mellomlagrer det og henter et nytt like før det utløper, og Legitimasjon og tokener viser det med en mellomlagring du kan kopiere.

Gjør kallet

Lim inn access_token fra svaret og send det som et bearer-token. Stien bærer instansnavnet, API-versjonen og en locale, og så ressursen — person, i entall, som hver ressurs i API-et.

Terminal — 2. token → første kall
# Paste the access_token from the response above.
export ACCESS_TOKEN="dcrEUVpMEpYqbdsDKawBb1yTqIAELMgqIO4KrN…"

# The first page of people in this instance.
curl -sS "$VISENA_BASE_URL/$VISENA_INSTANCE/api/v1/en/person?offset=0&limit=20" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
Svar — 200 OK
{
  "totalItems": 428,
  "totalPages": 22,
  "page": 0,
  "size": 20,
  "items": [
    { "id": "xK9mQ2",
      "firstName": "Kari",
      "lastName": "Nordmann",
      "primaryEmail": "kari.nordmann@example.com",
      "isActive": true },
    …19 more…
  ],
  "links": { "self": "…", "next": "…/person?offset=20&limit=20" }
}

Det er hele modellen: legitimasjon → token → kall. Id-ene er ugjennomsiktige strenger som xK9mQ2 — lagre dem nøyaktig som du fikk dem og send dem tilbake ordrett, i stedet for å tolke eller konstruere dem.

Hvis det første kallet ikke virker

Feil er maskinlesbare, og de fem under dekker nesten hvert førsteforsøk. Token-endepunktet svarer med standard OAuth 2.0-feilkropp; API-et selv svarer med et problemdokument etter RFC 9457.

Det du serVanlig årsak
401 invalid_client fra token-endepunktet Klient-ID og hemmelighet hører ikke sammen, eller legitimasjonen er trukket tilbake. Sjekk paret; er det rotert, må det nye rulles ut.
400 invalid_scope Ingen scope-parameter, eller en rettighet denne legitimasjonen ikke har — inkludert å be en på-vegne-av-legitimasjon om vanlig read.
404 fra token-endepunktet Instansnavnet i det første stisegmentet er ukjent. Sjekk det segmentet før noe annet.
401 på API-kallet Tokenet mangler, er utløpt eller trukket tilbake. Kontroller Authorization: Bearer-hodet, og hent så et nytt token.
403 på API-kallet Tokenet mangler rettigheten metoden krever, eller det er hentet for en annen instans enn den i URL-en.

Alle de andre statuskodene, feltene i problemdokumentet du bør logge, og en gjentakelsesstrategi som ikke gjør vondt verre, står i Feil og feilsøking.

Når det kallet er besvart, er resten detaljer. Tre sider, i den rekkefølgen de fleste team vil ha dem: