{"openapi":"3.1.0","info":{"title":"Dealnote API","version":"1.0.0","description":"API van Dealnote: offertes uit klantgesprekken, facturen en de productcatalogus van één bedrijf. Inloggen met een API-sleutel (eigenaar maakt die in Dealnote › Instellingen): header `Authorization: Bearer dn_live_...`. Bedragen in euro. `subtotaal` is excl. btw, `totaal` incl. btw. Datums in ISO 8601. Webhooks: Dealnote kan een POST sturen bij offerte.gemaakt, offerte.getekend, offerte.afgewezen, factuur.gemaakt, factuur.betaald (zie https://app.dealnote.eu/api-docs#webhooks)."},"servers":[{"url":"https://app.dealnote.eu/api/v1"}],"security":[{"apiSleutel":[]}],"paths":{"/offertes":{"get":{"operationId":"lijstOffertes","summary":"Offertes ophalen (nieuwst gewijzigd eerst)","description":"Gebruik `sinds` om alleen gewijzigde offertes op te halen, bijvoorbeeld om je CRM periodiek bij te werken.","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["concept","verstuurd","geaccepteerd","verloren"]},"description":"Filter op status"},{"name":"sinds","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Alleen offertes gewijzigd na dit tijdstip (ISO 8601)"},{"name":"zoek","in":"query","required":false,"schema":{"type":"string"},"description":"Zoek op klant, onderwerp of offertenummer"},{"name":"limiet","in":"query","required":false,"schema":{"type":"integer"},"description":"Max aantal (1-200, standaard 50)"}],"responses":{"200":{"description":"Lijst","content":{"application/json":{"schema":{"type":"object","properties":{"offertes":{"type":"array","items":{"$ref":"#/components/schemas/Offerte"}}}}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}},"post":{"operationId":"maakOfferte","summary":"Offerte maken uit notities (AI)","description":"Dealnote maakt met AI een conceptofferte uit vrije tekst (bijv. een aanvraag, notities of een formulier), met de productcatalogus en rekenregels van het bedrijf. Duurt 5 tot 20 seconden.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["notities"],"properties":{"notities":{"type":"string","description":"Wat de klant wil, zo concreet mogelijk"},"klant":{"$ref":"#/components/schemas/Klant"}}}}}},"responses":{"201":{"description":"Gemaakte offerte","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferteVolledig"}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}},"422":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}}},"/offertes/{nummer}":{"get":{"operationId":"haalOfferte","summary":"Eén offerte met regels, samenvatting en actiepunten","parameters":[{"name":"nummer","in":"path","required":true,"schema":{"type":"string"},"description":"Offertenummer (OF-2026-0001) of id"}],"responses":{"200":{"description":"Offerte","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferteVolledig"}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}},"404":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}}},"/facturen":{"get":{"operationId":"lijstFacturen","summary":"Facturen ophalen (nieuwste eerst)","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","betaald","geannuleerd","vervallen"]},"description":"Filter op status"},{"name":"sinds","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Alleen facturen gemaakt na dit tijdstip (ISO 8601)"},{"name":"limiet","in":"query","required":false,"schema":{"type":"integer"},"description":"Max aantal (1-200, standaard 50)"}],"responses":{"200":{"description":"Lijst","content":{"application/json":{"schema":{"type":"object","properties":{"facturen":{"type":"array","items":{"$ref":"#/components/schemas/Factuur"}}}}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}}},"/facturen/{nummer}":{"get":{"operationId":"haalFactuur","summary":"Eén factuur","parameters":[{"name":"nummer","in":"path","required":true,"schema":{"type":"string"},"description":"Factuurnummer (F-2026-0001) of id"}],"responses":{"200":{"description":"Factuur","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Factuur"}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}},"404":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}},"patch":{"operationId":"wijzigFactuurStatus","summary":"Factuur op betaald, open of geannuleerd zetten (bijv. vanuit boekhouding of bank)","parameters":[{"name":"nummer","in":"path","required":true,"schema":{"type":"string"},"description":"Factuurnummer of id"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"type":"string","enum":["betaald","open","geannuleerd"]}}}}}},"responses":{"200":{"description":"Bijgewerkte factuur","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Factuur"}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}},"404":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}},"422":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}}},"/producten":{"get":{"operationId":"lijstProducten","summary":"Alle producten uit de catalogus","responses":{"200":{"description":"Lijst","content":{"application/json":{"schema":{"type":"object","properties":{"producten":{"type":"array","items":{"$ref":"#/components/schemas/Product"}}}}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}},"post":{"operationId":"bijwerkenProducten","summary":"Producten toevoegen of bijwerken op artikelnummer (sku)","description":"Bestaande artikelnummers worden bijgewerkt. Met `vervang_alles: true` worden producten die niet in de lijst staan verwijderd.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["producten"],"properties":{"producten":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"vervang_alles":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Resultaat","content":{"application/json":{"schema":{"type":"object","properties":{"bijgewerkt":{"type":"integer"},"verwijderd":{"type":"integer"}}}}}},"401":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}},"422":{"description":"Fout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fout"}}}}}}}},"components":{"securitySchemes":{"apiSleutel":{"type":"http","scheme":"bearer","description":"API-sleutel dn_live_..."}},"schemas":{"Fout":{"type":"object","properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}},"Klant":{"type":"object","properties":{"naam":{"type":"string"},"adres":{"type":"string"},"email":{"type":"string"},"btw":{"type":"string"}}},"Regel":{"type":"object","properties":{"omschrijving":{"type":"string"},"aantal":{"type":"number"},"prijs":{"type":"number","description":"Prijs per stuk excl. btw"}}},"Offerte":{"type":"object","properties":{"id":{"type":"string"},"offertenummer":{"type":"string","example":"OF-2026-0001"},"status":{"type":"string","enum":["concept","verstuurd","geaccepteerd","verloren"]},"klant":{"$ref":"#/components/schemas/Klant"},"onderwerp":{"type":"string"},"subtotaal":{"type":"number","description":"Excl. btw, na korting"},"btw":{"type":"number"},"totaal":{"type":"number","description":"Incl. btw"},"gemaakt_op":{"type":"string","format":"date-time"},"gewijzigd_op":{"type":"string","format":"date-time"},"verstuurd_op":{"type":["string","null"],"format":"date-time"},"bekeken_op":{"type":["string","null"],"format":"date-time"},"getekend":{"type":["object","null"],"properties":{"op":{"type":"string"},"door":{"type":"string"}}},"afgewezen":{"type":["object","null"],"properties":{"op":{"type":"string"},"reden":{"type":"string"}}}}},"OfferteVolledig":{"allOf":[{"$ref":"#/components/schemas/Offerte"},{"type":"object","properties":{"samenvatting":{"type":"string","description":"AI-samenvatting van het klantgesprek"},"actiepunten":{"type":"array","items":{"type":"string"}},"regels":{"type":"array","items":{"$ref":"#/components/schemas/Regel"}},"korting_procent":{"type":"number"},"afspraken":{"type":"string"},"verkoper":{"type":["object","null"],"properties":{"naam":{"type":"string"},"email":{"type":"string"}}}}}]},"Factuur":{"type":"object","properties":{"id":{"type":"string"},"factuurnummer":{"type":"string","example":"F-2026-0001"},"status":{"type":"string","enum":["open","betaald","geannuleerd","vervallen"]},"klant":{"$ref":"#/components/schemas/Klant"},"onderwerp":{"type":"string"},"factuurdatum":{"type":"string","format":"date"},"vervaldatum":{"type":"string","format":"date"},"regels":{"type":"array","items":{"$ref":"#/components/schemas/Regel"}},"korting_procent":{"type":"number"},"btw_tarief":{"type":"integer"},"subtotaal":{"type":"number"},"btw":{"type":"number"},"totaal":{"type":"number"},"betaald_op":{"type":["string","null"],"format":"date-time"},"verstuurd_op":{"type":["string","null"],"format":"date-time"},"herinneringen":{"type":"integer"},"offerte_id":{"type":["string","null"]},"klantlink":{"type":"string","description":"Link waarmee de klant de factuur bekijkt (als die al gedeeld is)"}}},"Product":{"type":"object","required":["sku","naam","prijs"],"properties":{"sku":{"type":"string","description":"Artikelnummer"},"naam":{"type":"string"},"omschrijving":{"type":"string"},"prijs":{"type":"number","description":"Excl. btw"},"eenheid":{"type":"string","example":"stuk"}}}}}}