Skip to main content
A service group represents a participant in the Peppol network and is identified by its participant identifier. It acts as a container for service metadata entries. XML namespace: http://busdox.org/serviceMetadata/publishing/1.0/

GET /{ServiceGroupId}

Returns the service group for the given participant identifier, including a list of references to the service metadata entries registered for that participant. Authentication: Not required.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded. Example: iso6523-actorid-upis%3A%3A0088%3A5060210000007
curl https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007

Response fields

ParticipantIdentifier
string
The participant identifier. The scheme attribute contains the identifier scheme.
ServiceMetadataReferenceCollection
object

Error responses

StatusCondition
400ServiceGroupId cannot be parsed as a valid participant identifier
404No service group with this identifier exists on this SMP

PUT /{ServiceGroupId}

Creates a new service group or updates an existing one. The participant identifier in the URL must match the identifier in the request body. 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://busdox.org/serviceMetadata/publishing/1.0/"
              xmlns:id="http://busdox.org/transport/identifiers/1.0/">
  <ParticipantIdentifier scheme="iso6523-actorid-upis">0088:5060210000007</ParticipantIdentifier>
  <ServiceMetadataReferenceCollection/>
</ServiceGroup>

Request body fields

ParticipantIdentifier
string
required
Must match the ServiceGroupId in the URL path. The scheme attribute sets the identifier scheme.
ServiceMetadataReferenceCollection
object
Can be empty. The server populates this field on GET responses — any value provided here is ignored on write.

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
If SML integration is enabled (sml.enabled = true), creating a new service group also registers the participant in the SML. Deletion removes it.

DELETE /{ServiceGroupId}

Deletes the service group and all its associated service metadata and redirects. 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
400ServiceGroupId cannot be parsed as a valid participant identifier
401Missing or invalid credentials
403Authenticated user does not own the service group
404No service group with this identifier exists

GET /list/{UserId}

Returns a list of service group references owned by the specified user. Authentication is required and the authenticated user must match the UserId in the path. Authentication: Required.
UserId
string
required
The login name (email address) of the SMP user.
curl https://smp.example.org/list/[email protected] \
  -u [email protected]:password

Build docs developers (and LLMs) love