Suppliers
List suppliers
/a/Suppliers_list
Return a compact name-ordered list of non-deleted suppliers, optionally filtered by activity, hold state, or edit checkpoint.
When to use this endpoint
Use Suppliers_list to populate supplier selectors or poll a modest supplier set. Its output is deliberately limited to ID, name, and edit time.
Authentication and permissions
The request must authenticate with signed API-key fields or a logged-in CRM session. The handler calls the normal login guard but performs no additional Suppliers-page, stock, purchasing, role, create, edit, or delete permission check.
All records are selected from the authenticated tenant. CRM1 and CRM2 hide some controls through client-side permissions, but these endpoints do not repeat those UI checks.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
fields | JSON array or native array | No | Requested fields from id, name, and last_edited. Omission or no valid value falls back to id and name. |
last_edited | Date/time string | No | Strict lower bound. The query also applies a strict upper bound of the server’s current timestamp. |
is_active | Integer string | No | Exact activity flag after integer conversion. |
on_hold | Integer string | No | Exact hold flag after integer conversion. |
Example request
$suppliers = FM_api('Suppliers_list', [
'fields' => json_encode(['id', 'name', 'last_edited']),
'is_active' => '1',
'on_hold' => '0',
'last_edited' => '2026-09-30 08:00:00',
]);
Example response
[
{"id":488104,"name":"Northshore Components","last_edited":"2026-09-30 11:20:00"}
]
IDs are explicitly converted to JSON numbers. Other database scalar values normally remain strings.
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. |
[] | No non-deleted supplier matches every supplied filter. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- Rows are always ordered by supplier name and are not paginated. There is no total count or continuation token.
- Soft-deleted suppliers are excluded. Inactive and on-hold suppliers remain unless their filters are supplied.
- All supplied filters are AND-combined.
- Unknown field names and malformed
fieldsJSON do not error; the response falls back to ID and name.
See it in Fieldmotion
CRM1
Supplier pickers in purchasing and stock workflows call Suppliers_list, commonly requesting active, non-held options.
CRM2
CRM2’s purchase, requisition, goods-received, order, and stock screens also use this compact list for supplier choices.
Related endpoints
Suppliers_getByIdreturns a wider allowlisted record for known IDs.Suppliers_listByNamesresolves exact name batches.