Download OpenAPI specification:
API voor Boekwinkeltjes.nl
Test omgeving (endpoint): https://api-zandbak.boekwinkeltjes.nl/webservice/v1/
Live omgeving (endpoint): https://www.boekwinkeltjes.nl/webservice/v1/
429 met een
Retry-After-header. Het bestellingenoverzicht (GET /orders) mag 1x per 5 minuten
per URL worden opgehaald, een losse bestelling (GET /orders/{orderId}) 1x per half uur.
Gebruik voor nieuwe bestellingen en betalingen de webhook in plaats van pollen.Retrieve all orders.
Rate limit: at most 1 request per 5 minutes per URL (so per combination of query, sort and status). Do not poll this endpoint for new orders, use the webhook instead.
| page | number >= 0 Example: page=1 Page number |
| query | string Search query |
| sort | string Example: sort=+title Sorting |
| status | string Filter the orders on status |
{- "status": 200,
- "data": [
- {
- "id": 1,
- "date": "2021-12-31 12:12:12",
- "status": "new_order",
- "onlinePaymentStatus": "paid",
- "book": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "22-05-2023",
}, - "buyer": {
- "name": "Henk de Vries",
- "address": {
- "name": "Henk de Vries",
- "street": "Straat",
- "number": 12,
- "numberExt": "A",
- "zip": "7654 AA",
- "city": "Nijverdal",
- "country": "NL",
- "company": null,
- "phone": null,
- "email": "henk@example.com"
}, - "phoneNumber": "0612345555",
- "language": "nl_NL",
- "note": null
}, - "chosenShippingMethod": {
- "operator": "dhl",
- "type": "pakket",
- "parcelPoint": true,
- "parcelShopId": "176309",
- "rate": 495,
- "weight": 2000
}
}
]
}{- "status": 200,
- "data": {
- "id": 1,
- "date": "2021-12-31 12:12:12",
- "status": "new_order",
- "onlinePaymentStatus": "paid",
- "book": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}, - "buyer": {
- "name": "Henk de Vries",
- "address": {
- "name": "Henk de Vries",
- "street": "Straat",
- "number": 12,
- "numberExt": "A",
- "zip": "7654 AA",
- "city": "Nijverdal",
- "country": "NL",
- "company": "string",
- "phone": "string",
- "email": "henk@example.com"
}, - "phoneNumber": "0612345555",
- "language": "nl_NL",
- "note": "string"
}, - "chosenShippingMethod": {
- "operator": "dhl",
- "type": "pakket",
- "parcelPoint": true,
- "parcelShopId": "176309",
- "rate": 495,
- "weight": 2000
}
}
}Get single order. Rate limit: at most 1 request per 30 minutes per order. New orders and payment updates are announced through the webhook, do not poll this endpoint.
| orderId required | string |
{- "status": 200,
- "data": {
- "id": 1,
- "date": "2021-12-31 12:12:12",
- "status": "new_order",
- "onlinePaymentStatus": "paid",
- "book": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}, - "buyer": {
- "name": "Henk de Vries",
- "address": {
- "name": "Henk de Vries",
- "street": "Straat",
- "number": 12,
- "numberExt": "A",
- "zip": "7654 AA",
- "city": "Nijverdal",
- "country": "NL",
- "company": "string",
- "phone": "string",
- "email": "henk@example.com"
}, - "phoneNumber": "0612345555",
- "language": "nl_NL",
- "note": "string"
}, - "chosenShippingMethod": {
- "operator": "dhl",
- "type": "pakket",
- "parcelPoint": true,
- "parcelShopId": "176309",
- "rate": 495,
- "weight": 2000
}
}
}Changes the status of an order. Only status can be changed; other fields in the request
body are ignored, so sending a complete Order object with a modified status also works.
The change is written to the status log of the order, like a status change in Mijn
Boekwinkeltjes. Setting no_response cancels the order and makes the book available again
(its amount is increased by one); changing a cancelled order to another status reverses that.
| orderId required | string |
| status required | string Enum: "new_order" "wait_for_customer" "wait_for_payment" "wait_for_shipping" "wait_for_pickup" "shipped_wait_for_payment" "shipped_paid" "picked_up_paid" "return_received" "lost_in_transit" "sold_or_unavailable" "no_response" The new status. |
{- "status": "shipped_paid"
}{- "status": 200,
- "data": {
- "id": 1,
- "date": "2021-12-31 12:12:12",
- "status": "new_order",
- "onlinePaymentStatus": "paid",
- "book": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}, - "buyer": {
- "name": "Henk de Vries",
- "address": {
- "name": "Henk de Vries",
- "street": "Straat",
- "number": 12,
- "numberExt": "A",
- "zip": "7654 AA",
- "city": "Nijverdal",
- "country": "NL",
- "company": "string",
- "phone": "string",
- "email": "henk@example.com"
}, - "phoneNumber": "0612345555",
- "language": "nl_NL",
- "note": "string"
}, - "chosenShippingMethod": {
- "operator": "dhl",
- "type": "pakket",
- "parcelPoint": true,
- "parcelShopId": "176309",
- "rate": 495,
- "weight": 2000
}
}
}Get all books
| page | number >= 0 Example: page=1 Page number |
| per_page | integer [ 1 .. 500 ] Default: 25 Number of books per page (default 25, values above 500 are capped at 500) |
| query | string Search query |
| location | string Book storage location (the |
| for-sale-since-type | integer Enum: 0 1 2 0 = before, 1 = after, 2 = on |
| for-sale-since | string <date> Date |
| status | integer Enum: 0 1 2 0 = all, 1 = available, 2 = sold |
| language | string = 2 characters Example: language=NL Country code |
| image | string Enum: "0" "1" "2" 0 = all, 1 = without image, 2 = with image |
| price-from | number from price |
| price-to | string to price |
{- "status": 200,
- "data": [
- {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}
]
}Add new book
Add book response body
| bookNumber | integer |
| location | string |
| amount | integer |
| category1 | string Enum: "overig diverse" "detectives" "geschiedenis" "hobby" "kinderboeken" "literatuur" "literaire thriller" "psychologische thriller" "kunst" "romans" "jeugdroman" "science fiction fantasy" "strips" "studieboeken" "topografie" "toneel" |
| category2 | string |
| category3 | string |
| language | string |
| author | string |
| title | string |
| publisher | string |
| ean | number |
| shortDescription | string |
| longDescription | string |
| price | number <float> [ 0 .. 99999 ] |
| shippingCost | number <float> [ -1 .. 99999 ] |
| shippingCategory | integer |
| shippingFormat | integer or null Enum: 0 1 2 3 4 |
| date | string |
| weblink | string |
{- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}{- "status": 200,
- "data": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}
}Get single book
| bookId required | integer <int32> >= 0 Example: 1 id of book |
| type | string Default: "bookId" Enum: "bookId" "bookNumber" Type of id |
{- "status": 200,
- "data": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}
}Patch single book
| bookId required | integer <int32> >= 0 Example: 1 id of book |
Add book response body
| bookNumber | integer |
| location | string |
| amount | integer |
| category1 | string Enum: "overig diverse" "detectives" "geschiedenis" "hobby" "kinderboeken" "literatuur" "literaire thriller" "psychologische thriller" "kunst" "romans" "jeugdroman" "science fiction fantasy" "strips" "studieboeken" "topografie" "toneel" |
| category2 | string |
| category3 | string |
| language | string |
| author | string |
| title | string |
| publisher | string |
| ean | number |
| shortDescription | string |
| longDescription | string |
| price | number <float> [ 0 .. 99999 ] |
| shippingCost | number <float> [ -1 .. 99999 ] |
| shippingCategory | integer |
| shippingFormat | integer or null Enum: 0 1 2 3 4 |
| date | string |
| weblink | string |
{- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}{- "status": 200,
- "data": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}
}Upload image (jpeg/png/avif) as raw request body; the Content-Type header must match the image type.
| bookId required | integer <int32> >= 0 Example: 1 id of book |
{- "status": 201,
- "data": { }
}Upload image url
| bookId required | integer <int32> >= 0 Example: 1 id of book |
| url | string |
{- "url": "string"
}{- "status": 200,
- "data": { }
}Retrieves all packages
| page | number >= 0 Example: page=1 Page number |
| orderId | integer >= 1 Example: orderId=4006 Filter packages by order ID. Returns all non-cancelled packages that were created for this order, newest first. The result is always complete, so pagination does not apply when this filter is used. |
{- "status": 200,
- "data": [
- {
- "operator": "Dpd",
- "packageID": "string",
- "type": "SMALL",
- "name": "Hans Pieterson",
- "address": {
- "street": "Straat",
- "number": "12",
- "numberext": "A",
- "zip": "7654AA",
- "city": "Nijverdal",
- "country": "nl",
- "company": "Bedrijf BV"
}, - "weight": 500,
- "addressType": "P",
- "email": "email@boekwinkeltjes.nl",
- "phoneNumber": "+31612345678",
- "orderId": 4006,
- "rate": "2500",
- "shopID": "2224234",
- "printOptions": 1
}
]
}Posts new package (all types)
| operator required | string Enum: "PostNL" "Dpd" "DHL" "MondialRelay" |
| packageID | string |
| type required | string Enum: "STANDARD" "MAILBOX" "SMALL" |
| name | string |
required | object (Address) |
| weight | number |
| addressType | string Enum: "P" "B" |
string | |
| phoneNumber | string |
| orderId | integer |
| rate | string |
| shopID | string <= 20 characters Pickup point (parcel shop) code of the carrier, to deliver the package to a pickup point instead of a home address. Use the carrier's own code: the Mondial Relay relay number, PostNL location code, DHL parcel shop id or DPD parcel shop id. Codes can be looked up via GET /packages/parcel-shops. Required for MondialRelay (those shipments always go to a relay point), optional for the other carriers. When set, phoneNumber and email are required so the carrier can notify the recipient. |
| deliverySpeed | string Default: "standard" Enum: "standard" "prio" PostNL brievenbus (type MAILBOX) only. 'prio' selects priority delivery (24h) with a surcharge; 'standard' is regular delivery (24-48h). Ignored for other operators or package types. |
| printOptions | integer Enum: 0 1 DHL only (required for DHL). 1 = print the shipping label yourself (the label is a PDF); 0 = printless: the label is a QR-code image (image/png) that is scanned at the DHL parcel point. Printless adds a surcharge of € 0.10 (incl. VAT) to the shipping rate. |
{- "operator": "Dpd",
- "packageID": "string",
- "type": "SMALL",
- "name": "Hans Pieterson",
- "address": {
- "street": "Straat",
- "number": "12",
- "numberext": "A",
- "zip": "7654AA",
- "city": "Nijverdal",
- "country": "nl",
- "company": "Bedrijf BV"
}, - "weight": 500,
- "addressType": "P",
- "email": "email@boekwinkeltjes.nl",
- "phoneNumber": "+31612345678",
- "orderId": 4006,
- "rate": "2500",
- "shopID": "2224234",
- "printOptions": 1
}{- "status": 201,
- "data": {
- "operator": "PostNL",
- "packageID": 1234,
- "name": "Hans Pieterson",
- "type": "pakket",
- "weight": 500,
- "email": "email@boekwinkeltjes.nl",
- "phone_number": "+31612345678",
- "sID": "4006",
- "shopID": "",
- "label": {
- "packageID": 1234,
- "contentType": "application/pdf",
- "content": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
}
}Get package by ID
| id required | string |
{- "operator": "Dpd",
- "packageID": "string",
- "type": "SMALL",
- "name": "Hans Pieterson",
- "address": {
- "street": "Straat",
- "number": "12",
- "numberext": "A",
- "zip": "7654AA",
- "city": "Nijverdal",
- "country": "nl",
- "company": "Bedrijf BV"
}, - "weight": 500,
- "addressType": "P",
- "email": "email@boekwinkeltjes.nl",
- "phoneNumber": "+31612345678",
- "orderId": 4006,
- "rate": "2500",
- "shopID": "2224234",
- "printOptions": 1
}Retrieves the shipping label of a package as base64-encoded file content. Usually this is a PDF (contentType application/pdf); for DHL shipments with the printless option the label is a QR-code image (contentType image/png) that the sender scans at the DHL parcel point. Returns 404 when no label is available, e.g. because the carrier could not create one or the package was cancelled. The same label object is also included directly in the POST /packages response.
| packageId required | integer |
{- "status": 200,
- "data": {
- "packageID": 1234,
- "contentType": "application/pdf",
- "content": "JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoK..."
}
}Track package by package ID
| packageId required | integer |
{- "packageID": 1234,
- "operator": "PostNL",
- "barcode": "3SABCD1234567",
- "statusName": "In transportation",
- "statusHistory": [
- {
- "label": "Shipment collected by carrier at parcel point",
- "datetime": "2026-07-18 14:32:00"
}, - {
- "label": "Shipment received",
- "datetime": "2026-07-17 09:05:00"
}
]
}Finds pickup points (parcel shops) of a carrier near a zip code. Results are retrieved live from the carrier, closest first. The returned shopID values can be used directly in the shopID field of POST /packages.
| operator required | string Enum: "PostNL" "Dpd" "DHL" "MondialRelay" Carrier to search pickup points for |
| zip required | string Example: zip=7654AA Zip code to search around |
| country required | string Example: country=NL Uppercase ISO country code; must be a country the carrier ships to |
| city | string Example: city=Nijverdal Optional, improves the location search for some carriers |
| type | string Default: "STANDARD" Enum: "STANDARD" "MAILBOX" "SMALL" Package type the shipment will use |
| limit | integer [ 1 .. 25 ] Default: 3 Maximum number of pickup points to return |
{- "status": 200,
- "data": {
- "parcelShops": [
- {
- "shopID": "2224234",
- "name": "Primera Nijverdal",
- "addressLine1": "Keizerserf 84",
- "addressLine2": "7442MN Nijverdal"
}, - {
- "shopID": "2201982",
- "name": "Bruna Nijverdal",
- "addressLine1": "Grotestraat 5",
- "addressLine2": "7443BB Nijverdal"
}
]
}
}Post Package rate
| operator required | string Enum: "PostNL" "Dpd" "DHL" "MondialRelay" |
| packageID | string |
| type required | string Enum: "STANDARD" "MAILBOX" "SMALL" |
| name | string |
required | object (Address) |
| weight | number |
| addressType | string Enum: "P" "B" |
string | |
| phoneNumber | string |
| orderId | integer |
| rate | string |
| shopID | string <= 20 characters Pickup point (parcel shop) code of the carrier, to deliver the package to a pickup point instead of a home address. Use the carrier's own code: the Mondial Relay relay number, PostNL location code, DHL parcel shop id or DPD parcel shop id. Codes can be looked up via GET /packages/parcel-shops. Required for MondialRelay (those shipments always go to a relay point), optional for the other carriers. When set, phoneNumber and email are required so the carrier can notify the recipient. |
| deliverySpeed | string Default: "standard" Enum: "standard" "prio" PostNL brievenbus (type MAILBOX) only. 'prio' selects priority delivery (24h) with a surcharge; 'standard' is regular delivery (24-48h). Ignored for other operators or package types. |
| printOptions | integer Enum: 0 1 DHL only (required for DHL). 1 = print the shipping label yourself (the label is a PDF); 0 = printless: the label is a QR-code image (image/png) that is scanned at the DHL parcel point. Printless adds a surcharge of € 0.10 (incl. VAT) to the shipping rate. |
{- "operator": "Dpd",
- "packageID": "string",
- "type": "SMALL",
- "name": "Hans Pieterson",
- "address": {
- "street": "Straat",
- "number": "12",
- "numberext": "A",
- "zip": "7654AA",
- "city": "Nijverdal",
- "country": "nl",
- "company": "Bedrijf BV"
}, - "weight": 500,
- "addressType": "P",
- "email": "email@boekwinkeltjes.nl",
- "phoneNumber": "+31612345678",
- "orderId": 4006,
- "rate": "2500",
- "shopID": "2224234",
- "printOptions": 1
}Retrieves a list of all payments including their status and metadata.
{- "status": 200,
- "data": {
- "payments": [
- {
- "id": 0,
- "bwID": 0,
- "title": "string",
- "email": "string",
- "name": "string",
- "price": 0,
- "shippingCost": 0,
- "created": "2019-08-24T14:15:22Z",
- "status": 0,
- "successDate": "2019-08-24T14:15:22Z",
- "paymentLink": true,
- "paymentLinkUuid": "string",
- "expirationDate": "2019-08-24",
- "lastMailSent": "2019-08-24T14:15:22Z",
- "paynlSettlementsId": "string",
- "type": 0
}
], - "paginator": {
- "page": 0,
- "from": 0,
- "to": 0,
- "totalAmount": 0,
- "sort": "string",
- "direction": "string"
}
}
}Retrieves detailed information about a single payment by its ID.
| id required | integer ID of the payment |
{- "status": 200,
- "data": {
- "id": 0,
- "bwID": 0,
- "title": "string",
- "email": "string",
- "name": "string",
- "price": 0,
- "shippingCost": 0,
- "created": "2019-08-24T14:15:22Z",
- "status": 0,
- "successDate": "2019-08-24T14:15:22Z",
- "paymentLink": true,
- "paymentLinkUuid": "string",
- "expirationDate": "2019-08-24",
- "lastMailSent": "2019-08-24T14:15:22Z",
- "paynlSettlementsId": "string",
- "type": 0
}
}Generates a payment link that can be shared with customers.
The link is not e-mailed to the customer automatically: send the returned URL yourself,
or e-mail it from the order page in Mijn Boekwinkeltjes. lastMailSent of the payment shows
whether and when the link was e-mailed.
With singleIDs the payment is linked to those orders: the payment is then shown with the
order and the orders are set to wait_for_payment (orders already shipped become
shipped_wait_for_payment, orders picked up and paid are left unchanged).
| title required | string Title of the payment |
| amount required | number <float> Total amount (excluding shipping) |
| name required | string Name of the customer |
| email required | string <email> Email address of the customer |
| shippingcosts required | number <float> Shipping cost |
| availability | integer or null Optional availability field |
| singleIDs | string or null Optional comma-separated list of order IDs (the |
{- "title": "string",
- "amount": 0.1,
- "name": "string",
- "email": "user@example.com",
- "shippingcosts": 0.1,
- "availability": 0,
- "singleIDs": "string"
}{- "status": 201,
}Initiates a refund for the payment with the specified ID.
| id required | integer ID of the payment to refund |
| reason required | string Explanation for the refund |
{- "reason": "string"
}{- "status": 201,
- "data": [
- "string"
]
}Wijzigt de verzendkosten-instellingen van de verkoper.
type: none — geen verzendkosten; alle bestaande boeken worden omgezet naar € 0,00.type: fixed — vast bedrag voor alle boeken; geef fee op, of free: true voor gratis verzending. Alle bestaande boeken worden omgezet naar het nieuwe bedrag.type: variable — verzendkosten per categorie; beheer de categorieën daarna via POST /shipping-fees, PATCH /shipping-fees/{id} en DELETE /shipping-fees/{id}.Het omzetten van bestaande boeken gebeurt door een achtergrondtaak. Het doorvoeren van veranderingen kan tot 5 uur nadat u een aanpassing heeft gedaan duren, dit is afhankelijk van het aantal boeken dat u heeft.
| type required | string Enum: "none" "fixed" "variable" |
| fee | number <float> >= 0.01 Vast verzendkostenbedrag, verplicht bij type |
| free | boolean Gratis verzending, alleen bij type |
{- "type": "fixed",
- "fee": 4.95
}{- "status": 200,
- "data": {
- "type": "none",
- "fee": "string",
- "options": [
- {
- "id": 0,
- "name": "string",
- "value": 0.1
}
]
}
}Voegt een variabele verzendkostencategorie toe. Alleen mogelijk wanneer het verzendkostentype variable is (zie PUT /shipping-fees).
Geef fee op, of free: true voor een categorie met gratis verzending. Een bedrag van 0,00 of een bedrag dat al bij een andere categorie hoort is niet toegestaan.
| name required | string [ 1 .. 100 ] characters |
| fee | number <float> >= 0.01 Verplicht tenzij |
| free | boolean Gratis verzending voor deze categorie |
{- "name": "Brievenbuspakje",
- "fee": 4.25
}{- "status": 200,
- "data": {
- "type": "none",
- "fee": "string",
- "options": [
- {
- "id": 0,
- "name": "string",
- "value": 0.1
}
]
}
}| id required | integer |
| type | string Enum: "bookId" "shippingId" Which type of id |
{- "status": 200,
- "data": {
- "type": "none",
- "fee": "string",
- "options": [
- {
- "id": 0,
- "name": "string",
- "value": 0.1
}
]
}
}Wijzigt het bedrag van een variabele verzendkostencategorie. Alleen mogelijk wanneer het verzendkostentype variable is.
Met applyToExistingBooks: true worden ook de bestaande boeken in deze categorie omgezet naar het nieuwe bedrag. Dat gebeurt door een achtergrondtaak; het doorvoeren van veranderingen kan tot 5 uur nadat u een aanpassing heeft gedaan duren, dit is afhankelijk van het aantal boeken dat u heeft.
| id required | integer |
| fee required | number <float> >= 0.01 |
| applyToExistingBooks | boolean Default: false Bestaande boeken in deze categorie omzetten naar het nieuwe bedrag |
{- "fee": 4.5,
- "applyToExistingBooks": true
}{- "status": 200,
- "data": {
- "type": "none",
- "fee": "string",
- "options": [
- {
- "id": 0,
- "name": "string",
- "value": 0.1
}
]
}
}Verwijdert een variabele verzendkostencategorie. Alleen mogelijk wanneer het verzendkostentype variable is.
Met de queryparameter mergeInto worden de bestaande boeken in de verwijderde categorie omgezet naar de opgegeven categorie. Dat gebeurt door een achtergrondtaak; het doorvoeren van veranderingen kan tot 5 uur nadat u een aanpassing heeft gedaan duren, dit is afhankelijk van het aantal boeken dat u heeft. Zonder mergeInto behouden de boeken hun huidige verzendkosten.
| id required | integer |
| mergeInto | integer Id van de categorie waar de boeken uit de verwijderde categorie naartoe moeten |
{- "status": 200,
- "data": { }
}{- "status": 200,
- "data": {
- "id": 0,
- "date": "2019-08-24T14:15:22Z",
- "question": "How can I use this API?",
- "user": {
- "name": "Frank",
- "emailAddress": "development@boekwinkeltjes.nl",
- "language": "string"
}, - "book": {
- "id": 1,
- "bookNumber": 213124124124,
- "location": "bw-doos 5",
- "amount": 4,
- "category1": "detectives",
- "category2": "horror",
- "category3": "avontuurlijk",
- "language": "NL",
- "author": "Beatles, The",
- "title": "Let It Be",
- "publisher": "string",
- "ean": 1234567891234,
- "shortDescription": "This is a short description",
- "longDescription": "This is a long description, lorem ipsum dolor sit amet",
- "price": 10.99,
- "shippingCost": 6.99,
- "shippingCategory": 1,
- "shippingFormat": 2,
- "date": "2023-05-22 11:45:22",
}
}
}Boekwinkeltjes kan je koppeling actief op de hoogte brengen van nieuwe bestellingen,
afgeronde betalingen en nieuwe berichten. Gebruik de webhook in plaats van het
periodiek ophalen van GET /orders: de webhook is sneller en de orders-endpoints zijn
rate-limited.
Inschakelen. Geef je webhook-URL (https) door aan data@boekwinkeltjes.nl. Wij
koppelen die aan je API-key. De ingestelde URL en het tijdstip van de laatste
geslaagde melding zie je in Mijn Boekwinkeltje → Mijn gegevens en in
GET /settings (webhookUrl).
Wat wij sturen. Een POST naar jouw URL met Content-Type: application/json
en dit body:
{"object": "Order", "status": "new", "identifier": 123456, "bwID": 1234}
object |
status |
Wanneer | identifier |
|---|---|---|---|
Order |
new |
Een koper heeft een bestelling geplaatst | Het bestelnummer, ophalen met GET /orders/{orderId} |
Payment |
update |
Een online betaling is voltooid of terugbetaald | Het betalings-id, ophalen met GET /payments/{id} |
Message |
new |
Een koper stuurde een bericht terwijl je niet online was in het berichtencentrum | Het bericht-id in het berichtencentrum (nog niet via de API op te halen) |
bwID is altijd je eigen boekwinkelnummer. De melding bevat alleen deze vier velden,
geen bestel- of betaalgegevens: haal die na ontvangst op met het genoemde endpoint.
Voor een betaling kijk je naar status in het antwoord van GET /payments/{id}
(3 = voltooid, 7 = terugbetaald).
Afleveren. De melding wordt via een wachtrij verstuurd en komt meestal binnen
enkele seconden na de gebeurtenis aan. Antwoord met een HTTP-status 2xx, bij
voorkeur direct en zonder zware verwerking in het request. Er is geen
handtekening, authenticatie of herhaalde poging: controleer zelf of bwID jouw
nummer is en gebruik een URL die niet te raden is. Een melding die bij jou niet
aankomt wordt niet opnieuw aangeboden. Haal daarom bij het opstarten van je
koppeling, of hooguit een paar keer per dag, GET /orders?status=new_order op als
vangnet.
Sent by Boekwinkeltjes to the webhook URL configured for your API key, with Content-Type: application/json. The body only identifies the object; fetch the details with GET /orders/{orderId} or GET /payments/{id}. Respond with a 2xx status. There is no signature and no retry, see the description of this section.
| object required | string Enum: "Order" "Payment" "Message" What the notification is about |
| status required | string Enum: "new" "update"
|
| identifier required | integer Id of the object: the order id for |
| bwID required | integer Your own Boekwinkeltjes seller number |
{- "object": "Order",
- "status": "new",
- "identifier": 123456,
- "bwID": 1234
}