REST APIFields and custom entitiesFields
Fields
Fields: list, get, create, update and delete, plus batch restore.
- 6 operations
- 50 fields
- Schema Field
- GraphQL: field
The summaries on this page are generated from the specification; written descriptions come with the next releases of the reference.
| Method | Path | Operation |
|---|---|---|
| GET | /entities/Fields | List Fields |
| POST | /entities/Fields | Create Field |
| GET | /entities/Fields/{id} | Get Field |
| PATCH | /entities/Fields/{id} | Update Field |
| DEL | /entities/Fields/{id} | Delete Field |
| POST | /entities/Fields/batch-restore | Restore deleted Fields |
GET List Fields
Returns the Fields the API application can read, one page at a time. In the list envelope, total counts every match and page_info pages through them.
Query parameters
| Name | Type | Description |
|---|---|---|
include-deleted | boolean | Include soft-deleted records. Lists only; get-by-id refuses it. |
first | integer | Page size. Default 30, maximum 100; a larger value is refused with HTTP 400, code 117. |
last | integer | Return the last N records of the result; together with first, the last N of the first M. Maximum 100. |
before | string | Cursor from page_info.start_cursor, to page backwards. URL-encode it. |
after | string | Cursor from page_info.end_cursor of the previous page. URL-encode it: cursors are base64, and a raw + becomes a space. |
expand | string | Related records to return inline instead of their URIs, comma-separated; dots reach nested relations, as in account_relations.account. |
order-by | string | Fields to sort by, comma-separated. A leading - sorts descending, as in -modified; dotted paths sort by related fields. |
filter | object | filter[field]=value. Separate several values with a raw comma (OR), as in filter[name]=north,south. Encode a comma that belongs to a value as %2C. URLSearchParams and Python requests encode every comma, so build the filter part of the query string yourself. Dotted paths filter on related records, as in filter[owner.email]. Encode a + in a value as %2B: query values are form-decoded, so a raw + becomes a space. |
filter-op | object | filter-op[field]=operator, one per field: eq (the default), ieq, not-eq, not-ieq, contains, icontains, starts, istarts, ends, iends, gt, gte, lt, lte, between, null, not-null, empty and not-empty. null, not-null, empty and not-empty take no filter value; gt, gte, lt and lte take exactly one. |
load-only | string | Fields to return, comma-separated (raw or encoded commas both work here); dots select nested fields, as in owner.id. All fields are returned without it. Lists only: get-by-id refuses it with HTTP 400, code 118. |
Responses
200 Page of Field records.: success, total, page_info, data 400 Bad request 401 Not authenticated 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields?first=10&filter%5Bname%5D=north&filter-op%5Bname%5D=icontains' \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET"fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields?first=10&filter%5Bname%5D=north&filter-op%5Bname%5D=icontains', {
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`)
}
})import os
import requests
response = requests.get(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields",
params={
"first": "10",
"filter[name]": "north",
"filter-op[name]": "icontains"
},
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"])
)POST Create Field
Creates one record and answers 201 with it.
Query parameters
| Name | Type | Description |
|---|---|---|
validation-level | integer | Bit mask that relaxes validation on this write. 0 (the default) validates everything. Bits: 2 skip unchanged fields, 4 skip admin-defined validations, 8 allow read-only fields, 16 skip relation checks, 32 skip value checks, 64 skip invalid recalculations, 128 skip step-checklist gates, 256 add conditional field requirements, 512 skip uniqueness checks. Add bits together (20 = 4 + 16); member names and comma lists such as 4,16 work too. A value with an internal-only bit is refused with HTTP 400, code 117. |
Request body
The new record's fields. Relations are set by id. Schema createFieldInput; the fields are in Field fields. Required: entity_name, name, type_id.
Responses
201 The created Field record.: success, data 400 Bad request 401 Not authenticated 422 Validation failed 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields' \
--request POST \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET" \
--header 'Content-Type: application/json' \
--data '{
"entity_name": "Northwind entity name",
"name": "Northwind field",
"type_id": "Northwind type id"
}'fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields', {
method: 'POST',
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`),
'Content-Type': 'application/json'
},
body: JSON.stringify({
entity_name: 'Northwind entity name',
name: 'Northwind field',
type_id: 'Northwind type id'
})
})import os
import requests
response = requests.post(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields",
headers={
"Content-Type": "application/json"
},
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"]),
json={
"entity_name": "Northwind entity name",
"name": "Northwind field",
"type_id": "Northwind type id"
}
)GET Get Field
Returns one record by id. expand returns related records inline instead of their URIs.
Path parameters
| Name | Type | Description |
|---|---|---|
id | string (uuid) | Id of the Field record to retrieve. Required |
Query parameters
| Name | Type | Description |
|---|---|---|
expand | string | Related records to return inline instead of their URIs, comma-separated; dots reach nested relations. The only parameter this call accepts. |
Responses
200 The Field record.: success, data 400 Bad request 401 Not authenticated 404 Not found 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001' \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET"fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001', {
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`)
}
})import os
import requests
response = requests.get(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001",
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"])
)PATCH Update Field
Changes the fields you send and leaves the rest as they are; there is no PUT.
Path parameters
| Name | Type | Description |
|---|---|---|
id | string (uuid) | Id of the Field record to update. Required |
Query parameters
| Name | Type | Description |
|---|---|---|
validation-level | integer | Bit mask that relaxes validation on this write. 0 (the default) validates everything. Bits: 2 skip unchanged fields, 4 skip admin-defined validations, 8 allow read-only fields, 16 skip relation checks, 32 skip value checks, 64 skip invalid recalculations, 128 skip step-checklist gates, 256 add conditional field requirements, 512 skip uniqueness checks. Add bits together (20 = 4 + 16); member names and comma lists such as 4,16 work too. A value with an internal-only bit is refused with HTTP 400, code 117. |
Request body
The fields to change. Schema updateFieldInput; the fields are in Field fields.
Responses
200 The changed Field record.: success, data 400 Bad request 401 Not authenticated 404 Not found 422 Validation failed 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001' \
--request PATCH \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET" \
--header 'Content-Type: application/json' \
--data '{
"name": "Northwind field (renamed)"
}'fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001', {
method: 'PATCH',
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`),
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Northwind field (renamed)'
})
})import os
import requests
response = requests.patch(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001",
headers={
"Content-Type": "application/json"
},
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"]),
json={
"name": "Northwind field (renamed)"
}
)DEL Delete Field
Deletes one record and answers with its id.
Path parameters
| Name | Type | Description |
|---|---|---|
id | string (uuid) | Id of the Field record to delete. Required |
Responses
200 Deletion confirmation.: success, data 400 Bad request 401 Not authenticated 404 Not found 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001' \
--request DELETE \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET"fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001', {
method: 'DELETE',
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`)
}
})import os
import requests
response = requests.delete(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/9c000000-0000-4000-a000-000000000001",
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"])
)POST Restore deleted Fields
Restores the deleted records whose ids are in the body, a JSON array.
Query parameters
| Name | Type | Description |
|---|---|---|
rollback-method | integer | 0, the default: one failed item fails the whole batch (HTTP 422, or 404 for an unknown id) and nothing is written. 1: the valid items are written and the call answers 200 with success false and one result per item, an id or an error, in input order. Check every item. |
Request body
A JSON array of ids.
Responses
200 Result per id, in request order: the id of the restored record, or the error.: success, data 400 Bad request 401 Not authenticated 404 Not found 422 Validation failed 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/batch-restore' \
--request POST \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET" \
--header 'Content-Type: application/json' \
--data '[
"9c000000-0000-4000-a000-000000000001",
"9c000000-0000-4000-a000-000000000002"
]'fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/batch-restore', {
method: 'POST',
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`),
'Content-Type': 'application/json'
},
body: JSON.stringify(['9c000000-0000-4000-a000-000000000001', '9c000000-0000-4000-a000-000000000002'])
})import os
import requests
response = requests.post(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Fields/batch-restore",
headers={
"Content-Type": "application/json"
},
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"]),
json=[
"9c000000-0000-4000-a000-000000000001",
"9c000000-0000-4000-a000-000000000002"
]
)Field fields
| Field | Type | Notes |
|---|---|---|
id | uuid | Read-only Unique identifier of entity. |
entity_name | string | Required on createRead-only Related entity name for field (e.g. |
name | string | Required on create User friendly name for field. |
type_id | string | Required on create Type of the field. |
data_set_id | uuid → Data | Optional custom data set id can be set. |
parent_options_field_id | uuid | For dependent dropdown/radio fields, id of the parent field whose selected value restricts the options shown on this field. |
calc_formula | string | Calculated formula used for fields which supports calculation. |
default_value | string | Value pre-filled into this field on newly created records, as text converted to the field type; empty for no default. |
name_translations | binary | Map of locale codes to translated field names (e.g. |
is_delete_protected | boolean | Read-only True when the record is protected against deletion because it must always exist in the space. |
has_draft | boolean | Read-only True when the record has unpublished draft changes, including pending translation changes, that can be published. |
is_deleted | boolean | Read-only True when the field is marked as deleted (soft-delete). |
modified | date-time | Read-only Last modification time. |
created | date-time | Read-only Creation time. |
api_name | string | Read-only Immutable and generated name. |
Show all 50 fields
| Field | Type | Notes |
|---|---|---|
use_lang | integer | Read-only When true, the field name is treated as a translation key and resolved through the translation system; otherwise the literal name is shown. |
column_name | string | Read-only Storage column name for the field; used as the filter key in API queries. |
column_source | integer | Read-only Storage origin of the field: on the main entity record, on the custom-field data record, or computed. |
relation_id | string | Read-only For relation-typed fields, identifier of the relation kind that connects this entity to the related entity. |
relation_with_entity_id | string | Read-only For relation-typed fields, the entity the field points to (e.g. |
shared_with_field_id | uuid | Read-only When the field is shared between abstract entities (e.g. |
system_type | integer | Read-only Whether the field is System (built-in, immutable), Protected (built-in, limited changes), or Custom (user-created). |
composite_field_id | uuid | Read-only For sub-fields of a composite field (e.g. |
sequence_set_id | uuid | Read-only For sequence-typed fields, id grouping the FieldSequence rows that drive auto-numbering for this field. |
sequence_id | uuid | Read-only Deprecated; always returns null. |
system_required | boolean | Read-only True when the field cannot be made optional (enforced by the platform). |
is_published | boolean | Read-only True when the field configuration is published; false while the field exists only as an unpublished draft. |
system_readonly | boolean | Read-only True when the field cannot be made writable (enforced by the platform). |
use_in_global_search | boolean | Read-only If this field is allowed in global search. |
settings | object | Read-only Type-specific configuration for the field (e.g. |
is_unique | boolean | Read-only If true, then there will be an API validation if value of entity is unique. |
data_set | uri → Data | Read-only For dropdown, radio, and multiselect-checkbox fields, the set of available options. |
lookup | object | Read-only Lookup field definition. |
sequence_pattern | string | Read-only Deprecated - previously returned sequence pattern used for sequence type of field. |
sequence | object | Read-only Sequence field definition. |
rollup | object | Read-only Rollup field definition. |
options | object | Read-only Type-specific settings of the field, such as the decimal places of a number or the display of a record card; the shape depends on type_id. |
ai_options | object | Read-only AI Smart Field options. |
advanced_formula | object | Read-only Formula of a calculated formula field - the expression, its result type and display - as a JSON object conforming to the AdvancedFormulaProperty type; empty … |
source_field_id | string | Read-only For derived fields, id of the underlying source field that drives this field's value (e.g. |
source_type_id | string | Read-only Underlying primitive type id of the field, after resolving composite/rollup/lookup wrappers. |
use_in_interface_preview | boolean | Read-only True when the field can be used in the record interface preview pane. |
translated_name | string | Read-only Field name resolved into the current user's language. |
field_permissions | uri → Data | Read-only Per-user-role access overrides for this field. |
original_dataset_field_id | uuid | Read-only When multiple dropdown/radio fields share a data set, id of the field that originally defined the data set. |
name_translated | string | Read-only Field name in the current user's language, taken from name_translations. |
primitive_type | string | Read-only Primitive value type of the field (e.g. |
is_readonly_on_recurrent_appointment | boolean | Read-only True when the field cannot be edited on individual occurrences of a recurring appointment (changes must be made on the recurrence master). |
is_available_for_webresource | boolean | Read-only True when the field can be referenced from a Webresource URL template. |
is_available_for_advanced_formula | boolean | Read-only True when the field can be used as an input in an advanced calculated formula expression on this entity. |
Custom fields appear in your space's live spec: fetch it with your credentials.
Errors
Every error body has success: false, http_status, code, name and message. Branch on code: the status alone does not tell a missing permission from a bad parameter. All codes: error codes; how to handle them: Errors.
| HTTP | When |
|---|---|
| 400 | Bad request: a bad or unknown parameter (codes 117, 118), a missing permission (code 50), conflicting data (code 2002) or any other API error. The REST API answers 400 where others answer 403 or 409; check code. |
| 401 | Not authenticated: missing or wrong credentials, a credential of another space, or an expired token (code 401, ERROR_UNAUTHORIZED). |
| 404 | No such record or entity (code 143 ERROR_NO_ENTITY, or 2006 ERROR_UNKNOWN_TYPE). |
| 422 | Validation failed (code 40000, with the failing fields) or a required parameter is missing (code 119). By default one failed item fails a whole batch and nothing is written. |
| 429 | Too many requests (code 182). Wait for the seconds in Retry-After, then retry. |
| 500 | Unexpected server error (code 1000, ERROR_UNKNOWN). |