{"openapi":"3.0.3","info":{"title":"Digitaal Geboortekaartje partner-API","version":"1.0.0","description":"Maak geboortepagina's bij een bestelling, haal de QR op voor de drukker en volg status en verlenging. Authenticatie met een API-key in de header `Authorization: Bearer dgk_live_...`. Limiet: 120 verzoeken per minuut per key."},"servers":[{"url":"/api/v1"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/pages":{"post":{"summary":"Pagina aanmaken (nog niet geclaimd, met definitief adres)","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["firstName"],"properties":{"firstName":{"type":"string"},"templateId":{"type":"string"},"plan":{"type":"string","enum":["maand","jaar"],"description":"Maakt ook een activatiecode gekoppeld aan deze pagina."}}}}}},"responses":{"201":{"description":"Aangemaakt: id, slug, url (staat in de QR), qr-links, activationCode, claimUrl"},"400":{"description":"Fout","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/pages/{id}":{"get":{"summary":"Status van een pagina","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"status: concept | online | verlopen, claimed, expiresAt"},"404":{"description":"Fout","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/pages/{id}/qr":{"get":{"summary":"QR-code voor de drukker (kan al vóór activering)","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","schema":{"type":"string","enum":["svg","png","pdf"]}},{"name":"size","in":"query","description":"Alleen pdf: 2, 3 of 4 cm","schema":{"type":"integer"}}],"responses":{"200":{"description":"Afbeelding of PDF"},"404":{"description":"Fout","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/pages/{id}/activate":{"post":{"summary":"Activeren of verlengen (partner wordt buiten het systeem gefactureerd)","security":[{"bearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["plan"],"properties":{"plan":{"type":"string","enum":["maand","jaar"]}}}}}},"responses":{"200":{"description":"status online, expiresAt"},"409":{"description":"Fout","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/vouchers":{"post":{"summary":"Bulk activatiecodes aanmaken","security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["plan","count"],"properties":{"plan":{"type":"string","enum":["maand","jaar"]},"count":{"type":"integer","minimum":1,"maximum":500}}}}}},"responses":{"201":{"description":"Lijst codes"},"400":{"description":"Fout","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}},"x-webhooks":{"description":"POST naar je webhook-URL met JSON { id, event, created, data } en header X-Webhook-Signature: sha256=<HMAC-SHA256 van de body met je webhook-secret>. Events: page.created, page.paid, page.expired."}}