/api/v1/object/field/{objectSlug}List the fields of an object, one page at a time.
List the fields of an object, one page at a time.
Returns the object's own fields, active first, then by sort_order.
Each page also includes the fields shared into this object from other
objects (is_shared: true); those are not counted in pagination.
options holds the field type's settings; deleted choices of a select
field are left out. Relations are not listed here; use
GET /object/field/active/{objectSlug} to get them as fields.
Query parameters:
page— page number, from 1. Default1.limit— page size, 1 to 200. Default50.search— keep fields whose name, label or slug contains this text, ignoring letter case.types— keep these field types:types=number,currencyor repeatedtypes=number&types=currency.is_active—trueorfalseto keep only active or inactive fields.
Scope: read.<object slug>, for example read.contacts.
Errors:
400— no object has that slug, or the object is inactive.422— a query parameter is invalid, for example an unknown type.
Response 200:
{
"status": 200,
"message": "Fields retrieved successfully",
"data": [
{
"id": 912,
"name": "stage",
"slug": "stage-k2j9h4g7",
"label": "Stage",
"icon": null,
"type": "select",
"required": false,
"default_value": null,
"options": {
"values": [
{
"id": "6a1f3c9e-2b7d-4e8a-9f0c-1d2e3f4a5b6c",
"value": "lead",
"label": "Lead",
"color": "#3B82F6"
}
]
},
"is_active": true,
"sort_order": 4,
"group_slug": null,
"group_ineligible": false,
"is_system": false,
"api_only": false,
"is_shared": false,
"shared_with": [],
"is_visible": true,
"created_at": "2026-08-02T08:30:00.000Z",
"updated_at": "2026-09-01T11:15:00.000Z"
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 50,
"totalPages": 1,
"nextPage": null,
"prevPage": null
}
}
Send request
Use the documented inputs to call this endpoint directly.
Parameters
Values are applied to the request and the example on the right.
Responses
Successful response
{
"id": 1.5,
"name": "string",
"slug": "string",
"label": "string",
"icon": "string",
"type": "string",
"required": true,
"default_value": "string",
"options": "string",
"is_active": true,
"sort_order": 1.5,
"group_slug": "string",
"group_ineligible": true,
"is_system": true,
"api_only": true,
"is_shared": true,
"shared_with": "string",
"is_visible": true,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}Archived (deleted-but-still-referenced) options are stripped — see FieldResponseDto.
Order within the field's section — and, for a section-less field, within
the flat list. For a placed (shared) field this is the placement's
position on THIS Unit, not the home definition's order. Same currency as
PUT /object/field/order and as positions[] on the section assign call.
The field's section on THIS Unit (FRD-34); null ⇒ the implicit
"Ungrouped" bucket, which renders last. null on paths that skip
stampSections (nothing grouped, or a write-echo response), so the key
is always present on the wire.
FRD-34 — this field can never be moved into a section: the record shell renders it (title, assignee, meta block, status/tag chrome) or it is system-defined. Derived on read rather than stored, so it is right for objects seeded before sections existed and on the write-echo responses.
Value-write lock — drives the "API only" toggle's state in field settings.
CFM-2: is_shared/shared_with are computed by
FieldQueryService.mergeWithPlacedFields but were stripped here.
false/[] on paths that skip the merge (e.g. findBySlug).
Per-Unit visibility of a placed (shared) field on THIS Unit — set by
mergeWithPlacedFields from the placement row. Own fields (and paths
that skip the merge) default to true; their on/off switch is
is_active.
Bad request
{
"status": 1,
"message": "string",
"code": "string",
"data": {}
}The HTTP status code of the response.
What went wrong. Several validation messages are joined with ", ".
A stable, machine-readable reason. Only some errors set it.
Extra detail about the error. Only some errors set it.
Unauthorized
{
"status": 1,
"message": "string",
"code": "string",
"data": {}
}The HTTP status code of the response.
What went wrong. Several validation messages are joined with ", ".
A stable, machine-readable reason. Only some errors set it.
Extra detail about the error. Only some errors set it.
Internal server error
{
"status": 1,
"message": "string",
"code": "string",
"data": {}
}The HTTP status code of the response.
What went wrong. Several validation messages are joined with ", ".
A stable, machine-readable reason. Only some errors set it.
Extra detail about the error. Only some errors set it.
Powered by heyo-docs