Create an Investment Entity if none exists with the given Tracking ID, or update the existing one otherwise.
This is an idempotent operation: calling it twice with the same payload results in the same end state. Safe to retry on network failure, or to replay as part of a scheduled sync from your CRM or source system.
Matching rule
The Investment Entity is matched by the trackingId you supply in the request body. trackingId is required — requests without a trackingId are rejected with a 400 Bad Request. Use the regular Create Investment Entity endpoint if you want to create an entity without a Tracking ID.
Response
The response always includes the full Investment Entity object plus a result field:
"result": "created"— no match was found, a new Investment Entity was created under the suppliedclientId."result": "updated"— an existing Investment Entity was found and its fields were updated.
Field semantics
| Field | Create | Update |
|---|---|---|
trackingId | Required (match key). | Required (match key). |
name | Required. | Replace if present; omit = unchanged. |
clientId | Required. | Ignored — use the dedicated move endpoint to reassign the entity to a different client. |
type, jurisdiction, amlKycStatus | Optional. | Replace if present (empty string clears); omit = unchanged. |
riskLevel | Optional. | Replace if present (empty string is ignored — riskLevel cannot be cleared via this endpoint; use the dedicated update endpoint). Setting a new value auto-creates a risk-assessment record (audit trail), same as the regular update endpoint. |
note | Optional. | Replace if present; omit = unchanged. |
Validation errors return 400 Bad Request with the offending field name.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||