Skip to main content

Custom Fields

Custom fields extend InLoox entities with user-defined properties. The API exposes three related entity sets — CustomField for reading and writing values, CustomFieldDefinition for managing field schemas, and CustomFieldPermission for controlling access — plus Dynamic endpoints that surface custom field values directly alongside standard entity properties.


CustomField

The CustomField entity represents a single custom field value attached to an entity instance.

Composite Key

CustomField uses a composite key of Name and ObjectId. Two URL notations are supported for accessing individual values: parenthesis notation and slash notation. Both behave identically.

Properties

PropertyTypeDescription
ObjectIdguidThe entity instance the custom field belongs to.
NamestringThe custom field column name (matches ColumnName in CustomFieldDefinition).
ValuestringThe field value, serialized as a string.
TypestringData type of the value (e.g., Text, Number, Boolean, Date).

Endpoints

Get value (parenthesis notation)

GET/odata/CustomField(Name={keyName},ObjectId={keyObjectId})

Retrieve a single custom field value using parenthesis notation.

ParameterTypeRequiredDescription
keyNamestringThe custom field column name.
keyObjectIdguidThe ID of the entity instance.

Update value (parenthesis notation)

PATCH/odata/CustomField(Name={keyName},ObjectId={keyObjectId})

Update a custom field value using parenthesis notation.

ParameterTypeRequiredDescription
keyNamestringThe custom field column name.
keyObjectIdguidThe ID of the entity instance.
Request Body
{
"Value": "Updated value"
}

Get value (slash notation)

GET/odata/CustomField/Name={keyName},ObjectId={keyObjectId}

Retrieve a single custom field value using slash notation.

ParameterTypeRequiredDescription
keyNamestringThe custom field column name.
keyObjectIdguidThe ID of the entity instance.

Update value (slash notation)

PATCH/odata/CustomField/Name={keyName},ObjectId={keyObjectId}

Update a custom field value using slash notation.

ParameterTypeRequiredDescription
keyNamestringThe custom field column name.
keyObjectIdguidThe ID of the entity instance.
Request Body
{
"Value": "Updated value"
}

Batch update

POST/CustomField/BatchUpdate

Batch update multiple custom field values in a single request.

