Index | Conventions

api/v1/quotes

Path: api/v1/quotes

This API is JSON:API compliant.

This endpoint supports the following methods:
GET PATCH

This endpoint requires an OAuth bearer token, and returns errors in a standard shape. See API Conventions for authentication, error responses and paging, which apply to every endpoint.

The resource type for this endpoint is Quote
The identifier is quoteno

Relationships

A relationship links this Quote to another resource. By default only the related resource's type and id are returned. Relationships marked Includable can be embedded in the response via the include query parameter (see Includes below). To set or change a relationship, send a resource identifier (type and id) for it. Postable means the relationship can be set when creating the resource (POST); Patchable means it can be changed when updating an existing resource (PATCH). Some relationships are Postable but not Patchable — they can be set at creation but not changed afterwards. A value sent for a relationship that is not Postable/Patchable in that context is not applied.

NotePostable and Patchable describe what the API surface accepts. Whether a particular change is permitted also depends on the resource's current state and your permissions, which Jim2 enforces — a change that is not allowed is rejected with an error response (see the Conventions page).
RelationshipTypeReturnsIncludablePostablePatchable
accountManagerCardFileobject
assetAssetobject
commentsQuoteCommentarray
contractContractobject
customerCardFileobject
fromCardFileobject
itemItemobject
nameCardFileobject
quoteQuoteobject
shipCardFileobject
stockQuoteStockarray

Includes

Use the include query parameter to embed Includable relationships in a single response, for example:
GET /api/v1/quotes/{quoteno}?include=comments,customer,from,ship,stock

Embedded resources are returned in a top-level included array, not nested inside the relationship. Match each one back to its relationship by type and id.

NoteEach relationship you include embeds its full related resources in the response, so requesting includes — especially several at once, or to-many relationships that return every related row with no paging — can greatly increase the size of the payload. Only request the includes you actually need.

For example, requesting include=comments returns the comments reference under relationships and the full resource in the included array. The reference and the included entry share the same type and id:

		
GET /api/v1/quotes/{quoteno}?include=comments

{
  "data": {
    "type": "Quote",
    "id": "1001",
    "relationships": {
      "comments": {
        "data": [ { "type": "QuoteComment", "id": "2002" } ]
      }
    }
  },
  "included": [
    {
      "type": "QuoteComment",
      "id": "2002",
      "attributes": { ... }
    }
  ]
}
	

Attributes

The Quote resource type attributes are as follows:

AttributeTypeRead-onlyDescription
BranchCodestringThe branch code. On update, must be a configured branch belonging to the quote's company.
Branches are optional in Jim2 - this is only set when your site is configured to use branches.
companyCodestringThe company code.
currencyCodestringThe currency code.
CustRefstringThe customer's reference for the quote.
dateInstring (DateTime in ISO format)The quote's date in.
DateReqstring (DateTime in ISO format)The date the quote is required by.
DateValidstring (DateTime in ISO format)The date the quote is valid until.
exchangeRatenumberThe currency exchange rate applied to the quote.
FaultDescstringThe fault description.
FooterTextstringThe footer text printed at the bottom of the quote.
FreightnumberThe freight charge amount.
FreightTaxnumberThe tax on the freight charge.
GLDeptCodestringThe GL department code. On update, must match a configured GL department.
GL departments are optional in Jim2 - this is only set when your site is configured to use GL departments.
HeaderTextstringThe header text printed at the top of the quote.
InvoiceDescstringThe description shown on the invoice.
ItemDescstringThe item description.
JobNointegerThe number of the job created from this quote, if any.
ManfQtynumberThe manufacturing quantity.
OurRefstringOur reference for the quote.
priceLevelstringThe price level description.
PrioritystringThe quote's priority.
ProbabilityPcntintegerThe probability percentage of winning the quote.
ProjectNointegerThe contract/project number associated with the quote.
quoteDetailsobjectThe customer (bill-to) address, ship-to address and freight details for the quote.
See the quoteDetails section below.
rateLockedbooleanWhether the quote's currency exchange rate is locked.
RejectionReasonNointegerThe rejection reason number, if the quote was rejected.
SerialNostringThe serial number.
sourcestringThe quote's source name, identifying where the quote originated.
sourceValuestringThe value associated with the quote's source.
StatusstringThe quote's current status. Setting it changes the quote status (see the quote's setStatus).
StockLocationCodestringThe stock location code. On update, must match a configured stock location.
SubBranchCodestringThe sub-branch code. On update, must match a configured sub-branch.
Sub-branches are optional in Jim2 - this is only set when your site is configured to use sub-branches.
TaxIncbooleanWhether prices are calculated from the tax-paid (tax-inclusive) amount.
taxPaidbooleanWhether the quote pays tax.
totalTFnumberThe quote total excluding tax (tax-free).
totalTPnumberThe quote total including tax (tax-paid).
TypestringThe quote's free-text Type field.

