Přeskočit na hlavní obsah

OFeed API

OFeed nabízí dva typy API - REST a GraphQL, které umožňují vlastní integraci. Koukni na existující příklady pro inspiraci.

REST API​

Swagger s detailnějším popisem je dostupný 👉.

Autorizace​

Využivá se Basic eventId:eventPassword enkódované jako Base64 řetězec, jak je vidět u PUT a POST dotazu v authorization hlavičce.

Nahrání dat​

  • Endpoint: https://api.orienteerfeed.com/rest/v1/upload/iof
  • je možné volat pravidelně (například po 5ti minutách) a zpracovává se celé xml, což může něco málo trvat a není to optimální.

Aktualizace dat​

Aktualizace dat je rozdělěná na dvě skupiny:

  • 1. změna statusu​

    • jednoduchý endpoint pouze pro změnu statusu (Běží/Neběží)
    • URL: https://api.orienteerfeed.com/rest/v1/events/{eventId}/competitors/{competitorId}/status-change
  • 2. změna údajů závodníka​

    • upravuje ostatní údaje o závodníkovi jako např. číslo čipu
    • URL: https://api.orienteerfeed.com/rest/v1/events/{eventId}/competitors/{competitorId}

Získání přehledu změn​

Snadno lze získat přehled všech změn, které v průběhu závodu nastaly. Ideální je využít origin parametr (např. START) o omezit jen na konkrétní místo původu. Jde o autorizovaný endpoint ačkoliv je to GET požadavek. URL: https://api.orienteerfeed.com/rest/v1/events/{eventId}/changelog?origin=START

Příklady volání​

Nahrání dat​

curl --location 'https://api.orienteerfeed.com/rest/v1/upload/iof' \
--header 'Authorization: ••••••' \
--form 'eventId="cmg4t3f0i0007my3m5hh50wl2"' \
--form 'file=@"/D:/ofeed/data/results-iof30.xml"'

Úprava závodníka​

Seznam závodníků​
curl --location 'http://localhost:3001/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors'
Přidání nového závodníka​
curl --location 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"classId": 2345,
"origin": "START",
"firstname": "Martin",
"lastname": "Křivda",
"card": 887640,
"registration":"CHC9403",
"organisation": "KOB Choceň",
"note":"OFeed CEO"
}'
Detail závodníka​
curl --location 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/4100'
Detail závodníka pomocí externího id​
curl --location 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/31/external-id'
Aktualizace dat závodníka​
curl --location --request PUT 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/4071' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"origin":"START",
"card": 8086810,
"note": "Another card, again!"
}'
Aktualizace dat závodníka pomocí externího id​

Většinou interní identifikátor pořádacího programu.

curl --location --request PUT 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/RCZ1051/external-id' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"useExternalId": true,
"origin": "START",
"note": "New note",
"card":887640
}'
Smazání závodníka​
curl --location --request DELETE 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/28' \
--header 'Authorization: ••••••'
Smazání závodníka pomocí externího id​
curl --location --request DELETE 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/16/external-id' \
--header 'Authorization: ••••••'
Smazat hromadně všechny závodníky​
curl --location --request DELETE 'http://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors' \
--header 'Authorization: ••••••'
Změna statusu​
curl --location 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/competitors/1/status-change' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"origin": "START",
"status": "Active"
}'

Získání změn​

curl --location --globoff 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2/changelog?group=true&classId={{classId}}}&origin=START' \
--header 'Authorization: ••••••'

Akce​

Detail akce​
curl --location 'https://api.orienteerfeed.com/rest/v1/events/cmg4t3f0i0007my3m5hh50wl2'

GraphQL​

Jsou dostupné totožné oprace jako pro REST. Výhodou je možnost specifikovat požadovaná data v odpovědi, což snižuje množství přenesených dat.

Url: GraphQL

Příklady​

  • QuickEvent (C++) - service

  • SI-Droid Connector (Java) - upload

  • Radio-O-Manager (Kotlin) - worker