Service metadata describes which access point endpoints a participant supports for a given document type and process. It is keyed by the combination of participant identifier and document type identifier.
XML namespace: http://busdox.org/serviceMetadata/publishing/1.0/
GET /{ServiceGroupId}/services/{DocumentTypeId}
Returns the signed service metadata for the given participant and document type. The response is signed with the SMP’s private key using XML-DSig.
Authentication: Not required.
The participant identifier in scheme::value format, URL-encoded.
The document type identifier in scheme::value format, URL-encoded. Example: busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1
curl https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1
<? xml version = "1.0" encoding = "UTF-8" ?>
< SignedServiceMetadata xmlns = "http://busdox.org/serviceMetadata/publishing/1.0/"
xmlns:id = "http://busdox.org/transport/identifiers/1.0/" >
< ServiceMetadata >
< ServiceInformation >
< ParticipantIdentifier scheme = "iso6523-actorid-upis" > 0088:5060210000007 </ ParticipantIdentifier >
< DocumentIdentifier scheme = "busdox-docid-qns" > urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 </ DocumentIdentifier >
< ProcessList >
< Process >
< ProcessIdentifier scheme = "cenbii-procid-ubl" > urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 </ ProcessIdentifier >
< ServiceEndpointList >
< Endpoint transportProfile = "peppol-transport-as4-v2_0" >
< EndpointReference xmlns = "http://www.w3.org/2005/08/addressing" >
< Address > https://ap.example.org/as4 </ Address >
</ EndpointReference >
< RequireBusinessLevelSignature > false </ RequireBusinessLevelSignature >
< ServiceActivationDate > 2024-01-01 </ ServiceActivationDate >
< ServiceExpirationDate > 2026-12-31 </ ServiceExpirationDate >
< Certificate > MIIBkTCB+wIJ... </ Certificate >
< ServiceDescription > Peppol BIS Billing 3.0 </ ServiceDescription >
< TechnicalContactUrl > mailto:[email protected] </ TechnicalContactUrl >
</ Endpoint >
</ ServiceEndpointList >
</ Process >
</ ProcessList >
</ ServiceInformation >
</ ServiceMetadata >
< Signature xmlns = "http://www.w3.org/2000/09/xmldsig#" >
<!-- XML-DSig signature added by the SMP server -->
</ Signature >
</ SignedServiceMetadata >
Response fields
Show SignedServiceMetadata
Contains either a ServiceInformation element (for direct endpoints) or a Redirect element (pointer to another SMP).
XML-DSig signature over the ServiceMetadata element, generated by the SMP server using its configured keystore.
The participant identifier.
The document type identifier.
List of supported processes, each containing a ServiceEndpointList.
Show Endpoint attributes and child elements
Transport profile ID, e.g. peppol-transport-as4-v2_0.
EndpointReference/Address
URL of the access point.
RequireBusinessLevelSignature
Whether a business-level signature is required.
Date from which the endpoint is active (ISO 8601).
Date after which the endpoint is inactive (ISO 8601).
Base64-encoded DER X.509 certificate of the access point.
Human-readable description.
Contact URL or mailto for technical issues.
Optional URL for further technical information.
Error responses
Status Condition 400Identifier cannot be parsed 404Service group or service metadata not found, or no endpoints are registered
PUT /{ServiceGroupId}/services/{DocumentTypeId}
Creates or replaces the service metadata for the given participant and document type. Provide either a ServiceInformation block (direct endpoints) or a Redirect block.
Authentication: Required. See Authentication .
The participant identifier in scheme::value format, URL-encoded.
The document type identifier in scheme::value format, URL-encoded.
Service information body
Redirect body
curl example
<? xml version = "1.0" encoding = "UTF-8" ?>
< ServiceMetadata xmlns = "http://busdox.org/serviceMetadata/publishing/1.0/"
xmlns:id = "http://busdox.org/transport/identifiers/1.0/" >
< ServiceInformation >
< ParticipantIdentifier scheme = "iso6523-actorid-upis" > 0088:5060210000007 </ ParticipantIdentifier >
< DocumentIdentifier scheme = "busdox-docid-qns" > urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 </ DocumentIdentifier >
< ProcessList >
< Process >
< ProcessIdentifier scheme = "cenbii-procid-ubl" > urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 </ ProcessIdentifier >
< ServiceEndpointList >
< Endpoint transportProfile = "peppol-transport-as4-v2_0" >
< EndpointReference xmlns = "http://www.w3.org/2005/08/addressing" >
< Address > https://ap.example.org/as4 </ Address >
</ EndpointReference >
< RequireBusinessLevelSignature > false </ RequireBusinessLevelSignature >
< ServiceActivationDate > 2024-01-01 </ ServiceActivationDate >
< ServiceExpirationDate > 2026-12-31 </ ServiceExpirationDate >
< Certificate > MIIBkTCB+wIJ... </ Certificate >
< ServiceDescription > Peppol BIS Billing 3.0 </ ServiceDescription >
< TechnicalContactUrl > mailto:[email protected] </ TechnicalContactUrl >
</ Endpoint >
</ ServiceEndpointList >
</ Process >
</ ProcessList >
</ ServiceInformation >
</ ServiceMetadata >
<? xml version = "1.0" encoding = "UTF-8" ?>
< ServiceMetadata xmlns = "http://busdox.org/serviceMetadata/publishing/1.0/"
xmlns:id = "http://busdox.org/transport/identifiers/1.0/" >
< Redirect
href = "https://other-smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/..."
certificateUID = "some-cert-uid" />
</ ServiceMetadata >
curl -X PUT \
'https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1' \
-u [email protected] :password \
-H "Content-Type: application/xml" \
--data-binary @service-metadata.xml
The ParticipantIdentifier and DocumentIdentifier values inside the request body must match the identifiers in the URL. The server returns 400 Bad Request if they differ.
Endpoints with overlapping validity periods (same transport profile, overlapping ServiceActivationDate/ServiceExpirationDate) within the same process are rejected with 400 Bad Request.
Response
Returns HTTP 200 OK with an empty body on success.
Error responses
Status Condition 400Identifier mismatch, missing fields, or overlapping endpoint validity periods 401Missing or invalid credentials 403Authenticated user does not own the service group 404Service group does not exist
DELETE /{ServiceGroupId}/services/{DocumentTypeId}
Deletes the service metadata (or redirect) for the given participant and document type.
Authentication: Required. See Authentication .
The participant identifier in scheme::value format, URL-encoded.
The document type identifier in scheme::value format, URL-encoded.
curl -X DELETE \
'https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/services/busdox-docid-qns%3A%3Aurn%3Aoasis%3Anames%3Aspecification%3Aubl%3Aschema%3Axsd%3AInvoice-2%3A%3AInvoice%23%23urn%3Acen.eu%3Aen16931%3A2017%23compliant%23urn%3Afdc%3Apeppol.eu%3A2017%3Apoacc%3Abilling%3A3.0%3A%3A2.1' \
-u [email protected] :password
Response
Returns HTTP 200 OK on success.
Error responses
Status Condition 400Identifier cannot be parsed 401Missing or invalid credentials 403Authenticated user does not own the service group 404Service group or service metadata not found