Use case description of how to use the customer self-service collection to display customer profile data and process customer-initiated data changes via the Open API.
This collection follows an amendment model:
- GET endpoints return current data state and expose any pending change request.
- POST endpoints submit new amendment requests per data domain.
- DELETE endpoint cancels an existing amendment before it is processed.
Each GET response also includes an amendmentConfigurationStatus that controls whether changes go through a verification queue or are applied directly.
- GET customer's contact data
- POST create contact data amendment
- GET customer's address data
- POST create address data amendment
- GET customer's master data
- POST create master data amendment
- GET customer's payment data
- POST create payment data amendment
- DELETE withdraw customer's amendment
The customer self-service collection enables partners to build profile maintenance flows for members while keeping data changes transparent and auditable.
Core behavior:
- Changes are submitted as domain-specific amendments, not as direct updates.
- Each GET response includes
amendmentConfigurationStatus:CHANGES_WITHOUT_VERIFICATION(applied instantly),CHANGES_REQUIRE_VERIFICATION(queued for studio approval), orREAD(domain is view-only and cannot be amended). - Only one active amendment can exist per data domain at a time. Attempting to create a second amendment while one is pending returns an error.
- Each GET response includes a
pendingAmendmentobject when a change request is already in progress. Theidfield in that object is required to withdraw the amendment. - Payment amendments may require a customer signature (
requireSignature: true), passed assignature.base64SvgSignaturein the POST request.
Recommended use cases:
- Member profile maintenance in web or app
- Contact and address correction flows
- Payment method change requests
- Self-service with optional studio-side review
Use the GET endpoint for each domain before rendering an edit screen.
Use this to:
- prefill user-facing forms with current values
- read
amendmentConfigurationStatusto determine whether changes apply immediately or require review - detect a
pendingAmendmentand surface it to the user before allowing new submissions
Before rendering a change form, evaluate amendmentConfigurationStatus:
CHANGES_WITHOUT_VERIFICATION— changes apply immediately on POSTCHANGES_REQUIRE_VERIFICATION— changes go into a studio task queue; show the user that approval is pendingREAD— the domain is read-only; do not offer an edit option
When a customer confirms their changes, POST to the corresponding domain endpoint.
Use this to:
- submit changes for one domain at a time
- store the returned
id(amendment proposal id) for subsequent withdraw calls if needed - show domain-level feedback: immediate confirmation or pending state depending on configuration
Best practice:
- submit only one amendment per domain at a time
- explicitly handle the 409 conflict case for when a pending amendment already exists
If a pending amendment needs to be cancelled before it is processed, use DELETE withdraw customer's amendment with the customerId and amendmentId (the id returned from the POST response).
Use this to:
- let users undo a submitted change request
- clear the pending state so a corrected amendment can be submitted
After any POST or DELETE, re-fetch the relevant GET endpoint to keep frontend state in sync.
Note: The payload examples below are integration-oriented drafts. Validate all field names and structures against the current OpenAPI schema before publishing or implementation.
Scenario: Customer changes their email address.
- GET customer's contact data
- Check
amendmentConfigurationStatus - Show prefilled edit form
- POST create contact data amendment
- Re-fetch GET customer's contact data
Example POST request payload (illustrative):
{
"email": "new-email@example.com",
"phonePrivate": "+49 00000000",
"phonePrivateMobile": "+49 00000000000",
"phoneBusiness": "+49 00000000",
"phoneBusinessMobile": "+49 00000000000"
}Example POST response shape (illustrative):
{
"id": 4521,
"email": "new-email@example.com",
"phonePrivate": "+49 00000000",
"phonePrivateMobile": "+49 00000000000",
"phoneBusiness": "+49 00000000",
"phoneBusinessMobile": "+49 00000000000"
}Scenario: Customer submits a new address but notices a typo and cancels before it is processed.
- GET customer's address data
- POST create address data amendment
- Store returned
id(e.g.,7834) - Customer requests cancellation
- DELETE withdraw customer's amendment (
amendmentId: 7834) - Re-fetch GET customer's address data
Example POST request payload (illustrative):
{
"street": "Am Bahnhof",
"houseNumber": "90",
"zipCode": "12133",
"city": "Munich",
"countryCode": "DE"
}Example POST response shape (illustrative):
{
"id": 7834,
"street": "Am Bahnhof",
"houseNumber": "90",
"zipCode": "12133",
"city": "Munich",
"countryCode": "DE"
}DELETE withdraw returns HTTP 200 with no response body.
Scenario: Customer updates their bank account. The studio requires a customer signature.
- GET customer's payment data
- Check
requireSignature: truein response - Present signature capture in UI
- POST create payment data amendment with IBAN, BIC, and base64 SVG signature
- Re-fetch GET customer's payment data
Example POST request payload (illustrative):
{
"accountHolder": "Sven Hannawald",
"bankName": "Deutsche Bank",
"iban": "DE91 1000 0000 0123 4567 89",
"bic": "DEUTDEFFXXX",
"signature": {
"base64SvgSignature": "<base64-encoded SVG>"
}
}Example POST response shape (illustrative):
{
"id": 3301,
"accountHolder": "Sven Hannawald",
"bankName": "Deutsche Bank",
"iban": "DE91 1000 0000 0123 4567 89",
"bic": "DEUTDEFFXXX",
"requireSignature": true
}- Ignoring
amendmentConfigurationStatus: Always read this field before rendering an edit option. Submitting to aREADdomain returns an error. - Missing pending amendment check: If
pendingAmendmentis present on GET, block new submissions for that domain and surface the pending state to the user. - Concurrent amendment conflict: Attempting a second POST while one is pending returns 409. Handle this explicitly rather than letting it surface as a generic error.
- No post-mutation refresh: Always re-fetch the relevant GET endpoint after POST or DELETE to prevent stale form state.
- Skipping signature handling: For payment amendments where
requireSignatureis true, the POST request must includesignature.base64SvgSignature. Missing this field will cause a validation failure. - Cross-domain saves: Combining changes from multiple domains in a single UI action complicates error handling. Submit one amendment domain per action.
For event-driven synchronization, subscribe to the relevant customer update events. These are triggered when a pending amendment is approved or rejected by studio staff, or when data is updated directly, and can be used to keep local profile state in sync.
Event reference: