Requisition orders
Read a legacy requisition header
/a/RequisitionOrder_get
Read the CRM1 header with requester identity and delivery/approval fields.
When to use this endpoint
Use after creating a requisition or changing its header. Lines require a separate reader; this returns one raw header object, unlike the mapped detail arrays.
Authentication and permissions
Authenticate with signed API-key fields or a logged-in CRM session. API keys use their owner’s tenant; session dispatch applies CSRF checks. Office requisition access requires View on Requisition Order or Requisition Orders. A visible UI control is not sufficient authorization.
Tenant and TeamAccess/legacy department scope apply to headers and to the parent of each line. Deleted parents hide their lines. Scoped users can see their own unlinked requisitions; the legacy department-only rule retains its target-based visibility. There is no additional Requisition feature-entitlement check.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | Positive integer | Yes | Existing, non-deleted requisition ID in the authenticated tenant and your record scope. |
Example request
$result = FM_api('RequisitionOrder_get', [
'id' => '1042',
]);
Example response
{
"ro_id": "1042",
"target_type": null,
"target_id": null,
"status": "0",
"total_net": "0",
"total_tax": "0",
"cdate": "2026-11-03 09:00:00",
"user_id": "104",
"delivery_date": null,
"description": "Materials for north site",
"date_approved": null,
"attention": null,
"instructions": null,
"delivery_net": null,
"delivery_taxcode": null,
"delivery_tax": null,
"delivery_address": null,
"name": "Example user",
"po_ids": null,
"departments": "[7]"
}
Illustrative header with an existing user. Null/default formatting depends on the saved row; every shown key is selected by the handler.
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":"no id"} | id is absent. |
{"error":"requisition order does not exist"} | Dispatcher rejects a missing, deleted or out-of-scope positive ID. |
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 dispatcher requires a positive visible non-deleted header before the raw reader left-joins its requesting user. A missing/deleted/out-of-scope ID is rejected with an error. The raw handler’s historical false result is not a successful lookup contract.
- The header identifier is ro_id, not id. name and departments come from the joined user, not the order; missing users yield null. Database numeric values are normally strings.
- No fields projection, ordering, filters or pagination apply. Target/approval/delivery/po_ids values remain stored scalar strings/null; the endpoint does not calculate totals or decode departments.
See it in Fieldmotion
CRM1
Open the CRM1 Requisition Order details and filter for RequisitionOrder_get; saving/deleting lines also reloads it.
CRM2
No direct caller was found in CRM2 source. Its requisition screen uses mapped layout reads/writes instead of this legacy endpoint.
Related endpoints
RequisitionOrder_getRequestedDetails— Read selected mapped header fields.RequisitionOrderEntry_getRequestedDetails— Fetch line details by roID.