---
title: API til udfordringsresultater
description: Byg ranglister, varmekort, deltagerdetaljer og aktivitetsanalyse til udfordringer
order: 6
source_hash: 3be9a0ef7fd2
---

# 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}/
```

::: warning 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:

```json
{"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

- [Oversigt over det offentlige API](public-api-overview.md)
- [Opsætning af whitelabel og virksomhedsløsninger](../running-events/whitelabel-and-enterprise-setup.md)
