Öppet API
Föreningens data är föreningens. Kön och medlemsregistret går alltid att exportera — och de går också att läsa maskinellt, så att föreningens andra verktyg (eller ett framtida centralt förbundsregister) kan hämta dem utan handpåläggning. API:t är skrivskyddat: registren ändras bara genom styrelsevyn och medlemmarnas egna BankID-bekräftelser.
Båda registren publiceras i samma två former — en lista över vad registret innehåller nu, och ett ändringsflöde som svarar på vad som hänt sedan förra anropet. Fyra endpoints, två frågor.
Autentisering
Styrelsen skapar API-nycklar under Inställningar → Öppet API i styrelsevyn. Nyckeln visas en enda gång och skickas som bearer-token:
Authorization: Bearer <nyckel>
En nyckel är knuten till en förening och kan återkallas när som helst. Max 120 anrop per 10 minuter och nyckel — använd ändringsflödena nedan i stället för att hämta om hela registret.
Kö-endpointerna kräver bara nyckeln. Medlems-endpointerna
kräver därtill att föreningen har medlemsregistret påslaget; utan modulen
svarar de 401, precis som en nyckel som pekar på fel
förening.
GET /api/v1/forening/{slug}/ko
Den levande kön i rättvis ordning — samma ordning som medlemmen ser
under Mina köplatser och som den öppna kölistan visar (könummer först när
ett sådant finns, därefter ködatum). Lägg till .csv för samma
fil som styrelsens egen export, kolumn för kolumn.
Fält per köplats: pos (platsen i kön just nu),
queue_no (föreningens eget könummer från en migrerad
papperskö — saknas om raden inte har ett), id,
name, email, phone,
street, postcode, city,
status (imported/active/paused/offered),
joined (den heliga kötiden), declines,
trained, last_paid, plot,
offer_accepted, created.
joined, trained och
last_paid är null när uppgiften inte finns — och
null betyder just inte uppgivet, aldrig noll eller
nej. En rad med könummer har ofta inget ködatum alls, och en tom
trained betyder inte att personen saknar introduktionskurs.
Listan omfattar den levande kön; den som fått lott eller avslutat lämnar
den och finns kvar i ändringsflödet nedan.
GET /api/v1/forening/{slug}/ko/handelser?since=2026-07-01T00:00:00Z
Köns händelselogg, nyast först — erbjudanden, ja och nej tack, vilande,
placeringar och avslut. Fält: at, kind,
name (den köandes namn), note.
since (RFC 3339) är valfritt och gör flödet till en billig
diff: skicka tillbaka at från den nyaste händelsen du
behandlat, så får du bara det som hänt efter den.
GET /api/v1/forening/{slug}/medlemmar
Hela registret som JSON (lägg till .csv för
Excel-vänlig CSV med samma kolumner som styrelsens export). Fält per
medlem: id, name, email,
phone, street, apt
(lägenhetsnummer), postcode, city,
member_no, kind
(holder/cogrower/support/partner/honorary),
magazine, since, last_paid,
status, plot, updated,
magazine_mode, sub_from, sub_to,
mag_id, dist_code.
Personnummer finns aldrig i API:t — fältet existerar
inte i svaret, oavsett vad registret vet.
Tidningsfälten, definierade: magazine
(bool) betyder står i tidningens pappersadressfil — den betydelse
fältet alltid haft, eftersom papper var den enda form som fanns. Hela
tidningsvalet står i magazine_mode
(paper/digital/none); CSV:ns
kolumn Tidning (Ja/Nej) följer samma pappersdefinition och
hela valet står i kolumnen Tidningsval.
Nya fält och kolumner läggs alltid sist — en konsument
som läser på position eller på befintliga fältnamn fortsätter fungera;
bygg aldrig in ett antagande om att kolumnlistan är komplett.
GET /api/v1/forening/{slug}/handelser?since=2026-07-01T00:00:00Z
Registrets händelselogg, nyast först — vad som hänt, när och för vem,
aldrig själva värdena. since (RFC 3339) är valfritt och
gör flödet till en billig diff: hämta bara det som hänt sedan förra
anropet. Fält: at, kind (t.ex.
imported, activated, contact_changed,
plot_coupled, marked_paid, left,
transfer_in), member, note.
Exempel
curl -H "Authorization: Bearer $NYCKEL" \ https://www.minkolonilott.se/api/v1/forening/exempelkolonin/ko curl -H "Authorization: Bearer $NYCKEL" \ https://www.minkolonilott.se/api/v1/forening/exempelkolonin/medlemmar
API:t omfattar kön och medlemsregistret (det senare tillvalsmodulen). Personuppgiftsansvaret för båda ligger hos föreningen — se personuppgiftsbiträdesavtalet — så nycklarna och vart datat skickas är föreningens eget ansvar. Frågor och önskemål: info@minkolonilott.se.