quoteDetails

Attributes of the quoteDetails object.

AttributeTypeRead-onlyDescription
customerobjectThe customer (bill-to) name and address details stored on the quote.
See the quoteDetails.customer section below.
freightobjectThe freight charge, tax and dispatch details for the quote.
See the quoteDetails.freight section below.
shipobjectThe ship-to name and address details stored on the quote.
See the quoteDetails.ship section below.

quoteDetails.customer

Attributes of the quoteDetails.customer object.

AttributeTypeRead-onlyDescription
attnstringThe customer contact (attention) name.
countrystringThe customer country.
isAddressResidentialbooleanWhether the customer address is residential.
namestringThe customer name.
orderNostringThe customer's order number.
postCodestringThe customer post code.
statestringThe customer state.
streetAddressstringThe customer street address.
suburbstringThe customer suburb.

quoteDetails.freight

Attributes of the quoteDetails.freight object.

AttributeTypeRead-onlyDescription
amountnumberThe freight charge amount.
dispatcharray of objectThe dispatch / consignment details for the shipment.
See the quoteDetails.freight.dispatch section below.
taxnumberThe tax on the freight charge.
taxCodestringThe tax code applied to the freight charge.

quoteDetails.ship

Attributes of the quoteDetails.ship object.

AttributeTypeRead-onlyDescription
attnstringThe delivery (ship-to) contact (attention) name.
countrystringThe delivery country.
isAddressResidentialbooleanWhether the delivery address is residential.
namestringThe delivery (ship-to) name.
postCodestringThe delivery post code.
statestringThe delivery state.
streetAddressstringThe delivery street address.
suburbstringThe delivery suburb.

quoteDetails.freight.dispatch

Attributes of each element in the quoteDetails.freight.dispatch array.

AttributeTypeRead-onlyDescription
noOfCartonsintegerThe number of cartons in the shipment.
shipRefstringThe carrier consignment / shipping reference.
shipViastringThe carrier or method the goods are shipped via.

Example GET (Return using filter)

Path: api/v1/quotes?filter[dateIn][-gt]2000-01-01T00%3A00%3A00%2B00%3A00&filter[status]=Web%20Quote&filter[isActive]=True

Filtering

For more information see Resource Filtering.

Quote Filter uses list technology to retreive data. Names should match those on the list screen in Jim List Help.

The following fields can be used to filter by.
FieldTypeComment
accountManager.idIntAccount Manager User CardFile id
branchCodeTextBranch code
cardGroupsTextComma separated list of CardFile Group Ids to match customer on the quote
companyCodeTextCompany code
contract.idIntQuotes with project Id
currencyCodeTextQuotes that are for a specified currency code
customer.idIntCustomer CardFile id
custRefTextThe Cust Ref# field
dateInDateTimeGets quotes created with specified operator. ISO formatted date
dateRequiredDateTimeGets quotes with Required by with specified operator. ISO formatted date
dateValidDateTimeGets quotes with Valid until with specified operator. ISO formatted date
from.idIntFrom CardFile id
gLDeptCodeTextGLDept code
hasUnreadEmailBoolIs there any unread emails on the quote
isActiveBoolStatus other than CANCEL, REJECTED, ACCEPTED
isFinishedBoolStatus equal to REJECTED or ACCEPTED
item.idIntItem Id on the quote
itemGroupTextComma separated list of Item Group Ids to match item on the quote
itemMakeTextThe Item make that is on the quote
itemModelTextThe Item model that is on the quote
lastModifiedDateTimeGets quotes with Last Modified with specified operator. ISO formatted date
name.idIntName User CardFile id
priceLevelTextCustomer matching a Price Level on the quote
priorityTextThe priority text of the quote
probabilityTextQuotes matching Probability field
projectGroupTextComma separated list of Project Group Ids to match project on the quote
projectPriceLevelTextQuotes with project with certain Price level
projectTypeTextQuotes with project with certain Type
quote.idInt
QuoteStock.stockIdIntQuotes that contain the stockId
rejectionReasonTextMatches the Rejection Reason on the quote
ship.idIntShip CardFile id
sourceNameTextQuotes created by Source Name
sourceValueTextQuotes created by external source with Id
statusTextThe status text of the quote
stockGroupTextComma separated list of Stock Group Ids to match stock on the quote
subBranchCodeTextSubBranch code
taxPaidBoolIs tax paid on the quote
typeTextQuotes matching the Type field

Response:

This example shows the maximum set of fields the endpoint can return, all populated. A real response only contains the data that applies to that record, so fields that are empty or not relevant are omitted — do not assume every field shown here will be present in every response.

This is a list. To keep the example readable, only the first item below is written out; the later items have been trimmed down in this documentation. In a real response each item comes back with the data applicable to that record (as described above).

Side-loading related resources with the include query parameter is not supported on list endpoints: an include parameter is ignored here and no included section is returned. To retrieve a related resource, request it directly using the id shown in each item's relationships, or use the single-resource (get by id) endpoint, which does support include.

{
    "data": [
        {
            "id": "12",
            "type": "Quote",
            "attributes": {
                "Status": "Web Quote",
                "Priority": "Normal",
                "ProbabilityPcnt": 75,
                "Type": "Normal",
                "CustRef": "WEB-123",
                "OurRef": "OUR-012",
                "ItemDesc": "Sale",
                "InvoiceDesc": "Invoice for quote 12",
                "FaultDesc": "Screen flickers on startup",
                "SerialNo": "SN-2024-00099",
                "HeaderText": "Thank you for your enquiry",
                "FooterText": "Terms and conditions apply",
                "dateIn": "2024-09-05T10:30:00",
                "DateReq": "2024-09-19T00:00:00",
                "DateValid": "2024-10-05T00:00:00",
                "JobNo": 1030,
                "ProjectNo": 4,
                "RejectionReasonNo": 1,
                "ManfQty": 2.0,
                "Freight": 12.00,
                "FreightTax": 1.20,
                "BranchCode": "SYD",
                "SubBranchCode": "SSYD",
                "GLDeptCode": "SALES",
                "StockLocationCode": "NSW",
                "priceLevel": "Dealer",
                "taxPaid": true,
                "TaxInc": true,
                "currencyCode": "AUD",
                "exchangeRate": 1.0000,
                "rateLocked": true,
                "companyCode": "COMPANY.1",
                "source": "WebAPI",
                "sourceValue": "192.168.1.100",
                "totalTF": 245.45,
                "totalTP": 270.00,
                "quoteDetails": {
                    "customer": {
                        "attn": "John Smith",
                        "name": "Simple Customer #1",
                        "isAddressResidential": false,
                        "streetAddress": "123 Main St",
                        "suburb": "Sydney",
                        "state": "NSW",
                        "postCode": "2000",
                        "country": "Australia",
                        "orderNo": "PO-12345"
                    },
                    "ship": {
                        "attn": "Jane Doe",
                        "name": "Simple Customer #1",
                        "isAddressResidential": true,
                        "streetAddress": "456 Delivery Rd",
                        "suburb": "Melbourne",
                        "state": "VIC",
                        "postCode": "3000",
                        "country": "Australia"
                    },
                    "freight": {
                        "amount": 12.00,
                        "tax": 1.20,
                        "taxCode": "GST",
                        "dispatch": [
                            {
                                "shipVia": "Australia Post",
                                "shipRef": "AP-77665",
                                "noOfCartons": null
                            }
                        ]
                    }
                }
            },
            "relationships": {
                "contract": {
                    "data": {
                        "id": "4",
                        "type": "Contract"
                    }
                },
                "customer": {
                    "data": {
                        "id": "3",
                        "type": "CardFile"
                    }
                },
                "from": {
                    "data": {
                        "id": "3",
                        "type": "CardFile"
                    }
                },
                "ship": {
                    "data": {
                        "id": "28",
                        "type": "CardFile"
                    }
                },
                "asset": {
                    "data": {
                        "id": "1",
                        "type": "Asset"
                    }
                },
                "comments": {
                    "data": [
                        {
                            "id": "12-7",
                            "type": "QuoteComment"
                        },
                        {
                            "id": "12-1",
                            "type": "QuoteComment"
                        }
                    ]
                },
                "stock": {
                    "data": [
                        {
                            "id": "12-3",
                            "type": "QuoteStock"
                        },
                        {
                            "id": "12-4",
                            "type": "QuoteStock"
                        }
                    ]
                }
            }
        },
        {
            "id": "15",
            "type": "Quote",
            "attributes": {
                "Status": "Web Quote",
                "CustRef": "WEB-456"
            }
        }
    ]
}

