DiscGolf Samåkning – API

Publikt REST-API för externa system (t.ex. Tjing) att skapa och läsa event och samåkningsinlägg. Läs och integrera fritt.

Autentisering

Skicka en API-nyckel som Authorization: Bearer <nyckel> eller X-API-Key: <nyckel>. Nycklar utfärdas av administratörer via inloggad admin-vy. Kontakta ansvarig arrangör för att få en nyckel.

Endpoints

GET/api/public/v1/events

Lista publicerade publika event. Filtrera med ?status= och ?external_source=.

POST/api/public/v1/events

Skapa eller uppdatera event. Idempotent på (external_source, external_event_id).

GET/api/public/v1/events/{id}

Hämta ett event.

PATCH/api/public/v1/events/{id}

Uppdatera delvis.

GET/api/public/v1/events/{id}/stats

Aggregerad statistik (drivers, passengers, available_seats).

GET/api/public/v1/events/{id}/posts

Anonymiserad lista av samåkningsinlägg.

POST/api/public/v1/events/{id}/close

Stäng event för nya inlägg.

POST/api/public/v1/events/{id}/archive

Arkivera event.

GET/api/public/v1/events/external/{source}/{external_id}

Slå upp event via extern ID.

Full OpenAPI-spec: /api/public/v1/openapi

Exempel – cURL

curl -H "Authorization: Bearer <nyckel>" \
  https://din-domän/api/public/v1/events

curl -X POST https://din-domän/api/public/v1/events \
  -H "Authorization: Bearer <nyckel>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Vår-open 2027",
    "city": "Göteborg",
    "start_date": "2027-05-01",
    "end_date": "2027-05-02",
    "external_source": "tjing",
    "external_event_id": "abc-123"
  }'

Felkoder

Widget-inbäddning

Klistra in i valfri sida (Tjing, WordPress, m.fl.):

<iframe
  src="https://din-domän/widget/EVENT_SLUG?lang=sv&theme=auto"
  style="width:100%;border:0;min-height:400px"
  allow="clipboard-write"
></iframe>
<script>
  window.addEventListener("message", (e) => {
    if (e.data?.type === "discgolf-samakning:resize") {
      const f = document.querySelector('iframe[src*="/widget/' + e.data.slug + '"]');
      if (f) f.style.height = e.data.height + "px";
    }
  });
</script>

Parametrar: lang, theme, primaryColor, secondaryColor,showHeader, showStats, defaultTab, ctaLabel, ctaUrl.