Skip to main content
The BDXR SMP variants expose the same URL paths as Peppol SMP but use different XML namespaces and element structures. The active variant is controlled by smp.rest.type = bdxr in application.properties.

Namespace differences

VariantXML namespace
Peppol SMP 1.xhttp://busdox.org/serviceMetadata/publishing/1.0/
OASIS BDXR SMP 1.0http://docs.oasis-open.org/bdxr/ns/SMP/1/ServiceMetadata
OASIS BDXR SMP 2.0http://docs.oasis-open.org/bdxr/ns/SMP/2/ServiceMetadata
BDXR SMP 2.0 GET requests for service groups and service metadata are served under the /bdxr-smp-2/ path prefix. Write endpoints (PUT, DELETE) use the same paths as Peppol SMP and BDXR 1.0.

GET /{ServiceGroupId} — BDXR 1.0

Returns the BDXR 1.0 service group. The path is identical to the Peppol SMP endpoint; the namespace in the XML response differs. Authentication: Not required.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
curl https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007

GET /bdxr-smp-2/{ServiceGroupId} — BDXR 2.0

Returns the BDXR 2.0 service group. Uses the /bdxr-smp-2/ path prefix and the BDXR 2.0 namespace. Authentication: Not required.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
curl https://smp.example.org/bdxr-smp-2/iso6523-actorid-upis%3A%3A0088%3A5060210000007

BDXR 2.0 structural differences

BDXR 2.0 renames several elements compared to BDXR 1.0 and Peppol SMP:
Peppol SMP / BDXR 1.0BDXR 2.0
ParticipantIdentifier with scheme attributeParticipantID with schemeID attribute
ServiceMetadataReferenceCollection / ServiceMetadataReferenceServiceReference with ID and Href elements
Signed responsesUnsigned responses

PUT /{ServiceGroupId}

Creates or updates a BDXR service group. The request body must use the BDXR 1.0 namespace when smp.rest.type = bdxr is configured. Authentication: Required. See Authentication.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
<?xml version="1.0" encoding="UTF-8"?>
<ServiceGroup xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/1/ServiceMetadata">
  <ParticipantIdentifier scheme="iso6523-actorid-upis">0088:5060210000007</ParticipantIdentifier>
  <ServiceMetadataReferenceCollection/>
</ServiceGroup>

Response

Returns HTTP 200 OK with an empty body on success.

Error responses

StatusCondition
400Identifier in URL does not match the identifier in the request body
401Missing or invalid credentials
403Authenticated user does not own the service group

DELETE /{ServiceGroupId}

Deletes the BDXR service group and all associated service metadata. This endpoint is the same for BDXR 1.0 and 2.0. Authentication: Required. See Authentication.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
curl -X DELETE \
  https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007 \
  -u [email protected]:password

Response

Returns HTTP 200 OK on success.

Error responses

StatusCondition
400Identifier cannot be parsed
401Missing or invalid credentials
403Authenticated user does not own the service group
404No service group with this identifier exists

Build docs developers (and LLMs) love