Migration Guide: The New Entity-Role Model
Overview
The TradeVest API has been restructured to improve clarity and separation of concerns. The monolithic customers.yaml has been split into two specialized APIs:
- entities.yaml: Manages entity data (natural persons, legal entities, joint persons, beneficial owners, legal representatives)
- roles.yaml: Manages role assignments (customers, proxies)
Quick Reference: Endpoint Mapping
General
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
GET /partner-details |
GET /v2/partner-details |
✏️ Path change |
Natural Persons
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
GET /natural-persons |
GET /entities/natural-persons |
✏️ Path change |
POST /natural-persons |
POST /entities/natural-persons |
✏️ Path change |
GET /natural-persons/{id} |
GET /entities/natural-persons/{id} |
✏️ Path change |
PATCH /natural-persons/{id} |
PATCH /entities/natural-persons/{id} |
✏️ Path change |
POST /natural-persons/{id}/identification |
POST /entities/natural-persons/{id}/identification |
✏️ Path change |
Beneficial Owners
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
POST /customers/natural-persons/{customerId}/beneficial-owners |
POST /entities/{legalEntityId}/beneficial-owners |
🔄 Breaking change |
GET /customers/natural-persons/{customerId}/beneficial-owners |
GET /entities/{legalEntityId}/beneficial-owners |
🔄 Breaking change |
GET /customers/natural-persons/{customerId}/beneficial-owners/{id} |
GET /entities/beneficial-owners/{id} |
🔄 Breaking change |
PATCH /customers/natural-persons/{customerId}/beneficial-owners/{id} |
PATCH /entities/beneficial-owners/{id} |
🔄 Breaking change |
Important: Beneficial owners are now associated directly with legal entities, not with customer roles.
Legal Entities
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml + roles.yaml) |
Change Type |
POST /customers/legal-entities |
🔀 Split → ➕ POST /entities/legal-entities + POST /roles/customers |
🔄 Breaking change |
GET /customers/legal-entities/{customerId} |
GET /roles/customers/{customerId} (role data) + GET /entities/legal-entities/{id} (entity data) |
🔄 Breaking change |
PATCH /customers/legal-entities/{customerId} |
PATCH /roles/customers/{customerId} + PATCH /entities/legal-entities/{id} |
🔄 Breaking change |
GET /customers/vendor/search/legal-entities |
GET /entities/vendor/legal-entities |
✏️ Path change |
POST /customers/vendor/prepare/legal-entities |
POST /entities/vendor/legal-entities |
✏️ Path change |
GET /customers/vendor/prepare/legal-entities/{searchId} |
GET /entities/vendor/legal-entities/{searchId} |
✏️ Path change |
Important: Legal entities are now independent entities with their own UUID and status, no longer embedded as customer sub-objects. They have dedicated endpoints for full CRUD operations.
Legal Representatives
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
Inline in POST /customers/legal-entities |
➕ POST /entities/{legalEntityId}/legal-representatives |
🔄 Breaking change |
Inline in GET /customers/legal-entities/{id} |
➕ GET /entities/{legalEntityId}/legal-representatives |
🔄 Breaking change |
Inline in PATCH /customers/legal-entities/{id} |
➕ GET /entities/legal-representatives/{id} |
🔄 Breaking change |
| - |
➕ PATCH /entities/legal-representatives/{id} |
➕ New endpoint |
| - |
➕ DELETE /entities/legal-representatives/{id} |
➕ New endpoint |
Important: Legal representatives are no longer embedded in legal entity payloads. They have dedicated endpoints for full CRUD operations.
Joint Persons
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
POST /customers/joint-persons |
🔀 Split → ➕ POST /entities/joint-persons + POST /roles/customers |
🔄 Breaking change |
GET /customers/joint-persons/{customerId} |
🔀 Split → ➕ GET /roles/customers/{customerId} + GET /entities/joint-persons/{id} |
🔄 Breaking change |
PATCH /customers/joint-persons/{customerId} |
PATCH /roles/customers/{customerId} + PATCH /entities/joint-persons/{id} |
🔄 Breaking change |
| - |
GET /entities/joint-persons |
➕ New endpoint |
Important: Joint persons are now independent entities with their own UUID and status, no longer embedded as customer sub-objects. They require separate entity creation and customer role assignment.
Customers (Role Management)
| Old Endpoint (customers.yaml) |
New Endpoint (roles.yaml) |
Change Type |
GET /customers |
GET /roles/customers |
🔄 Breaking change |
GET /customers/{customerId} |
GET /roles/customers/{customerId} |
✏️ Path change |
POST /customers/natural-persons |
🔀 Split → ➕ POST /entities/legal-entities + POST /roles/customers |
🔄 Breaking change |
POST /customers/joint-persons |
🔀 Split → ➕ POST /entities/joint-persons + POST /roles/customers |
🔄 Breaking change |
PATCH /customers/natural-persons/{customerId} |
PATCH /roles/customers/{customerId} |
✏️ Path change |
PATCH /customers/joint-persons/{customerId} |
PATCH /roles/customers/{customerId} |
✏️ Path change |
Proxies
| Old Endpoint (customers.yaml) |
New Endpoint (roles.yaml) |
Change Type |
POST /natural-persons/{naturalPersonId}/proxy |
POST /roles/proxies |
🔄 Breaking change |
GET /proxies |
GET /roles/proxies |
✏️ Path change |
GET /proxies/{proxyId} |
GET /roles/proxies/{proxyId} |
✏️ Path change |
PATCH /proxies/{proxyId} |
PATCH /roles/proxies/{proxyId} |
✏️ Path change |
Customer Labels
| Old Endpoint (customers.yaml) |
New Endpoint (roles.yaml) |
Change Type |
GET /customer-labels |
GET /roles/customer-labels |
✏️ Path change |
PATCH /customer-labels/{labelName} |
PATCH /roles/customer-labels/{labelName} |
✏️ Path change |
DELETE /customer-labels/{labelName} |
DELETE /roles/customer-labels/{labelName} |
✏️ Path change |
PATCH /customer-labels/{labelName}/customers |
PATCH /roles/customer-labels/{labelName}/customers |
✏️ Path change |
POST /customer-labels/{labelName}/customers |
POST /roles/customer-labels/{labelName}/customers |
✏️ Path change |
Identification Verification
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
POST /identification-verifications |
POST /entities/identification-verifications |
✏️ Path change |
GET /identification-verifications |
GET /entities/identification-verifications |
✏️ Path change |
GET /identification-verifications/{id} |
GET /entities/identification-verifications/{id} |
✏️ Path change |
Documents
| Old Endpoint (customers.yaml) |
New Endpoint (documents.yaml) |
Change Type |
GET /documents |
GET /v2/documents |
🔄 Breaking change |
POST /documents |
POST /v2/documents |
🔄 Breaking change |
GET /documents/{id} |
GET /v2/documents/{id} |
✏️ Path change |
GET /documents/{id}/file |
GET /v2/documents/{id}/file |
✏️ Path change |
POST /documents/sign |
POST /v2/documents/sign |
✏️ Path change |
Important: Document model has changed - entityType → resourceType with new enum values and improved resource categorization.
Onboarding & Offboarding (Centralized → Distributed)
| Old Endpoint (onboardings.yaml) |
New Endpoint (entities.yaml + roles.yaml) |
Change Type |
POST /onboardings |
POST /entities/onboardings OR POST /roles/onboardings OR POST /user-onboardings |
🔄 Breaking change |
GET /onboardings |
GET /entities/onboardings OR GET /roles/onboardings OR GET /user-onboardings |
🔄 Breaking change |
GET /onboardings/{id} |
GET /entities/onboardings/{id} OR GET /roles/onboardings/{id} OR GET /user-onboardings/{id} |
🔄 Breaking change |
POST /offboardings |
POST /entities/offboardings OR POST /roles/offboardings |
🔄 Breaking change |
GET /offboardings |
GET /entities/offboardings OR GET /roles/offboardings |
🔄 Breaking change |
GET /offboardings/{id} |
GET /entities/offboardings/{id} OR GET /roles/offboardings/{id} |
🔄 Breaking change |
DELETE /offboardings/{id} |
DELETE /entities/offboardings/{id} OR DELETE /roles/offboardings/{id} |
🔄 Breaking change |
Important: Onboarding is now domain-specific. Use entities.yaml for entity onboarding (beneficial owners), roles.yaml for role onboarding (customers, proxies) and users.yaml for user onboarding..
Search NACE Sectors
| Old Endpoint (customers.yaml) |
New Endpoint (entities.yaml) |
Change Type |
GET /customers/natural-persons/search/nace-sectors |
GET /entities/natural-persons/search/nace-sectors |
✏️ Path change |
GET /customers/legal-entities/search/nace-sectors |
GET /entities/legal-entities/search/nace-sectors |
✏️ Path change |
Customer Statistics
| Old Endpoint (customers.yaml) |
New Endpoint (roles.yaml) |
Change Type |
GET /customers/status-counts |
GET /roles/customers/statistics/status-counts |
✏️ Path change |
Natural Person Wizard (Completely Removed)
| Old Endpoint (customers.yaml) |
New Endpoint |
Change Type |
POST /customers/natural-persons/wizard |
- |
❌ Removed |
GET /customers/natural-persons/wizard |
- |
❌ Removed |
GET /customers/natural-persons/wizard/{wizardInstanceId} |
- |
❌ Removed |
PATCH /customers/natural-persons/wizard/{wizardInstanceId} |
- |
❌ Removed |
DELETE /customers/natural-persons/wizard/{wizardInstanceId} |
- |
❌ Removed |
Important: Natural person wizard functionality has been completely removed. Use the comprehensive onboarding process available in entities.yaml and roles.yaml instead.
New Endpoints (Not Available in customers.yaml)
Entity Management
GET /entities - Unified view of all entities
GET /entities/legal-representatives/{id} - Get specific legal representative
PATCH /entities/legal-representatives/{id} - Update legal representative
DELETE /entities/legal-representatives/{id} - Delete legal representative
POST /entities/{legalEntityId}/legal-representatives - Create legal representative
GET /entities/{legalEntityId}/legal-representatives - List legal representatives
Onboarding & Offboarding
POST /entities/onboardings - Start entity onboarding
GET /entities/onboardings - List entity onboardings
GET /entities/onboardings/{id} - Get entity onboarding
POST /entities/offboardings - Start entity offboarding
GET /entities/offboardings - List entity offboardings
GET /entities/offboardings/{id} - Get entity offboarding
DELETE /entities/offboardings/{id} - Cancel entity offboarding
Role Onboarding & Offboarding
POST /roles/onboardings - Start role onboarding
GET /roles/onboardings - List role onboardings
GET /roles/onboardings/{id} - Get role onboarding
POST /roles/offboardings - Start role offboarding
GET /roles/offboardings - List role offboardings
GET /roles/offboardings/{id} - Get role offboarding
DELETE /roles/offboardings/{id} - Cancel role offboarding
User Onboarding
POST /user-onboardings - Start user onboarding
GET /user-onboardings - List user onboardings
GET /user-onboardings/{id} - Get user onboarding
Document Management (v2)
GET /v2/documents - Get documents with new resource model
POST /v2/documents - Upload documents with new resource model
GET /v2/documents/{id} - Get document with new model
GET /v2/documents/{id}/file - Get document file
POST /v2/documents/sign - Sign document with new model
Key Model Changes
Beneficial Owner Model
Old Model (customers.yaml):
{
"boType": "REAL_UBO_25",
"share": 30.0,
"uboRelationship": "DIRECTLY_HOLDING_25"
}
New Model (entities.yaml):
{
"share": 30.0,
"votingRights": 30.0,
"uboRelationship": "DIRECTLY_HOLDING_25"
}
Key Changes:
- ❌ Removed:
boType field (all beneficial owners are now REAL_UBO_25)
- ➕ Added:
votingRights field (required)
- ✅ Required:
uboRelationship field is now mandatory
Proxy Model
Old Model (customers.yaml):
{
"customerId": "uuid",
"proxyType": "GENERAL_POWER_OF_ATTORNEY"
}
New Model (roles.yaml):
{
"entityId": "uuid",
"entityType": "NATURAL_PERSON",
"proxyType": "GENERAL_POWER_OF_ATTORNEY"
}
Key Changes:
- 🔄 Changed:
customerId → entityId
- ➕ Added:
entityType field
Legal Entity Model
Old Model (customers.yaml):
{
"legalName": "Example Corp",
"legalForm": "LIMITED_LIABILITY_COMPANY",
"labels": ["corporate"],
"refAccounts": [...],
"legalRepresentatives": [
{
"firstName": "John",
"lastName": "Doe",
"function": "MANAGING_DIRECTOR"
}
]
}
New Model (entities.yaml + roles.yaml):
{
"legalName": "Example Corp",
"legalForm": "LIMITED_LIABILITY_COMPANY",
"mainAddress": {...},
"contact": {...}
}
{
"entityId": "le-uuid",
"entityType": "LEGAL_ENTITY",
"labels": ["corporate"],
"refAccounts": [...]
}
Key Changes:
- ❌ Removed:
legalRepresentatives array from legal entity payload
- 🔄 Separated: Customer role data moved to roles.yaml
- ➕ Added: Dedicated legal representative endpoints
Document Model
Old Model (documents.yaml):
{
"name": "example.pdf",
"entityType": "CUSTOMER",
"entityId": "customer-uuid",
"type": "ONBOARDING"
}
New Model (documents.yaml v2):
{
"name": "example.pdf",
"resourceType": "CUSTOMER",
"resourceId": "customer-uuid",
"type": "ONBOARDING"
}
Key Changes:
- 🔄 Renamed:
entityType → resourceType
- 🔄 Renamed:
entityId → resourceId
- ➕ Added: New resource types (LEGAL_ENTITY in addition to existing ones)
Onboarding Model
Old Model (onboardings.yaml - Centralized):
{
"entityType": "CUSTOMER",
"entityId": "customer-uuid"
}
New Model (entities.yaml + roles.yaml - Distributed):
{
"entityType": "BENEFICIAL_OWNER",
"entityId": "bo-uuid"
}
{
"onboardingRoleType": "CUSTOMER",
"roleId": "customer-uuid"
}
{
"userId": "user-uuid"
}
Key Changes:
- 🔄 Split: Centralized onboarding → domain-specific onboarding
- 🔄 Changed: Different parameters for entity vs role vs user onboarding
- ➕ Added:
onboardingRoleType field for role onboarding
Practical Migration Examples
1. Creating a Beneficial Owner
Before (customers.yaml):
POST /customers/natural-persons/{customerId}/beneficial-owners
{
"firstName": "John",
"lastName": "Doe",
"boType": "REAL_UBO_25",
"share": 30.0,
"uboRelationship": "DIRECTLY_HOLDING_25"
}
After (entities.yaml):
POST /entities/{legalEntityId}/beneficial-owners
{
"firstName": "John",
"lastName": "Doe",
"share": 30.0,
"votingRights": 30.0,
"uboRelationship": "DIRECTLY_HOLDING_25"
}
2. Creating a Proxy
Before (customers.yaml):
POST /natural-persons/{naturalPersonId}/proxy
{
"customerId": "customer-uuid",
"proxyType": "GENERAL_POWER_OF_ATTORNEY",
"validityType": "UNLIMITED"
}
After (roles.yaml):
POST /roles/proxies
{
"entityId": "entity-uuid",
"entityType": "NATURAL_PERSON",
"proxyType": "GENERAL_POWER_OF_ATTORNEY",
"validityType": "UNLIMITED"
}
3. Creating a Natural Person Customer
Before (customers.yaml) - Two steps:
Step 1: Create Natural Person
POST /natural-persons
{
"firstName": "John",
"lastName": "Doe",
"birthDay": "1990-01-01",
"birthPlace": "Berlin",
"birthCountry": "DE",
"nationalities": ["DE"],
"contact": {
"phone": "+49123456789",
"email": "john.doe@example.com"
},
"mainAddress": {
"street": "Main Street",
"streetNumber": "123",
"city": "Berlin",
"zip": "10115",
"country": "DE"
}
// ... other natural person data
}
Step 2: Create Natural Person Customer
POST /customers/natural-persons
{
"naturalPersonId": "{{naturalPersonId}}",
"labels": ["vip"],
"refAccounts": [...]
}
After (entities.yaml + roles.yaml) - Two steps:
Step 1: Create Natural Person Entity
POST /entities/natural-persons
{
"firstName": "John",
"lastName": "Doe",
"birthDay": "1990-01-01",
"birthPlace": "Berlin",
"birthCountry": "DE",
"nationalities": ["DE"],
"contact": {
"phone": "+49123456789",
"email": "john.doe@example.com"
},
"mainAddress": {
"street": "Main Street",
"streetNumber": "123",
"city": "Berlin",
"zip": "10115",
"country": "DE"
}
// ... other natural person data
}
Step 2: Assign Customer Role
POST /roles/customers
{
"entityId": "{{naturalPersonId}}",
"entityType": "NATURAL_PERSON",
"labels": ["vip"],
"refAccounts": [...]
}
Key Change: Same two-step process, but different API domains:
- Before:
/natural-persons → /customers/natural-persons
- After:
/entities/natural-persons → /roles/customers
4. Creating a Legal Entity Customer
Before (customers.yaml) - Single step:
POST /customers/legal-entities
{
"legalName": "Example Corp",
"legalForm": "LIMITED_LIABILITY_COMPANY",
"labels": ["corporate"],
"refAccounts": [...],
"legalRepresentatives": [...],
// ... all entity + customer data in one payload
}
After (entities.yaml + roles.yaml) - Three steps:
Step 1: Create Legal Entity
POST /entities/legal-entities
{
"legalName": "Example Corp",
"legalForm": "LIMITED_LIABILITY_COMPANY",
"mainAddress": {...},
"contact": {...}
// ... entity data only (NO legal representatives here!)
}
// Response: { "legalEntityId": "le-uuid" }
Step 2: Create Legal Representatives
POST /entities/le-uuid/legal-representatives
{
"firstName": "John",
"lastName": "Doe",
"function": "MANAGING_DIRECTOR",
"soleSignatureAuthorized": true,
// ... legal representative data
}
// Response: { "legalRepresentativeId": "lr-uuid" }
Step 3: Create Customer Role
POST /roles/customers
{
"entityId": "le-uuid",
"entityType": "LEGAL_ENTITY",
"labels": ["corporate"],
"refAccounts": [...]
// ... customer role data only
}
5. Creating a Joint Person Customer
Before (customers.yaml) - Single step:
POST /customers/joint-persons
{
"firstNaturalPersonId": "np1-uuid",
"secondNaturalPersonId": "np2-uuid",
"labels": ["family"],
"refAccounts": [...],
// ... all entity + customer data in one payload
}
After (entities.yaml + roles.yaml) - Two steps:
Step 1: Create Joint Person
POST /entities/joint-persons
{
"firstNaturalPersonId": "np1-uuid",
"secondNaturalPersonId": "np2-uuid",
"contact": {...},
"mainAddress": {...}
// ... entity data only
}
// Response: { "jointPersonId": "jp-uuid" }
Step 2: Create Customer Role
POST /roles/customers
{
"entityId": "jp-uuid",
"entityType": "JOINT_PERSON",
"labels": ["family"],
"refAccounts": [...]
// ... customer role data only
}
6. Managing Legal Representatives
Before (customers.yaml) - Inline in legal entity:
# Legal representatives were included in legal entity payload
POST /customers/legal-entities
{
"legalName": "Example Corp",
"legalRepresentatives": [
{
"firstName": "John",
"lastName": "Doe",
"function": "MANAGING_DIRECTOR",
"soleSignatureAuthorized": true
}
]
}
# Updates also required full legal entity payload
PATCH /customers/legal-entities/{customerId}
{
"legalRepresentatives": [
{
"firstName": "John Updated",
"lastName": "Doe",
"function": "MANAGING_DIRECTOR"
}
]
}
After (entities.yaml) - Dedicated endpoints:
# Create legal representative separately
POST /entities/{legalEntityId}/legal-representatives
{
"firstName": "John",
"lastName": "Doe",
"function": "MANAGING_DIRECTOR",
"soleSignatureAuthorized": true,
"fatcaControllingPerson": false
}
# List legal representatives for entity
GET /entities/{legalEntityId}/legal-representatives
# Update specific legal representative
PATCH /entities/legal-representatives/{legalRepresentativeId}
{
"firstName": "John Updated"
}
# Delete legal representative (new capability!)
DELETE /entities/legal-representatives/{legalRepresentativeId}
7. Uploading Documents
Before (documents.yaml):
POST /documents
{
"document": {
"name": "contract.pdf",
"entityType": "CUSTOMER",
"entityId": "customer-uuid",
"type": "CONTRACTS"
},
"file": <binary-data>
}
After (documents.yaml v2):
POST /v2/documents
{
"document": {
"name": "contract.pdf",
"resourceType": "CUSTOMER",
"resourceId": "customer-uuid",
"type": "CONTRACTS"
},
"file": <binary-data>
}
8. Starting Onboarding Process
Before (onboardings.yaml - Centralized):
# Customer onboarding
POST /onboardings
{
"entityType": "CUSTOMER",
"entityId": "customer-uuid"
}
# Beneficial owner onboarding
POST /onboardings
{
"entityType": "BENEFICIAL_OWNER",
"entityId": "bo-uuid"
}
# Proxy onboarding
POST /onboardings
{
"entityType": "PROXY",
"entityId": "proxy-uuid"
}
# User onboarding
POST /onboardings
{
"entityType": "PARTNER_USER",
"entityId": "partner-user-uuid"
}
After (entities.yaml + roles.yaml + users.yaml- Distributed):
# Customer role onboarding
POST /roles/onboardings
{
"onboardingRoleType": "CUSTOMER",
"roleId": "customer-uuid"
}
# Beneficial owner entity onboarding
POST /entities/onboardings
{
"entityType": "BENEFICIAL_OWNER",
"entityId": "bo-uuid"
}
# Proxy role onboarding
POST /roles/onboardings
{
"onboardingRoleType": "PROXY",
"roleId": "proxy-uuid"
}
# User onboarding
POST /user-onboardings
{
"userId": "user-uuid"
}
9. Updating a Customer Role
Before (customers.yaml):
PATCH /customers/natural-persons/{customerId}
{
"labels": ["premium", "vip"],
"refAccounts": [
{
"bankName": "Deutsche Bank",
"iban": "DE89370400440532013000",
"bic": "DEUTDEFF",
"type": "PRIMARY"
}
]
}
After (roles.yaml):
PATCH /roles/customers/{customerId}
{
"labels": ["premium", "vip"],
"refAccounts": [
{
"bankName": "Deutsche Bank",
"iban": "DE89370400440532013000",
"bic": "DEUTDEFF",
"type": "PRIMARY"
}
]
}
Key Change: Customer role updates are now separate from entity updates. To update entity data (like address, contact), use the appropriate entity endpoint (/entities/natural-persons/{entityId} or /entities/legal-entities/{entityId}).
Migration Checklist
Phase 1: Update Base URLs
Phase 2: Path Updates
Phase 3: Model Updates
Phase 4: Breaking Changes
Phase 5: New Features
Validation Rules Changes
Beneficial Owners
- uboRelationship is now required for all beneficial owners
- votingRights is now required (0-100%, multiple of 0.01)
- For
DIRECTLY_HOLDING_25 or INDIRECTLY_HOLDING_25: either share OR voting rights must be ≥ 25%
- For
DOMINANT_INFLUENCE_OVER_SHARE_CAPITAL: no minimum requirements
New Webhook Notifications
The entity-role architecture introduces several new webhook notifications to support the distributed model:
| Webhook Endpoint |
Purpose |
Entity Type |
/joint-person-notification |
Joint Person lifecycle events |
Joint Persons |
/legal-entity-notification |
Legal Entity lifecycle events |
Legal Entities |
/legal-representative-notification |
Legal Representative lifecycle events |
Legal Representatives |
/legal-entity-search-notification |
Legal Entity search process updates |
Legal Entity Search |
| Webhook Endpoint |
Purpose |
Description |
/offboarding-notification |
Offboarding process updates |
Entity and role offboarding events |
Enhanced Existing Webhooks
| Webhook Endpoint |
Enhancement |
Description |
/customer-notification |
Role-focused |
Now specifically for customer role events |
/proxy-notification |
Entity-aware |
Now supports entity-based proxy relationships |
/beneficial-owner-notification |
Entity-focused |
Now directly associated with legal entities |
Notification Types
All new webhooks support standard notification types:
CREATED - Entity/role was created
UPDATED - Entity/role was updated
DELETED - Entity/role was deleted
VALIDATION_ERROR - Validation failed
Migration Impact: Update your webhook handlers to support the new entity-focused notifications and ensure proper handling of the distributed event model.
Additional Resources
- Check the detailed API reference in
entities.yaml, roles.yaml, documents.yaml, and onboardings.yaml
- Review the comprehensive architectural changes in the main README
- Test your migration against the new endpoints in the test environment
- Consult
webhooks.yaml for notification updates
Legend:
- ✏️ Simple path change
- 🔄 Breaking change requiring code updates
- ➕ New endpoint/feature
- ❌ Removed field/endpoint
- 🔀 Split into multiple endpoints
- ✅ New requirement