PIM-integratie
In dit voorbeeld bouwen we een integratie tussen een PIM-systeem (Product Information Management) en de Boom API. Het PIM is de single source of truth — productwijzigingen worden automatisch doorgestuurd naar Boom, die vervolgens je webshop, ERP én de EDU-V Catalogue op de hoogte brengt.
Architectuur
webhook POST ┌──────────┐
┌─────────────────▶ │ Webshop │
│ └──────────┘
┌──────────┐ PUT /v1/products ┌──────────┐ │ webhook POST ┌──────────┐
│ │ ──────────────────────▶ │ │ ────────┼─────────────────▶ │ ERP │
│ PIM │ │ API │ │ └──────────┘
│ Systeem │ │ │ │
│ │ │ │ ◀───────┘
└──────────┘ └──────────┘
│ ▲
automatisch │ │ GET /edu-v/v2/catalogue-api/products
▼ │
┌──────────────────┐
│ EDU-V Catalogue │
│ │
│ Scholen, portals │
│ en bestelomg. │
└──────────────────┘
De flow:
- Een productmanager wijzigt een product in het PIM
- Het PIM stuurt de wijziging naar de Boom API via
PUT /v1/products/:ean - Boom slaat de wijziging op en:
- Verstuurt
product.updatedwebhooks naar geabonneerde systemen (webshop, ERP) - Maakt het product beschikbaar via de EDU-V Catalogue API voor scholen en portalen
- Verstuurt
Eén API-call vanuit je PIM bereikt alle kanalen: je eigen webshop via webhooks, én het hele Nederlandse onderwijsveld via de EDU-V Catalogue. Scholen zien je product in hun bestelomgeving, kunnen het bestellen, en leerlingen krijgen automatisch toegang via het aansprakenproces.
Wat is de EDU-V Catalogue?
De EDU-V Catalogue API is onderdeel van het EDU-V Afsprakenstelsel — de Nederlandse standaard voor digitale gegevensuitwisseling in het onderwijs. Als leverancier bied je via deze API je productcatalogus aan, zodat:
- Bestelomgevingen (bijv. schoolbesturen) je producten kunnen ontdekken en bestellen
- Leermiddelenportalen (bijv. Magister) productinformatie kunnen tonen aan leerlingen
- Aanspraakmanagers weten welke producten beschikbaar zijn voor licentieverlening
Het mooie: als je product in Boom staat, is het automatisch beschikbaar via de EDU-V Catalogue. Geen extra integratie nodig.
Van PIM tot leerling
PIM ──▶ /v1/products ──▶ EDU-V Catalogue ──▶ School bestelt ──▶ Aanspraak ──▶ Leerling gebruikt product
Stap 1: Authenticatie
Vraag een access token aan met je client credentials:
Token opvragen
curl -X POST https://api.example.nl/auth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=pim-sync" \
-d "client_secret=your-secret"
Stap 2: Producten synchroniseren
Wanneer een product in je PIM wordt gewijzigd, stuur de update naar de Boom API. Het product wordt dan beschikbaar via zowel de /v1/products API als de EDU-V Catalogue.
Nieuw product aanmaken
Als het product nog niet bestaat in Boom, gebruik POST /v1/products. Voeg EDU-V-specifieke velden toe zodat het product correct verschijnt in de Catalogue:
- Name
ean- Type
- string
- Description
EAN/ISBN — wordt het
productIdin de EDU-V Catalogue.
- Name
type- Type
- string
- Description
physical,digitalofcombi— bepaalt of het product licentieplichtig is.
- Name
status- Type
- string
- Description
Beschikbaarheidsstatus — wordt direct overgenomen in de EDU-V Catalogue.
- Name
licensePeriod- Type
- string
- Description
Bijv.
1j,4j— vereist voor digitale producten in EDU-V.
- Name
forSale- Type
- boolean
- Description
Moet
truezijn om zichtbaar te zijn in bestelomgevingen.
Request
curl https://api.example.nl/v1/products \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"ean": "9789493113862",
"name": "POLARIS nask1 leerwerkboek vmbo-basis 3 deel A",
"price": "32.50",
"type": "physical",
"status": "available",
"forSale": true,
"publisherId": "clx..."
}'
Na het aanmaken is het product direct beschikbaar via:
GET /v1/products/9789493113862(je eigen API)GET /edu-v/v2/catalogue-api/products/9789493113862(EDU-V Catalogue)
Bestaand product bijwerken
Voor updates gebruik PUT /v1/products/:ean. Prijswijzigingen, statusveranderingen en andere updates worden automatisch doorgevoerd in de EDU-V Catalogue.
Request
curl -X PUT https://api.example.nl/v1/products/9789493113862 \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"price": "34.95", "status": "available"}'
Stap 3: Verifieer de EDU-V Catalogue
Na het synchroniseren kun je controleren hoe je product eruitziet in de EDU-V Catalogue — precies zoals scholen en portalen het zien:
De EDU-V Catalogue API retourneert je product in het standaard EDU-V formaat, inclusief velden als publisher, studies, subjects, licensePeriod en deliveryTypes.
Request
curl https://api.example.nl/edu-v/v2/catalogue-api/products/9789493113862 \
-H "Authorization: Bearer {token}"
EDU-V Catalogue response
{
"productId": "9789493113862",
"publisher": "Boom Uitgevers",
"type": "physical",
"status": "available",
"forSale": true,
"name": "POLARIS nask1 leerwerkboek vmbo-basis 3 deel A",
"shortDescription": "Leerwerkboek nask1 voor vmbo-basis leerjaar 3",
"price": {
"priceExcl": 30.19,
"priceIncl": 32.50,
"priceCurrency": "EUR",
"validFrom": "2026-01-01"
},
"studies": [
{
"studyName": "vmbo-basis",
"subjects": [
{ "subjectPrefix": "nask1", "subjectName": "Natuur- en scheikunde 1" }
]
}
],
"media": {
"images": [
{ "url": "https://cdn.example.nl/9789493113862.jpg", "type": "cover" }
]
},
"dateCreated": "2026-03-24T10:00:00Z",
"dateLastModified": "2026-03-24T14:30:00Z"
}
Stap 4: Bulk synchronisatie
Bij de eerste koppeling of een grote cataloguswijziging wil je alle producten in één keer synchroniseren. Loop door je PIM-catalogus en stuur elk product naar de API:
Bulk sync
import ApiClient from '@example/wimpel-api'
const client = new ApiClient(token)
// Haal alle producten op uit je PIM
const pimProducts = await pim.products.list()
for (const product of pimProducts) {
try {
// Probeer eerst te updaten
await client.products.update(product.ean, {
name: product.name,
price: product.price,
status: product.available ? 'available' : 'not_yet_available',
})
} catch (err) {
if (err.status === 404) {
// Product bestaat nog niet, maak het aan
await client.products.create({
ean: product.ean,
name: product.name,
price: product.price,
type: product.isDigital ? 'digital' : 'physical',
status: product.available ? 'available' : 'not_yet_available',
forSale: true,
})
}
}
}
Tip: voor grote catalogi (1000+ producten) kun je de sync parallelliseren met batches van 10 gelijktijdige requests. Houd rekening met rate limiting.
Samenvatting
Met één integratie vanuit je PIM bereik je:
| Kanaal | Hoe | Automatisch? |
|---|---|---|
| Je eigen webshop | Webhooks (product.created/updated/deleted) | Ja |
| ERP / backoffice | Webhooks | Ja |
| EDU-V Catalogue | Beschikbaar via GET /edu-v/v2/catalogue-api/products | Ja |
| Scholen & bestelomgevingen | Ontdekken je product via de EDU-V Catalogue | Ja |
| Leermiddelenportalen | Tonen productinfo aan leerlingen | Ja |
Volgende stappen
- Registreer webhooks zodat webshops en ERP-systemen automatisch op de hoogte worden gebracht
- Bekijk het Products endpoint voor alle beschikbare velden
- Lees over de EDU-V Catalogue API voor het volledige EDU-V productmodel
- Bekijk het webshop sync voorbeeld om de ontvangende kant te bouwen