Example GET (Return specific)

Path: api/v1/quotes/10?include=stock,comments

Response:

This example shows the maximum set of fields the endpoint can return, all populated. A real response only contains the data that applies to that record, so fields that are empty or not relevant are omitted — do not assume every field shown here will be present in every response.

{
    "data": {
        "id": "10",
        "type": "Quote",
        "attributes": {
            "Status": "Booked",
            "Priority": "Normal",
            "ProbabilityPcnt": 50,
            "Type": "Normal",
            "CustRef": "CUST-REF-001",
            "OurRef": "OUR-REF-001",
            "ItemDesc": "Sale",
            "InvoiceDesc": "Invoice for quote 10",
            "FaultDesc": "Unit intermittently powers off under load",
            "SerialNo": "SN-2024-00187",
            "HeaderText": "Thank you for your enquiry",
            "FooterText": "Terms and conditions apply",
            "dateIn": "2024-09-02T16:16:00",
            "DateReq": "2024-09-15T00:00:00",
            "DateValid": "2024-10-02T00:00:00",
            "JobNo": 1045,
            "ProjectNo": 4,
            "RejectionReasonNo": 2,
            "ManfQty": 5.0,
            "Freight": 15.00,
            "FreightTax": 1.50,
            "BranchCode": "SYD",
            "SubBranchCode": "SSYD",
            "GLDeptCode": "SALES",
            "StockLocationCode": "NSW",
            "priceLevel": "Dealer",
            "taxPaid": true,
            "TaxInc": true,
            "currencyCode": "AUD",
            "exchangeRate": 1.0000,
            "rateLocked": true,
            "companyCode": "COMPANY.1",
            "source": "WebAPI",
            "sourceValue": "192.168.1.100",
            "totalTF": 27.27,
            "totalTP": 30.00,
            "quoteDetails": {
                "customer": {
                    "attn": "John Smith",
                    "name": "Simple Customer #1",
                    "isAddressResidential": false,
                    "streetAddress": "123 Main St",
                    "suburb": "Sydney",
                    "state": "NSW",
                    "postCode": "2000",
                    "country": "Australia",
                    "orderNo": "PO-12345"
                },
                "ship": {
                    "attn": "Jane Doe",
                    "name": "Simple Customer #1",
                    "isAddressResidential": true,
                    "streetAddress": "456 Delivery Rd",
                    "suburb": "Melbourne",
                    "state": "VIC",
                    "postCode": "3000",
                    "country": "Australia"
                },
                "freight": {
                    "amount": 15.00,
                    "tax": 1.50,
                    "taxCode": "GST",
                    "dispatch": [
                        {
                            "shipVia": "Australia Post",
                            "shipRef": "AP-99887",
                            "noOfCartons": null
                        }
                    ]
                }
            }
        },
        "relationships": {
            "contract": { "data": { "type": "Contract", "id": "4" } },
            "customer": { "data": { "type": "CardFile", "id": "3" } },
            "from": { "data": { "type": "CardFile", "id": "3" } },
            "ship": { "data": { "type": "CardFile", "id": "3" } },
            "asset": { "data": { "type": "Asset", "id": "1" } },
            "comments": {
                "data": [
                    { "type": "QuoteComment", "id": "10-2" },
                    { "type": "QuoteComment", "id": "10-1" }
                ]
            },
            "stock": {
                "data": [
                    { "type": "QuoteStock", "id": "10-3" }
                ]
            }
        },
        "links": {
            "self": "/api/v1/quotes/10"
        }
    },
    "included": [
        {
            "id": "10-3",
            "type": "QuoteStock",
            "attributes": {
                "qty": 1.0,
                "unitPrice": 30.00,
                "unitPriceTF": 27.27,
                "unitPriceTP": 30.00,
                "configNo": 812,
                "addinit": "SYS",
                "adddate": "2024-09-02T16:16:00",
                "stockId": 6,
                "stockCode": "KEYBOARD",
                "unit": "EACH",
                "description": "Keyboard",
                "modifyinit": "SYS",
                "modifydate": "2024-09-02T16:17:13"
            },
            "relationships": {
                "stock": {
                    "data": {
                        "type": "QuoteStock",
                        "id": "6"
                    }
                }
            }
        },
        {
            "id": "10-2",
            "type": "QuoteComment",
            "attributes": {
                "include": true,
                "status": "CANCEL",
                "comment": "Customer requested cancellation of the previous revision",
                "modifyInit": "API",
                "modifyDate": "2025-03-27T13:56:32+11:00"
            }
        },
        {
            "id": "10-1",
            "type": "QuoteComment",
            "attributes": {
                "include": true,
                "status": "Booked",
                "comment": "Initial enquiry logged from web form",
                "modifyInit": "SYS",
                "modifyDate": "2024-09-02T16:16:21+10:00"
            }
        },
        {
            "id": "3",
            "type": "CardFile",
            "attributes": {
                "cardNo": 3,
                "cardCode": "SIMPLE.CUST.1",
                "contact": "John Smith",
                "name": "Simple Customer #1",
                "aBN": "53 004 085 616",
                "aCN": "004 085 616",
                "shipVia": "Australia Post",
                "shipAmount": 15.00,
                "branchCode": "SYD",
                "subBranchCode": "SSYD",
                "gLDeptCode": "SALES",
                "customer": {
                    "terms": "30 Days",
                    "priceLevel": "Dealer",
                    "custPONo": "PO-12345",
                    "currencyCode": "AUD",
                    "creditHold": "OFF( Auto )",
                    "creditLimit": 25000.00,
                    "accFeePerc": 2.50,
                    "bPayRefNo": "1234567890",
                    "backorder": "Allow Backorders",
                    "requiredDays": 7,
                    "requiredHours": 0,
                    "taxPaid": true,
                    "taxExclCode": "GST",
                    "taxInclCode": "GSTINC",
                    "batchInvGroupBy": "Customer",
                    "sendStatementVia": "Email",
                    "sendInvVia": "Email",
                    "groups": [
                        {
                            "type": "Region",
                            "id": 1,
                            "name": "East Coast"
                        }
                    ]
                },
                "address": {
                    "isAddressResidential": false,
                    "streetAddress": "123 Main St",
                    "suburb": "Sydney",
                    "state": "NSW",
                    "postCode": "2000",
                    "country": "Australia"
                },
                "delAddress": {
                    "isAddressResidential": true,
                    "streetAddress": "456 Delivery Rd",
                    "suburb": "Melbourne",
                    "state": "VIC",
                    "postCode": "3000",
                    "country": "Australia"
                }
            },
            "relationships": {
                "contacts": {
                    "data": [
                        { "type": "CardFileContact", "id": "3-1" }
                    ]
                },
                "accountManager": {
                    "data": { "type": "CardFile", "id": "16" }
                },
                "parent": {
                    "data": { "type": "CardFile", "id": "2" }
                }
            }
        }
    ]
}

