Skip to main content
Custom properties allow you to attach arbitrary key-value metadata to a service group. They were introduced in phoss SMP v8.1.0. Each property has:
  • A type: public (visible to all callers) or private (only returned to authenticated owners)
  • A name: alphanumeric string with dots, hyphens, or underscores — max 256 characters, regex [a-zA-Z0-9.\-_]{1,256}
  • A value: string up to 256 characters; may not contain \r, \n, or \0
One predefined custom property name exists: hr.oib (Croatian OIB tax number). If used, its value must be exactly 11 digits.
XML namespace: http://busdox.org/serviceMetadata/publishing/1.0/

GET /{ServiceGroupId}/customproperties

Returns all custom properties for a service group. Unauthenticated callers receive only public properties. Authenticated owners receive all properties including private ones. Authentication: Optional. Authenticated owners see private properties.
ServiceGroupId
string
required
The participant identifier in scheme::value format, URL-encoded.
curl https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/customproperties

Error responses

StatusCondition
400ServiceGroupId cannot be parsed
404No service group with this identifier exists

GET /{ServiceGroupId}/customproperties/{PropertyName}

Returns a single custom property by name. Unauthenticated callers can only retrieve public properties. Authentication: Optional.
ServiceGroupId
string
required
The participant identifier, URL-encoded.
PropertyName
string
required
The property name. Must match [a-zA-Z0-9.\-_]{1,256}.
curl https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/customproperties/countryCode

Error responses

StatusCondition
400ServiceGroupId cannot be parsed, or PropertyName is invalid
404Service group not found, or property not found (or property is private and caller is not authenticated)

PUT /{ServiceGroupId}/customproperties

Replaces all custom properties for a service group with the provided list. Authentication: Required. Caller must own the service group.
ServiceGroupId
string
required
The participant identifier, URL-encoded.
[
  { "type": "public",  "name": "countryCode", "value": "DE" },
  { "type": "private", "name": "internalRef", "value": "REF-42" }
]
This operation replaces the entire property list. Any property not included in the request body will be deleted. To add a single property without affecting others, use the single-property PUT endpoint below.

Property type values

Type valueVisibility
publicReturned to all callers (authenticated and unauthenticated)
privateReturned only to authenticated owners

Error responses

StatusCondition
400Invalid identifier, invalid property name/value, or predefined property value violates its rule
401Missing or invalid credentials
403Authenticated user does not own the service group
404Service group not found

PUT /{ServiceGroupId}/customproperties/{PropertyType}/{PropertyName}

Sets or replaces a single custom property. If a property with the same name already exists, it is replaced regardless of its current type. Authentication: Required. Caller must own the service group.
ServiceGroupId
string
required
The participant identifier, URL-encoded.
PropertyType
string
required
Either public or private.
PropertyName
string
required
The property name. Must match [a-zA-Z0-9.\-_]{1,256}.
The property value is passed as the plain-text request body.
curl -X PUT \
  "https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/customproperties/public/countryCode" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: text/plain" \
  --data "DE"

Error responses

StatusCondition
400Invalid type (not public or private), invalid property name, value too long, or predefined property value violates its rule
401Missing or invalid credentials
403Authenticated user does not own the service group
404Service group not found

DELETE /{ServiceGroupId}/customproperties

Deletes all custom properties from a service group. Authentication: Required. Caller must own the service group.
ServiceGroupId
string
required
The participant identifier, URL-encoded.
curl -X DELETE \
  https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/customproperties \
  -H "Authorization: Bearer <token>"
Returns HTTP 200 OK with the number of deleted properties in the response body.

DELETE /{ServiceGroupId}/customproperties/{PropertyName}

Deletes a single custom property by name. Authentication: Required. Caller must own the service group.
ServiceGroupId
string
required
The participant identifier, URL-encoded.
PropertyName
string
required
The property name to delete.
curl -X DELETE \
  "https://smp.example.org/iso6523-actorid-upis%3A%3A0088%3A5060210000007/customproperties/countryCode" \
  -H "Authorization: Bearer <token>"

Error responses

StatusCondition
400Invalid property name
401Missing or invalid credentials
403Authenticated user does not own the service group
404Service group not found, or property not found

Build docs developers (and LLMs) love