API wyników wyzwań
API wyników wyzwań
Portale whitelabel i inne obsługiwane integracje mogą tworzyć interfejs wyników wyzwania za pomocą poniższych punktów końcowych. Wszystkie używają kodu wyzwania i wymagają uwierzytelnionego żądania API.
/api/v1/gamification/challenge/{code}/
Dostęp integracji
Dane uwierzytelniające API, obsługiwane przepływy uwierzytelniania i limity wywołań są uzgadniane z pomocą techniczną DistantRace. Odpowiedź 404 z punktu końcowego wyników lub analiz należy traktować jako informację, że zasób jest niedostępny dla bieżącego wywołującego; ta sama odpowiedź jest używana, gdy zasób ukrywają ustawienia prywatności.
Kolejność punktów końcowych #
| Punkt końcowy | Zastosowanie |
|---|---|
GET result-settings/ |
Odczyt kolumn wyników, sortowania, sum, sekcji, dystansów i dostępnych widoków opcjonalnych |
GET heatmap/ |
Pobranie zagregowanych komórek gęstości treningów, gdy włączono show_heatmap |
GET results/{challenger_id}/detailed/ |
Pobranie wyniku jednego uczestnika, statystyk zbiorczych, porównań i osi czasu aktywności |
GET results/{challenger_id}/activities/{activity_id}/analytics/ |
Pobranie międzyczasów, wykresów i dozwolonych analiz danych z czujników dla jednej zaakceptowanej aktywności |
Zacznij od result-settings/. Na podstawie jego flag i opisów kolumn wybierz elementy sterujące i ekrany do wyświetlenia, zamiast zakładać, że każde wyzwanie ma taki sam format wyników.
Wartości challenger_id pobierz z podzielonego na strony rankingu results/ wyzwania. Identyfikatory aktywności pochodzą z zagnieżdżonej listy activities.results w odpowiedzi szczegółowej.
Ustawienia wyników #
GET /api/v1/gamification/challenge/{code}/result-settings/
Odpowiedź opisuje bieżący sposób prezentacji wyników wyzwania:
primary_columniordered_byokreślają miarę rankingu i domyślną kolejność.columnsiteam_columnsto uporządkowane opisy renderowania; ich klucze odpowiadają polom w wierszach rankingów uczestników i zespołów.totals,progress,sections,distancesiparticipant_datadostarczają opcjonalnego kontekstu całego wyzwania.show_mapishow_heatmapwskazują klientowi, które widoki mapy udostępnić.show_analyticsokreśla, czy wywołujący może zobaczyć fizjologiczne dane aktywności innego uczestnika; nie ogranicza dostępnych analiz własnych wywołującego.results_limitedma wartośćnulldla wyników bez ograniczeń. Liczba oznacza, że wywołujący widzi tylko tyle najwyższych wierszy, a elementy filtrowania, sortowania i stronicowania wyników powinny być ukryte.
Wartości te zależą od wywołującego. To samo wyzwanie może na przykład zwrócić ustawienia bez ograniczeń uczestnikowi, a ograniczone ustawienia zalogowanej osobie niebędącej uczestnikiem.
Mapa cieplna treningów #
GET /api/v1/gamification/challenge/{code}/heatmap/
Mapa cieplna agreguje zaakceptowane aktywności GPS w komórkach siatki o rozmiarze około 150 metrów. Każda komórka ma postać [longitude, latitude, weight], gdzie weight oznacza liczbę różnych aktywności, które przez nią przebiegały. Aktywność wnosi wkład do każdej komórki najwyżej raz, a treningi oznaczone jako prywatne w aplikacji źródłowej są wykluczane.
Mapy cieplne są generowane na żądanie. Gdy nie ma zapisanej mapy, pierwsze żądanie uruchamia generowanie w tle i zwraca:
{"status": "pending"}
Ponów żądanie po kilku sekundach. Gotowa odpowiedź zawiera generated_at, cell_size, activity_count, max_weight, truncated i cells. Zapisane dane mogą być udostępniane, gdy nieaktualna mapa cieplna jest odświeżana w tle.
Użyj max_weight, aby znormalizować ważoną warstwę gęstości. Jeśli truncated ma wartość true, odpowiedź zawiera komórki o największej wadze zamiast wszystkich wygenerowanych komórek.
Punkt końcowy zwraca 404, gdy organizator nie włączył show_heatmap, podczas okresu ukrywania wyników albo gdy wyniki publiczne są ograniczone, a wywołujący nie jest uczestnikiem.
Szczegółowy wynik uczestnika #
GET /api/v1/gamification/challenge/{code}/results/{challenger_id}/detailed/
Odpowiedź łączy:
- Wiersz rankingu uczestnika, wybrany dystans, miejsce i
result_rank_total. statistics, takie jak dystans, czas trwania, tempo lub prędkość, energia, kroki, liczba aktywności, aktywne dni, najdłuższa seria oraz średnie tętno, jeśli jest dostępne.is_own_result, które wskazuje, czy wiersz należy do uwierzytelnionego uczestnika.head_to_head, dostępne tylko wtedy, gdy uczestnik wyświetla własny wynik. Obejmuje miejsce i percentyl, miarę rankingu, różnice do najbliższych rywali i lidera, średnią stawki oraz wiersze podium.activities, zagnieżdżoną, stronicowaną listę zaakceptowanych i widocznych aktywności zaliczonych do wyniku. Każdy wiersz zawiera podstawowe metadane treningu, średnie tempo, kształt trasy, gdy jest dostępny, orazhas_analytics.
Dla wyniku na ustalonym dystansie lista aktywności kończy się na aktywności, która ukończyła wybrany dystans. Późniejsze aktywności nie są wyświetlane, ponieważ nie przyczyniły się do tego wyniku.
Stronicowanie zagnieżdżonych aktywności #
Lista aktywności ma standardowe pola count, next, previous i results, ale używa osobnych parametrów zapytania, aby nie kolidować ze stronicowaniem najwyższego poziomu:
| Parametr | Znaczenie |
|---|---|
activities_page |
Numer strony, zaczynając od 1 |
activities_per_page |
Liczba elementów na stronie; domyślnie 25, z uwzględnieniem maksimum API |
Kształty tras bez danych o położeniu #
Trasy na osi czasu aktywności nie są współrzędnymi geograficznymi. Serwer przesuwa i skaluje każdy ślad GPS do stałej przestrzeni współrzędnych SVG 158 × 108 i zwraca tylko:
path— dane ścieżki SVGstartiend— punkty w znormalizowanej przestrzeni współrzędnychpoint_count— liczba punktów w zwróconym kształcie
Bezwzględna szerokość i długość geograficzna, granice oraz środek nie są dołączane. Ta sama trasa przeniesiona w inne miejsce daje ten sam kształt, dlatego nadaje się do miniatury, ale nie można jej nanieść na mapę geograficzną.
Analizy poszczególnych aktywności #
GET /api/v1/gamification/challenge/{code}/results/{challenger_id}/activities/{activity_id}/analytics/
Aktywność musi być zaakceptowana, widoczna i przypisana dokładnie do tego wyniku uczestnika. Odpowiedź zawiera podstawowy dystans, czas trwania, tempo i prędkość oraz analizy, które można uzyskać z zapisanych strumieni:
| Blok | Zawartość |
|---|---|
route |
Ten sam pozbawiony położenia kształt trasy, co na osi czasu aktywności |
km_splits |
Pełne międzyczasy kilometrowe oraz opcjonalny ostatni częściowy odcinek, ze znacznikami najszybszego i najwolniejszego |
elevation |
Profil ze zmniejszoną liczbą punktów, przewyższenie w górę i w dół, minimum i maksimum |
heart_rate i hr_zones |
Szereg tętna ze zmniejszoną liczbą punktów, średnia, maksimum, referencyjne maksimum i czas w pięciu strefach |
cadence |
Szereg kadencji ze zmniejszoną liczbą punktów i średnia |
effort_score |
Szacowany wysiłek na podstawie tętna |
Poszczególne bloki mogą niezależnie mieć wartość null, ponieważ dostawcy i urządzenia udostępniają różne strumienie. has_streams informuje, czy są dostępne użyteczne analizy strumieni. x_kind wskazuje, czy wartości x wykresu oznaczają skumulowany dystans czy czas, który upłynął.
Bloki o niskiej wrażliwości — kształt trasy, międzyczasy, tempo i wysokość — są dostępne dla każdego wywołującego, który ma dostęp do wyniku. Bloki fizjologiczne — tętno, strefy, kadencja i wysiłek — są zawsze dostępne dla własnego osiągalnego wyniku wywołującego. W przypadku aktywności innego uczestnika są zwracane tylko wtedy, gdy organizator włączył show_analytics, a wywołujący spełnia reguły widoczności wyników. W przeciwnym razie bloki te mają wartość null, a physio_restricted ma wartość true.
Reguły widoczności i prywatności #
| Ustawienie lub stan | Efekt |
|---|---|
show_heatmap wyłączone |
Mapa cieplna zwraca 404; result-settings podaje show_heatmap: false |
show_analytics wyłączone |
Fizjologiczne bloki aktywności innych uczestników są usuwane; własne dostępne analizy pozostają bez zmian |
| Aktywny okres ukrywania wyników | Szczegóły wyników uczestników są ukryte; mapa cieplna zwraca 404; show_heatmap i show_analytics mają wartość false |
hide_results_public włączone |
Zalogowani nieuczestnicy są ograniczeni do skonfigurowanej liczby najlepszych wyników, nie mogą pobrać mapy cieplnej ani wyświetlić analiz fizjologicznych innych uczestników |
| Trening niezaakceptowany lub niewidoczny | Jest pomijany na osi czasu i nie można go otworzyć przez punkt końcowy analiz |
Poza okresem ukrywania wyników uczestnicy wyzwania zachowują dostęp do pełnych wyników. Dostęp pracowników organizacji może różnić się od dostępu uczestników, ale klienci powinni zawsze stosować wartości właściwe dla wywołującego, zwracane przez result-settings/.