Quotes: queries, documents and delivery
Read a complete quote record
/a/Quote_get
Fetch one active quote using the database field names and stored JSON strings.
When to use this endpoint
Use after a list supplies an ID, or to inspect a raw quote before a field update. Use the mapped detail API when CRM2 field names or selected fields are needed.
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 |
|---|---|---|---|
id | Positive integer-compatible quote ID | Yes | Local primary ID, integer-converted. Not a quote number. Extra fields parameters are ignored by the raw reader. |
Example request
$quote = FM_api('Quote_get', ['id'=>'1042']);
Example response
{"id":"1042","quote_num":"QT-1042","meta":"{}","form_fields":"{}","total_net":"100.00","deleted":"0"}
This is an illustrative subset of the full SELECT * response; it is not a fields projection.
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":"invalid or missing parameter: id"} | Missing/nonpositive ID. |
{"error":"requested quote does not exist"} | No active row or failed lookup. |
{"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
- Returns one full active, visible database row. Fields/ids do not project this raw response; JSON columns remain stored text/null. Missing, deleted or invisible targets return requested quote does not exist.
- No pagination, ordering, recalculation or other primary record write.
- 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
Quotes → Notes/Fields loads Quote_get in pageQuoteNotesFields. Filter Network for Quote_get when opening that dialog.
CRM2
Quotes email and Job/Invoice linking widgets read Quote_get; ordinary detail/layout loads use Quote_getRequestedDetails or Quote_getLayoutDetails.
Related endpoints
Quote_getRequestedDetailsselects mapped fields.Quotes_getByIdreads a limited raw-field batch.