GET /jersey/v1/user-defined-fields — Get UDF Field Values
Overview
This endpoint returns all user-defined field (UDF) labels, their physical column names, and the current stored values for a specific record. You identify the record by passing the table name and its business keys. The endpoint works for any UDF-enabled table in CMiC — Projects, Jobs, Vendors, Cost Items, and so on — without any object-specific code.
| Property | Value |
|---|---|
| URL | {base_url}/sys-rest-api/jersey/v1/user-defined-fields |
| Method | GET |
| Produces | application/json |
| Success Status | 200 OK |
| Auth | Basic (Authorization: Basic {credentials}) |
Notes
Authentication and authorization are required for all calls.
schemaName defaults to DA if not supplied. You only need to pass it if you are working in a different schema.
objectKey1 is always required. Additional keys (objectKey2 through objectKey10) are only needed when the table uses a composite key — for example, a Cost Item needs both Company Code and Item Code.
If the parent record does not exist in the database, the endpoint returns a 400 error. If no UDF definition exists for the table, it also returns a 400. The response will include an error code and a human-readable message in both cases.
Audit columns (createDate, createUser, updateDate, updateUser) are populated from the UDF value row itself, not from the parent table.
UI Navigation
User-defined fields are custom fields that are attached directly to the object they belong to. They appear on the object's own screen — there is no separate standalone navigation path for them. For example, UDFs for a Project appear on the Project record itself, and UDFs for a Job appear on the Job record.
Finders
The following finders are available to identify and retrieve a specific record.
This endpoint always returns a single record. There is no list mode — you must supply enough key information to identify exactly one parent record. The combination of tableName and the business keys is what acts as the finder.
| Finder Parameter | Required | How It Narrows the Result |
|---|---|---|
tableName |
Yes | Tells the endpoint which UDF-enabled table to look in (e.g. PROJ, JCJOB, CIITEM, JCCOST). Every call must include this. |
objectKey1 |
Yes | The first (and often only) business key of the parent record. For a Project this would be the Company Code. For a single-key table this alone identifies the record. |
objectKey2 |
Depends | Required when the table uses a composite key. For a Project, this would be the Project Number. For a Cost Item, the Item Code. |
objectKey3 through objectKey10 |
Depends | Only needed for objects with three or more key parts. Most objects use one or two keys. Pass null or omit any slot you do not need. |
schemaName |
No | Defaults to DA. Only supply this if your data lives in a different schema. |
Single-key example — retrieve UDFs for Job JOB-001 in company 01:
GET .../v1/user-defined-fields?tableName=JCJOB&objectKey1=01&objectKey2=JOB-001
Composite-key example — retrieve UDFs for Cost Item BOLT-123 in company 01:
GET .../v1/user-defined-fields?tableName=CIITEM&objectKey1=01&objectKey2=BOLT-123
If you are unsure what objectKey1 and objectKey2 mean for a given table, call the definition endpoint first:
GET .../v1/user-defined-fields/definition?tableCode=CIITEM_K
That tells you the label for each key slot before you make the data call.
Query Standards
| Key | Description |
|---|---|
tableName |
Required. Identifies which UDF-enabled table to query. |
objectKey1 |
Required. First part of the business key that uniquely identifies the parent record. |
objectKey2 through objectKey10 |
Optional. Additional key parts for composite-key tables. Unused slots can be omitted. |
schemaName |
Optional. Database schema. Defaults to DA. |
Attributes
Response — Top Level
| Field | Type | Description | Example |
|---|---|---|---|
schemaName |
String | Schema that owns the table | DA |
tableName |
String | Table the UDFs belong to | PROJ |
objectKey1 |
String | First business key value | MAIN |
objectKey2 through objectKey10 |
String | Remaining key values (null if unused) | P001 |
objectKeyName1 |
String | Column name behind objectKey1 | PROJ_COMP_CODE |
objectKeyName2 through objectKeyName10 |
String | Column names behind remaining keys (null if unused) | PROJ_NUM |
fieldCount |
Integer | Number of UDF fields returned | 5 |
createDate |
String (ISO 8601) | Date the UDF value row was first created | 2025-03-10T09:00:00-04:00 |
createUser |
String | User who created the UDF value row | JSMITH |
updateDate |
String (ISO 8601) | Date the UDF value row was last updated | 2026-06-01T14:22:00-04:00 |
updateUser |
String | User who last updated the UDF value row | BWILSON |
fields |
Array | List of UDF field entries — see below |
Response — fields[] Array
| Field | Type | Description | Example |
|---|---|---|---|
fieldName |
String | Human-readable label configured for this UDF slot | Project Category |
columnName |
String | Physical column name in the UDF value table | UEV_CODE1 |
value |
String | Current stored value. null if nothing has been saved yet |
COMMERCIAL |
Example
Request
GET {base_url}/sys-rest-api/jersey/v1/user-defined-fields
?tableName=PROJ&objectKey1=MAIN&objectKey2=P001
Authorization: Basic {credentials}
Response — 200 OK
{
"schemaName": "DA",
"tableName": "PROJ",
"objectKey1": "MAIN",
"objectKey2": "P001",
"objectKey3": null,
"objectKey4": null,
"objectKey5": null,
"objectKey6": null,
"objectKey7": null,
"objectKey8": null,
"objectKey9": null,
"objectKey10": null,
"objectKeyName1": "PROJ_COMP_CODE",
"objectKeyName2": "PROJ_NUM",
"objectKeyName3": null,
"createDate": "2025-03-10T09:00:00-04:00",
"createUser": "JSMITH",
"updateDate": "2026-06-01T14:22:00-04:00",
"updateUser": "BWILSON",
"fieldCount": 3,
"fields": [
{ "fieldName": "Project Category", "columnName": "UEV_CODE1", "value": "COMMERCIAL" },
{ "fieldName": "Budget Flag", "columnName": "UEV_CODE2", "value": "Y" },
{ "fieldName": "Review Date", "columnName": "UEV_DATE1", "value": null }
]
}
Error Codes
| HTTP | Error Code | Reason |
|---|---|---|
| 400 | SD-000375-ERR |
tableName or objectKey1 was not provided |
| 400 | SD-000376-ERR |
Parent record not found for the supplied keys |
| 400 | SD-000377-ERR |
No UDF definition exists for this table |
| 500 | — | Unhandled database or server error |
Basic authentication
OK
"{\n \"schemaName\": \"DA\",\n \"tableName\": \"POMAST\",\n \"createDate\": \"2025-12-02T12:40:04-05:00\",\n \"createUser\": \"SHAHIDWS\",\n \"updateDate\": \"2026-06-16T20:29:17-04:00\",\n \"updateUser\": \"YASHB\",\n \"objectKey1\": \"ZZ\",\n \"objectKey2\": \"PZZ0000106\",\n \"objectKey3\": \"1\",\n \"objectKey4\": null,\n \"objectKey5\": null,\n \"objectKey6\": null,\n \"objectKey7\": null,\n \"objectKey8\": null,\n \"objectKey9\": null,\n \"objectKey10\": null,\n \"objectKeyName1\": \"POMST_COMP_CODE\",\n \"objectKeyName2\": \"POMST_NUM\",\n \"objectKeyName3\": \"POMST_RELEASE_NUM\",\n \"objectKeyName4\": null,\n \"objectKeyName5\": null,\n \"objectKeyName6\": null,\n \"objectKeyName7\": null,\n \"objectKeyName8\": null,\n \"objectKeyName9\": null,\n \"objectKeyName10\": null,\n \"fieldCount\": 4,\n \"fields\": [\n {\n \"fieldName\": \"APITEST\",\n \"columnName\": \"UEV_CODE1\",\n \"value\": \"YashBhavsar\"\n },\n {\n \"fieldName\": \"REMARKS1\",\n \"columnName\": \"UEV_CODE2\",\n \"value\": \"Hello243\"\n },\n {\n \"fieldName\": \"NEWNAMES\",\n \"columnName\": \"UEV_CODE3\",\n \"value\": \"New1NameYash\"\n },\n {\n \"fieldName\": \"REMARKS2\",\n \"columnName\": \"UEV_CODE4\",\n \"value\": \"Rijoe\"\n }\n ]\n}"