GET /v2/user-extension/definition/
Overview
This endpoint tells you what objectKey1, objectKey2, and any additional key slots mean for a given UE table code. Call this before making a POST, PATCH, or DELETE if you are unsure which business key values to pass for an unfamiliar table.
It returns the parent object table name and the ordered list of business key column names so you know exactly what each slot represents before making a data call.
| Property | Value |
|---|---|
| URL | {base_url}/sys-rest-api/jersey/v2/user-extension/definition/{tableCode} |
| Method | GET |
| Produces | application/json |
| Success Status | 200 OK |
| Auth | Basic (Authorization: Basic {credentials}) |
Notes
Authentication and authorization are required.
tableCode is a path parameter — it goes directly in the URL, not as a query string.
If the table code does not exist or the parent object is not supported by the UE API, the endpoint returns a 400.
This is a metadata-only call. Nothing is created, modified, or deleted.
UI Navigation
User Extension tables are attached to the parent object's own screen in CMiC. There is no standalone navigation path. Use this endpoint to confirm the key structure of a table code before working with it.
Finders
| Parameter | Type | Required | Description |
|---|---|---|---|
tableCode |
Path | Yes | The UE table code to look up (e.g. CIITEM_K, PROJ_EXT, JCJOB_K). |
Examples:
Look up key definitions for a Cost Item extension table:
GET .../v2/user-extension/definition/CIITEM_K
Look up key definitions for a Project extension table:
GET .../v2/user-extension/definition/PROJ_EXT
Attributes
Response
| Field | Type | Description | Example |
|---|---|---|---|
tableCode |
String | The table code that was looked up | CIITEM_K |
objectTable |
String | Parent object table this UE table belongs to | CIITEM |
keyCount |
Integer | Number of business key columns for this object | 2 |
keys |
Array | Ordered list of key slot definitions | |
keys[].position |
Integer | Key slot number (1-based). Position 1 maps to objectKey1, position 2 to objectKey2, and so on. |
1 |
keys[].columnName |
String | Actual database column name for this key slot | CIITEM_COMP_CODE |
keys[].label |
String | Human-readable label for this key slot | Company Code |
Example
Request — Cost Item extension
GET {base_url}/sys-rest-api/jersey/v2/user-extension/definition/CIITEM_K
Authorization: Basic {credentials}
Response — 200 OK
{
"tableCode": "CIITEM_K",
"objectTable": "CIITEM",
"keyCount": 2,
"keys": [
{ "position": 1, "columnName": "CIITEM_COMP_CODE", "label": "Company Code" },
{ "position": 2, "columnName": "CIITEM_ITEM_CODE", "label": "Item Code" }
]
}
This tells you that when calling POST, PATCH, or DELETE for table code CIITEM_K:
objectKey1= Company Code (e.g.01)objectKey2= Item Code (e.g.BOLT-123)
Request — Project extension
GET {base_url}/sys-rest-api/jersey/v2/user-extension/definition/PROJ_EXT
Authorization: Basic {credentials}
Response — 200 OK
{
"tableCode": "PROJ_EXT",
"objectTable": "PROJECT",
"keyCount": 2,
"keys": [
{ "position": 1, "columnName": "PROJ_COMP_CODE", "label": "Company Code" },
{ "position": 2, "columnName": "PROJ_NUM", "label": "Project Number" }
]
}
Error — Invalid Table Code (400)
{
"error": "SD-000376-ERR: Table code 'XYZ' is not valid or the object is not supported."
}
Error Codes
| HTTP | Error Code | Reason |
|---|---|---|
| 400 | SD-000375-ERR |
tableCode path parameter is blank or missing |
| 400 | SD-000376-ERR |
Table code does not exist or the parent object is not supported by the UE API |
| 500 | — | Unhandled server error |
Basic authentication
OK
"{\n \"tableCode\": \"CIITEM_K\",\n \"masterTableCode\": \"CIITEM\",\n \"objectKeys\": [\n {\n \"objectKey\": \"objectKey1\",\n \"objectKeyName\": \"CIITEM_COMP_CODE\"\n },\n {\n \"objectKey\": \"objectKey2\",\n \"objectKeyName\": \"CIITEM_ITEM_CODE\"\n }\n ]\n}"