VPD-Schema: Abfragen und das Party-Datenmodell

GraphQL-Abfragen, das Party-Datenmodell und Beispiele. Abgestimmt auf die offizielle PSB-Schema-Referenz.

Der VPD-Dienst stellt einen GraphQL-Endpunkt bereit. Die vollständige, aktuelle Definition aller Abfragen und Typen steht in der offiziellen Schema Reference (partySchema) auf der PSB-Dokumentationsseite. Fragen Sie in GraphQL nur die Felder ab, die Sie brauchen. Die Erläuterung und die Beispiele unten sind eine praktische Zusammenfassung.

Verfügbare Root-Queries
QueryZweckpartyParteien suchen; Ergebnisse nach Relevanz sortiertfindBest-Effort-Treffer, wenn Angaben unsicher oder unvollständig sind (alle Argumente optional)companyRechtsform- bzw. Unternehmenstypcodes für ein gegebenes LandsbiSBI-Codes (niederländische Branchenklassifikation)naceNACE-Codes (EU-Klassifikation)

Details und Typen für find, company, sbi und nace stehen in der Schema-Referenz.

Die Query party: Parameter
ParameterTypBeschreibungsearchStringFreie Suche über alle FelderidStringSuche nach Identifier (z. B. Handelsregister, USt-IdNr. oder eConnectId)nameStringSuche nach (Firmen-)NamenpostcodeStringFilter auf PostleitzahlcityStringFilter auf OrtcountryStringLändercode, z. B. NL oder BElangStringSprache der Ergebnisse; Standard nlmaxResultsIntMaximale Anzahl Ergebnisse; Standard 10

Sie können Parameter kombinieren, um die Suche einzugrenzen.

Der Typ party (Kernfelder)
FeldTypBeschreibungidStringeConnect-ID der ParteitypeStringParteitypisActiveBooleanOb die Partei aktiv istpreferredNameStringJuristischer Name, falls verfügbar; sonst der erste HandelsnamelegalNameStringBestätigter juristischer Name (kann leer sein, wenn er nicht sicher feststeht)tradeNamesStringHandelsnamendescriptionStringKurze Beschreibung der TätigkeitenidentifierspartyIdentifierIdentifier (Handelsregister, USt, GLN usw.)sectorCodesactivityBranchencodes (z. B. SBI/NACE)locationslocationBekannte Standorte/AdressenwebsiteStringWebsiteeDeliveryeDeliveryMöglichkeiten der elektronischen Zustellung (u. a. Peppol-Kanäle)highlightshighlightHervorgehobene Fragmente bei Suchtreffern
identifiers: partyIdentifier und partyId

Identifier stehen nicht mehr als flache type/value-Paare auf dem Objekt party. Sie verwenden identifiers: jeder Eintrag hat einen name (Label aus dem Schema, z. B. "KvK") und eine id vom Typ partyId mit unter anderem value, text, schemeIdText, schemeIdNumber und schemeAuthority. Alle Felder stehen in der Schema-Referenz.

Standorte

Ein location hat unter anderem text (vollständig formatiertes Adresse), street, number, numberAddition, postcode, city, country (Objekt mit u. a. iso) und optional latitude / longitude.

Das Feld eDelivery

Das Feld eDelivery gibt pro Kanal an, welche Dokumenttypen eine Partei empfangen oder senden kann, ohne dass Sie einen separaten SMP-Lookup ausführen müssen:

UnterfeldBeschreibungacceptsListe der Dokumenttypen, die die Partei empfangen kannprovidesListe der Dokumenttypen, die die Partei senden kann

Pro Dokumenttyp werden unter anderem channel (zum Beispiel Peppol), partyId (der Identifier auf diesem Kanal), listedName, documentName, documentTypeId, processId, family und kanalspezifische details zurückgegeben. Damit kann eine Integration in einem Aufruf prüfen, ob ein Empfänger einen bestimmten Dokumenttyp auf einem bestimmten Kanal akzeptiert.

Beispielabfragen
Organisation nach Name
{
  party(name: "eConnect", country: "NL", maxResults: 5) {
    id
    preferredName
    legalName
    tradeNames
    identifiers {
      name
      id {
        value
        text
        schemeIdText
      }
    }
  }
}
Suche nach Identifier
{
  party(id: "12345678", maxResults: 1) {
    id
    preferredName
    legalName
    locations {
      text
      street
      postcode
      city
      country {
        iso
      }
      latitude
      longitude
    }
    website
  }
}
Freie Suche mit mehr Detail
{
  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
  }
}
Unsichere Eingabe: find

Für unscharfe oder unvollständige Angaben verwenden Sie find mit einem args-Objekt (siehe die Dokumentation für alle optionalen Felder, darunter 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
      }
    }
  }
}
Tipps für effektives Suchen

Verwenden Sie search für breite Textsuchen und name oder id für gezieltere Filter. Mit lang stellen Sie die Sprache der Textfelder ein (Standard Niederländisch). Begrenzen Sie das Ergebnis mit maxResults beim Testen. Prüfen Sie errors in der GraphQL-Antwort bei Syntax- oder Schemafehlern. Eine leere Liste bei party oder find bedeutet keinen Treffer, nicht zwingend einen Fehler.

Häufige Fragen
Kann ich mehrere Suchparameter in einer `party`-Abfrage kombinieren?

Ja. Sie können zum Beispiel name zusammen mit city, postcode oder country verwenden, um Ergebnisse einzugrenzen. Die offizielle Parameterliste steht in der Schema-Referenz.

Wie frage ich Identifier ab?

Über das Feld identifiers auf party. Wählen Sie name und die gewünschten Felder von id (z. B. value und text). Das ersetzt das ältere Muster mit einer flachen Liste partyIds { type value }.

Wie viele Ergebnisse liefert eine Abfrage höchstens?

Standardmäßig höchstens 10 Ergebnisse für party, sofern Sie maxResults nicht höher setzen. Für eine schnelle Prüfung reicht oft maxResults: 1.


Möchten Sie Abfragen interaktiv testen? Verwenden Sie den VPD Playground. Oder lesen Sie, wie Sie die VPD in Ihre Integration einbinden.

VPD Playground ausprobieren