Esquema VPD: consultas y el modelo de datos party

Consultas GraphQL, el modelo de datos party y ejemplos. Alineado con la referencia oficial del esquema PSB.

El servicio VPD ofrece un endpoint GraphQL. La definición completa y actual de todas las consultas y tipos está en la Schema Reference (partySchema) oficial, en el sitio de documentación PSB. En GraphQL, solicite solo los campos que necesite. La explicación y los ejemplos siguientes son un resumen práctico.

Consultas raíz disponibles
ConsultaObjetivopartyBuscar partes; resultados ordenados por relevanciafindCoincidencia best-effort cuando los datos son inciertos o incompletos (todos los argumentos son opcionales)companyCódigos de forma jurídica / tipo de empresa para un país dadosbiCódigos SBI (clasificación sectorial neerlandesa)naceCódigos NACE (clasificación UE)

Los detalles y tipos de find, company, sbi y nace están en la referencia del esquema.

La consulta party: parámetros
ParámetroTipoDescripciónsearchStringBúsqueda libre en todos los camposidStringBúsqueda por identificador (p. ej. registro mercantil, número de IVA o eConnectId)nameStringBúsqueda por nombre (de empresa)postcodeStringFiltro por código postalcityStringFiltro por localidadcountryStringCódigo de país, p. ej. NL o BElangStringIdioma de los resultados; por defecto nlmaxResultsIntNúmero máximo de resultados; por defecto 10

Puede combinar parámetros para afinar la búsqueda.

El tipo party (campos principales)
CampoTipoDescripciónidStringID eConnect de la partetypeStringTipo de parteisActiveBooleanSi la parte está activapreferredNameStringNombre jurídico si está disponible; si no, el primer nombre comerciallegalNameStringNombre jurídico confirmado (puede estar vacío si no se ha establecido con certeza)tradeNamesStringNombres comercialesdescriptionStringDescripción breve de las actividadesidentifierspartyIdentifierIdentificadores (registro, IVA, GLN, etc.)sectorCodesactivityCódigos sectoriales (p. ej. SBI/NACE)locationslocationEstablecimientos / direcciones conocidoswebsiteStringSitio webeDeliveryeDeliveryCapacidades de entrega electrónica (incluidos canales Peppol)highlightshighlightFragmentos destacados en los resultados de búsqueda
identifiers: partyIdentifier y partyId

Los identificadores ya no son pares planos type/value en el objeto party. Se usa identifiers: cada entrada tiene un name (etiqueta del esquema, p. ej. "KvK") y un id de tipo partyId con, entre otros, value, text, schemeIdText, schemeIdNumber y schemeAuthority. Todos los campos están en la referencia del esquema.

Ubicaciones

Un location incluye, entre otros, text (dirección formateada completa), street, number, numberAddition, postcode, city, country (objeto con, entre otros, iso) y, de forma opcional, latitude / longitude.

El campo eDelivery

El campo eDelivery indica, por canal, qué tipos de documento puede recibir o enviar una parte, sin una consulta SMP aparte:

SubcampoDescripciónacceptsLista de tipos de documento que la parte puede recibirprovidesLista de tipos de documento que la parte puede enviar

Por tipo de documento se devuelven, entre otros, channel (por ejemplo Peppol), partyId (el identificador en ese canal), listedName, documentName, documentTypeId, processId, family y details específicos del canal. Así una integración puede comprobar en una sola llamada si un destinatario acepta un tipo de documento concreto en un canal determinado.

Consultas de ejemplo
Organización por nombre
{
  party(name: "eConnect", country: "NL", maxResults: 5) {
    id
    preferredName
    legalName
    tradeNames
    identifiers {
      name
      id {
        value
        text
        schemeIdText
      }
    }
  }
}
Búsqueda por identificador
{
  party(id: "12345678", maxResults: 1) {
    id
    preferredName
    legalName
    locations {
      text
      street
      postcode
      city
      country {
        iso
      }
      latitude
      longitude
    }
    website
  }
}
Búsqueda libre con más detalle
{
  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
  }
}
Entrada incierta: find

Para datos difusos o incompletos, use find con un objeto args (vea la documentación para todos los campos opcionales, incluidos 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
      }
    }
  }
}
Consejos para una búsqueda efectiva

Use search para búsquedas de texto amplias y name o id para filtros más precisos. Con lang fija el idioma de los campos de texto (neerlandés por defecto). Limite el resultado con maxResults durante las pruebas. Compruebe errors en la respuesta GraphQL ante errores de sintaxis o de esquema. Una lista vacía en party o find significa que no hay coincidencia, no necesariamente un error.

Preguntas frecuentes
¿Puedo combinar varios parámetros de búsqueda en una sola consulta `party`?

Sí. Puede usar, por ejemplo, name junto con city, postcode o country para afinar los resultados. La lista oficial de parámetros está en la referencia del esquema.

¿Cómo solicito los identificadores?

Mediante el campo identifiers en party. Seleccione name y los campos deseados de id (p. ej. value y text). Esto sustituye el patrón anterior con una lista plana partyIds { type value }.

¿Cuál es el número máximo de resultados por consulta?

Por defecto, como máximo 10 resultados para party, salvo que suba maxResults. Para una validación rápida, maxResults: 1 suele bastar.


¿Desea probar consultas de forma interactiva? Utilice el VPD Playground. O lea cómo integrar el VPD en su aplicación.

Probar el VPD Playground