Fields
Retrieves all fields defined in a table. Each field in the response includes type-specific properties: options (array for choice/multi, expression string for dchoice/dmulti), optionName / optionIcon / optionColor for dchoice/dmulti, and expression for function fields. Any configured canRead / canWrite permission guards are included for every type.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Maximum number of fields to return
Number of fields to skip (starts with 0)
Fields retrieved successfully
Unauthorized
Table not found
Internal server error
GET /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
],
"page_info": {
"has_more": true,
"limit": 1,
"offset": 1
}
}Creates a new field in a table.
Choice / multi fields: provide an options array with initial values. Each option receives a server-assigned stable id returned in the response.
Dynamic choice / dmulti fields: options is required and must be an expression that resolves the selectable records at runtime. optionName, optionIcon, and optionColor are optional display-value expressions.
Logic (function) fields: expression is optional.
Every script property is compiled before the field is created: expression, options, optionName, optionIcon, optionColor, canRead and canWrite are all Ninox Script expressions, and an expression that does not parse returns 400 with nothing created — a broken one would otherwise degrade the field silently on every read instead of failing loudly while it can still be fixed. canRead/canWrite are evaluated per record, so they can permit the field on one record and refuse it on the next; canWrite is rejected for computed and system-generated types (function, lambda, reverse, rowId, void), which have no write path to guard, and setting either requires the schema:manage-permissions grant. On create, none of these can reference the field being created — it is not yet in the table's script scope; set such an expression with a follow-up PATCH.
Not creatable via this endpoint: any, lambda, react, rowId, styled, unknown, void are internal script-type artifacts with no UI presence (lambda has no storage column at all) — intentionally excluded, not a gap.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Script expression that must allow reading this field's value
Script expression that must allow writing this field's value
Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Reference table name (for reference/reverse types)
nullPattern: ^[a-z0-9_]+$Show this field as a column in the table's default view (default: true)
Field type
Field variant (for string type)
Default value applied when a record is created: a literal value (an array of option ids for multi/dmulti), or a script expression (as { $nx:
Field is indexed
Script expression run as a row trigger when the field value changes
Field is required
Field is searchable
Field is unique
Field created successfully.
Bad request — validation failure (e.g., missing required fields, field already exists, invalid field type, a script expression that does not compile)
Unauthorized
Workspace, module or table not found
Internal server error
POST /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 246
{
"index": true,
"labels": {
"": "Description",
"de": "Beschreibung"
},
"name": "description",
"readRoles": [
"admin",
"editor"
],
"refTableName": null,
"required": false,
"search": true,
"type": "string",
"unique": false,
"variant": "multiline-text",
"writeRoles": [
"admin"
]
}{
"data": {
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Creates multiple fields in a table within a single transaction. If any field creation fails, all changes are rolled back.
The same rules as the single-create endpoint apply per field: choice/multi fields accept an initial options array; dchoice/dmulti fields require an options expression; logic fields accept an optional expression.
Every script property — expression, options, optionName, optionIcon, optionColor, canRead, canWrite — is compiled before the transaction, on every field in the batch: one field with an expression that does not parse returns 400 and no field in the batch is created.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Script expression that must allow reading this field's value
Script expression that must allow writing this field's value
Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Reference table name (for reference/reverse types)
nullPattern: ^[a-z0-9_]+$Show this field as a column in the table's default view (default: true)
Field type
Field variant (for string type)
Default value applied when a record is created: a literal value (an array of option ids for multi/dmulti), or a script expression (as { $nx:
Field is indexed
Script expression run as a row trigger when the field value changes
Field is required
Field is searchable
Field is unique
Fields created successfully.
Bad request — validation failure (e.g., duplicate field names in the batch, field already exists, a script expression that does not compile)
Unauthorized
Workspace, module or table not found
Internal server error
POST /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/batch HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 196
[
{
"labels": {
"": "First Name"
},
"name": "first_name",
"type": "string"
},
{
"labels": {
"": "Last Name"
},
"name": "last_name",
"type": "string"
},
{
"labels": {
"": "Age"
},
"name": "age",
"required": true,
"type": "number"
}
]{
"data": [
{
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Deletes multiple fields in a table within a single transaction. If any field deletion fails, all changes are rolled back.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Field name
Fields deleted successfully
Bad request (e.g., duplicates in request)
Unauthorized
Field not found
Internal server error
DELETE /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/batch HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 55
{
"fieldNames": [
"description",
"status",
"assigned_user"
]
}{
"data": [
{
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Updates multiple fields in a table within a single transaction. If any field update fails, all changes are rolled back. Same per-field rules as the single-update endpoint apply to each entry — including the schema:manage-permissions grant for permission properties and the pre-save compilation of every script property (expression, options, optionName, optionIcon, optionColor, canRead, canWrite), any of which rejects the whole batch.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Script expression that must allow reading this field's value; null removes the guard
Script expression that must allow writing this field's value; null removes the guard
Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Default value applied when a record is created: a literal value (an array of option ids for multi/dmulti), or a script expression (as { $nx:
Field is indexed
Script expression run as a row trigger when the field value changes
Field is required
Field is searchable
Field is unique
Name of the field to update
^[a-z0-9_]+$Fields updated successfully.
Bad request (e.g., duplicate fieldName entries in the batch, field already exists, a script expression that does not compile)
Unauthorized
Field not found
Internal server error
PATCH /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/batch HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 108
[
{
"fieldName": "status",
"readRoles": [
"admin"
],
"writeRoles": [
"admin"
]
},
{
"fieldName": "notes",
"required": false
}
]{
"data": [
{
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
]
}Retrieves detailed information about a specific field in a table. For choice/multi fields the response includes an options array with stable ids. For dchoice/dmulti fields the response includes the options expression and any configured optionName, optionIcon, optionColor formulas. For function fields the response includes the expression. Any configured canRead / canWrite permission guards are included for every type.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Field name
emailPattern: ^[a-z0-9_]+$Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Field details retrieved successfully
Unauthorized
Field not found
Internal server error
GET /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/{fieldName} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Deletes a field in a table
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Field name
emailTable name
contactsModule name
crmWorkspace ID
5rdco4s18swuField deleted successfully
Unauthorized
Field not found
Internal server error
DELETE /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/{fieldName} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Updates an existing field in a table.
choice / multi fields: options replaces the full option list. Include the stable id for existing options you want to keep; omit id for new options. Sending an options array to a non-choice field or an options expression to a non-dynamic-choice field returns 400.
dchoice / dmulti fields: options updates the selection expression. optionName, optionIcon, and optionColor update the corresponding display-value formulas. optionName, optionIcon, optionColor cannot be sent to non-dynamic-choice fields (returns 400).
Logic (function) fields: expression updates the field's formula.
Every script property is compiled before the update: expression, options, optionName, optionIcon, optionColor, canRead and canWrite are all Ninox Script expressions, and an expression that does not parse returns 400 with nothing changed — a broken one would otherwise degrade the field silently on every read instead of failing loudly while it can still be fixed. canRead/canWrite are evaluated per record, so send null to remove one; 'true' also stops it refusing anything, but keeps an expression that is still evaluated once per record. An empty string is rejected rather than read as "no guard" — only an absent guard is treated as absent, so a blank expression would be evaluated and would deny every record. canWrite is rejected for computed and system-generated types (function, lambda, reverse, rowId, void), which have no write path to guard and therefore never carry one to clear. Setting or clearing either requires the schema:manage-permissions grant.
Enter your Workspace API key.
API keys can be generated and managed within the Workspace Integration settings in the Ninox app.
Field name
emailPattern: ^[a-z0-9_]+$Module name
crmPattern: ^[a-z0-9_]+$Table name
contactsPattern: ^[a-z0-9_]+$Workspace ID
5rdco4s18swuPattern: ^[a-z0-9]+$Script expression that must allow reading this field's value; null removes the guard
Script expression that must allow writing this field's value; null removes the guard
Expression (for function type)
Field name
^[a-z0-9_]+$Color expression (for dchoice/dmulti types)
Icon expression (for dchoice/dmulti types)
Display name expression (for dchoice/dmulti types)
Options array (for choice/multi types) or selection expression (for dchoice/dmulti types)
Default value applied when a record is created: a literal value (an array of option ids for multi/dmulti), or a script expression (as { $nx:
Field is indexed
Script expression run as a row trigger when the field value changes
Field is required
Field is searchable
Field is unique
Field updated successfully.
Bad request (e.g., field already exists, a script expression that does not compile)
Unauthorized
Field not found
Internal server error
PATCH /api/v1/workspace/{workspaceId}/modules/{moduleName}/tables/{tableName}/fields/{fieldName} HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 75
{
"labels": {
"": "Updated Label",
"de": "Aktualisiertes Label"
},
"required": true
}{
"data": {
"binding": "text",
"canRead": "text",
"canWrite": "text",
"defaultValue": {
"$nx": "text"
},
"expression": "text",
"index": true,
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"onUpdate": "text",
"optionColor": "text",
"optionIcon": "text",
"optionName": "text",
"options": [
{
"color": "text",
"icon": "text",
"id": "text",
"labels": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"name": "text",
"order": 1,
"textColor": "text"
}
],
"readRoles": [
"text"
],
"refTableName": "text",
"required": true,
"search": true,
"syncedFrom": "text",
"type": "any",
"unique": true,
"variant": "text",
"writeRoles": [
"text"
]
}
}Zuletzt aktualisiert
War das hilfreich?