Přejít na obsah
Sursa Developers

Autentizace

Každý požadavek na Sursa API nese v hlavičce Authorization klíč API nebo přístupový token OAuth některé aplikace:

Authorization: Bearer kb_3f9c…

Klíč identifikuje organizaci a rozhoduje o tom, co požadavek smí vidět a měnit: určuje to jeho role, rozsahy, datový profil a kolekce. Na adrese API nejsou relace ani cookies. Každý požadavek se autentizuje samostatně, proto lze se stejným klíčem posílat požadavky paralelně i z více serverů.

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

Starší integrace mohou klíč posílat místo toho v hlavičce X-API-Key. Ta se stále přijímá, nový kód by ale měl používat Authorization: Bearer.

Druhy přihlašovacích údajů

ÚdajPodobaKde funguje
Klíč API organizacekb_…Všechny operace API v rámci role, rozsahů, datového profilu a kolekcí klíče.
Klíč vlastního zdrojekbsrc_…Jen operace push vlastního zdroje, ke kterému patří (/v1/push/sources/{source_id}/…).
Přístupový token OAuthkbat_…Operace reference API v rámci rozsahů tokenu. Token z POST /oauth/token získaný autorizačním kódem jedná jménem zaměstnance, který udělil souhlas; token client_credentials jedná za organizaci stejně jako klíč API. Platí 1 hodinu.

Všechny se odesílají stejně. Klíč vlastního zdroje nemůže mimo svůj zdroj nic číst, vyhledávat ani měnit; používejte ho tam, kde klíč uchovává třetí strana, například integrační platforma.

Chyby autentizace

Stavový a chybový kódCo znamenáCo dělat
401 auth.not_authenticatedKlíč chybí, je chybně zadaný nebo odvolaný.Zkontrolujte hlavičku a hodnotu klíče.
401 api_keys.expiredKlíči vypršela platnost.Vytvořte nový klíč a nahraďte jím starý.
401 sources.push_key_invalidKlíč vlastního zdroje je chybný, odvolaný nebo patří jinému zdroji.Zkontrolujte klíč a ID zdroje v cestě.
401 oauth.token_expiredPřístupovému tokenu OAuth vypršela platnost.Získejte nový pomocí obnovovacího tokenu.
403 api_keys.scopeKlíč nemá rozsah pro tuto operaci.Přidejte rozsah, nebo použijte klíč, který ho má.
403 api_keys.feature_disabledTarif organizace nezahrnuje klíče API.Obraťte se na administrátora organizace.
403 api_keys.ip_not_allowedPožadavek přichází z adresy, která není mezi povolenými adresami klíče.Volejte z povolené sítě, nebo změňte adresy klíče.
403 api_keys.mcp_onlyOsobní klíč MCP byl použit mimo operaci /mcp.Pro API použijte klíč API organizace.
403 oauth.operation_not_allowedOperace není součástí veřejného API, proto ji token OAuth nemůže volat.Použijte operaci z reference API.
403 org.suspendedOrganizace je pozastavená. Její data zůstávají zachována.Obraťte se na administrátora organizace.

403 znamená, že požadavek prošel autentizací, ale není povolený. Na objekt, který klíč vidět nesmí, přijde odpověď 404 stejně jako na objekt, který neexistuje, takže klíč nemůže zjistit, co leží mimo jeho přístup.

Požadavky z pohledu datového profilu

Klíč s rolí admin může zkontrolovat, co by viděla jiná skupina lidí: hlavička X-View-As provede požadavek s datovým profilem a případně i s rolí, které v ní uvedete.

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

Požadavky v tomto režimu jen čtou: jakákoli změna vrátí 403 s kódem view_as.read_only. Token OAuth ani klíč bez role admin hlavičku X-View-As použít nemohou: odpovědí je 403 s kódem view_as.admin_key_required. Na hlavičku, která neuvádí žádný existující profil, přijde odpověď 400 s kódem view_as.invalid_header.

Aplikace v prohlížeči

API přijímá požadavky z jakéhokoli webového původu (Access-Control-Allow-Origin: *) a nikdy nepoužívá cookies, takže ho stránka může volat přes fetch. Klíč je pak součástí stránky a vidí ho každý, kdo ji používá. Z prohlížeče volejte API jen s klíčem, který lze těmto uživatelům bez obav ukázat, například s klíčem viewer omezeným na veřejné kolekce, nebo mezi prohlížeč a Sursu vložte vlastní server.

Co může jen zaměstnanec

Klíč API organizace jedná za organizaci, ne za člověka. Dvě části API patří lidem, proto fungují jen s tokenem, který jedná jménem zaměstnance: s relací v Surse nebo s přístupovým tokenem OAuth vydaným se souhlasem zaměstnance.

Konverzace patří člověku. Klíč API organizace vidí v GET /v1/conversations jen konverzace, které sám zahájil. Veřejné API nemá operaci, která by konverzaci zahájila, takže pro klíč je seznam obvykle prázdný a konverzace zaměstnanců se mu nikdy nezobrazí. Otázky bez konverzace přes POST /v1/ask nebo POST /v1/chat fungují s jakýmkoli klíčem, který má rozsah ask. Chcete-li vypsat konverzace zaměstnance a přečíst historii jedné z nich pomocí GET /v1/conversations/{conv_id}, volejte API s tokenem OAuth jménem tohoto zaměstnance. Token vidí jen vlastní konverzace tohoto zaměstnance; na jakoukoli jinou konverzaci přijde odpověď 404 s kódem conversations.not_found.

Kartu ověřuje jen zaměstnanec. Ověření potvrzuje, že obsah zkontroloval člověk, proto POST /v1/cards/{card_id}/verification/verify a POST /v1/cards/{card_id}/verify vyžadují relaci nebo token OAuth jménem zaměstnance, který smí kartu ověřit. S klíčem API organizace nebo s tokenem client_credentials vracejí 400 s kódem cards.verify_user_account_required. Obvyklé kontroly mají přednost: na kartu, kterou klíč nevidí, přijde odpověď 404, a klíč, který ji ověřit nesmí, dostane 403.