Request Body
[
{ "Name": "CustomField_Priority", "ObjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Value": "High" },
{ "Name": "CustomField_Region", "ObjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "Value": "EMEA" }
]

CustomFieldDefinition

The CustomFieldDefinition entity describes the schema of a custom field — its name, data type, default value, display rules, and more.

Properties

PropertyTypeDescription
CustomFieldDefinitionIdguidUnique identifier of the definition.
ColumnNamestringInternal column identifier (used as the key in CustomField.Name).
DisplayNamestringUser-facing label shown in the UI.
TableNamestringEntity table this field belongs to, e.g. "Project", "TaskItem".
OrdinalPositionint32Display order among custom fields for the same table.
ColumnTypestringData type of the field: Text, Number, Boolean, Date, DropDown.
StringValuestringDefault string value.
IntValueint32Default integer value.
BoolValuebooleanDefault boolean value.
DecimalValuedecimalDefault decimal value.
DateTimeValueDateTimeOffsetDefault date/time value.
WriteProtectionEnabledbooleanWhether the field is read-only for non-admin users.
DisplayRuleFieldstringField name that controls visibility of this custom field.
DisplayRuleExpressionstringExpression that determines when this custom field is visible.
CurrencySymbolstringCurrency symbol for monetary fields.
WarningIfEmptybooleanShow a warning indicator when the field value is empty.
AllowAddNewItembooleanAllow users to add new items to a DropDown field's option list.

Endpoints

List all definitions

GET/odata/CustomFieldDefinition

Retrieve all custom field definitions.


Count definitions

GET/odata/CustomFieldDefinition/$count

Return the total number of custom field definitions.


Get single definition

GET/odata/CustomFieldDefinition({key})

Retrieve a single custom field definition by ID.

ParameterTypeRequiredDescription
keyguidThe CustomFieldDefinitionId.

Create definition

POST/odata/CustomFieldDefinition

Create a new custom field definition.

Request Body
{
"ColumnName": "CustomField_Priority",
"DisplayName": "Priority",
"TableName": "Project",
"ColumnType": "DropDown",
"OrdinalPosition": 1,
"AllowAddNewItem": true
}

Update definition

PATCH/odata/CustomFieldDefinition({key})

Update an existing custom field definition.

ParameterTypeRequiredDescription
keyguidThe CustomFieldDefinitionId.
Request Body
{
"DisplayName": "Project Priority",
"WriteProtectionEnabled": true
}

Delete definition

DELETE/odata/CustomFieldDefinition({key})

Delete a custom field definition.

ParameterTypeRequiredDescription
keyguidThe CustomFieldDefinitionId.
warning

Deleting a definition removes the schema only. Existing CustomField values referencing the deleted column may become orphaned.


CustomFieldPermission

The CustomFieldPermission entity controls which users or roles can read or write specific custom fields.

Properties

PropertyTypeDescription
CustomFieldPermissionIdguidUnique identifier of the permission.
CustomFieldDefinitionIdguidID of the associated field definition.
SubjectTypeint32Type of the permission subject (e.g., user, role).
SubjectIdguidID of the subject (user ID or role ID).
RoleTypeint32?Role type (optional, for role-based permissions).

Endpoints

List all permissions

GET/odata/CustomFieldPermission

Retrieve all custom field permissions.


Count permissions

GET/odata/CustomFieldPermission/$count

Return the total number of custom field permissions.


Get single permission

GET/odata/CustomFieldPermission({key})

Retrieve a single custom field permission by ID.

ParameterTypeRequiredDescription
keyguidThe permission ID.

Create permission

POST/odata/CustomFieldPermission

Create a new custom field permission.


Update permission

PATCH/odata/CustomFieldPermission({key})

Update an existing custom field permission.

ParameterTypeRequiredDescription
keyguidThe permission ID.

Delete permission

DELETE/odata/CustomFieldPermission({key})

Delete a custom field permission.

ParameterTypeRequiredDescription
keyguidThe permission ID.

Get blocked fields for entity

GET/odata/CustomFieldPermission/GetBlockedFieldsForEntity(entityType={entityType})

Retrieve the list of custom fields blocked for a specific entity type.

ParameterTypeRequiredDescription
entityTypestringThe entity type to query, e.g. "Project", "TaskItem".

Dynamic Endpoints

Dynamic endpoints expose custom field values alongside standard entity properties in a single flat result set. Instead of querying CustomField separately and joining by ObjectId, you can read and filter custom field data directly on the entity.

Available dynamic entity sets

Dynamic EndpointBase Entity
/odata/DynamicProjectProject
/odata/DynamicTaskItemTaskItem
/odata/DynamicBudgetBudget
/odata/DynamicLineItemLineItem
/odata/DynamicTimeEntryTimeEntry
/odata/DynamicContactContact (see Contacts)
GET/odata/DynamicProject

Retrieve projects with custom field columns included.

GET/odata/DynamicTaskItem

Retrieve task items with custom field columns included.

GET/odata/DynamicBudget

Retrieve budgets with custom field columns included.

GET/odata/DynamicLineItem

Retrieve line items with custom field columns included.

GET/odata/DynamicTimeEntry

Retrieve time entries with custom field columns included.

Custom field column naming

Custom field columns appear with a CustomField_ prefix followed by the ColumnName from the corresponding CustomFieldDefinition. For example, a definition with ColumnName = Priority appears as CustomField_Priority in the dynamic response.

These prefixed columns can be used in all standard OData query options:

Query OptionExample
$select$select=Name,CustomField_Priority
$filter$filter=CustomField_Priority eq 'High'
$orderby$orderby=CustomField_Priority asc

Example: filter projects by a custom field

GET /odata/DynamicProject?$filter=CustomField_Priority eq 'High'
GET /odata/DynamicProject?$select=ProjectId,Name,CustomField_Priority,CustomField_Region&$filter=CustomField_Region eq 'EMEA'&$orderby=CustomField_Priority asc
tip

Dynamic endpoints are read-only views. To update custom field values, use the CustomField PATCH or BatchUpdate endpoints described above.