Example PATCH

Path: api/v1/quotes/10

Request:

{
    "data": {
        "id": "10",
        "type": "Quote",
        "relationships": {
            "contract": {
                "data": {
                    "type": "Contract",
                    "id": "5001"
                }
            }
        },
        "attributes": {
            "Status": "CANCEL",
            "Priority": "Urgent",
            "ProbabilityPcnt": 90,
            "Type": "Normal",
            "CustRef": "UPDATED-REF",
            "OurRef": "OUR-002",
            "ItemDesc": "Updated item description",
            "InvoiceDesc": "Updated invoice description",
            "FaultDesc": "Updated fault description",
            "SerialNo": "SN-12345",
            "HeaderText": "Updated header",
            "FooterText": "Updated footer",
            "DateReq": "2024-12-25T00:00:00",
            "DateValid": "2025-01-31T00:00:00",
            "JobNo": 240001,
            "ProjectNo": 5001,
            "RejectionReasonNo": 3,
            "ManfQty": 10,
            "Freight": 25.00,
            "FreightTax": 2.50,
            "BranchCode": "SYD",
            "SubBranchCode": "SSYD",
            "GLDeptCode": "SALES",
            "StockLocationCode": "MAIN",
            "TaxInc": true
        }
    }
}

Response:

This example shows the maximum set of fields the endpoint can return, all populated. A real response only contains the data that applies to that record, so fields that are empty or not relevant are omitted — do not assume every field shown here will be present in every response.

