Offerte¶
POST Stuur een offerte in naar ZAGIS.
Voor gebruikers van PharmaPortal is het mogelijk om via een API vanuit een eigen systeem offertes in te sturen naar ZAGIS. Deze Offerte API is een REST-API met één endpoint en één mogelijke actie.
Toegang
Beschikbaar voor gebruikers van PharmaPortal.
Endpoint¶
Authenticatie¶
Deze API maakt gebruik van:
- IP-whitelisting voor beveiliging
- Een API-key voor authenticatie & rate-limiting
- HMAC voor integriteitscontrole
| Header | Toelichting |
|---|---|
x-zagis-offerte-key |
De aan uw organisatie uitgereikte API-key. |
x-zagis-offerte-hmac |
Hexadecimaal geëncodeerde SHA-512 HMAC van de request body. |
Request¶
Requests zijn POST-requests met een JSON-payload.
curl -X POST https://demo.zagis.nl/api/zagis/offerte \
-H "x-zagis-offerte-key: <uw-api-key>" \
-H "x-zagis-offerte-hmac: <hmac>" \
-H "Content-Type: application/json" \
-d @offerte.json
Voorbeeld van een payload:
{
"offerteCode": "04eba051", # Unieke offertecode die in de offerte-aanvraag vermeld staat
"readOnly": true, # Bij true controleert ZAGIS de offerte wel maar slaat deze niet op
"bijlage": { # Optioneel wanneer er een PDF bijlage wordt meegestuurd. Max 5MB
"filename": "Begeleidend Schrijven.pdf", # Optioneel, standaard 'bijlage.pdf'
"contents": "JVBERi0xLjMKJcTl8uXrp/Og0MTGCj(...)==" # BASE64 Encoded PDF
},
"antwoorden": [ // Indien in offerteaanvraag vragen zijn opgenomen
{ // Algemene vraag
"vraagId": "29b7cb44-d116-4878-8ce7-a94a756cd1fd",
"antwoord": "Ja"
},{ // Algemene vraag
"vraagId": "29b7cb44-d116-4878-8ce7-a94a756dd1fd",
"antwoord": "2025-01-01" // Datum type, altijd YYYY-MM-DD
},{ // Product specifieke vraag, product 1
"vraagId": "29b7cb44-d116-4878-8ce7-a94a756cd1fe",
"zindexNummer": 16070666,
"antwoord": "Optie 1"
},{ // Product specifieke vraag, product 2
"vraagId": "29b7cb44-d116-4878-8ce7-a94a756cd1fe",
"zindexNummer": 16070667,
"antwoord": "Optie 2"
}
],
"artikelen": [
{
"zindexNummer": 16070666,
"opmerking": "Betreft nieuwe verpakking", # Max 255 karakters
"referentie": "offerte-groep-2018-0004", # Max 255 karakters
"barcodeOpKae": false, # Barcode op kleinste afgifte eenheid, boolean
"vastOfPercentage": "vast", # "vast" of "percentage"
"volume": 1000, # Afwijkend beschikbaar jaarvolume in stuks (counting-units). Optioneel, alleen gebruiken bij een afwijkend jaarvolume
"toeslag": 1.23, # Alleen indien in offerteaanvraag is aangegeven dat toeslag geoffreerd mag worden, default 0
"prijzen": [
{
"looptijdMaanden": 12, # De toegestane looptijden zijn aangegeven in de offerte-aanvraag
"route": "groothandel", # "groothandel" of "direct"
"prijs": 4200, # als vastOfPercentage = vast, verplicht > 0
"percentage": 0 # als vastOfPercentage = percentage, verplicht > 0
},
{
"looptijdMaanden": 24,
"route": "groothandel",
"prijs": 4100,
"percentage": 0
},
{
"looptijdMaanden": 36,
"route": "groothandel",
"prijs": 4000,
"percentage": 0
}
]
},
{
"zindexNummer": 15825663,
"opmerking": "Relatieve korting tov AIP",
"referentie": "offerte-groep-2018-0008",
"barcodeOpKae": true,
"vastOfPercentage": "percentage",
"prijzen": [
{
"looptijdMaanden": 12,
"route": "groothandel",
"prijs": 0,
"percentage": 5
},
{
"looptijdMaanden": 24,
"route": "groothandel",
"prijs": 0,
"percentage": 10
},
{
"looptijdMaanden": 36,
"route": "groothandel",
"prijs": 0,
"percentage": 15
}
]
},
{
"zindexNummer": 17010102,
"opmerking": "Staffel",
"referentie": "offerte-groep-2018-0009",
"barcodeOpKae": true,
"isStaffel": true, // Alleen indien staffel is toegestaan door inkopende apotheken in dit traject
"staffelPer": "verpakking", // ['verpakking', 'verpakkingOpStof', 'patienten', 'starters', 'eenheden']
"gemetenPer": "kalenderjaar", // ['kalenderjaar', 'jaar', 'contractperiode', 'kwartaal']
"verrekeningPer": "kalenderjaar", // ['kalenderjaar', 'jaar', 'contractperiode', 'kwartaal']
"vastOfPercentage": "percentage",
"staffels": [
{
"van": 1,
"tot": 10,
"prijzen": [
{
"looptijdMaanden": 36,
"route": "groothandel",
"prijs": 0,
"percentage": 15
}
]
},{
"van": 11,
"tot": 99999999,
"prijzen": [
{
"looptijdMaanden": 36,
"route": "groothandel",
"prijs": 0,
"percentage": 25
}
]
}
]
}
]
}
Response¶
| Code | Betekenis |
|---|---|
200 |
Correct request. |
400 |
Gebrek aan payload. |
401 |
Foutieve authenticatie of HMAC. |
409 |
Inhoudelijke fout in het request (bijvoorbeeld ongeldig ZI-nummer). |
Voorbeeld van een response bij een succesvol & correct request zonder bijlage:
{
"result": "success",
"readOnly": true, # Overgenomen van veld readOnly van request
"totalRows": 6, # Totaal aantal combinaties van artikel & prijzen
"uniqueProducts": 2, # Totaal aantal verwerkte unieke ZI-nummers
"bijlage": {
"available": false,
"correct": false,
"filename": "bijlage.pdf"
}
}
Voorbeeld van een response bij een succesvol & correct request met bijlage:
{
"result": "success",
"readOnly": true, # Overgenomen van veld readOnly van request
"totalRows": 6, # Totaal aantal combinaties van artikel & prijzen
"uniqueProducts": 2, # Totaal aantal verwerkte unieke ZI-nummers
"bijlage": {
"available": true,
"correct": true,
"filename": "Begeleidend schrijven.pdf"
}
}
Voorbeeld van een response bij een inhoudelijk foutief request:
Velden¶
| Veld | Type | Omschrijving |
|---|---|---|
result |
string | success of error. |
readOnly |
boolean | Overgenomen uit het readOnly-veld van het request. |
totalRows |
integer | Totaal aantal combinaties van artikel & prijzen. |
uniqueProducts |
integer | Totaal aantal verwerkte unieke ZI-nummers. |
bijlage |
object | Status van de bijlage (available, correct, filename). |
message |
string | Foutmelding bij result = error. |
Aandachtspunten
Na het succesvol aanleveren van een offerte met de vlag readOnly op false
wordt de offertecode ongeldig gemaakt in ZAGIS; u kunt maar één keer per
offertecode een offerte indienen. Wilt u testen of uw offerte correct is,
gebruik dan readOnly = true.
Wilt u uw integratie testen? Neem tijdig contact met ons op via info@zagis.nl. Wij zetten dan testdata voor u klaar en voorzien u van API-key, API-secret & offertecodes.