Skills
List users assigned to a skill
/a/Skill_listUsers
Return the user IDs and multipliers directly assigned to one skill for the legacy assignment editor.
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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | Integer string | Yes | Skill 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
| 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: 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_setSkillreplaces one user/skill assignment; value0removes it and values above zero recreate it.Skill_getRequestedDetailsretrieves the skill name and description.