Gå til indholdet
Sursa Developers

Autentificering

Hver anmodning til Sursas API har en API-nøgle eller et OAuth-adgangstoken fra en app i headeren Authorization:

Authorization: Bearer kb_3f9c…

Nøglen identificerer organisationen og bestemmer, hvad anmodningen kan se og ændre: nøglens rolle, dens scopes, dens dataprofil og dens samlinger. Der er ingen sessioner eller cookies på API-adressen. Hver anmodning autentificeres for sig, så du kan sende anmodninger parallelt og fra flere servere med den samme nøgle.

curl https://api.sursa.com/v1/me \
  -H "Authorization: Bearer $SURSA_API_KEY"

Tidligere integrationer sender måske nøglen i en X-API-Key-header i stedet. Den accepteres stadig, men ny kode bør bruge Authorization: Bearer.

Typer af legitimationsoplysninger

LegitimationSer sådan udHvor den virker
Organisationens API-nøglekb_…Alle API’ets operationer inden for nøglens rolle, scopes, dataprofil og samlinger.
Nøgle til en brugerdefineret kildekbsrc_…Kun push-operationerne for dens egen brugerdefinerede kilde (/v1/push/sources/{source_id}/…).
OAuth-adgangstokenkbat_…Operationerne i API-referencen inden for tokenets scopes. Et token fra POST /oauth/token med en autorisationskode handler på vegne af den medarbejder, der gav samtykke; et client_credentials-token handler for organisationen ligesom en API-nøgle. Det er gyldigt i 1 time.

Alle sendes på samme måde. En kildenøgle kan ikke læse, søge i eller ændre noget uden for sin kilde; brug den der, hvor nøglen opbevares af en tredjepart, fx en integrationsplatform.

Autentificeringsfejl

Status og kodeHvad det betyderHvad du gør
401 auth.not_authenticatedIngen nøgle, en forkert indtastet nøgle eller en tilbagekaldt nøgle.Kontrollér headeren og nøglens værdi.
401 api_keys.expiredNøglen har passeret sin udløbsdato.Opret en ny nøgle, og erstat den gamle.
401 sources.push_key_invalidEn kildenøgle er forkert, tilbagekaldt eller hører til en anden kilde.Kontrollér nøglen og kildens id i stien.
401 oauth.token_expiredOAuth-adgangstokenet er udløbet.Hent et nyt med opdateringstokenet.
403 api_keys.scopeNøglen har intet scope til denne operation.Tilføj scopet, eller brug en nøgle, der har det.
403 api_keys.feature_disabledOrganisationens prisplan omfatter ikke API-nøgler.Kontakt organisationens administrator.
403 api_keys.ip_not_allowedAnmodningen kommer fra en adresse uden for nøglens tilladte adresser.Kald fra et tilladt netværk, eller ændr nøglens adresser.
403 api_keys.mcp_onlyEn personlig MCP-nøgle blev brugt uden for operationen /mcp.Brug organisationens API-nøgle til API’et.
403 oauth.operation_not_allowedOperationen er ikke en del af det offentlige API, så et OAuth-token kan ikke kalde den.Brug en operation fra API-referencen.
403 org.suspendedOrganisationen er suspenderet. Dens data bevares.Kontakt organisationens administrator.

403 betyder, at anmodningen blev autentificeret, men ikke er tilladt. Et objekt, som nøglen ikke har lov til at se, svarer 404 ligesom et objekt, der ikke findes, så en nøgle ikke kan finde ud af, hvad der ligger uden for dens adgang.

Anmodninger som en dataprofil

En nøgle med rollen admin kan kontrollere, hvad en anden gruppe personer ville se: Headeren X-View-As kører en anmodning som en dataprofil og eventuelt som en rolle.

curl "https://api.sursa.com/v1/cards?limit=20" \
  -H "Authorization: Bearer $SURSA_ADMIN_KEY" \
  -H "X-View-As: employee:viewer"

Anmodninger i denne tilstand læser kun: Enhver ændring returnerer 403 med koden view_as.read_only. Et OAuth-token eller en nøgle uden rollen admin kan ikke bruge X-View-As: Anmodningen returnerer 403 med koden view_as.admin_key_required. En header, der ikke angiver en eksisterende profil, returnerer 400 med koden view_as.invalid_header.

Browserapplikationer

API’et tillader anmodninger fra enhver weboprindelse (Access-Control-Allow-Origin: *) og bruger aldrig cookies, så en side kan kalde det med fetch. Nøglen ligger så i siden og er synlig for den, der bruger den. Kald kun API’et fra browseren med en nøgle, som du er villig til at vise disse brugere, fx en viewer-nøgle, der er begrænset til offentlige samlinger, eller sæt din egen server mellem browseren og Sursa.

Hvad kun en medarbejder kan gøre

Organisationens API-nøgle handler for organisationen, ikke for en person. To dele af API’et tilhører personer, så de virker kun med et token, der handler på vegne af en medarbejder: en session i Sursa eller et OAuth-adgangstoken, der er udstedt med medarbejderens samtykke.

Samtaler tilhører en person. Organisationens API-nøgle ser i GET /v1/conversations kun de samtaler, som den selv har startet. Det offentlige API har ingen operation, der starter en samtale, så for en nøgle er listen normalt tom, og medarbejdernes samtaler vises aldrig for den. Spørgsmål uden en samtale med POST /v1/ask eller POST /v1/chat virker med enhver nøgle, der har scopet ask. Vil du vise en medarbejders samtaler og læse historikken for en af dem med GET /v1/conversations/{conv_id}, skal du kalde API’et med et OAuth-token på vegne af den pågældende medarbejder. Tokenet ser kun medarbejderens egne samtaler; enhver anden samtale returnerer 404 med koden conversations.not_found.

Kun en medarbejder verificerer et kort. Verificering bekræfter, at en person har kontrolleret indholdet, så POST /v1/cards/{card_id}/verification/verify og POST /v1/cards/{card_id}/verify kræver en session eller et OAuth-token på vegne af en medarbejder, der må verificere kortet. Med organisationens API-nøgle eller et client_credentials-token returnerer de 400 med koden cards.verify_user_account_required. De sædvanlige kontroller kommer først: Et kort, som nøglen ikke kan se, returnerer 404, og en nøgle, der ikke må verificere det, får 403.