Custom Fields
Records in Cerb can be extended with custom fields and fieldsets. These fields are available in the API responses using key expansion.
Custom field types
A custom field is created with one of the following types:
Type | Description |
---|---|
(C) Checkbox/Bit | A true or false value, represented by 1 or 0 respectively. |
(D) Dropdown/Picklist | A single selection from a predefined list of options. |
(E) Date | A 32-bit Unix timestamp integer, representing the number of elapsed seconds since January 1, 1970 00:00:00 GMT. |
(F) File | A file contained within the storage service. |
(I) Multiple File | Multiple files contained within the storage service. |
(L) Record Link | A link to another record. |
(M) List | A list of multiple text values. |
(N) Number | An unsigned 32-bit whole number. |
(S) Single Line | A single line of text. |
(T) Multiple Lines | Multiple lines of text, with linefeeds preserved. |
(U) URL | A Uniform Resource Locator to a web page. |
(W) Worker | A single selection from the list of active workers. |
(X) Multiple Checkboxes | Any number of selections from a predefined list of options. |
Working with custom fields in the API
Building a list of the available custom fields
You can retrieve custom field information using the /records API endpoint.
The available custom fields and fieldsets for a specific record type can also be retrieved using the /contexts/list endpoint:
GET /rest/contexts/list.json
This will return a list of record types with custom field information, like the following example:
{
id: "cerberusweb.contexts.ticket",
name: "Ticket",
plugin_id: "cerberusweb.core",
custom_fields: [
{
id: 146,
name: "Due",
type: "E"
},
{
id: 143,
name: "Priority",
type: "D",
params: {
options: [
"Moderate",
"High",
"Critical"
]
}
}
],
custom_fieldsets: [
{
id: "1",
name: "Billing",
owner__context: "cerberusweb.contexts.group",
owner_id: "5",
custom_fields: [
{
id: 14,
name: "Invoice #",
type: "S"
}
]
},
{
id: "45",
name: "Impact",
owner__context: "cerberusweb.contexts.group",
owner_id: "2",
custom_fields: [
{
id: 166,
name: "Severity",
type: "D",
params: {
options: [
"4 - Suggestion",
"3 - Need assistance",
"2 - Something isn't right",
"1 - Urgent"
],
context: "cerberusweb.contexts.activity_log"
}
}
]
}
]
}
Retrieving custom fields on records
Custom fields can be retrieved on records using key expansion in GET
requests:
GET /rest/records/tickets/123.json?expand=custom_
The keys for custom fields are in the format custom_123
, where 123
is the ID. The labels and types of each custom field are in the _labels
and _types
keys respectively.
Retrieving custom fields on search results
Custom fields can be retrieved in search results using key expansion in POST
requests:
POST /rest/records/tickets/search.json
Content-Type: application/x-www-form-urlencoded; charset=utf-8
expand=custom_&q=subject:Receipt*
When using an official library, the requests look like:
$postfields = array(
array('expand','custom_'),
array('q','subject:Receipt*'),
array('sortBy','created'),
array('sortAsc','0'),
array('page','1'),
);
$out = $cerb->post($base_url . 'records/tickets/search.json', $postfields);
The keys for custom fields are in the format custom_123
, where 123
is the ID. The labels and types of each custom field are in the results_meta
key.
Setting custom fields on records
Custom fields can be set on records in PUT
requests:
PUT /rest/records/tickets/123.json?expand=custom_
Content-Type: application/x-www-form-urlencoded; charset=utf-8
fields[custom_14]=CERB-1234&fields[custom_143]=Critical
When using an official library, the requests look like:
$putfields = array(
array('fields[custom_14]','CERB-1234'),
array('fields[custom_143]','Critical'),
);
$out = $cerb->put($base_url . 'records/tickets/123.json?expand=custom_', $putfields);
Each custom field value is sent as a form field in the format fields[custom_123]=value
, where 123
is the ID, and value
is determined by the custom field type.