eLearning.edu.pl API
ENPL

Limity i ponawianie

Limity

Każdy klient integracji ma „wiadro tokenów” wspólne dla wszystkich jego danych dostępowych i tokenów:

  • 20 żądań na minutę (jeden token co 3 sekundy),
  • chwilowo do 30 żądań,
  • 5000 żądań na dobę (doba UTC).

Umowa Twojej organizacji może przewidywać wyższe limity; administrator IT może też ustawić klientowi niższe (np. klientowi testowemu). Punkt wydawania tokenów (POST /api/v1/oauth/token) ma osobne limity: 60 żądań na minutę z jednego adresu i 10 wydanych tokenów na minutę na klienta.

Nagłówki

Każda odpowiedź dla klienta integracji podaje stan jego limitu:

Nagłówek Znaczenie
RateLimit-Limit Pojemność wiadra (maksymalna chwilowa liczba żądań).
RateLimit-Remaining Żądania dostępne teraz (z uwzględnieniem limitu dobowego).
RateLimit-Reset Sekundy do zapełnienia wiadra; po wyczerpaniu limitu dobowego — do północy UTC.
RateLimit-Policy Zasada limitu, np. 20;w=60;burst=30, 5000;w=86400.
Retry-After Tylko przy 429: sekundy do pierwszego dozwolonego żądania.

Gdy dostaniesz 429

429 RATE_LIMITED oznacza, że żądanie nie zostało wykonane i nie zużyło limitu. Odczekaj Retry-After sekund i ponów. Nie ponawiaj w ciasnej pętli — powtarzane nieudane uwierzytelnienia (20 na minutę) blokują adres źródłowy na 10 minut (429 TOO_MANY_FAILED_AUTHENTICATIONS).

Bezpieczne ponawianie

  • Ponawiaj 429, 502, 503 i 504 oraz błędy sieci z wykładniczym odstępem i losowym rozrzutem (np. 1 s, 2 s, 4 s …, maksymalnie 60 s), respektując Retry-After, jeśli jest.
  • Nie ponawiaj innych błędów 4xx bez zmiany żądania.
  • POST /api/v1/users i POST /api/v1/enrollments odrzucają duplikaty kodem 409, więc ponowienie utworzenia po przekroczeniu czasu jest bezpieczne: traktuj 409 jako „już istnieje” i wyszukaj zasób.
BASE_URL="${BASE_URL:-https://api.elearning.edu.pl}"

# --retry covers 408, 429, 500, 502, 503 and 504 and honours Retry-After; --retry-max-time caps the total wait.
curl --fail-with-body -sS --retry 5 --retry-max-time 120 \
  "$BASE_URL/api/v1/users?limit=1" \
  -H "X-Tenant-Code: $TENANT_CODE" \
  -H "X-API-Key: $API_KEY"

Synchronizacja masowa

Przy pierwszym ładowaniu wielu tysięcy osób rozłóż wywołania w czasie albo poproś opiekuna wdrożenia o czasowe podniesienie limitu. Do bieżącego zasilania kont z dostawcy tożsamości zwykle lepiej nadaje się SCIM.