Quotes: queries, documents and delivery
List quotes linked to one Job
/a/Quotes_listByJobId
Resolve active quote references attached to a Job through stored relation rows.
When to use this endpoint
Use to show existing quote links for a known Job. This does not verify the caller may read that Job.
Authentication and permissions
Authenticate with signed API-key fields or a CRM session. Requires Quotes View (pageQuotes_view); non-admin users blocked by legacy crm_access bit 32 are denied. Client administrators inherit page permissions.
Quote visibility follows the account’s department/account-manager customer filters for non-admin users, including signed keys. Export routes additionally require pageMain_exportTableData. Linked Jobs require Jobs View and their TeamAccess scope; invoice enrichment requires Invoices View and the legacy invoice access check.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | Positive integer-compatible Job ID | Yes | Positive Job ID. Requires Jobs View and TeamAccess permission; only an active joined Job can supply results. |
Example request
$links = FM_api('Quotes_listByJobId', ['job_id'=>'2042']);
Example response
[{"id":"1042","quote_num":"QT-1042","customer_id":"1088"}]
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: job_id"} | Missing/nonpositive Job ID. |
{"error":"permission denied"} | Required Quotes/Export permission is absent or legacy access restrictions apply. |
Legacy application errors may be returned with HTTP 200. Check the decoded response for error, not only the HTTP status.
Behaviour and edge cases
- Requires a positive Job ID, Jobs View and permission to that Job through TeamAccess. Joins the active Job to distinct active visible quotes through type-2 relations.
- Returns id/quote_num/customer_id, without a result-order guarantee or pagination. The CRM1 new-Invoice picker now uses Quotes_list instead of submitting the invalid constant Job ID zero.
- No direct caller for this endpoint was found in the mobile app or its m-service intermediary.
Side effects
- Reads active permitted records without quote cost, history, email or derived Job-cache writes.
See it in Fieldmotion
CRM1
The new Invoice chooser uses Quotes_list. Job-specific callers can use Quotes_listByJobId only after obtaining a positive permitted Job ID.
CRM2
No direct caller found. Current Job link widgets use Quotes_list and Quote_get/Quote_getRequestedDetails.
Related endpoints
Quotes_listlists picker choices.Quote_countLinkedJobscounts active Jobs for the reverse quote association.