AttendBeacon
Otwórz przestrzeń roboczą

Pojęcia

Idempotentność

Wyślij Idempotency-Key z żądaniem POST, a ponowienie po zerwanym połączeniu otrzyma pierwszą odpowiedź, zamiast rejestrować kogoś dwa razy.

Po co

Połączenie może zostać zerwane, gdy AttendBeacon już kogoś zarejestrował, ale twój kod jeszcze się o tym nie dowiedział. Wysłane ponownie, to samo żądanie POST wydałoby drugi bilet. Z nagłówkiem Idempotency-Key tak się nie stanie: drugie żądanie dostanie odpowiedź na pierwsze.

Jak

Dla każdego żądania utwórz własny klucz (najlepiej UUID) i wyślij go z żądaniem POST. Przechowuj go razem z żądaniem, dopóki nie dostaniesz odpowiedzi, i wysyłaj ten sam klucz przy każdym ponowieniu.

curl -X POST "https://attendbeacon.com/api/v1/events/b3ac0000-0000-4000-8000-000000000001/registrations" \
  -H "Authorization: Bearer $ATTENDBEACON_KEY" \
  -H "Idempotency-Key: 6f1c2a9e-4b7d-4c0f-8e3a-5b9d1c7e0f42" \
  -H "Content-Type: application/json" \
  -d '{ "ticketTypeId": "b3ac0006-0000-4000-8000-000000000001", "firstName": "Anna", "lastName": "de Vries", "email": "anna.devries@example.com" }'

Co jest przechowywane i jak długo

Pierwsza odpowiedź dla danego klucza (status, Location i treść) jest przechowywana przez 24 godziny i zwracana ponownie każdemu żądaniu z tym samym kluczem, metodą, ścieżką i treścią. Powtórzona odpowiedź zawiera Idempotent-Replayed: true.

SytuacjaOdpowiedź
Ponowienie żądania, na które już odpowiedzianoPierwsza odpowiedź z Idempotent-Replayed: true
Ponowienie, gdy pierwsze żądanie jest jeszcze przetwarzane409 idempotencyKeyInUse z Retry-After: 1
Ten sam klucz z inną metodą, ścieżką lub treścią422 idempotencyKeyReused: dla nowego żądania użyj nowego klucza
Klucz dłuższy niż 255 znaków lub zawierający spacje400 invalidIdempotencyKey
Pierwsze żądanie nie powiodło się po stronie AttendBeacon (5xx)Nic nie jest przechowywane, więc ponowienie jest obsługiwane od nowa

Klucz należy do klucza API, który go wysłał, więc dwie integracje nie mogą sobie wejść w drogę. Przechowywane odpowiedzi mogą zawierać dane osoby. Gdy ta osoba usunie swoje dane, odpowiedzi, w których występuje, również są usuwane.

Których wywołań to dotyczy

Każde żądanie POST przyjmuje Idempotency-Key: rejestracja, wydawanie biletów, anulowanie, check-in, tworzenie wydarzeń, sesji, kodów rabatowych i webhooków. PATCH, PUT i DELETE można bezpiecznie powtarzać z samej ich natury. PATCH przyjmuje zamiast tego If-Match, aby nie nadpisać zmiany wprowadzonej w międzyczasie (Błędy, preconditionFailed).

Przewodniki i ta witryna są w twoim języku. Opisy w samej dokumentacji API są po angielsku, tak jak mówi samo API.