When to use this endpoint

Use for the older Schedule of Rates labour picker. The endpoint name does not mean it returns a payroll or salary amount.

Authentication and permissions

Authenticate with signed API-key fields or a logged-in CRM session. Session requests use the dispatcher’s CSRF protection when configured.

Configured TeamAccess row scope is applied in the queries. Ordinary collection requests do not need artificial record IDs. Explicit IDs still pass dispatcher record authorization; unavailable IDs can be rejected there rather than silently omitted.

Login is required. No additional page permission is imposed by this handler.

Financial fields require client administrator, explicit Users Edit, or the legacy Salaries permission (general permission bit value 8). Unauthorised list projections omit those fields; explicitly requested table/export financial fields return a permission error.

Parameters

ParameterTypeRequiredDescription
departmentsInteger flagNoNonzero includes the stored departments column. It is a projection flag, not a department filter.

Example request

$result = FM_api('Users_listSalaries', [
	'departments'=>'1',
]);

Example response

[
  {
    "id": "1042",
    "name": "Alex Morgan",
    "cost_per_hour": "20.0000",
    "price_per_hour": "35.0000",
    "departments": "[\"18\"]"
  }
]

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":"invalid parameter: example"}A supplied native control is malformed; the response names that control. Lists must be flat, and numeric IDs must be positive integers unless the parameter explicitly permits zero.

Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.

Behaviour and edge cases

  • Filters active=1, current parent and absent is_tmp. Reads only id/name/cost_per_hour/price_per_hour, plus departments when requested.
  • Rate fields retain database decimal strings and department storage is not decoded. No ordering, pagination or cap.
  • Financial authority is required and the query applies user scope. Unauthorised requests return permission denied: financial user fields.

Side effects

  • Reads data without changing business records, edit markers, activity history or notifications. Shared setting reads can populate their normal settings cache.

See it in Fieldmotion

CRM1

Open Schedule of Rates labour configuration in CRM1 and filter Users_listSalaries. It multiplies hours by the returned selected user’s rates.

CRM2

No direct production caller was found in CRM2. Current User layouts use the mapped getRequestedDetails/getDataTable flow; do not assume those contracts match this legacy reader.

Related endpoints

  • Users_getById — Fetch a selected, allowlisted projection after obtaining IDs.
  • User_get — Inspect the older complete user-row contract.