Legacy API Referentie
Dit zijn de gemigreerde REST API-endpoints van het Museum360-platform. Deze endpoints zijn een 1:1 recreatie van de oorspronkelijke .NET API, zodat de bestaande VR/WebGL-client alleen de base URL hoeft te wijzigen.
Snel starten
Volg deze 3 stappen om je eerste API-aanroep te doen. Alles wat je nodig hebt is een API key en een terminal.
Vraag een access token aan
Stuur een POST-verzoek naar /token met je API key en inloggegevens. Dit geeft een JWT token terug dat je bij alle volgende aanroepen gebruikt.
curl -X POST https://api-accp.museum360.nl/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&apikey=YOUR_API_KEY&Username=your_user&Password=your_pass&language=nl"Je krijgt een JSON-response met een access_token veld. Kopieer deze waarde.
Haal de lijst met venues op
Gebruik je token om de lijst van alle beschikbare venues (musea) op te halen.
curl https://api-accp.museum360.nl/Unity/GetPointOfInterests \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Dit geeft een object terug met languages (beschikbare talen) en pointOfInterests (alle venues).
Haal venue-details op
Haal de volledige data van een specifieke venue op, inclusief verdiepingen, kamers, items, vragen en media.
curl https://api-accp.museum360.nl/Unity/GetPointOfInterest/1 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"Vervang /1 door het legacy ID van de venue die je wilt opvragen.
Typische API-flow
Authenticatie
De meeste endpoints vereisen een Bearer token in de Authorization header. Tokens worden verkregen via het /token endpoint.
Authorization: Bearer <access_token>Authenticatie niveaus
Geen token vereist. De aanroep is open voor iedereen.
Een geldig JWT token is verplicht in de Authorization header.
Token is optioneel. Kan ook localUsername als query parameter gebruiken.
Token
1 endpointOAuth-achtig token endpoint voor authenticatie. Alle grant types vereisen een geldige API key. Dit is altijd de eerste stap: zonder token kun je geen andere endpoints aanroepen.
Vraag een access token aan. Ondersteunde grant_types: password, guest, vredvr, wix, password+loginType=card.
application/x-www-form-urlencodedUnity
5 endpointsEndpoints voor de VR/WebGL client om venue-data, vertalingen en publieke ruimte-informatie op te halen. Dit is de kern van de API — hier laadt de VR-ervaring alle content.
Redirect (302) naar het CSV-vertaalbestand voor de VR/WebGL client UI-teksten. Dit bestand bevat alle interface-vertalingen die de VR-client toont.
Controleert of een venue (point of interest) bestaat en toegankelijk is. Gebruik dit om te checken of de gebruiker een venue mag betreden voordat je de volledige data laadt.
Haalt de publieke ruimte (public square) data op. Dit is het startpunt/lobby van de VR-ervaring. Geeft null + 404 als er geen publieke ruimte is geconfigureerd.
Haalt ALLE venues op met bijbehorende talen. Dit is de eerste data-aanroep die de VR-client doet na authenticatie — het toont de lijst van beschikbare musea/locaties.
Haalt een enkele venue op met ALLE details: verdiepingen, kamers, items, vragen, antwoorden, audio, video, highlights, promoties, en meer. Dit is de grootste response in de API.
Haalt een venue op met versiecontrole. Gebruik dit om bandbreedte te besparen: als de client al de juiste versie heeft, stuurt de API alleen een kort bericht in plaats van de volledige data.
Question
3 endpointsEndpoints voor het controleren van antwoorden op vragen bij items in een venue. Er zijn twee types vragen: meerkeuze (AnswersCheck) en open vragen (OpenAnswerCheck).
Controleert meerkeuze-antwoorden. Stuur de vraag-ID en de gekozen antwoorden. Geeft true als ALLE antwoorden correct zijn, anders false.
Haalt het eerder opgeslagen open antwoord op voor een open vraag. Retourneert de tekst die de gebruiker eerder heeft ingevuld, of null als er nog geen antwoord is.
Slaat een open antwoord op. Maakt of updatet een user_statistic record met de antwoordtekst. Retourneert altijd true (open antwoorden zijn niet goed/fout).
UserStatistic
7 endpointsEndpoints voor gebruikersstatistieken, bezoeken en locatiebeheer. Hier wordt de voortgang van de gebruiker opgeslagen: welke vragen zijn beantwoord, welke kamers bezocht, en waar de gebruiker gebleven is.
Haalt geaggregeerde statistieken op voor een venue: hoeveel vragen correct beantwoord, totaal aantal vragen, en welke GoldCube-letters ontgrendeld zijn.
Haalt statistieken op via een item ID. Zoekt automatisch de bijbehorende venue op via de keten: item → kamer → verdieping → venue.
Haalt alle beantwoorde vragen op voor een venue. Geeft een array terug met voor elke beantwoorde vraag of het correct was en eventuele open-antwoord tekst.
Haalt de laatst opgeslagen locatie van de gebruiker op: welke venue, verdieping en kamer. Gebruik dit om de gebruiker terug te brengen naar waar ze gebleven waren.
Slaat een antwoordstatistiek op. Als de gebruiker deze vraag al beantwoord heeft, wordt het record bijgewerkt (upsert). Retourneert een lege 200 response.
Registreert een bezoek aan een venue of item. Dedupliceert per dag: maximaal één bezoek per dag per type, zodat de statistieken nauwkeurig zijn.
Slaat de huidige locatie van de gebruiker op, zodat ze later kunnen terugkeren waar ze gebleven waren. Overschrijft de vorige locatie (upsert).
User
2 endpointsEndpoints voor gebruikersregistratie en mobiel nummer controle. Gebruikt voor het aanmaken van nieuwe accounts via de VR-client of Wix-integratie.
Registreert een nieuwe gebruiker op basis van mobiel nummer. Maakt een Supabase Auth gebruiker + user record aan. Het mobiele nummer wordt het username.
Controleert of een mobiel nummer al geregistreerd is. Gebruik dit voordat je Register aanroept om een duidelijke foutmelding te tonen.
GoldCube
1 endpointEndpoint voor de GoldCube-puzzel. In elke kamer van een venue kan een letter verborgen zijn. Als de gebruiker alle vragen in een kamer correct beantwoordt, wordt de letter ontgrendeld. Alle letters samen vormen een woord.
Haalt alle GoldCube-letters op voor een venue. Ontgrendelde letters worden getoond, vergrendelde letters zijn leeg. De volgorde (letterSequence) bepaalt het woord.
Foutafhandeling
De API retourneert standaard HTTP-statuscodes. Er zijn twee foutformaten: OAuth2 (voor /token) en general (voor alle andere endpoints).
Token fouten (OAuth2 formaat)
{
"error": "invalid_client",
"error_description": "Invalid API key."
}Algemene fouten
{
"error": "Invalid id"
}| Code | Betekenis | Wat te doen |
|---|---|---|
200 | Succesvol | Verwerk de response normaal |
302 | Redirect | Volg de redirect URL (alleen TranslationFile) |
400 | Ongeldige aanvraag | Controleer je parameters en request body |
401 | Ongeautoriseerd | Token verlopen of ongeldig — vraag een nieuw token aan |
404 | Niet gevonden | Het gevraagde item/venue/vraag bestaat niet |
409 | Conflict | Resource bestaat al (bijv. duplicate registratie) |
503 | Service niet beschikbaar | LEGACY_API_KEY is niet geconfigureerd op de server |
Opmerkingen
- JSON-responses strippen automatisch null-waarden om het legacy .NET NullValueHandling.Ignore gedrag na te bootsen. Dit betekent dat ontbrekende velden gewoon niet in de response staan, in plaats van null te zijn.
- Het /token endpoint accepteert zowel application/x-www-form-urlencoded als ruwe tekst body. Beide formaten worden correct geparsed.
- De API vereist dat LEGACY_API_KEY en LEGACY_JWT_SECRET geconfigureerd zijn als environment variables. Zonder deze configuratie retourneren alle legacy endpoints een 503 error.
- File URLs in responses gebruiken LEGACY_FILE_BASE_URL als basis. Zorg ervoor dat deze correct is ingesteld voor je omgeving (development, staging, production).