GraphQL-queries, het party-datamodel en voorbeelden. Afgestemd op de officiële PSB schema reference.
De VPD-service biedt een GraphQL-endpoint. De volledige, actuele definitie van alle queries en types staat in de officiële Schema Reference (partySchema) op de PSB-documentatiesite. Vraag in GraphQL alleen de velden op die je nodig hebt; onderstaande uitleg en voorbeelden zijn een praktische samenvatting.
partyfindcompanysbinaceDetails en typen voor find, company, sbi en nace staan in de schema reference.
party-query: parameterssearchidnamepostcodecitycountryNL of BElangnlmaxResults10Je kunt parameters combineren om de zoekopdracht te verfijnen.
party-type (kernvelden)idtypeisActivepreferredNamelegalNametradeNamesdescriptionidentifierssectorCodeslocationswebsiteeDeliveryhighlightsidentifiers: partyIdentifier en partyIdIdentifiers staan niet meer als platte type/value-paren op het party-object. Je gebruikt identifiers: elke entry heeft een name (label van het schema, bijv. "KvK") en een id van type partyId met onder meer value, text, schemeIdText, schemeIdNumber en schemeAuthority. Zie de schema reference voor alle velden.
Een location heeft onder andere text (volledig geformatteerd adres), street, number, numberAddition, postcode, city, country (object met o.a. iso) en optioneel latitude / longitude.
eDelivery-veldHet eDelivery-veld geeft per kanaal aan welke documenttypen een partij kan ontvangen of versturen, zonder dat je een aparte SMP-lookup hoeft uit te voeren:
acceptsprovidesPer documenttype worden onder meer channel (bijvoorbeeld Peppol), partyId (de identifier op dat kanaal), listedName, documentName, documentTypeId, processId, family en kanaalspecifieke details teruggegeven. Hiermee kan een integratie in één call controleren of een ontvanger een specifiek documenttype op een bepaald kanaal accepteert.
{
party(name: "eConnect", country: "NL", maxResults: 5) {
id
preferredName
legalName
tradeNames
identifiers {
name
id {
value
text
schemeIdText
}
}
}
}
{
party(id: "12345678", maxResults: 1) {
id
preferredName
legalName
locations {
text
street
postcode
city
country {
iso
}
latitude
longitude
}
website
}
}
{
party(search: "facturatie Woerden", maxResults: 10) {
id
type
isActive
preferredName
legalName
description
identifiers {
name
id {
value
text
}
}
sectorCodes {
type
value
text
description
}
locations {
text
postcode
city
country {
iso
}
}
website
}
}
findVoor fuzzy of onvolledige gegevens gebruik je find met een args-object (zie de documentatie voor alle optionele velden, waaronder ids.legal, ids.vat, ids.iban, ids.oin, ids.gln).
{
find(args: { name: "Gemeente", country: "NL", postcode: "3511" }) {
eConnectId
name
address
identifiers {
name
id {
value
text
}
}
}
}
Gebruik search voor brede tekstzoekacties en name of id voor gerichtere filters. Met lang stel je de taal van tekstvelden in (standaard Nederlands). Beperk het resultaat met maxResults tijdens testen. Controleer errors in de GraphQL-response bij syntactische of schemafouten; een lege lijst bij party of find betekent geen treffer, niet per se een fout.
Wil je queries interactief testen? Gebruik de VPD Playground. Of lees hoe je de VPD in je integratie verwerkt.
Probeer de VPD Playground