{"openapi":"3.1.0","info":{"title":"GPT Printer","version":"0.1.0"},"paths":{"/api/gezond":{"get":{"summary":"Gezond","operationId":"gezond_api_gezond_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/producten":{"get":{"summary":"Producten","operationId":"producten_api_producten_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"groep","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groep"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/populair":{"get":{"summary":"Populair","operationId":"populair_api_populair_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/product/{referentie}":{"get":{"summary":"Product","operationId":"product_api_product__referentie__get","parameters":[{"name":"referentie","in":"path","required":true,"schema":{"type":"string","title":"Referentie"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ontwerp":{"post":{"summary":"Ontwerp","operationId":"ontwerp_api_ontwerp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OntwerpIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ontwerp/{ontwerp_id}/bijwerken":{"post":{"summary":"Bijwerken","operationId":"bijwerken_api_ontwerp__ontwerp_id__bijwerken_post","parameters":[{"name":"ontwerp_id","in":"path","required":true,"schema":{"type":"string","title":"Ontwerp Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BijwerkenIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ontwerp/{ontwerp_id}/herteken":{"post":{"summary":"Herteken","operationId":"herteken_api_ontwerp__ontwerp_id__herteken_post","parameters":[{"name":"ontwerp_id","in":"path","required":true,"schema":{"type":"string","title":"Ontwerp Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HertekenIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/plan/{plan_id}":{"get":{"summary":"Plan","operationId":"plan_api_plan__plan_id__get","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"string","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/upload":{"post":{"summary":"Upload","operationId":"upload_api_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_api_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proef":{"post":{"summary":"Proef","operationId":"proef_api_proef_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProefIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/prijs":{"post":{"summary":"Prijs Route","operationId":"prijs_route_api_prijs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrijsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bestel":{"post":{"summary":"Bestel","operationId":"bestel_api_bestel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BestelIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/chat":{"post":{"summary":"Chat","operationId":"chat_api_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/vanaf":{"get":{"summary":"Vanaf","description":"\"Vanaf\"-prijzen voor een hele pagina in één keer (hooguit 12 producten), naar het land van de bezoeker.","operationId":"vanaf_api_vanaf_get","parameters":[{"name":"producten","in":"query","required":true,"schema":{"type":"string","title":"Producten"}},{"name":"land","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Land"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/land":{"get":{"summary":"Land","description":"Land van de bezoeker (Cloudflare), voor een voorgevulde keuze; de klant kan het altijd wijzigen.","operationId":"land_api_land_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/landen":{"get":{"summary":"Landen","description":"Landen waar de drukker heen verzendt (Cloudprinter, een dag onthouden), voor de landkeuze op de site.","operationId":"landen_api_landen_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/order/{token}":{"get":{"summary":"Order Status","operationId":"order_status_api_order__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/betalen/{token}":{"get":{"summary":"Betalen","description":"De bestelknop in de chat linkt hierheen (één eigen domein op de lijst van de host). Is de Stripe-sessie\nverlopen maar de prijs nog geldig, dan maken we een nieuwe.","operationId":"betalen_betalen__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bestand/{token}/{naam}":{"get":{"summary":"Bestand","operationId":"bestand_bestand__token___naam__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"naam","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naam"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bestand/{token}":{"get":{"summary":"Bestand","operationId":"bestand_bestand__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"naam","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naam"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/upload/{token}":{"get":{"summary":"Uploadpagina","operationId":"uploadpagina_upload__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Upload Via Link","operationId":"upload_via_link_upload__token__post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_via_link_upload__token__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/stripe":{"post":{"summary":"Stripe Webhook","operationId":"stripe_webhook_webhooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/cloudprinter":{"post":{"summary":"Cloudprinter Webhook","operationId":"cloudprinter_webhook_webhooks_cloudprinter_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/beheer/v1/kerncijfers":{"get":{"summary":"Beheer Kerncijfers","description":"Kerncijfers voor de beheer-app van MEB (zie beheer.py en docs/beheer-openapi.json). Entra-token met de rol\nEigenaar of Marketing; geen persoonsgegevens in het antwoord; nooit gecachet.","operationId":"beheer_kerncijfers_beheer_v1_kerncijfers_get","parameters":[{"name":"van","in":"query","required":true,"schema":{"type":"string","title":"Van"}},{"name":"tot","in":"query","required":true,"schema":{"type":"string","title":"Tot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/beheer/v1/oss":{"get":{"summary":"Beheer Oss","description":"OSS-teller voor de beheer-app (Edwin 01-11): omzet excl. btw naar EU-landen buiten NL in het kalenderjaar, tot en\nmet `tot` (standaard vandaag). Zelfde toegang als de kerncijfers.","operationId":"beheer_oss_beheer_v1_oss_get","parameters":[{"name":"tot","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tot"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/beheer/order/{order_id}/opnieuw":{"post":{"summary":"Beheer Opnieuw","description":"Na een handmatige correctie (bv. adres) opnieuw plaatsen. Zonder `bevestig=true` alleen kijken.","operationId":"beheer_opnieuw_beheer_order__order_id__opnieuw_post","parameters":[{"name":"order_id","in":"path","required":true,"schema":{"type":"string","title":"Order Id"}},{"name":"bevestig","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Bevestig"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HerplaatsIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/beheer/bibliotheek/{naam}":{"put":{"summary":"Beheer Bibliotheek","description":"Drukbestand van een bibliotheekontwerp plaatsen (Edwin 30-10). Op de storage-account mogen geen sleutels en\nbeheerders hebben geen datarechten; de app schrijft met zijn eigen identiteit. Alleen PNG, alleen deze container.","operationId":"beheer_bibliotheek_beheer_bibliotheek__naam__put","parameters":[{"name":"naam","in":"path","required":true,"schema":{"type":"string","title":"Naam"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/openai-apps-challenge":{"get":{"summary":"Openai Challenge","operationId":"openai_challenge__well_known_openai_apps_challenge_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"BestelIn":{"properties":{"prijs":{"type":"string","title":"Prijs"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"}},"type":"object","required":["prijs"],"title":"BestelIn"},"BijwerkenIn":{"properties":{"instructie":{"type":"string","maxLength":1000,"minLength":2,"title":"Instructie"},"product":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Product"}},"type":"object","required":["instructie"],"title":"BijwerkenIn"},"Body_upload_api_upload_post":{"properties":{"bestand":{"type":"string","contentMediaType":"application/octet-stream","title":"Bestand"}},"type":"object","required":["bestand"],"title":"Body_upload_api_upload_post"},"Body_upload_via_link_upload__token__post":{"properties":{"bestand":{"type":"string","contentMediaType":"application/octet-stream","title":"Bestand"}},"type":"object","required":["bestand"],"title":"Body_upload_via_link_upload__token__post"},"ChatIn":{"properties":{"bericht":{"type":"string","maxLength":2000,"minLength":1,"title":"Bericht"},"gesprek":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gesprek"},"land":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"title":"Land"},"ontwerp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ontwerp"},"product":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Product"}},"type":"object","required":["bericht"],"title":"ChatIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HerplaatsIn":{"properties":{"adres":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Adres"},"nieuwe_referentie":{"type":"boolean","title":"Nieuwe Referentie","default":true}},"type":"object","title":"HerplaatsIn"},"HertekenIn":{"properties":{"stijl":{"type":"string","maxLength":60,"minLength":2,"title":"Stijl"},"extra":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Extra"},"product":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Product"}},"type":"object","required":["stijl"],"title":"HertekenIn"},"OntwerpIn":{"properties":{"vraag":{"type":"string","maxLength":2000,"minLength":2,"title":"Vraag"},"product":{"type":"string","title":"Product"},"tekst":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Tekst"}},"type":"object","required":["vraag","product"],"title":"OntwerpIn"},"PrijsIn":{"properties":{"proef":{"type":"string","title":"Proef"},"land":{"type":"string","maxLength":2,"minLength":2,"title":"Land"},"postcode":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Postcode"},"staat":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Staat"}},"type":"object","required":["proef","land"],"title":"PrijsIn"},"ProefIn":{"properties":{"ontwerp":{"type":"string","title":"Ontwerp"},"product":{"type":"string","title":"Product"},"opties":{"additionalProperties":{"type":"string"},"type":"object","title":"Opties","default":{}},"aantal":{"type":"integer","maximum":1500.0,"minimum":1.0,"title":"Aantal","default":1},"paginas":{"anyOf":[{"type":"integer","maximum":800.0,"minimum":1.0},{"type":"null"}],"title":"Paginas"},"extra_ontwerpen":{"items":{"type":"string"},"type":"array","maxItems":200,"title":"Extra Ontwerpen"}},"type":"object","required":["ontwerp","product"],"title":"ProefIn"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}