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

ParameterTypeRequiredDescription
tableString or native request arrayNoExact 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.
showAllIntegerNoDefault 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

ResponseCondition
{"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