Avayo Developers Beheer API API v2

Beheer API

Lees en onderhoud je catalogus: evenementen, voorstellingen, producten, categorieën, locaties, gebruikers en scannersleutels. Bedoeld voor een koppeling met je eigen systeem, niet voor rapportage — daarvoor is de Analytics API.

Zeven resources, elk met dezelfde vorm. Authenticatie, foutmeldingen en de envelop staan op Conventies.

Rechten

Een token draagt losse rechten. Voor deze endpoints heb je er twee nodig:

readElke GET.
writeElke POST, PUT, PATCH en DELETE.

Mist je token het benodigde recht, dan krijg je 403 met de naam van het ontbrekende recht in het bericht. analytics staat hier los van: een token dat alleen cijfers mag ophalen komt niet bij de catalogus, en omgekeerd. Je stelt de rechten per token in in je backoffice, onder Instellingen → API-tokens.

De resources

PadWat het is
/api/v2/eventsEvenementen.
/api/v2/performancesVoorstellingen: een datum en tijd binnen een evenement.
/api/v2/categoriesCategorieën waarin producten gegroepeerd staan.
/api/v2/productsTicketsoorten en andere producten.
/api/v2/locationsLocaties.
/api/v2/usersLogins van je medewerkers.
/api/v2/api_keysScannersleutels.

Elke resource kent GET op de lijst en op één record, en POST, PUT en DELETE om te wijzigen. Twee uitzonderingen staan onderaan deze pagina.

Verzoek
GET /api/v2/events
  ?filter[online]=true
  &sort=start_date&direction=desc
  &limit=25&offset=0
Antwoord
{ "meta": { "total": 1265, "count": 25, "limit": 25,
            "offset": 0, "has_more": true },
  "data": [ { "id": 108358, "online": true, ... } ] }

limit is standaard 50 en maximaal 200. Vraag je meer, dan krijg je er 200 — geen foutmelding. Blader verder met offset zolang meta.has_more waar is.

Filteren en sorteren

Beide zijn een korte lijst per resource, geen vrije querytaal. Vraag je iets dat er niet in staat, dan krijg je 400 met de toegestane waarden erbij — je hoeft dus niet te raden.

Resourcefilter[…]sort
events onlineday_ticket idstart_datename_nl
performances event_idonline idstart
categories event_idonline id
products event_idcategory_idonline idname_nl
locations geen idnamecity
users roleactive idemail
api_keys deleted iddescription

direction is asc of desc, standaard asc. Zonder sort wordt er op id gesorteerd.

Meertalige velden

Namen en beschrijvingen bestaan per taal, met de taalcode aan het veld geplakt: name_nl, name_de, name_fr, name_en. Dat geldt ook voor description_… en ticket_notice_…. Er is geen veld dat automatisch de taal van de bezoeker kiest; die keuze maak je zelf.

Een voorstelling
{ "id": 44120, "event_id": 108358, "location_id": 91,
  "start": "2026-11-24T10:00:00+01:00",
  "type_of_performance": 2, "capacity": 400,
  "free_capacity": 118, "online": true }

free_capacity is niet altijd een echt getal

Bij een voorstelling met vrije verkoop bestaat er geen limiet om tegen af te zetten. Dit veld geeft daar een vaste waarde terug die niets betekent. Wil je weten hoe vol een voorstelling werkelijk zit, gebruik dan availability in de Analytics API: die geeft voor zo'n voorstelling leeg terug in plaats van een getal.

Twee dingen die anders werken dan je verwacht

Een login aanmaken kan niet via de API

POST /api/v2/users

Dit geeft 405. Een API-token is bedoeld om gegevens uit te wisselen, niet om toegang uit te delen; een login maak je aan in je backoffice. Bij het bijwerken van een bestaande gebruiker worden role en password genegeerd — meesturen levert geen foutmelding op, maar er verandert niets aan die twee velden.

api_keys gaat over scannersleutels

GET /api/v2/api_keys

Deze lijst bevat de sleutels van je scanners, niet je API-tokens. Je eigen token en dat van je collega's zijn via de API niet zichtbaar en niet te wijzigen; dat doe je in je backoffice. Een ingetrokken scannersleutel blijft in de lijst staan met deleted: true, zodat je kunt zien dat hij bestaan heeft.