When to use this endpoint

Use Skill_listUsers to populate CRM1’s per-skill user multiplier dialog. The result contains assignments only; combine it with a user list when names are required.

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

ParameterTypeRequiredDescription
idInteger stringYesSkill ID after integer conversion; it must be greater than zero.

Example request

$assignments = FM_api('Skill_listUsers', [
	'id' => '42',
]);

Example response

{
  "data": [
    {"user_id": 92556, "skill_multiplier": 1},
    {"user_id": 92557, "skill_multiplier": 0.5}
  ]
}

Both values are explicitly converted: user_id to a JSON integer and skill_multiplier to a JSON number.

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: id"}The ID is absent or integer-converts below 1.
{"data":[]}The skill does not exist or has no direct assignments; those cases are not distinguished.

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

Behaviour and edge cases

  • The query does not join the skill or user table. Orphaned assignments, if present, are returned, and no active-user filter is applied.
  • No ordering, pagination, or maximum is defined. The handler performs no administrator/page-permission check.
  • Multipliers are stored on direct assignments and CRM screens treat zero as removal rather than a stored assignment.

See it in Fieldmotion

CRM1

Open Users → Skills and click the Users count for a skill. CRM1 calls this route, then combines the result with its already-loaded user accounts.

CRM2

CRM2 does not call this endpoint. Its Skills screen loads UserSkill_getRequestedDetails and users separately, then builds the assignment dialog client-side.

Related endpoints

  • User_setSkill replaces one user/skill assignment; value 0 removes it and values above zero recreate it.
  • Skill_getRequestedDetails retrieves the skill name and description.