API för utmaningsresultat

API för utmaningsresultat

Whitelabel-portaler och andra integrationer som stöds kan bygga en upplevelse för utmaningsresultat med slutpunkterna nedan. Alla använder utmaningskoden och kräver en autentiserad API-begäran.

/api/v1/gamification/challenge/{code}/

Integrationsåtkomst

API-uppgifter, autentiseringsflöden som stöds och hastighetsbegränsningar avtalas med DistantRace support. Behandla ett 404 från en resultat- eller analysslutpunkt som att resursen inte är tillgänglig för den aktuella anroparen; samma svar används när sekretessinställningar döljer resursen.

Slutpunkternas ordning #

Slutpunkt Användning
GET result-settings/ Upptäck resultatkolumner, sortering, totaler, sektioner, distanser och tillgängliga valfria vyer
GET heatmap/ Läs in samlade celler för träningsdensitet när show_heatmap är aktiverat
GET results/{challenger_id}/detailed/ Läs in en deltagares resultat, samlad statistik, jämförelser och aktivitetstidslinje
GET results/{challenger_id}/activities/{activity_id}/analytics/ Läs in mellantider, diagram och tillåten sensoranalys för en accepterad aktivitet

Börja med result-settings/. Använd dess flaggor och kolumnbeskrivningar för att avgöra vilka kontroller och skärmar som ska visas, i stället för att anta att alla utmaningar har samma resultatformat.

Hämta värden för challenger_id från utmaningens paginerade topplista results/. Aktivitets-ID:n kommer från den nästlade listan activities.results i det detaljerade svaret.

Resultatinställningar #

GET /api/v1/gamification/challenge/{code}/result-settings/

Svaret beskriver den aktuella presentationen av utmaningsresultaten:

  • primary_column och ordered_by identifierar rankningsmåttet och standardsorteringen.
  • columns och team_columns är ordnade visningsbeskrivningar; deras nycklar motsvarar fält i deltagarnas och lagens topplisterader.
  • totals, progress, sections, distances och participant_data ger valfritt sammanhang för hela utmaningen.
  • show_map och show_heatmap talar om för klienten vilka kartvyer som ska erbjudas. show_analytics anger om anroparen får se fysiologiska aktivitetsdata för en annan deltagare; det begränsar inte anroparens egen åtkomliga analys.
  • results_limited är null när resultaten är obegränsade. Ett tal innebär att anroparen bara kan se så många topprader och att kontroller för filtrering, sortering och paginering av resultat ska döljas.

Värdena är anpassade till anroparen. Samma utmaning kan till exempel ge obegränsade inställningar till en deltagare och begränsade inställningar till en inloggad användare som inte deltar.

Värmekarta över träningspass #

GET /api/v1/gamification/challenge/{code}/heatmap/

Värmekartan samlar accepterade GPS-aktiviteter i rutnätsceller på cirka 150 meter. Varje cell är [longitude, latitude, weight], där vikten är antalet unika aktiviteter som passerade genom den. En aktivitet bidrar högst en gång till varje cell och träningspass som markerats som privata i källappen utesluts.

Värmekartor genereras vid behov. När ingen lagrad värmekarta finns startar den första begäran generering i bakgrunden och returnerar:

{"status": "pending"}

Fråga igen efter några sekunder. Ett färdigt svar innehåller generated_at, cell_size, activity_count, max_weight, truncated och cells. Lagrade data kan fortsätta att visas medan en inaktuell värmekarta uppdateras i bakgrunden.

Använd max_weight för att normalisera ett viktat densitetslager. Om truncated är true innehåller svaret de tyngsta cellerna i stället för alla genererade celler.

Slutpunkten returnerar 404 när arrangören inte har aktiverat show_heatmap, under en period med dolda resultat eller när offentliga resultat är begränsade och anroparen inte är deltagare.

Detaljerat deltagarresultat #

GET /api/v1/gamification/challenge/{code}/results/{challenger_id}/detailed/

