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_column og ordered_by identificerer ranglistemålingen og standardsorteringen.
  • columns og team_columns er sorterede visningsbeskrivelser; deres nøgler svarer til felter i deltagernes og holdenes ranglisterækker.
  • totals, progress, sections, distances og participant_data leverer valgfri kontekst for hele udfordringen.
  • show_map og show_heatmap fortæller klienten, hvilke kortvisninger der skal tilbydes. show_analytics angiver, 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_limited er null, 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, og has_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-stidata
  • start og end — punkter i det normaliserede koordinatsystem
  • point_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.

Relateret #

Vis som Markdown