API Documentatie
REST API-referentie voor het HardwarePlay-platform. Alle endpoints retourneren JSON met de structuur { ok: true, data: ... } of { ok: false, error: { code, message } }.
https://hardwareplay.com/apiAuthenticatie: Sessie-cookies (
hp_session). Log in via /api/app/auth/login om een sessie te starten.Rate limiting: 200 req/15 min (globaal), 10 req/15 min (auth endpoints).
Authenticatie
POST/api/app/auth/registerAccount registreren
Publiek
Body: { email, displayName, password }
Retourneert het aangemaakte account en start een sessie.
POST/api/app/auth/loginInloggen met e-mail/wachtwoord
Publiek
Body: { email, password }
Start een sessie en stelt de hp_session cookie in.
GET/api/app/auth/meHuidige sessie ophalen
Sessie vereist
Retourneert de ingelogde gebruiker en sessiedata.
POST/api/app/auth/logoutUitloggen
Sessie vereist
Wist de sessiescookie.
POST/api/app/auth/challengeWallet sign-challenge
Publiek
Body: { walletAddress }
POST/api/app/auth/verifyWallet-verificatie
Publiek
Body: { walletAddress, message, signature }
POST/api/app/auth/password-reset/requestWachtwoord reset aanvragen
Publiek
Body: { email }
POST/api/app/auth/password-reset/completeWachtwoord reset voltooien
Publiek
Body: { token, password }
GET/api/app/auth/verify-emailE-mail verifiëren
Publiek
Query: ?token=...
Account
GET/api/app/accountProfiel ophalen
Sessie vereist
Retourneert volledige accountdata inclusief wallets, tags, projecten en statistieken.
PUT/api/app/accountProfiel bijwerken
Sessie vereist
Body: { displayName, bio, avatarUrl, accentColor, shipping_* }
POST/api/app/auth/passwordWachtwoord instellen/wijzigen
Sessie vereist
Body: { password }
POST/api/app/wallet/linkWallet koppelen
Sessie vereist
DELETE/api/app/wallets/:walletAddressWallet ontkoppelen
Sessie vereist
Privacy / AVG
GET/api/app/my/account/exportAlle persoonsgegevens downloaden
Sessie vereist
Retourneert een JSON-bestand met alle persoonlijke gegevens (account, tags, projecten, bestellingen, abonnementen). AVG Artikel 20 — recht op dataportabiliteit.
DELETE/api/app/my/accountAccount permanent verwijderen
Sessie vereist
Body: { password }
Verwijdert alle gebruikersgegevens permanent. Vereist wachtwoordbevestiging. Annuleert actieve Stripe-abonnementen. AVG Artikel 17 — recht op vergetelheid. Onomkeerbaar.
Projecten & Teams
POST/api/app/me/tag-projectsProject aanmaken
Sessie vereist
Body: { name, description }
DELETE/api/app/me/tag-projects/:projectIdProject verwijderen
Sessie vereist
GET/api/app/projects/:projectId/membersTeamleden ophalen
Sessie vereist
POST/api/app/projects/:projectId/membersTeamlid toevoegen
Sessie vereist
Body: { userId, role }
POST/api/app/projects/:projectId/invitesUitnodigingslink genereren
Sessie vereist
POST/api/app/project-invites/acceptUitnodiging accepteren
Sessie vereist
Body: { inviteHash }
Tags & NFC
GET/api/tags/scanNFC-tag scannen (NTAG424 met CMAC)
Publiek
Query: ?picc_data=...&cmac=...
Verifieert de cryptografische handtekening van de NFC-chip en retourneert een scan-token.
GET/api/tags/scan/staticStatische NFC-tag scannen (NTAG213/215)
Publiek
Query: ?uid=...
POST/api/app/nfc/onboardTag zelf onboarden
Sessie vereist
Body: { tagUid, tagType, label }
POST/api/app/qr/createVirtuele QR-tag aanmaken
Sessie vereist
Maakt een QR-code tag aan zonder fysieke NFC-chip.
POST/api/app/me/tags/:uidHex/swapTag-carrier vervangen
Sessie vereist
Vervangt de fysieke NFC-chip maar behoudt de tagpagina en configuratie.
PATCH/api/app/me/tags/:uidHex/project-assignmentTag aan project toewijzen
Sessie vereist
Body: { projectId } (null om los te koppelen)
Tagpagina's & Content
GET/api/app/public/tag/:nfcTagUidPublieke tagpagina ophalen
Publiek
Retourneert de volledige paginaconfiguratie inclusief blokken en modules.
GET/api/app/tags/:uidHex/pageTagpagina ophalen (eigenaar)
Sessie vereist
PUT/api/app/tags/:uidHex/pageTagpagina bijwerken
Sessie vereist
Body: Volledige paginaconfiguratie met blokken-array.
POST/api/app/media/uploadMedia uploaden
Sessie vereist
Multipart form data. Ondersteunt afbeeldingen, audio en PDF. Max 35 MB.
Interactieve modules
POST/api/app/public/tag/:uid/multiplechoice/:blockId/votePoll stemmen
Publiek
Body: { question, answer }
POST/api/app/public/tag/:uid/counter/:blockId/incrementTeller verhogen
Publiek
POST/api/app/public/tag/:uid/form/:blockId/submitFormulier indienen
Publiek
Body: { fields: [...] }
POST/api/app/public/tag/:uid/stopwatch/:blockId/scanStopwatch split registreren
Publiek
POST/api/app/public/tag/:uid/timeclock/:blockId/toggleInklokken / uitklokken
Publiek
POST/api/app/public/tag/:uid/logbook/:blockId/entryLogboekvermelding toevoegen
Publiek
POST/api/app/public/tag/:uid/chat/:blockId/messageChatbericht versturen
Publiek
Body: { text, nickname }
POST/api/app/public/tag/:uid/musicquiz/:blockId/startMuziekquiz starten
Publiek
POST/api/app/public/tag/:uid/ranking/:blockId/joinRanking-wedstrijd joinen
Publiek
POST/api/app/public/tag/:uid/uploads/:blockIdFoto uploaden naar fotowand
Publiek
POST/api/app/public/tag/:uid/scan-gps/:blockId/recordGPS-locatie registreren
Publiek
Body: { lat, lng }
Commerce & Betalingen
GET/api/app/shop/catalogProductcatalogus ophalen
Publiek
POST/api/app/me/tag-ordersTagbestelling plaatsen
Sessie vereist
Body: { items: [{ sku, quantity }], shipping }
GET/api/app/me/tag-ordersMijn bestellingen ophalen
Sessie vereist
POST/api/app/public/tag/:uid/tip/:blockId/checkoutFooi/donatie checkout
Publiek
Body: { amountEurMinor }
Maakt een Stripe Checkout-sessie aan. Betaling gaat naar de tag-eigenaar via Stripe Connect.
POST/api/app/public/tag/:uid/paywall/:blockId/checkoutPaywall checkout
Publiek
POST/api/app/account/stripe-connect/startStripe Connect onboarding starten
Sessie vereist
Retourneert een Stripe onboarding-URL.
GET/api/app/account/stripe-connect/statusStripe Connect status
Sessie vereist
Abonnementen
GET/api/app/tiersAbonnementsniveaus ophalen
Publiek
Retourneert alle beschikbare tiers met prijzen en feature-limieten.
GET/api/app/my/subscriptionMijn abonnement ophalen
Sessie vereist
GET/api/app/my/featuresAlle feature-toegangen ophalen
Sessie vereist
Retourneert per feature of deze beschikbaar is en de limiet.
GET/api/app/my/feature/:featureKeySpecifieke feature controleren
Sessie vereist
POST/api/app/my/subscription/cancelAbonnement opzeggen
Sessie vereist
Annuleert het Stripe-abonnement. Toegang blijft tot einde betaalperiode.
HPS Tokens
GET/api/app/me/hps/balanceHPS saldo ophalen
Sessie vereist
GET/api/app/me/hps/transactionsHPS transactiegeschiedenis
Sessie vereist
POST/api/app/me/hps/purchaseHPS kopen
Sessie vereist
Body: { amountEurMinor }
Admin
Admin-endpoints vereisen een account met admin-rechten.
GET/api/app/admin/shop/catalogProductcatalogus beheren
Admin vereist
GET/api/app/admin/tag-onboarding/ordersAlle bestellingen bekijken
Admin vereist
POST/api/app/admin/tag-onboarding/orders/:orderId/fulfillBestelling fulfilllen
Admin vereist
GET/api/app/admin/tiersTiers beheren
Admin vereist
POST/api/app/admin/tiersTier aanmaken/bijwerken
Admin vereist
GET/api/app/admin/treasuryTreasury dashboard
Admin vereist
POST/api/app/admin/hps/mintHPS tokens minten
Admin vereist
POST/api/app/admin/investors/allocateInvesteerder-tokens toewijzen
Admin vereist