API til udfordringsresultater
API til udfordringsresultater
Whitelabel-portaler og andre understøttede integrationer kan skabe en visning af udfordringsresultater med endepunkterne nedenfor. De bruger alle udfordringskoden og kræver en godkendt API-anmodning.
/api/v1/gamification/challenge/{code}/
Integrationsadgang
API-legitimationsoplysninger, understøttede godkendelsesforløb og hastighedsgrænser aftales med DistantRace-support. Betragt et 404 fra et resultat- eller analyseendepunkt som utilgængeligt for den aktuelle anmoder; samme svar bruges, når privatlivsindstillinger skjuler ressourcen.
Rækkefølge af endepunkter #
| Endepunkt | Brug |
|---|---|
GET result-settings/ |
Find resultatkolonner, sortering, totaler, sektioner, distancer og tilgængelige valgfrie visninger |
GET heatmap/ |
Indlæs samlede celler med træningstæthed, når show_heatmap er aktiveret |
GET results/{challenger_id}/detailed/ |
Indlæs én deltagers resultat, samlet statistik, sammenligninger og aktivitetstidslinje |
GET results/{challenger_id}/activities/{activity_id}/analytics/ |
Indlæs intervaller, diagrammer og tilladt sensoranalyse for én godkendt aktivitet |
Start med result-settings/. Brug dets flag og kolonnebeskrivelser til at afgøre, hvilke kontrolelementer og skærmbilleder der skal vises, i stedet for at antage, at alle udfordringer har samme resultatformat.
Hent værdierne for challenger_id fra udfordringens paginerede results/-rangliste. Aktivitets-id'er kommer fra den indlejrede liste activities.results i det detaljerede svar.
Resultatindstillinger #
GET /api/v1/gamification/challenge/{code}/result-settings/
Svaret beskriver den aktuelle præsentation af udfordringsresultaterne:
primary_columnogordered_byidentificerer ranglistemålingen og standardsorteringen.columnsogteam_columnser sorterede visningsbeskrivelser; deres nøgler svarer til felter i deltagernes og holdenes ranglisterækker.totals,progress,sections,distancesogparticipant_dataleverer valgfri kontekst for hele udfordringen.show_mapogshow_heatmapfortæller klienten, hvilke kortvisninger der skal tilbydes.show_analyticsangiver, om denne anmoder må se en anden deltagers fysiologiske aktivitetsdata; det begrænser ikke den analyse, som anmoderen kan tilgå for sit eget resultat.results_limitedernull, når resultaterne er ubegrænsede. Et tal betyder, at anmoderen kun kan se så mange af de øverste rækker, og at kontrolelementer til filtrering, sortering og paginering af resultater skal skjules.
Disse værdier afhænger af anmoderen. Den samme udfordring kan for eksempel returnere ubegrænsede indstillinger til en deltager og begrænsede indstillinger til en bruger, der er logget ind uden at deltage.
Varmekort over træningspas #
GET /api/v1/gamification/challenge/{code}/heatmap/
Varmekortet samler godkendte GPS-aktiviteter i gitterceller på cirka 150 meter. Hver celle er [longitude, latitude, weight], hvor vægten er antallet af forskellige aktiviteter, der har passeret gennem den. En aktivitet bidrager højst én gang til hver celle, og træningspas, der er markeret som private i kildeappen, udelukkes.
Varmekort genereres efter behov. Når der ikke findes et gemt varmekort, starter den første anmodning genereringen i baggrunden og returnerer:
{"status": "pending"}
Forespørg igen efter nogle få sekunder. Et færdigt svar indeholder generated_at, cell_size, activity_count, max_weight, truncated og cells. Gemte data kan vises, mens et forældet varmekort opdateres i baggrunden.
Brug max_weight til at normalisere et vægtet tæthedslag. Hvis truncated er true, indeholder svaret de tungeste celler i stedet for alle genererede celler.
Endepunktet returnerer 404, når arrangøren ikke har aktiveret show_heatmap, under en periode med skjulte resultater, eller når offentlige resultater er begrænsede, og anmoderen ikke er deltager.
Detaljeret deltagerresultat #
GET /api/v1/gamification/challenge/{code}/results/{challenger_id}/detailed/
Svaret kombinerer:
- Deltagerens ranglisterække, valgte distance, placering og
result_rank_total. statistics, f.eks. distance, varighed, tempo eller hastighed, energi, skridt, antal aktiviteter, aktive dage, længste serie og gennemsnitspuls, når den er tilgængelig.is_own_result, som angiver, om rækken tilhører den godkendte deltager.head_to_head, som kun er tilgængelig, når en deltager ser sit eget resultat. Den omfatter placering og percentil, ranglistemålingen, afstande til nærliggende konkurrenter og lederen, feltets gennemsnit samt rækkerne på podiet.activities, en indlejret pagineret liste over godkendte og synlige aktiviteter, der er medregnet i resultatet. Hver række indeholder grundlæggende træningsmetadata, gennemsnitstempo, en ruteform, når den er tilgængelig, oghas_analytics.
For et resultat med fast distance stopper aktivitetslisten ved den aktivitet, der fuldførte den valgte distance. Senere aktiviteter vises ikke, fordi de ikke bidrog til resultatet.
Indlejret aktivitetspaginering #
Aktivitetslisten har de sædvanlige felter count, next, previous og results, men bruger særskilte forespørgselsparametre, så den ikke kolliderer med paginering på øverste niveau:
| Parameter | Betydning |
|---|---|
activities_page |
Sidetal, begyndende ved 1 |
activities_per_page |
Elementer pr. side; standardværdien er 25 og underlagt API'ets maksimum |
Placeringsuafhængige ruteformer #
Ruterne på aktivitetstidslinjen er ikke geografiske koordinater. Serveren flytter og skalerer hvert GPS-spor til et fast 158 × 108 SVG-koordinatsystem og returnerer kun:
path— SVG-stidatastartogend— punkter i det normaliserede koordinatsystempoint_count— antal punkter i den returnerede form
Absolut breddegrad, længdegrad, grænser og centrum medtages ikke. Den samme rute flyttet til et andet sted giver samme form, så den er egnet som miniature, men kan ikke placeres på et geografisk kort.
Analyse pr. aktivitet #
GET /api/v1/gamification/challenge/{code}/results/{challenger_id}/activities/{activity_id}/analytics/
Aktiviteten skal være godkendt, synlig og knyttet til netop dette deltagerresultat. Svaret indeholder grundlæggende distance, varighed, tempo og hastighed samt al analyse, der kan udledes af de gemte datastrømme:
| Blok | Indhold |
|---|---|
route |
Samme placeringsuafhængige ruteform, som bruges på aktivitetstidslinjen |
km_splits |
Hele kilometerintervaller samt et valgfrit sidste delinterval, inklusive markering af hurtigste og langsomste interval |
elevation |
Nedsamplet højdeprofil, stigning, fald, minimum og maksimum |
heart_rate og hr_zones |
Nedsamplet pulsserie, gennemsnit, maksimum, referencemaksimum og tid i fem zoner |
cadence |
Nedsamplet kadenceserie og gennemsnit |
effort_score |
Pulsbaseret vurdering af indsats |
Blokkene kan hver især være null, fordi udbydere og enheder leverer forskellige datastrømme. has_streams angiver, om der findes brugbar strømanalyse. x_kind angiver, om diagrammets x-værdier repræsenterer samlet distance eller forløbet tid.
Blokke med lav følsomhed — ruteform, intervaller, tempo og højde — er tilgængelige for alle anmodere, der kan tilgå resultatet. Fysiologiske blokke — puls, zoner, kadence og indsats — er altid tilgængelige for anmoderens eget tilgængelige resultat. For en anden deltagers aktivitet returneres de kun, når arrangøren har aktiveret show_analytics, og anmoderen opfylder reglerne for resultatsynlighed. Ellers er blokkene null, og physio_restricted er true.
Regler for synlighed og privatliv #
| Indstilling eller tilstand | Effekt |
|---|---|
show_heatmap slået fra |
Varmekortet returnerer 404; result-settings angiver show_heatmap: false |
show_analytics slået fra |
Andre deltageres fysiologiske aktivitetsblokke fjernes; egen tilgængelig analyse påvirkes ikke |
| Periode med skjulte resultater aktiv | Detaljerede deltagerresultater skjules; varmekortet returnerer 404; show_heatmap og show_analytics er false |
hide_results_public slået til |
Brugere, der er logget ind uden at deltage, begrænses til det konfigurerede antal topresultater, kan ikke indlæse varmekortet og kan ikke se andre deltageres fysiologiske analyse |
| Træningspasset er ikke godkendt eller synligt | Det udelades fra tidslinjen og kan ikke åbnes gennem analyseendepunktet |
Uden for en periode med skjulte resultater bevarer udfordringsdeltagere adgang til alle resultater. Adgang for organisationens medarbejdere kan afvige fra deltagernes adgang, men klienter bør stadig følge de anmoderspecifikke værdier, som result-settings/ returnerer.