Svaret kombinerar:

  • Deltagarens topplisterad, valda distans, placering och result_rank_total.
  • statistics, till exempel distans, varaktighet, tempo eller hastighet, energi, steg, antal aktiviteter, aktiva dagar, längsta serie och genomsnittspuls när den finns.
  • is_own_result, som anger om raden tillhör den autentiserade deltagaren.
  • head_to_head, som bara är tillgängligt när en deltagare visar sitt eget resultat. Det innehåller placering och percentil, rankningsmåttet, avstånd till närliggande konkurrenter och ledaren, fältets genomsnitt samt pallraderna.
  • activities, en nästlad paginerad lista över accepterade och synliga aktiviteter som tillgodoräknats resultatet. Varje rad innehåller grundläggande träningsmetadata, genomsnittstempo, en ruttform när den finns och has_analytics.

För ett resultat med fast distans slutar aktivitetslistan vid den aktivitet som slutförde den valda distansen. Senare aktiviteter visas inte eftersom de inte bidrog till det resultatet.

Nästlad aktivitetspaginering #

Aktivitetslistan har de vanliga fälten count, next, previous och results, men använder särskilda frågeparametrar så att den inte krockar med paginering på toppnivån:

Parameter Betydelse
activities_page Sidnummer, med början på 1
activities_per_page Poster per sida; standardvärdet är 25 och underställt API:ets maxgräns

Platsoberoende ruttformer #

Rutterna i aktivitetstidslinjen är inte geografiska koordinater. Servern flyttar och skalar varje GPS-spår till ett fast SVG-koordinatutrymme på 158 × 108 och returnerar endast:

  • path — SVG-sökvägsdata
  • start och end — punkter i det normaliserade koordinatutrymmet
  • point_count — antal punkter i den returnerade formen

Absolut latitud, longitud, gränser och centrum ingår inte. Samma rutt flyttad till en annan plats ger samma form, så den passar som miniatyr men kan inte ritas på en geografisk karta.

Analys per aktivitet #

GET /api/v1/gamification/challenge/{code}/results/{challenger_id}/activities/{activity_id}/analytics/

Aktiviteten måste vara accepterad, synlig och kopplad till just det deltagarresultatet. Svaret innehåller grundläggande distans, varaktighet, tempo och hastighet samt all analys som kan härledas från de lagrade dataströmmarna:

Block Innehåll
route Samma platsoberoende ruttform som används i aktivitetstidslinjen
km_splits Hela kilometermellantider plus en valfri sista delsträcka, inklusive markeringar för snabbast och långsammast
elevation Nedsamplad höjdprofil, stigning, höjdförlust, minimum och maximum
heart_rate och hr_zones Nedsamplad pulsserie, genomsnitt, maximum, referensmaximum och tid i fem zoner
cadence Nedsamplad kadensserie och genomsnitt
effort_score Pulsbaserad uppskattning av ansträngning

Varje block kan oberoende vara null eftersom leverantörer och enheter tillhandahåller olika dataströmmar. has_streams anger om användbar strömanalys finns. x_kind anger om diagrammets x-värden representerar kumulativ distans eller förfluten tid.

Block med låg känslighet — ruttform, mellantider, tempo och höjd — är tillgängliga för alla anropare som kan nå resultatet. Fysiologiska block — puls, zoner, kadens och ansträngning — är alltid tillgängliga för anroparens eget nåbara resultat. För en annan deltagares aktivitet returneras de bara när arrangören har aktiverat show_analytics och anroparen uppfyller reglerna för resultatsynlighet. Annars är blocken null och physio_restricted är true.

Regler för synlighet och sekretess #

Inställning eller tillstånd Effekt
show_heatmap av Värmekartan returnerar 404; result-settings rapporterar show_heatmap: false
show_analytics av Andra deltagares fysiologiska aktivitetsblock tas bort; egen nåbar analys påverkas inte
Period med dolda resultat aktiv Detaljerade deltagarresultat döljs; värmekartan returnerar 404; show_heatmap och show_analytics är false
hide_results_public Inloggade användare som inte deltar begränsas till det konfigurerade antalet toppresultat, kan inte läsa in värmekartan och kan inte se andra deltagares fysiologiska analys
Träningspasset är inte accepterat eller synligt Det utelämnas från tidslinjen och kan inte öppnas genom analysslutpunkten

Utmaningsdeltagare behåller åtkomst till fullständiga resultat utanför en period med dolda resultat. Organisationens personal kan ha annan åtkomst än deltagarna, men klienter ska ändå följa de anroparspecifika värden som returneras av result-settings/.

Relaterat #

Visa som Markdown