Jobs: recurrence workflows and lists
Read selected recurrence fields using CRM2’s mapped names and picker identities
/a/JobRecurrence_getRequestedDetails
Read selected recurrence fields using CRM2’s mapped names and picker identities.
When to use this endpoint
Read selected recurrence fields using CRM2’s mapped names and picker identities.
Authentication and permissions
Authenticate with signed API-key fields or a logged-in CRM session. All records resolve in the authenticated tenant. This handler has no additional Job edit-bit, department-visibility or owner check.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id / ids | Scalar or native array | No | id takes precedence over ids. A scalar coerces to one integer; a nonempty native array becomes a recurrence ID filter. Omitted/empty ID arrays impose no restriction. ids is a selector, not a cached-job CSV equality filter. |
fields | Native string array | No | Defaults to all mapped fields. Unknown names are ignored, id is always returned, picker dependencies may also appear. Do not send a JSON-encoded string here. |
Mapped fields | Scalars or native arrays | No | Additional exact filters: case-insensitive trimmed text equality, numeric equality or IN arrays. customer={id,type} and user={id} expand into underlying mapped identity fields. |
order | String or native array | No | Mapped field name, array of names, or array of {id: mappedName, dir: desc}. Unrecognized names are skipped; default order unspecified. |
advanceSearch | Native condition array | No | Mapped conditions with column, condition, value, andOr; equal, contains, notEqual and ordered comparisons. No pagination inputs are consumed. |
Example request
$result = FM_api('JobRecurrence_getRequestedDetails', ['id'=>'1042', 'fields'=>['id','name','customer','eDate']]);
Example response
[{"id":"1042","name":"Monthly checks","customer":{"id":"101","type":"0"},"eDate":null,"customerID":"101","customerType":"0"}]
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":"unsupported raw advanced search"} | A raw where clause was supplied. |
{"error":"missing or invalid parameter: orderDesc"} | Direction is not asc/desc. |
{"error":"missing or invalid parameter: advanceSearch"} | Invalid mapped condition/value/grouping. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- Available mapped names:
id, name, ids, cDate, eDate, active, every, onArr, customerID, customerType, customer, nextDate, userID, user, notes, files, editedUUID, lastEdited, daysInAdvance, copyUser, copyCustRef, departmentID, formID, schedule, meta, custom, copyJobRef, createdBy, skipWeekends, metaJobType. They are case-sensitive and not interchangeable with snake_case raw-row names. - Returns a bare array even for a single ID; absent records and failed queries both become []. There is no count envelope or limit/start/length support.
- customer is {id,type}; user is {id}. Requesting picker fields also appends their backing fields. Database numbers normally remain strings.
- Top-level stored JSON fields remain encoded strings when selected directly. The nested metaJobType mapping reads the stored job-type metadata key; it is not a separate column.
- No active/deleted filter or department/account-manager visibility filter is applied here. Omitted or empty IDs can read all tenant recurrences, even when the mapped table would hide some.
- The ids alias is normalized to the recurrence ID selector before mapped filtering. It no longer collides with the cached-job field. To filter membership itself, use a guarded mapped advanceSearch condition.
- Raw advanced-search where clauses, unsafe ordering and malformed native query/picker controls are rejected.
Side effects
- Read-only; no cache repair, audit, generation or date refresh.
See it in Fieldmotion
CRM1
No direct production CRM1 caller was found. The recurring-jobs screen uses focused controls and its legacy table.
CRM2
CRM2 Jobs Timeline calls JobRecurrence_getRequestedDetails explicitly. Recurring Jobs also uses the shared getRequestedDetails helper with a compatibility table name; inspect the Network request generated by that helper.
Related endpoints
JobRecurrences_getDataTableadds paging, table filters and CRM2 visibility controls.