{
    "data": {
        "id": "10",
        "type": "Quote",
        "attributes": {
            "Status": "CANCEL",
            "Priority": "Urgent",
            "ProbabilityPcnt": 90,
            "Type": "Normal",
            "CustRef": "UPDATED-REF",
            "OurRef": "OUR-002",
            "ItemDesc": "Updated item description",
            "InvoiceDesc": "Updated invoice description",
            "FaultDesc": "Updated fault description",
            "SerialNo": "SN-12345",
            "HeaderText": "Updated header",
            "FooterText": "Updated footer",
            "dateIn": "2024-09-02T16:16:00",
            "DateReq": "2024-12-25T00:00:00",
            "DateValid": "2025-01-31T00:00:00",
            "JobNo": 240001,
            "ProjectNo": 5001,
            "RejectionReasonNo": 3,
            "ManfQty": 10.0,
            "Freight": 25.00,
            "FreightTax": 2.50,
            "BranchCode": "SYD",
            "SubBranchCode": "SSYD",
            "GLDeptCode": "SALES",
            "StockLocationCode": "MAIN",
            "priceLevel": "Dealer",
            "taxPaid": true,
            "TaxInc": true,
            "currencyCode": "AUD",
            "exchangeRate": 1.0000,
            "rateLocked": true,
            "companyCode": "COMPANY.1",
            "source": "WebAPI",
            "sourceValue": "192.168.1.100",
            "totalTF": 27.27,
            "totalTP": 30.00,
            "quoteDetails": {
                "customer": {
                    "attn": "John Smith",
                    "name": "Simple Customer #1",
                    "isAddressResidential": false,
                    "streetAddress": "123 Main St",
                    "suburb": "Sydney",
                    "state": "NSW",
                    "postCode": "2000",
                    "country": "Australia",
                    "orderNo": "PO-12345"
                },
                "ship": {
                    "attn": "Jane Doe",
                    "name": "Simple Customer #1",
                    "isAddressResidential": true,
                    "streetAddress": "456 Delivery Rd",
                    "suburb": "Melbourne",
                    "state": "VIC",
                    "postCode": "3000",
                    "country": "Australia"
                },
                "freight": {
                    "amount": 25.00,
                    "tax": 2.50,
                    "taxCode": "GST",
                    "dispatch": [
                        {
                            "shipVia": "Australia Post",
                            "shipRef": "AP-99887",
                            "noOfCartons": null
                        }
                    ]
                }
            }
        },
        "relationships": {
            "contract": {
                "data": {
                    "type": "Contract",
                    "id": "5001"
                }
            },
            "customer": {
                "data": {
                    "type": "CardFile",
                    "id": "3"
                }
            },
            "from": {
                "data": {
                    "type": "CardFile",
                    "id": "3"
                }
            },
            "ship": {
                "data": {
                    "type": "CardFile",
                    "id": "3"
                }
            },
            "asset": {
                "data": {
                    "type": "Asset",
                    "id": "1"
                }
            },
            "comments": {
                "data": [
                    {
                        "type": "QuoteComment",
                        "id": "10-3"
                    },
                    {
                        "type": "QuoteComment",
                        "id": "10-2"
                    },
                    {
                        "type": "QuoteComment",
                        "id": "10-1"
                    }
                ]
            },
            "stock": {
                "data": [
                    {
                        "type": "QuoteStock",
                        "id": "10-3"
                    }
                ]
            }
        },
        "links": {
            "self": "/api/v1/quotes/10"
        }
    }
}