Customers
Retrieve legacy customer details
/a/Customers_getDetails
Retrieve a fixed legacy detail projection for a batch of local customer IDs, including each parent’s current name.
When to use this endpoint
Use Customers_getDetails only for legacy CRM1 selectors that need the fixed address/contact projection and parent_name.
For integrations, prefer Customers_getById: it supports field selection and excludes soft-deleted records.
Authentication and permissions
The request must authenticate with signed API-key fields or a logged-in CRM session. The handler performs no additional page or role-permission check.
The lookup and any write use the authenticated tenant; an ID from another tenant cannot be addressed through this call.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | JSON array or array | Yes | Local customer IDs. A string is JSON-decoded; each resulting value is converted to an integer. Outsourced customer tokens therefore become 0 and are not supported. |
Example request
$customers = FM_api('Customers_getDetails', [
'ids' => json_encode(['1042', '1088']),
]);
Example response
[
{
"id": "1088",
"name": "Northwind Cork",
"notes": "",
"account_number": "NW-1088",
"email": "cork@example.test",
"last_update": "2026-09-24 09:46:02",
"industry": "Facilities",
"street_address1": "14 Harbour Road",
"street_address2": "",
"town": "Cork",
"county": "Cork",
"postcode": "T12 A3BC",
"landline": "+353215550100",
"mobile": "+353875550100",
"contact_name": "Sam Example",
"parent_id": "1001",
"parent_name": "Northwind Group"
}
]
The stored last_edited column is renamed last_update. parent_name is always added and is an empty string when no current parent name is found.
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: ids"} | ids is absent. |
{"error":"ids is not an array"} | A string does not decode to an array. |
[] | No numeric ID matches a row. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- Inactive customers are included. Missing IDs are silently omitted, duplicate IDs collapse at query level, and no request-order guarantee is established.
- Parent names are fetched one customer at a time. A missing or blank parent produces
parent_name: "". - The field set is fixed and stored structured fields are not included.
- There is no pagination or explicit batch limit.
See it in Fieldmotion
CRM1
CRM1 uses Customers_getDetails in customer, customer-or-asset, target, location, and asset-edit selectors, and to show details for the Customers page’s name filter. Open one of those pickers and filter Network requests by the function name.
CRM2
A production-source search found no direct CRM2 caller. CRM2 uses Customer_getRequestedDetails and its mapped table APIs for comparable lookups.
Related endpoints
Customers_getByIdis the safer field-selectable batch lookup.Customers_getSomesupports local and outsourced IDs but returns a different fixed projection.