When creating or updating an object via BQE CORE Public APIs, you can also set or update the properties within objects nested in the main object. For example, when creating or updating a project, you can set or update the value property in the customFields object nested within the Project object. Similarly, when creating or updating a time entry, you can set or update the properties (e.g. action) in the Workflow object nested within the TimeEntry object.
Setting nested properties when creating new objects
Updating nested properties in existing objects
Setting nested properties when creating new objects
To set nested properties when creating a new object, simply pass the nested item and its properties in the body of the POST request. Make sure you send all the required properties from the nested item. For example, when creating a new Project object, you can set the value property nested in customFields within it by passing the customFields object (including the required property definitionId) in the POST request. The body of the POST request may look something like this:
{
"name": "Sample Project 123456",
"status": 0,
"managerId": "21134e3a-ba25-4614-84c3-0d42b9012448",
"code": "Sample Project 123456",
"type": 0,
"level": 0,
"contractType": 1,
"clientId": "211303ef-7cb4-401b-a9b7-62c99a7321b8",
"contractAmount": 15000,
"startDate": "2018-10-08T00:00:00",
"customFields": [
{
"value": "Text Value",
"definitionId": "e4ba0227-acb6-4726-8125-62e4e6d0d840"
}
]
}Updating nested properties in existing objects
To update nested properties in existing objects, you can use the PUT or PATCH methods. Note that the PATCH method might not be available for all objects and properties. Check out this detailed article on using the PATCH method for more details.
When using the PUT method, it is recommended you send the complete object along with the nested objects and properties in the body. Additionally, when updating nested properties that do not yet have a value in the object, make sure you set the objectState property in the nested object to 0, which indicates the value is being added. However, if the property already had a value in the object, set objectState to 2, which indicates the value is being modified. For example, here is how the body of the PUT request will look like when modifying the customFields > value property nested in a Project object:
{
"displayName": "Sample Project 123456",
"name": "Sample Project 123456",
"code": "Sample Project 123456",
... more properties ...
"phaseOrder": null,
"customFields": [
{
"value": "Text Value 1",
"description": null,
"label": "Text Type",
"definitionId": "e4ba0227-acb6-4726-8125-62e4e6d0d840",
"type": 0,
"id": "497a9e1b-01bd-42d2-a91f-134a76991a94",
"createdOn": "2026-07-17T07:38:12.243",
"createdById": "46c0b6a7-7ed9-4821-837b-4aa00d0b6042",
"lastUpdated": "2026-07-17T07:38:12.243",
"lastUpdatedById": "46c0b6a7-7ed9-4821-837b-4aa00d0b6042",
"version": "AAAAAACROIY=",
"objectState": 2,
"token": 1752738071
}
],
... more properties ...
"token": 1752738071
}Note: Some properties are read-only and cannot be updated via PUT or PATCH.