Uwierzytelnianie

Format klucza API, scope, idempotencja i ograniczenie szybkości w API integracji wtyczek.

Każde zapytanie do /api/v1/plugin/* musi zawierać prawidłowy nagłówek X-Api-Key.

Format klucza

mk_live_<keyId>.<secret>

Klucze pluginowe są powiązane z dokładnie jednym wpisem plugin_installations. Sprzedawca generuje je w Ustawienia → Plugin Installations; sekretna część jest pokazana raz przy tworzeniu i nigdy więcej.

Scope

Każdy klucz jest wystawiony z jednym lub więcej scope. Efektywny zestaw to przecięcie scope klucza i scope instalacji — klucze mogą być węższe niż instalacja, ale nigdy szersze.

ScopeEndpointy
plugin.jobs:createPOST /jobs, POST /jobs/batch
plugin.jobs:readGET /jobs, GET /jobs/{id}, POST /jobs/{id}/refresh-url, GET /presets
plugin.jobs:cancelDELETE /jobs/{id}
plugin.assets:uploadPOST /assets/upload
plugin.installations.managePOST /installations/{id}/rotate-hmac
plugin.webhooks:managePOST /webhooks/{delivery_id}/replay

GET /me jest dostępne z dowolnym ważnym kluczem. Wywołania trasy bez wymaganego scope zwracają 403 forbidden.

Ograniczenie szybkości

Każdy klucz ma rate_limit_per_min (domyślnie 60). Gdy bucket jest wyczerpany, następne zapytanie zwraca:

HTTP/1.1 429 Too Many Requests
Retry-After: 47
Content-Type: application/json

{ "error": { "code": "rate_limit_exceeded", "retryable": true, ... } }

Powtórz po Retry-After sekundach.

Idempotencja

Mutacje akceptują Idempotency-Key: <token>. Serwer przechowuje (installation_id, key, sha256(canonical_payload)) i odtwarza poprzedni wynik przez 24h; po tym oknie token jest traktowany jako nowy. Ponowne użycie klucza z innym payloadem zwraca 409 idempotency_conflict.

Zalecane: wyprowadź klucz z lokalnego ID zamówienia (np. order_12345-submit).

Beta gate

Dostęp do API integracji wtyczek jest bramkowany per-konto podczas stabilizacji powierzchni. Konta jeszcze nie na liście beta widzą 503 z Retry-After: 3600 na każde wywołanie. Skontaktuj się z support@qamera.ai aby poprosić o dostęp.

Błędy

Wszystkie błędy mają wspólną kopertę — zobacz listę błędów dla pełnej listy kodów.