Getting Custom Attributes
Function: custom_attributes()
Purpose
This function is used to retrieve all configured custom attributes in the system. Custom attributes define additional metadata fields that can be attached to various resources such as accounts, contacts, items, invoices, orders, and custom objects. This API allows SDK users to fetch a complete list of configured custom attributes including their type, status, options (for dropdown types), usage rules, and pagination details. It is typically used when building forms, validation rules, UI rendering logic, or workflow automation that depends on available custom attribute definitions.
Parameters
| Parameter | Type | Description |
|---|---|---|
| limit | integer | Optional parameter used to control how many records are returned per request. |
| offset | integer | Optional parameter used for pagination to skip a number of records. |
Use Case
This function is used to load all custom attribute definitions to dynamically build form fields, validate user inputs, or verify that the correct configuration exists before creating or updating records. For example, when constructing a dynamic UI for a custom object, the application must know which attributes are required, what input types they use (text, number, dropdown), whether uniqueness rules apply, and what dropdown options exist. The SDK function for this endpoint allows retrieving all such attributes in a single call, enabling systems to adapt without hardcoding configurations.
def custom_attributes():
SDKConfig.PRINT_REQUEST_DATA = True
SDKConfig.PRINT_RAW_RESPONSE = False
token_file_path = "PATH_TO_SHARED_TOKEN_FILE.json"
file_token_mgr = FileTokenManager(token_file_path)
exsited_sdk: ExsitedSDK = ExsitedSDK().init_sdk(
request_token_dto=CommonData.get_request_token_dto(),
file_token_mgr=file_token_mgr
)
try:
response = exsited_sdk.custom_attributes.custom_attributes(limit=PLACEHOLDER_LIMIT, offset=PLACEHOLDER_OFFSET)
print(response)
except ABException as ab:
print(ab)
print(ab.get_errors())
print(ab.raw_response)
Response
The response contains a list of custom attributes with their configurations, including attribute identifiers, names, display names, types, validation rules, dropdown options, encryption flags, and usage details defining which resources the custom attribute applies to. Pagination information is also returned to allow clients to fetch additional pages when large numbers of custom attributes exist.
{
"custom_attributes": [
{
"uuid": "CUSTOM_ATTRIBUTE_UUID_1",
"status": "STATUS_VALUE",
"name": "ATTRIBUTE_NAME_1",
"display_name": "DISPLAY_NAME_1",
"type": "ATTRIBUTE_TYPE",
"min_value": "",
"max_value": "",
"max_length": "",
"use_in": [
{
"resource": "RESOURCE_NAME_1",
"required": "false",
"unique": "false",
"associated_account_groups": [],
"associated_user_groups": [],
"associated_item_groups": [],
"enabled": "true"
}
],
"options": [
{
"name": "OPTION_NAME_1",
"display_order": PLACEHOLDER_ORDER
}
],
"encrypt_data": "false"
},
{
"uuid": "CUSTOM_ATTRIBUTE_UUID_2",
"status": "STATUS_VALUE",
"name": "ATTRIBUTE_NAME_2",
"display_name": "DISPLAY_NAME_2",
"type": "ATTRIBUTE_TYPE",
"min_value": "",
"max_value": "",
"max_length": "",
"use_in": [
{
"resource": "RESOURCE_NAME_2",
"required": "false",
"unique": "false",
"associated_account_groups": [],
"associated_user_groups": [],
"associated_item_groups": [],
"enabled": "true"
}
],
"options": [],
"encrypt_data": "false"
}
],
"pagination": {
"records": PLACEHOLDER_RECORDS_TOTAL,
"limit": PLACEHOLDER_LIMIT,
"offset": PLACEHOLDER_OFFSET,
"previous_page": "PREVIOUS_PAGE_URL_PLACEHOLDER",
"next_page": "NEXT_PAGE_URL_PLACEHOLDER"
}
}
Getting a Custom Attribute by UUID
Function: get_custom_attribute()
Purpose
This API retrieves the complete details of a specific custom attribute identified by its UUID. The response includes the custom attribute's uuid, status, name, displayName, description, type, unit, uom, minValue, maxValue, maxLength, maxSize, version, encryptData, useIn (with resource, required, unique, enabled, associatedAccountGroups, associatedItemGroups, associatedUserGroups), options (with displayOrder, name), and audit fields (createdBy, createdOn, lastUpdatedBy, lastUpdatedOn). This is essential for viewing or editing a single custom attribute's full configuration, verifying its type and validation rules, or loading attribute details into a management interface for review or modification.
Parameters
| Parameter name | Type | Description |
|---|---|---|
| ca_uuid | String | The unique UUID of the custom attribute to retrieve. |
Use Case
In system configuration workflows, administrators frequently need to view the full details of a specific custom attribute. A configuration manager may need to verify an attribute's type and validation constraints before associating it with a new account group, a developer may need to inspect the attribute's options list to ensure dropdown values match business requirements, or an auditor may need to review the attribute's useIn settings to confirm it is correctly enabled for the intended resources. When integrating with external systems or building dynamic forms, the complete attribute definition including its type, min/max values, options, and resource associations is needed to accurately render input controls and enforce validation rules. This endpoint provides the full attribute record in a single call, eliminating the need to filter through the entire custom attributes list to find a specific attribute's configuration.
def test_get_custom_attribute():
SDKConfig.PRINT_REQUEST_DATA = False
SDKConfig.PRINT_RAW_RESPONSE = False
token_file_path = "shared_token.json"
file_token_mgr = FileTokenManager(token_file_path)
exsited_sdk: ExsitedSDK = ExsitedSDK().init_sdk(
request_token_dto=CommonData.get_request_token_dto(),
file_token_mgr=file_token_mgr
)
try:
response = exsited_sdk.custom_attributes.get_custom_attribute(
ca_uuid="3f43aac8-33cf-4bbe-aeba-f05e9b56d804"
)
print(response)
except ABException as ab:
print(ab)
print(ab.get_errors())
print(ab.raw_response)
public function testDetails()
{
$customAttributeUUID = '{custom_attribute_uuid}';
try {
$response = $this->customAttributeService->details($customAttributeUUID);
echo '<pre>' . json_encode($response, JSON_PRETTY_PRINT) . '</pre>';
} catch (Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
Response
On success, the function returns a CustomAttributesResponseDTO object containing the full details of the requested custom attribute. The customAttribute object includes its uuid, status, name, displayName, description, type, unit, uom, minValue, maxValue, maxLength, maxSize, version, encryptData, useIn (with resource, required, unique, enabled, associatedAccountGroups, associatedItemGroups, associatedUserGroups), options (with displayOrder, name), and audit fields (createdBy, createdOn, lastUpdatedBy, lastUpdatedOn). This makes it easy to display the attribute's complete configuration, verify its validation rules and resource associations, and retrieve the attribute's current state for form rendering or management purposes.
CustomAttributesResponseDTO(
customAttribute=CustomAttributeDTO(
uuid='ATTRIBUTE_UUID',
status='ATTRIBUTE_STATUS',
name='ATTRIBUTE_NAME',
displayName='ATTRIBUTE_DISPLAY_NAME',
description='ATTRIBUTE_DESCRIPTION',
type='ATTRIBUTE_TYPE',
unit='ATTRIBUTE_UNIT',
uom='ATTRIBUTE_UOM',
minValue='MIN_VALUE',
maxValue='MAX_VALUE',
maxLength='MAX_LENGTH',
maxSize='MAX_SIZE',
version='ATTRIBUTE_VERSION',
encryptData='ENCRYPT_DATA',
useIn=[
CustomAttributesUseInDTO(
resource='RESOURCE',
required='REQUIRED',
unique='UNIQUE',
enabled='ENABLED',
associatedAccountGroups=[],
associatedItemGroups=[],
associatedUserGroups=[]
)
],
options=[
CustomAttributesOptionDTO(
displayOrder=DISPLAY_ORDER,
name='OPTION_NAME'
)
],
createdBy='CREATED_BY',
createdOn='CREATED_ON',
lastUpdatedBy='LAST_UPDATED_BY',
lastUpdatedOn='LAST_UPDATED_ON'
)
)
{
"custom_attribute": {
"uuid": "CUSTOM_ATTRIBUTE_UUID",
"status": "STATUS",
"name": "ATTRIBUTE_NAME",
"display_name": "DISPLAY_NAME",
"type": "TYPE",
"min_value": "MIN_VALUE",
"max_value": "MAX_VALUE",
"max_length": "MAX_LENGTH",
"use_in": [],
"options": [],
"encrypt_data": "BOOLEAN"
}
}
