Uwierzytelnianie

Format klucza API, uprawnienia, idempotencja i limity zapytań w API integracji wtyczek.

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

Format klucza

mk_live_<keyId>.<secret>

Klucze wtyczek są powiązane z dokładnie jedną instalacją wtyczki. Sprzedawca tworzy instalację w Ustawienia → Instalacje wtyczek, a następnie generuje klucz w Ustawienia → Klucze API; sekretna część jest pokazana tylko raz, przy tworzeniu.

Tworzenie pierwszego klucza

Działający klucz wymaga aktywnej instalacji wtyczki — klucze bez instalacji są odrzucane przez każdy endpoint /api/v1/plugin/*.

  1. Utwórz instalację. W ustawieniach zespołu otwórz Ustawienia → Instalacje wtyczek i dodaj instalację dla platformy Twojego sklepu. Instalacja wyznacza maksymalny zestaw uprawnień, jakie mogą mieć jej klucze.
  2. Utwórz klucz. Otwórz Ustawienia → Klucze API, utwórz nowy klucz i wybierz swoją instalację. Uprawnienia instalacji zostaną zastosowane do klucza automatycznie; możesz je zawęzić, ale nie rozszerzyć.
  3. Skopiuj sekret do wtyczki. Pełny klucz (mk_live_<keyId>.<secret>) jest pokazany tylko raz, zaraz po utworzeniu. Wklej go w ustawieniach Qamera AI w swojej wtyczce. Jeśli go zgubisz, utwórz nowy klucz — sekretu nie da się wyświetlić ponownie.

Uprawnienia klucza (scope)

Każdy klucz jest wystawiony z jednym lub kilkoma uprawnieniami. Efektywny zestaw to część wspólna uprawnień klucza i uprawnień instalacji — klucz może być węższy niż instalacja, ale nigdy szerszy.

UprawnienieEndpointy
plugin.jobs:createPOST /jobs, POST /jobs/batch, POST /orders/{id}/clone
plugin.jobs:readGET /jobs, GET /jobs/{id}, GET /orders/{id}, POST /jobs/{id}/refresh-url, POST /jobs/{id}/accept, POST /jobs/{id}/reject, GET /presets
plugin.jobs:cancelDELETE /jobs/{id}
plugin.assets:uploadPOST /assets/upload
plugin.catalog:readGET /models, GET /sceneries, GET /ai-models, GET /aspect-ratios, GET /pricing, GET /presets, GET /products, GET /products/{id_or_ref}, GET /packshots
plugin.catalog:writePOST /images, POST /packshots, DELETE /products/{id_or_ref}, DELETE /packshots/{id_or_ref}
plugin.installations.managePOST /installations/{id}/rotate-hmac
plugin.webhooks:managePOST /webhooks/{delivery_id}/replay

GET /me działa z każdym ważnym kluczem. Wywołanie trasy bez wymaganego uprawnienia zwraca 403 forbidden.

Limit zapytań

Każdy klucz ma limit zapytań na minutę (domyślnie 60). Po jego wyczerpaniu kolejne wywołanie zwraca:

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

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

Ponów wywołanie po Retry-After sekundach.

Idempotencja

Operacje zapisu przyjmują nagłówek Idempotency-Key: <token>. Przez 24 godziny ponowne wysłanie tego samego żądania z tym samym tokenem zwraca poprzedni wynik zamiast tworzyć duplikat; po tym oknie token jest traktowany jak nowy. Ten sam token z innym body zwraca 409 idempotency_conflict.

Zalecenie: wyprowadź token z lokalnego identyfikatora operacji w Twoim sklepie (np. zamowienie-12345-wysylka).

Dostęp

API wtyczek jest dostępne dla wszystkich kont — wystarczy utworzyć instalację i klucz, nie trzeba się nigdzie zapisywać. Jeśli dostęp dla Twojego konta jest wyłączony, każde wywołanie zwraca 503 z Retry-After: 3600; w takiej sytuacji napisz na support@qamera.ai.

Błędy

Wszystkie błędy mają wspólny format — zobacz listę błędów z pełnym wykazem kodów.