Przejdź do treści
Sursa Developers

Zakresy klucza

Zakres określa część API, którą klucz może wywoływać. Każda operacja w dokumentacji API deklaruje jeden zakres, którego potrzebuje. Żądanie z kluczem, który go nie ma, jest odrzucane z 403 i kodem api_keys.scope, zanim cokolwiek zostanie odczytane lub zmienione.

Zakresy mówią, które operacje klucz może wywoływać. Rola klucza, jego profil dostępu i kolekcje nadal decydują o tym, które obiekty te operacje widzą: klucz z cards:write i rolą viewer nie może zmieniać kart, a klucz ograniczony do jednej kolekcji nie widzi pozostałych.

Zakresy

ZakresPozwala
cards:readOdczytywać karty, kolekcje i foldery.
cards:writeTworzyć, zmieniać i usuwać karty, kolekcje i foldery.
searchPrzeszukiwać bazę wiedzy (POST /v1/search).
askZadawać pytania asystentowi (POST /v1/ask, POST /v1/chat).
import:writeZapisywać dane we własnych źródłach organizacji: synchronizacje, pakiety i usunięcia, oraz odczytywać ich stan. Utworzenie źródła i jego kluczy wymaga zakresu admin.
webhooks:manageZarządzać webhookami i odczytywać kanał zdarzeń (GET /v1/webhook-events). Obie czynności wymagają także roli admin.
users:readOdczytywać użytkowników i grupy.
users:writeZmieniać użytkowników i grupy.
analytics:readOdczytywać analitykę.
audit:readOdczytywać dziennik audytu.
finance:readOdczytywać raporty finansowe, faktury i płatności.
catalog:readOdczytywać katalog usług.
files:readOdczytywać wygenerowane pliki, np. wyeksportowane odpowiedzi.
files:writeZmieniać i usuwać wygenerowane pliki.
permissions:managePrzypisywać i odbierać uprawnienia do obiektów.
adminUstawienia organizacji i jej klucze API. Klucz z admin ma też wszystkie pozostałe zakresy.

Wyszukiwanie i pytania są z założenia operacjami odczytu: klucz, który może tylko odczytywać, nadal może wyszukiwać i zadawać pytania.

Wybór zakresów

Przyznawaj tylko te zakresy, których integracja używa, i żadnych innych:

IntegracjaZakresy
Bot odpowiadający na pytania w komunikatorzesearch, ask
Import z Twojego systemu dokumentówcards:write (API kart) lub import:write (własne źródło)
Eksport do hurtowni danychcards:read, users:read i webhooks:manage do kanału zdarzeń
Zakładanie kont użytkowników z Twojego systemu kadrowegousers:write

Przekaż listę podczas tworzenia klucza:

curl -X POST https://api.sursa.com/v1/api-keys \
  -H "Authorization: Bearer $SURSA_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Support bot", "role": "viewer", "scopes": ["search", "ask"]}'

Wcześniejsze zakresy

Klucze utworzone przed podziałem zakresów nadal działają. Ich zakresy read, write i admin oznaczają następujące zestawy:

Wcześniejszy zakresOznacza
readcards:read, search, ask, users:read, analytics:read, finance:read, catalog:read, files:read
writewszystko z read oraz cards:write, files:write, users:write, permissions:manage
adminkażdy zakres

Klucz utworzony bez jawnie podanych zakresów otrzymuje je na podstawie swojej roli: admin otrzymuje admin; editor i verifier otrzymują write; viewer otrzymuje read.

Podgląd zakresów klucza

GET /v1/me zwraca zakresy klucza, który wysyła żądanie, niezależnie od tego, jakie zakresy ten klucz ma. W przypadku klucza utworzonego bez jawnie podanych zakresów są to wcześniejsze zakresy jego roli, np. read i write; tabela powyżej pokazuje, co oznaczają. Gdy operacja kończy się błędem api_keys.scope, error.message wskazuje brakujący zakres.