Ugrás a tartalomra
Sursa Developers

Hitelesítés

A Sursa API-hoz küldött minden kérés egy API-kulcsot vagy egy alkalmazás OAuth-hozzáférési tokenjét viszi magával az Authorization fejlécben:

Authorization: Bearer kb_3f9c…

A kulcs azonosítja a szervezetet, és eldönti, mit láthat és mit módosíthat a kérés: a szerepköre, a hatókörei, az adatprofilja és a gyűjteményei alapján. Az API-címen nincsenek munkamenetek és sütik. Minden kérés önállóan hitelesül, így ugyanazzal a kulccsal párhuzamosan és több szerverről is küldhetsz kéréseket.

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

A korábbi integrációk a kulcsot X-API-Key fejlécben is küldhetik. Ezt a Sursa továbbra is elfogadja, de az új kód az Authorization: Bearer fejlécet használja.

A hitelesítő adatok fajtái

Hitelesítő adatFormájaHol működik
A szervezet API-kulcsakb_…Az API minden végpontján, a szerepköre, a hatókörei, az adatprofilja és a gyűjteményei keretein belül.
Az egyéni forrás kulcsakbsrc_…Csak a saját egyéni forrásának küldési (push) végpontjain (/v1/push/sources/{source_id}/…).
OAuth-hozzáférési tokenkbat_…Az API-referencia végpontjain, a token hatókörei keretein belül. Az engedélyezési kóddal a POST /oauth/token végponttól kapott token annak a munkatársnak a nevében jár el, aki a hozzájárulását adta; a client_credentials token a szervezet nevében jár el, mint egy API-kulcs. 1 óráig érvényes.

Mindegyiket ugyanúgy kell elküldeni. Az egyéni forrás kulcsa a forrásán kívül semmit nem olvashat, nem kereshet és nem módosíthat; ott használd, ahol a kulcsot harmadik fél tárolja, például egy integrációs platform.

Hitelesítési hibák

Állapotkód és hibakódMit jelentMit tegyél
401 auth.not_authenticatedNincs kulcs, a kulcs elírt, vagy visszavonták.Ellenőrizd a fejlécet és a kulcs értékét.
401 api_keys.expiredA kulcs lejárati ideje elmúlt.Hozz létre új kulcsot, és cseréld le vele a régit.
401 sources.push_key_invalidAz egyéni forrás kulcsa hibás, visszavonták, vagy egy másik forráshoz tartozik.Ellenőrizd a kulcsot és az útvonalban szereplő forrásazonosítót.
401 oauth.token_expiredAz OAuth-hozzáférési token lejárt.Kérj újat a frissítési tokennel.
403 api_keys.scopeA kulcsnak nincs hatóköre ehhez a művelethez.Add hozzá a hatókört, vagy használj olyan kulcsot, amelynek megvan.
403 api_keys.feature_disabledA szervezet csomagja nem tartalmaz API-kulcsokat.Fordulj a szervezet adminisztrátorához.
403 api_keys.ip_not_allowedA kérés a kulcs engedélyezett címein kívüli címről érkezik.Engedélyezett hálózatból hívd az API-t, vagy módosítsd a kulcs címeit.
403 api_keys.mcp_onlySzemélyes MCP-kulcsot használtak a /mcp végponton kívül.Az API-hoz a szervezet API-kulcsát használd.
403 oauth.operation_not_allowedA művelet nem része a nyilvános API-nak, ezért OAuth-token nem hívhatja.Az API-referencia egyik műveletét használd.
403 org.suspendedA szervezet fel van függesztve. Az adatai megmaradnak.Fordulj a szervezet adminisztrátorához.

A 403 azt jelenti, hogy a kérés hitelesítése sikerült, de a kérés nem engedélyezett. Ha a kulcs nem láthat egy objektumot, a válasz 404, ugyanúgy, mint egy nem létező objektumnál, így a kulcs nem tudhatja meg, mi van a hozzáférésén kívül.

Eljárás egy adatprofil nevében

Az admin szerepkörű kulcs ellenőrizheti, mit látna a felhasználók egy másik csoportja: az X-View-As fejléc egy adatprofil és opcionálisan egy szerepkör nevében futtatja a kérést.

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

Az ebben a módban küldött kérések csak olvasnak: bármilyen módosításra a válasz 403 a view_as.read_only kóddal. OAuth-token és admin szerepkör nélküli kulcs nem használhatja az X-View-As fejlécet: a válasz 403 a view_as.admin_key_required kóddal. Ha a fejléc nem létező profilt nevez meg, a válasz 400 a view_as.invalid_header kóddal.

Böngészős alkalmazások

Az API bármilyen webes eredetből fogad kéréseket (Access-Control-Allow-Origin: *), és soha nem használ sütiket, így egy weboldal fetch hívással is elérheti. Ilyenkor a kulcs az oldalon van, és bárki láthatja, aki az oldalt használja. A böngészőből csak olyan kulccsal hívd az API-t, amelyet hajlandó vagy megmutatni ezeknek a felhasználóknak, például egy nyilvános gyűjteményekre korlátozott viewer kulccsal, vagy állíts a böngésző és a Sursa közé saját szervert.

Amit csak egy munkatárs tehet meg

A szervezet API-kulcsa a szervezet nevében jár el, nem egy személyében. Az API két része személyekhez tartozik, ezért csak olyan tokennel működik, amely egy munkatárs nevében jár el: egy Sursában nyitott munkamenettel vagy a munkatárs hozzájárulásával kiadott OAuth-hozzáférési tokennel.

A beszélgetések személyekhez tartoznak. A szervezet API-kulcsa a GET /v1/conversations válaszában csak azokat a beszélgetéseket látja, amelyeket ő maga indított. A nyilvános API-ban nincs beszélgetést indító művelet, ezért egy kulcs számára a lista általában üres, a munkatársak beszélgetései pedig soha nem jelennek meg neki. A beszélgetés nélküli kérdések a POST /v1/ask vagy a POST /v1/chat végponttal bármely olyan kulccsal működnek, amelynek megvan az ask hatóköre. Egy munkatárs beszélgetéseinek listázásához és egy beszélgetés előzményeinek olvasásához a GET /v1/conversations/{conv_id} végponttal az adott munkatárs nevében kiadott OAuth-tokennel hívd az API-t. A token csak a munkatárs saját beszélgetéseit látja; bármely más beszélgetésre a válasz 404 a conversations.not_found kóddal.

Kártyát csak munkatárs ellenőrizhet. Az ellenőrzés azt erősíti meg, hogy egy személy átnézte a tartalmat, ezért a POST /v1/cards/{card_id}/verification/verify és a POST /v1/cards/{card_id}/verify végponthoz munkamenet vagy olyan munkatárs nevében kiadott OAuth-token kell, aki ellenőrizheti a kártyát. A szervezet API-kulcsával vagy client_credentials tokennel a válasz 400 a cards.verify_user_account_required kóddal. A szokásos vizsgálatok előbb futnak le: a kulcs számára nem látható kártyára a válasz 404, és ha a kulcs nem ellenőrizheti a kártyát, a válasz 403.