Przejdź do dokumentacji
API

Uwierzytelnianie

Jeden typ poświadczenia i sposoby, na jakie żądanie zostaje odrzucone.

Sprawdzanie, czy klucz działa

GET /ping to test dymny: nie wymaga żadnego uprawnienia i mówi, czym jest klucz.

curl
curl "$OE/ping" -H "$AUTH"
Odpowiedź
{  "ok": true,  "keyId": "4c1b257a66287fd113bd89d0",  "mode": "live",  "scopes": ["emails:send", "emails:read"],  "roleId": null,  "grantedScopes": ["emails:send", "emails:read"],  "workspaceId": "10417196-e324-4283-af98-66ec62167c47"}

Jeśli to działa, a coś innego zwraca 401, problemem jest uprawnienie, a nie klucz.

scopes to lista EFEKTYWNA i jedyna, która cokolwiek autoryzuje. grantedScopes to zakres, z jakim klucz wydano; obie różnią się tylko wtedy, gdy rola ogranicza klucz. To przecięcie wyjaśnia strona Uprawnienia. roleId równe null oznacza brak pułapu, czyli najszerszy zakres, jaki klucz może mieć.

Sprawdzanie, z jakich adresów klucz może wysyłać

GET /addresses to odpowiedź na 403, którego się nie spodziewałeś.

curl
curl "$OE/addresses" -H "$AUTH"
Odpowiedź
{  "object": "list",  "unrestricted": false,  "data": [    { "object": "address", "address": "[email protected]", "enabled": true, "canSend": true },    { "object": "address", "address": "[email protected]", "enabled": true, "canSend": false }  ],  "domains": [    { "domain": "acme.com", "receivingVerified": true, "sendingVerified": true, "catchAll": false }  ]}

canSend: false ma trzy przyczyny: adres jest wyłączony, zakres wysyłki klucza go pomija (ani jego domena, ani sam adres nie są na kluczu) albo domena nie potrafi jeszcze podpisywać. enabled na adresie i sendingVerified na jego domenie pozwalają je odróżnić i na tym ten endpoint oszczędza najwięcej czasu przy diagnozie. Domena może być zweryfikowana do odbioru i nadal nie móc wysyłać.

unrestricted: true oznacza, że akceptowana jest każda część lokalna na zweryfikowanej domenie, także taka, której jeszcze nikt nie utworzył.

Jak klucz zostaje odrzucony

KodZnaczenie
missing_api_keyW ogóle brak nagłówka Authorization.
invalid_credential_typeCiasteczko albo token sesji. Wyślij klucz API.
invalid_api_keyTo nie jest klucz przez nas wydany albo sekret się nie zgadza.
revoked_api_keyWydany tutaj, potem unieważniony. Rozróżniany celowo. To różnica między pięciominutową poprawką a całym popołudniem.
expired_api_keyWydany tutaj, potem wygasł.
insufficient_scopePrawdziwy klucz, bez uprawnienia, którego wymaga ten endpoint.

Unieważnienie działa od następnego wywołania. Wiersz zostaje potem na stronie kluczy, więc nadal widać, czy cokolwiek używało klucza w chwili jego wyłączenia. Najbardziej przydatny stan na tym ekranie to „nigdy nie użyty”, bo po nim odróżnia się wyciekły klucz od żywej zależności.

Rotacja to drugi sposób na wycofanie sekretu. Wybija nowy sekret dla tego samego klucza, więc id, nazwa, uprawnienia, rola, zakres wysyłki oraz wszystkie wiersze żądań i aktywności trwają dalej; zmienia się tylko sekret. Stary przestaje działać w chwili zakończenia rotacji, bez okna zachodzenia, a zastępujący go pokazywany jest jeden raz. W konsoli znajduje się w tym samym menu co Unieważnij i najpierw prosi o ponowną weryfikację. Klucz z keys:write może też zrotować sam siebie przez POST /keys/self/rotate — tak integracja rotuje według harmonogramu, bez otwierania konsoli przez kogokolwiek.