Skills
Retrieve selected skill fields
/a/Skill_getRequestedDetails
Retrieve selected mapped skill fields for explicit IDs or exact field filters without table pagination.
When to use this endpoint
Use Skill_getRequestedDetails to resolve skill IDs in CRM2 selectors, user assignments, or job details. Use Skills_getDataTable when counts and paging 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 |
|---|---|---|---|
fields | Native array | No | Any of id, name, cdate, lastEdited, and description. Omission selects all; unknown names are ignored; id is always included. JSON array text is not decoded. |
id / ids | Integer string or native array | No | Optional ID restriction; id takes precedence. Scalars and members are integer-converted. A present empty native array adds no filter and therefore does not mean “return none.” |
name / cdate / lastEdited / description | Scalar or native array | No | Exact mapped filters. Text/datetime values are trimmed and matched case-insensitively; lastEdited uses integer equality. Arrays become IN filters. |
order | Mapped name or native array | No | Ordering by mapped keys. Items can be names or objects such as {"id":"name","dir":"desc"}; exact desc reverses that key. |
advanceSearch | Native array | No | Shared CRM2 advanced conditions over mapped fields. |
Example request
$skills = FM_api('Skill_getRequestedDetails', [
'id' => ['42', '43'],
'fields' => ['id', 'name', 'description'],
'order' => [['id' => 'name', 'dir' => 'asc']],
]);
Example response
[
{"id": "42", "name": "Electrical testing", "description": "Qualified tester"},
{"id": "43", "name": "Gas safety", "description": "Certified engineer"}
]
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 row matches the supplied IDs or filters. Missing IDs are silently omitted. |
Runtime warning or type error | fields, order, an ID list, or advanced-search data uses an unsupported scalar shape. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- No default order is applied. The skill table has no archived or deleted filter.
cdateis mapped as datetime but stored as an integer Unix timestamp in the tenant schema, so the raw numeric database value is returned and exact text filtering can be misleading.- Legacy advanced-search objects containing raw
whereexpressions are trusted internal UI input and should not be constructed by third parties.
See it in Fieldmotion
CRM1
A production-source search found no direct browser caller. Server-side job-detail assembly uses this function internally to resolve stored skill IDs to names.
CRM2
Open a user’s Skills editor, the Skills list picker, Users, or job details containing required skills. These flows request selected skill fields through Skill_getRequestedDetails.
Related endpoints
Skill_updateDataupdates the same map.Skills_listis the simpler unfiltered ID/name list.