Set Configuration
Learn how to replace a tenant’s Metadata Configuration by submitting a full configuration payload.
Use this API to set or update the tenant business configuration. If a configuration already exists, this operation overrides it.
Before creating the tenant configuration, ensure that the tenant storage configuration is created.
To retrieve or update a specific object type, see Manage configuration by object type.
HTTP method and endpoint
Use the following HTTP method and endpoint path to submit the request to set the tenant configuration.
PUT {TenantURL}/configurationYou can use the standard HTTP If-Unmodified-Since request header to help prevent unintended overwrites during concurrent updates. This header enables stale update validation by comparing the client's last-known configuration state with the latest stored configuration state before the update is accepted.
For more information, see Concurrent update validation behavior.
Request headers
The following request headers must be included.
| Headers | Required | Value |
|---|---|---|
Content-Type | Yes | application/json |
If-Unmodified-Since | Optional | HTTP date value that specifies the client's last-known configuration timestamp for stale update validation |
Request body
The request body must contain the tenant business configuration in JSON format.
| Parameter | Type | Required | Description | Accepted values / Default |
|---|---|---|---|---|
label | String | Yes | Name of the business model configuration. | — |
description | String | No | Description of the configuration. | — |
schemaVersion | String | Yes | Version of the configuration schema. | — |
updatedTime | Number | No | Timestamp from the latest configuration read. | - |
entityTypes | Array | Yes | List of entity type definitions included in the configuration. | — |
| entityTypes | ||||
URI | String | Yes | Unique identifier for the entity type. | — |
name | String | Yes | Name of the entity type. | — |
label | String | Yes | Display label for the entity type. | — |
description | String | No | Description of the entity type. | — |
attributes | Array | Yes | List of attributes defined for the entity type. | — |
| attributes | ||||
URI | String | Yes | Unique identifier for the attribute. | — |
name | String | Yes | Name of the attribute. | — |
label | String | Yes | Display label for the attribute. | — |
type | String | Yes | Data type of the attribute (for example, String). | — |
Example request
PUT {TenantURL}/configuration
Content-Type: application/json
If-Unmodified-Since: Mon, 23 Feb 2026 07:05:48 GMT
{
"label": "Test Business Model",
"description": "Test Business Model Configuration",
"schemaVersion": "1",
"updatedTime": 1700000000000,
"entityTypes": [
{
"URI": "configuration/entityTypes/Individual",
"label": "Individual",
"name": "Individual",
"description": "Represents people",
"attributes": [
{
"URI": "configuration/entityTypes/Individual/attributes/FirstName",
"name": "FirstName",
"label": "First Name",
"type": "String"
}
]
}
]
}
Response body
The response returns the saved tenant business configuration in JSON format. It includes the persisted configuration values and generated id values for configured objects.
| Field | Type | Description |
|---|---|---|
label | String | Name of the business model configuration. |
description | String | Description of the configuration. |
schemaVersion | String | Version of the configuration schema. |
updatedTime | Number | Timestamp of the latest successful configuration update. |
entityTypes | Array | List of entity type definitions in the saved configuration. |
| entityTypes | ||
URI | String | Unique identifier for the entity type. |
name | String | Name of the entity type. |
label | String | Display label for the entity type. |
description | String | Description of the entity type. |
id | String | Generated identifier for the entity type. |
attributes | Array | List of attributes defined for the entity type. |
| attributes | ||
URI | String | Unique identifier for the attribute. |
name | String | Name of the attribute. |
label | String | Display label for the attribute. |
type | String | Data type of the attribute. |
id | String | Generated identifier for the attribute. |
Response always includes an id property for elements in collections. These id values help identify differences between schema versions, including added, removed, and modified elements.
Example response
{
"label": "Test Business Model",
"description": "Test Business Model Configuration",
"schemaVersion": "1",
"updatedTime": 1700000005000,
"entityTypes": [
{
"URI": "configuration/entityTypes/Individual",
"label": "Individual",
"name": "Individual",
"id": "1",
"description": "Represents people",
"attributes": [
{
"URI": "configuration/entityTypes/Individual/attributes/FirstName",
"name": "FirstName",
"label": "First Name",
"id": "2",
"type": "String"
}
]
}
]
}
Concurrent update validation behavior
When multiple users or systems update the tenant business configuration at the same time, a stale update can overwrite newer changes. To prevent stale overwrites, the PUT /configuration endpoint supports concurrent update validation through the standard HTTP If-Unmodified-Since request header.
When the header is present, the system compares its value with the latest stored updatedTime for the configuration.
- If no business model exists, the request is treated as a first-time save and is accepted.
- If the client does not send the
If-Unmodified-Sinceheader, the system skips validation and processes the update as usual. In that case, the request can overwrite more recent configuration changes. - If the
If-Unmodified-Sinceheader value is greater than or equal to the storedupdatedTime, the update is accepted. - If the
If-Unmodified-Sinceheader value is earlier than the storedupdatedTime, the update is rejected with HTTP412 Precondition Failed.
After each successful update, the system assigns a new updatedTime to reflect the latest configuration state.
Errors
| Code | Description |
|---|---|
| 301 |
Invalid
Invalid rule specification in model for rule {0}. |
| 303 | Business model schema cannot be parsed as XSD. |
| 304 | Failed to validate business model. |
| 305 | Failed to press business model JSON during validation. |
| 306 | Failed to process business model JSON in create configuration request. |
| 412 |
Precondition failed. Update rejected because the tenant business configuration was modified after the time specified in the If-Unmodified-Since header. |