Display-layout groups
List display-layout groups
/a/LayoutGroups_getList
Discover named layout groups for selectors and the display-layout dashboard
When to use this endpoint
Populate a selector of layouts for one or several main-table keys, or browse the dashboard. This returns header metadata only; read the selected tree separately with Layouts_getField. Hidden is a list-presentation flag, not an access-control guarantee.
Authentication and permissions
Authenticate with signed API-key fields or a logged-in CRM session. The handler calls the login guard but does not require client administrator, display-layout page permission, group ownership or a feature toggle.
Reads the authenticated tenant’s groups. No user_id or department filter is applied; showAll is not administrator-restricted. Group mutations require administrator status separately.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
table | String or native request array | No | Exact table_name string or native array of strings, such as customer or [customer,asset]. Omission/null means all tables; blank means only an empty table key, not all, and an empty array returns []. A JSON-encoded array is treated as one literal string, not decoded. Values are bound parameters, with nested/non-string values rejected. |
showAll | Integer | No | Default 0 excludes metadata hidden whose JSON-unquoted value equals the string true. Any nonzero integer conversion includes those rows; text true integer-converts to zero. Hidden=1 is not the same as the tested true value. |
Example request
$groups = FM_api('LayoutGroups_getList', ['table' => 'customer']);
Example response
[{"id":"1042","name":"Customer details","table":"customer","cdate":"2026-10-24 10:00:00","metaModalSize":"modal-lg","type":"0"}]
Returns a bare array with id/name/table/cdate/metaModalSize/type. cdate uses database FROM_UNIXTIME formatting/timezone, not raw Unix seconds or the user’s browser timezone. Missing JSON keys can be null. No matching rows return []; a failed or throwing read returns an error instead of a successful empty list.
Errors and unusual responses
| Response | Condition |
|---|---|
{"error":"not logged in"} | No authenticated tenant context is available. Invalid signed credentials can be rejected by the dispatcher before the handler runs. |
{"error":"missing or invalid parameter: table"} | table or an array member is not a string. |
{"error":"Unable to read layout groups"} | The read fails or throws. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- Orders by table_name, name then id, with no pagination, count envelope, cap or text search. start/length/order/fields parameters do not change this fixed query.
- The default hidden predicate is exactly “hidden is SQL null OR JSON-unquoted hidden differs from true”. showAll changes this predicate only; it does not expose deleted rows through a soft-delete policy. This table is not in the shared soft-delete set.
- No direct mobile-app or m-service caller for this family was found. These groups configure CRM display layouts; they are not reusable document presets, form definitions, or a tenant-wide change to existing business-object data.
Side effects
- Read-only: no default group or quick-create layout is created by this route. Other layout readers can have different initialization behavior.
See it in Fieldmotion
CRM1
No production CRM1 caller for this layout-group family was found in client source. The administration workflow described here is CRM2; API tests and fixture setup are not evidence of a CRM1 screen.
CRM2
Open CRM2’s Display Layout Dashboard to observe LayoutGroups_getList without a table filter. Customer/job/asset/stock and other layout selectors also call it with their map key or an array of keys. Filter for this exact route; selected IDs are subsequently used to load/display layouts.
Related endpoints
- LayoutGroups_getList discovers IDs and metadata for layout selectors.
- LayoutGroup_createData creates a header only; LayoutGroup_copy also copies the existing field tree.
- LayoutGroup_updateData changes several header fields; LayoutGroup_updateField changes one mapped field across IDs.
- LayoutGroup_deleteData removes a group and performs separate field-row cleanup.