Path: api/v1/jobs
This API is JSON:API compliant.
This endpoint supports the following methods:
GET POST 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 Job
The identifier is jobno
Relationships
A relationship links this Job 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.
| Relationship | Type | Returns | Includable | Postable | Patchable |
|---|---|---|---|---|---|
| accountManager | CardFile | object | ✓ | ✓ | ✓ |
| asset | Asset | object | ✗ | ✓ | ✓ |
| comments | JobComment | array | ✓ | ✓ | ✓ |
| contract | Contract | object | ✓ | ✓ | ✓ |
| customer | CardFile | object | ✓ | ✓ | ✗ |
| from | CardFile | object | ✓ | ✓ | ✓ |
| invoice | Invoice | object | ✗ | ✗ | ✗ |
| item | Item | object | ✓ | ✓ | ✓ |
| labour | JobLabour | object | ✓ | ✗ | ✗ |
| manufacturingStock | Stock | object | ✗ | ✗ | ✗ |
| name | CardFile | object | ✓ | ✓ | ✓ |
| quote | Quote | object | ✗ | ✓ | ✓ |
| ship | CardFile | object | ✓ | ✓ | ✓ |
| stock | JobStock | array | ✓ | ✓ | ✗ |
Includes
Use the include query parameter to embed Includable relationships in a single response, for example:GET /api/v1/jobs/{jobno}?include=comments,contract,customer,from,ship,accountManager,name,item,stock,labour
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.
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/jobs/{jobno}?include=comments
{
"data": {
"type": "Job",
"id": "1001",
"relationships": {
"comments": {
"data": [ { "type": "JobComment", "id": "2002" } ]
}
}
},
"included": [
{
"type": "JobComment",
"id": "2002",
"attributes": { ... }
}
]
}
Attributes
The Job resource type attributes are as follows:
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| BranchCode | string | The branch code. On update, must be a configured branch belonging to the job's company. Branches are optional in Jim2 - this is only set when your site is configured to use branches. |
|
| companyCode | string | ✓ | The company code. |
| currencyCode | string | ✓ | The currency code. |
| CustRef | string | The customer's reference for the job. | |
| DateDue | string (DateTime in ISO format) | The date the job is due. | |
| dateIn | string (DateTime in ISO format) | ✓ | The job's date in. |
| exchangeRate | number | ✓ | The currency exchange rate applied to the job. |
| FaultDesc | string | The fault description. | |
| GLDeptCode | string | The 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. |
|
| InvoiceDesc | string | The description shown on the invoice. | |
| invoiceGroupNo | integer | ✓ | Allows jobs with the same InvoiceGroupNo to be placed on the same invoice. |
| ItemDesc | string | The item description. | |
| jobDetails | object | ✓ | See the jobDetails section below. |
| manufacturing | object | ✓ | Manufacturing details for the job. Only present when the job is a manufacturing job. See the manufacturing section below. |
| OurRef | string | Our reference for the job. | |
| prevJobNo | integer | ✓ | The previous job's number. |
| priceLevel | string | ✓ | The price level description. |
| Priority | string | The job's priority. | |
| quoteNo | integer | ✓ | The number of the quote associated with the job. |
| rateLocked | boolean | ✓ | Whether the job's currency exchange rate is locked. |
| serial | string | ✓ | The job's serial number. |
| source | string | ✓ | The job's source name, identifying where the job originated. |
| sourceValue | string | ✓ | The value associated with the job's source. |
| Status | string | The job's current status. Setting it changes the job status (see the job's setStatus). | |
| StatusDue | string (DateTime in ISO format) | The due date for the job's current status. | |
| SubBranchCode | string | The 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. |
|
| TaxInc | boolean | Whether prices are calculated from the tax-paid (tax-inclusive) amount. | |
| taxPaid | boolean | ✓ | Whether the job pays tax. |
| Type | string | The job's Type. When set, it must match a configured job type (case-insensitive); send an empty value to clear it. This is distinct from the job's kind (sales/service/manufacturing). |
Attributes of the jobDetails object.
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| customer | object | ✓ | The customer (bill-to) name and address details stored on the job. See the jobDetails.customer section below. |
| freight | object | ✓ | The freight charge, tax and dispatch details for the job. See the jobDetails.freight section below. |
| ship | object | ✓ | The ship-to name and address details stored on the job. See the jobDetails.ship section below. |
Attributes of the manufacturing object.
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| configNo | integer | ✓ | The stock configuration number. |
| cost | number | ✓ | The manufacturing cost. |
| locationCode | string | ✓ | The stock location code for the item being manufactured. |
| qty | number | ✓ | The manufacturing quantity. |
| stockCode | string | ✓ | The code of the stock item being manufactured. |
Attributes of the jobDetails.customer object.
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| attn | string | ✓ | The customer contact (attention) name. |
| country | string | ✓ | The customer country. |
| isAddressResidential | boolean | ✓ | Whether the customer address is residential. |
| name | string | ✓ | The customer name. |
| orderNo | string | ✓ | The customer's order number. |
| postCode | string | ✓ | The customer post code. |
| state | string | ✓ | The customer state. |
| streetAddress | string | ✓ | The customer street address. |
| suburb | string | ✓ | The customer suburb. |
Attributes of the jobDetails.freight object.
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| amount | number | ✓ | The freight charge amount. |
| dispatch | array of object | ✓ | The dispatch / consignment details for the shipment. See the jobDetails.freight.dispatch section below. |
| tax | number | ✓ | The tax on the freight charge. |
| taxCode | string | ✓ | The tax code applied to the freight charge. |
Attributes of the jobDetails.ship object.
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| attn | string | ✓ | The delivery (ship-to) contact (attention) name. |
| country | string | ✓ | The delivery country. |
| isAddressResidential | boolean | ✓ | Whether the delivery address is residential. |
| name | string | ✓ | The delivery (ship-to) name. |
| postCode | string | ✓ | The delivery post code. |
| state | string | ✓ | The delivery state. |
| streetAddress | string | ✓ | The delivery street address. |
| suburb | string | ✓ | The delivery suburb. |
Attributes of each element in the jobDetails.freight.dispatch array.
| Attribute | Type | Read-only | Description |
|---|---|---|---|
| noOfCartons | integer | ✓ | The number of cartons in the shipment. |
| shipRef | string | ✓ | The carrier consignment / shipping reference. |
| shipVia | string | ✓ | The carrier or method the goods are shipped via. |
Path: api/v1/jobs?filter[isSales]=True&filter[hasReservedStock]=True&filter[isActive]=True&filter[name.id]=9&filter[CustRef][-like]PO-448&include=contract,customer,from,ship,comments,stock,labour For more information see Resource Filtering. Job Filter uses list technology to retreive data. Names should match those on the list screen in Jim List Help. 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.
Example GET (Return using filter)
Filtering
Field Type Comment
accountManager.id Int
asset.id Int
BranchCode Text Branch code
cardGroup Text The group that the customer card file linked to the job belongs to
companyCode Text Company code
contract Text The contract type of the project linked to the job
contract.id Int
createdFromQuote Bool
currencyCode Text Currencies code
customer.id Int
CustRef Text
dateDue DateTime
dateIn DateTime
dateOut DateTime
dueWithin Int
dueWithinMeasure Text
from.id Int
GLDeptCode Text GLDept code
hasReservedStock Bool
hasUnreadEmail Bool
invoice.id Int
isActive Bool
isFinished Bool
isInvoiced Bool
isJobOverdue Bool
isManufacturing Bool Is this a manufacturing Job
isReady Bool
isSales Bool Is this a sales Job
isService Bool Is this a service Job
isStatusOverdue Bool
item.id Int
itemGroup Text The group that the item linked to the job belongs to
job.id Int
JobStock.serialNo Text Serial number linked to a stock line on the Job
JobStock.stockId Int Jobs that have this stock on them
lastModified DateTime
make Text Make of the item linked to the job
mode Text The mode the job is in
model Text Model of the item linked to the job
name.id Int
orderNo Int PO number linked to a stock line on the Job
ourRef Text
partStatus Text The status of at least one of the stock linked to the job
priceLevel Text CustType code
Priority Text
projectGroup Text The group that the project linked to the job belongs to
projectType Text The contract type of the project linked to the job
quote.id Int
serial Text The serial number of the manufactured stock that this job has created
ship.id Int
shipGroup Text The group that the ship card file linked to the job belongs to
sourceName Text ObjectSource code
sourceValue Text
Status Text
stockGroup Text The group that at least one of the stock linked to the job belongs to
SubBranchCode Text SubBranch code
taxPaid Bool
Type Text
{
"data": [
{
"id": "10",
"type": "Job",
"attributes": {
"Status": "Booked",
"CustRef": "PO-44821",
"OurRef": "JOB-00010",
"Priority": "High",
"FaultDesc": "Unit will not power on after the latest firmware update.",
"InvoiceDesc": "Diagnose and reflash controller, replace power supply.",
"ItemDesc": "Controller Unit Model X200",
"SubBranchCode": "SYD-NORTH",
"BranchCode": "SYD",
"dateIn": "2026-03-12T09:15:00+10:00",
"DateDue": "2026-03-19T17:00:00+10:00",
"StatusDue": "2026-03-15T12:00:00+10:00",
"Type": "Normal",
"priceLevel": "Retail",
"taxPaid": false,
"serial": "SN-X200-99381",
"currencyCode": "AUD",
"source": "Web",
"sourceValue": "WEB-ORDER-7741",
"companyCode": "HAPPEN",
"exchangeRate": 1.0000,
"rateLocked": false,
"prevJobNo": 9,
"quoteNo": 5,
"invoiceGroupNo": 2,
"GLDeptCode": "SERVICE",
"TaxInc": true,
"manufacturing": {
"qty": 5.0000,
"cost": 123.4500,
"configNo": 17,
"locationCode": "MAIN",
"stockCode": "ASSY.X200"
},
"jobDetails": {
"customer": {
"attn": "Jane Smith",
"name": "Acme Corporation Pty Ltd",
"isAddressResidential": false,
"streetAddress": "12 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia",
"orderNo": "PO-44821"
},
"ship": {
"attn": "Receiving Dock",
"name": "Acme Corporation Pty Ltd",
"isAddressResidential": false,
"streetAddress": "14 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
},
"freight": {
"amount": 25.0000,
"tax": 2.5000,
"taxCode": "GST",
"dispatch": [
{
"shipVia": "Courier Express",
"shipRef": "CE-558213",
"noOfCartons": 3
}
]
}
}
},
"relationships": {
"contract": { "data": { "type": "Contract", "id": "100" } },
"customer": { "data": { "type": "CardFile", "id": "3" } },
"from": { "data": { "type": "CardFile", "id": "3" } },
"ship": { "data": { "type": "CardFile", "id": "4" } },
"accountManager": { "data": { "type": "CardFile", "id": "7" } },
"name": { "data": { "type": "CardFile", "id": "9" } },
"item": { "data": { "type": "Item", "id": "21" } },
"quote": { "data": { "type": "Quote", "id": "5" } },
"asset": { "data": { "type": "Asset", "id": "44" } },
"manufacturingStock": { "data": { "type": "Stock", "id": "53" } },
"invoice": { "data": { "type": "Invoice", "id": "8001" } },
"comments": {
"data": [
{ "type": "JobComment", "id": "10-1" },
{ "type": "JobComment", "id": "10-2" }
]
},
"stock": {
"data": [
{ "type": "JobStock", "id": "10-1" },
{ "type": "JobStock", "id": "10-2" }
]
},
"labour": {
"data": [
{ "type": "JobLabour", "id": "10-1" }
]
}
},
"links": {
"self": "/test/api/v1/jobs/10"
}
},
{
"id": "11",
"type": "Job",
"attributes": {
"Status": "In Progress",
"OurRef": "JOB-00011"
}
}
]
}
Path: api/v1/jobs/10?include=contract,customer,from,ship,accountManager,name,item,comments,stock,labour 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.
Example GET (Return specific)
{
"data": {
"id": "10",
"type": "Job",
"attributes": {
"Status": "Booked",
"CustRef": "PO-44821",
"OurRef": "JOB-00010",
"Priority": "High",
"FaultDesc": "Unit will not power on after the latest firmware update.",
"InvoiceDesc": "Diagnose and reflash controller, replace power supply.",
"ItemDesc": "Controller Unit Model X200",
"SubBranchCode": "SYD-NORTH",
"BranchCode": "SYD",
"dateIn": "2026-03-12T09:15:00+10:00",
"DateDue": "2026-03-19T17:00:00+10:00",
"StatusDue": "2026-03-15T12:00:00+10:00",
"Type": "Normal",
"priceLevel": "Retail",
"taxPaid": false,
"serial": "SN-X200-99381",
"currencyCode": "AUD",
"source": "Web",
"sourceValue": "WEB-ORDER-7741",
"companyCode": "HAPPEN",
"exchangeRate": 1.0000,
"rateLocked": false,
"prevJobNo": 9,
"quoteNo": 5,
"invoiceGroupNo": 2,
"GLDeptCode": "SERVICE",
"TaxInc": true,
"manufacturing": {
"qty": 5.0000,
"cost": 123.4500,
"configNo": 17,
"locationCode": "MAIN",
"stockCode": "ASSY.X200"
},
"jobDetails": {
"customer": {
"attn": "Jane Smith",
"name": "Acme Corporation Pty Ltd",
"isAddressResidential": false,
"streetAddress": "12 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia",
"orderNo": "PO-44821"
},
"ship": {
"attn": "Receiving Dock",
"name": "Acme Corporation Pty Ltd",
"isAddressResidential": false,
"streetAddress": "14 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
},
"freight": {
"amount": 25.0000,
"tax": 2.5000,
"taxCode": "GST",
"dispatch": [
{
"shipVia": "Courier Express",
"shipRef": "CE-558213",
"noOfCartons": 3
}
]
}
}
},
"relationships": {
"contract": {
"data": {
"type": "Contract",
"id": "100"
}
},
"customer": {
"data": {
"type": "CardFile",
"id": "3"
}
},
"from": {
"data": {
"type": "CardFile",
"id": "3"
}
},
"ship": {
"data": {
"type": "CardFile",
"id": "4"
}
},
"accountManager": {
"data": {
"type": "CardFile",
"id": "7"
}
},
"name": {
"data": {
"type": "CardFile",
"id": "9"
}
},
"item": {
"data": {
"type": "Item",
"id": "21"
}
},
"quote": {
"data": {
"type": "Quote",
"id": "5"
}
},
"asset": {
"data": {
"type": "Asset",
"id": "44"
}
},
"manufacturingStock": {
"data": {
"type": "Stock",
"id": "53"
}
},
"invoice": {
"data": {
"type": "Invoice",
"id": "8001"
}
},
"comments": {
"data": [
{
"type": "JobComment",
"id": "10-1"
},
{
"type": "JobComment",
"id": "10-2"
}
]
},
"stock": {
"data": [
{
"type": "JobStock",
"id": "10-1"
},
{
"type": "JobStock",
"id": "10-2"
}
]
},
"labour": {
"data": [
{
"type": "JobLabour",
"id": "10-1"
}
]
}
},
"links": {
"self": "/test/api/v1/jobs/10"
}
},
"included": [
{
"type": "Contract",
"id": "100",
"attributes": {
"code": "SVC-ANNUAL",
"status": "Active"
}
},
{
"type": "Item",
"id": "21",
"attributes": {
"ItemCode": "CTRL.X200",
"Description": "Controller Unit Model X200"
}
},
{
"type": "CardFile",
"id": "3",
"attributes": {
"cardNo": 3,
"cardCode": "ACME",
"contact": "Jane Smith",
"name": "Acme Corporation Pty Ltd",
"aBN": "53 004 085 616",
"aCN": "004 085 616",
"shipVia": "Courier Express",
"shipAmount": 25.00,
"branchCode": "SYD",
"subBranchCode": "SYD-NORTH",
"gLDeptCode": "SALES",
"customer": {
"terms": "30 Days",
"priceLevel": "Retail",
"custPONo": "PO-44821",
"currencyCode": "AUD",
"creditHold": "OFF( Auto )",
"creditLimit": 50000.00,
"accFeePerc": 2.50,
"bPayRefNo": "1234567890",
"backorder": "Allow Backorders",
"requiredDays": 7,
"requiredHours": 0,
"taxPaid": false,
"taxExclCode": "GST",
"taxInclCode": "GSTINC",
"batchInvGroupBy": "Customer",
"sendStatementVia": "Email",
"sendInvVia": "Email",
"groups": [
{ "type": "Region", "id": 1, "name": "East Coast" }
]
},
"address": {
"isAddressResidential": false,
"streetAddress": "12 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
},
"delAddress": {
"isAddressResidential": false,
"streetAddress": "14 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
}
},
"relationships": {
"contacts": {
"data": [
{ "type": "CardFileContact", "id": "3-1" }
]
},
"accountManager": {
"data": { "type": "CardFile", "id": "7" }
}
}
},
{
"type": "CardFile",
"id": "4",
"attributes": {
"cardNo": 4,
"cardCode": "ACME-WHS",
"contact": "Receiving Dock",
"name": "Acme Corporation Pty Ltd",
"aBN": "53 004 085 616",
"aCN": "004 085 616",
"shipVia": "Courier Express",
"shipAmount": 0.00,
"branchCode": "SYD",
"subBranchCode": "SYD-NORTH",
"gLDeptCode": "SALES",
"customer": {
"terms": "30 Days",
"priceLevel": "Retail",
"custPONo": null,
"currencyCode": "AUD",
"creditHold": "OFF( Auto )",
"creditLimit": 0.00,
"accFeePerc": 0.00,
"bPayRefNo": null,
"backorder": "Allow Backorders",
"requiredDays": null,
"requiredHours": null,
"taxPaid": false,
"taxExclCode": "GST",
"taxInclCode": "GSTINC",
"batchInvGroupBy": "Customer",
"sendStatementVia": "Don't send",
"sendInvVia": "Don't send",
"groups": []
},
"address": {
"isAddressResidential": false,
"streetAddress": "14 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
},
"delAddress": {
"isAddressResidential": false,
"streetAddress": "14 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
}
},
"relationships": {
"contacts": {
"data": [
{ "type": "CardFileContact", "id": "4-1" }
]
}
}
},
{
"type": "CardFile",
"id": "7",
"attributes": {
"cardNo": 7,
"cardCode": "STAFF-SC",
"contact": "Sarah Chen",
"name": "Sarah Chen",
"aBN": null,
"aCN": null,
"shipVia": null,
"shipAmount": 0.00,
"branchCode": "SYD",
"subBranchCode": "SYD-NORTH",
"gLDeptCode": "SALES",
"customer": {
"terms": "30 Days",
"priceLevel": "Retail",
"custPONo": null,
"currencyCode": "AUD",
"creditHold": "OFF( Auto )",
"creditLimit": 0.00,
"accFeePerc": 0.00,
"bPayRefNo": null,
"backorder": "Allow Backorders",
"requiredDays": null,
"requiredHours": null,
"taxPaid": false,
"taxExclCode": "GST",
"taxInclCode": "GSTINC",
"batchInvGroupBy": "Customer",
"sendStatementVia": "Don't send",
"sendInvVia": "Don't send",
"groups": []
},
"address": {
"isAddressResidential": false,
"streetAddress": "100 George St",
"suburb": "Sydney",
"state": "NSW",
"postCode": "2000",
"country": "Australia"
},
"delAddress": {
"isAddressResidential": false,
"streetAddress": "100 George St",
"suburb": "Sydney",
"state": "NSW",
"postCode": "2000",
"country": "Australia"
}
},
"relationships": {
"contacts": {
"data": [
{ "type": "CardFileContact", "id": "7-1" }
]
}
}
},
{
"type": "CardFile",
"id": "9",
"attributes": {
"cardNo": 9,
"cardCode": "ACME-JDOE",
"contact": "John Doe",
"name": "John Doe",
"aBN": null,
"aCN": null,
"shipVia": null,
"shipAmount": 0.00,
"branchCode": "SYD",
"subBranchCode": "SYD-NORTH",
"gLDeptCode": "SALES",
"customer": {
"terms": "30 Days",
"priceLevel": "Retail",
"custPONo": null,
"currencyCode": "AUD",
"creditHold": "OFF( Auto )",
"creditLimit": 0.00,
"accFeePerc": 0.00,
"bPayRefNo": null,
"backorder": "Allow Backorders",
"requiredDays": null,
"requiredHours": null,
"taxPaid": false,
"taxExclCode": "GST",
"taxInclCode": "GSTINC",
"batchInvGroupBy": "Customer",
"sendStatementVia": "Don't send",
"sendInvVia": "Don't send",
"groups": []
},
"address": {
"isAddressResidential": false,
"streetAddress": "12 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
},
"delAddress": {
"isAddressResidential": false,
"streetAddress": "12 Industrial Ave",
"suburb": "Chatswood",
"state": "NSW",
"postCode": "2067",
"country": "Australia"
}
},
"relationships": {
"contacts": {
"data": [
{ "type": "CardFileContact", "id": "9-1" }
]
}
}
},
{
"type": "JobComment",
"id": "10-1",
"attributes": {
"include": false,
"status": "Booked",
"comment": "Customer reported intermittent power loss.",
"modifyinit": "SYS",
"modifydate": "2026-03-12T09:20:41"
}
},
{
"type": "JobComment",
"id": "10-2",
"attributes": {
"include": true,
"status": "Booked",
"comment": "Replaced power supply, reflashed firmware to v2.4.1.",
"modifyinit": "TECH1",
"modifydate": "2026-03-13T14:05:13"
}
},
{
"type": "JobStock",
"id": "10-1",
"attributes": {
"stockId": 53,
"stockCode": "PSU.X200",
"unit": "EACH",
"qty": 1.0000,
"description": "Replacement power supply for X200",
"modifyinit": "TECH1",
"modifydate": "2026-03-13T14:05:13"
}
},
{
"type": "JobStock",
"id": "10-2",
"attributes": {
"stockId": 61,
"stockCode": "LABOUR.STD",
"unit": "HOUR",
"qty": 1.5000,
"description": "Standard workshop labour",
"modifyinit": "TECH1",
"modifydate": "2026-03-13T14:05:13"
}
},
{
"type": "JobLabour",
"id": "10-1",
"attributes": {
"staffCode": "TECH1",
"date": "2026-03-13T13:00:00+10:00",
"qty": 1.5000,
"description": "Workshop diagnosis and repair",
"modifyinit": "TECH1",
"modifydate": "2026-03-13T14:05:13"
}
}
]
}
Path: api/v1/jobs Request: This request creates related resources in the same call. Each new related resource in the included array is given a temporary local id (lid) that you choose — any string, unique within the request. Reference that same lid from the parent's relationships so the server can link them, then the server replaces each lid with a real id in the response. Use lid only for resources being created in this request; reference resources that already exist by their real id instead. 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.
Example POST
{
"data": {
"type": "Job",
"attributes": {
"Status": "Proceed",
"CustRef": "PO-44821",
"OurRef": "JOB-REF-01",
"Priority": "Normal",
"FaultDesc": "Unit will not power on.",
"InvoiceDesc": "Repair and test.",
"ItemDesc": "Sale",
"SubBranchCode": "SYD-NORTH",
"BranchCode": "SYD",
"GLDeptCode": "SERVICE",
"DateDue": "2024-06-24T14:05:00",
"StatusDue": "2024-06-20T09:00:00",
"Type": "Normal",
"TaxInc": true
},
"relationships": {
"customer": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"from": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"ship": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"contract": {
"data": {
"type": "Contract",
"id": "5"
}
},
"item": {
"data": {
"type": "Item",
"id": "3"
}
},
"quote": {
"data": {
"type": "Quote",
"id": "7"
}
},
"accountManager": {
"data": {
"type": "CardFile",
"id": "2"
}
},
"asset": {
"data": {
"type": "Asset",
"id": "4"
}
},
"name": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"comments": {
"data": [
{
"type": "JobComment",
"lid": "comment1"
}
]
},
"stock": {
"data": [
{
"type": "JobStock",
"lid": "guid1"
}
]
}
}
},
"included": [
{
"type": "JobComment",
"lid": "comment1",
"attributes": {
"include": false,
"comment": "Initial booking note."
}
},
{
"type": "JobStock",
"lid": "guid1",
"attributes": {
"code": "T.SA.ON.SELL",
"qty": 1,
"serials": [
{
"serialNo": "serial1",
"stockAttrs": [
{
"name": "Colour",
"value": "R,Red"
},
{
"name": "Size",
"value": "8,Eight"
}
]
}
]
}
}
]
}
{
"data": {
"id": "10",
"type": "Job",
"attributes": {
"Status": "Proceed",
"CustRef": "PO-44821",
"OurRef": "JOB-REF-01",
"Priority": "Normal",
"FaultDesc": "Unit will not power on.",
"InvoiceDesc": "Repair and test.",
"ItemDesc": "Sale",
"SubBranchCode": "SYD-NORTH",
"BranchCode": "SYD",
"GLDeptCode": "SERVICE",
"dateIn": "2026-07-05T09:15:00+10:00",
"DateDue": "2024-06-24T14:05:00",
"StatusDue": "2024-06-20T09:00:00",
"Type": "Normal",
"priceLevel": "Retail",
"taxPaid": false,
"currencyCode": "AUD",
"companyCode": "HAPPEN",
"exchangeRate": 1.0000,
"rateLocked": false,
"quoteNo": 7,
"TaxInc": true
},
"relationships": {
"contract": {
"data": { "type": "Contract", "id": "5" }
},
"customer": {
"data": { "type": "CardFile", "id": "1" }
},
"from": {
"data": { "type": "CardFile", "id": "1" }
},
"ship": {
"data": { "type": "CardFile", "id": "1" }
},
"name": {
"data": { "type": "CardFile", "id": "1" }
},
"accountManager": {
"data": { "type": "CardFile", "id": "2" }
},
"item": {
"data": { "type": "Item", "id": "3" }
},
"quote": {
"data": { "type": "Quote", "id": "7" }
},
"asset": {
"data": { "type": "Asset", "id": "4" }
},
"comments": {
"data": [
{ "type": "JobComment", "id": "10-1" }
]
},
"stock": {
"data": [
{ "type": "JobStock", "id": "10-1" }
]
}
},
"links": {
"self": "/api/v1/jobs/10"
}
}
}
Path: api/v1/jobs/10 Request: This request creates related resources in the same call. Each new related resource in the included array is given a temporary local id (lid) that you choose — any string, unique within the request. Reference that same lid from the parent's relationships so the server can link them, then the server replaces each lid with a real id in the response. Use lid only for resources being created in this request; reference resources that already exist by their real id instead. 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.
Example PATCH
{
"data": {
"id": "10",
"type": "Job",
"attributes": {
"Status": "Proceed",
"CustRef": "PO-44821",
"OurRef": "JOB-REF-01",
"Priority": "Normal",
"FaultDesc": "Unit will not power on.",
"InvoiceDesc": "Repair and test.",
"ItemDesc": "Sale",
"SubBranchCode": "SYD-NORTH",
"BranchCode": "SYD",
"GLDeptCode": "SERVICE",
"DateDue": "2024-06-24T14:05:00",
"StatusDue": "2024-06-20T09:00:00",
"Type": "Normal",
"TaxInc": true
},
"relationships": {
"contract": {
"data": {
"type": "Contract",
"id": "5"
}
},
"from": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"ship": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"item": {
"data": {
"type": "Item",
"id": "3"
}
},
"quote": {
"data": {
"type": "Quote",
"id": "7"
}
},
"accountManager": {
"data": {
"type": "CardFile",
"id": "2"
}
},
"asset": {
"data": {
"type": "Asset",
"id": "4"
}
},
"name": {
"data": {
"type": "CardFile",
"id": "1"
}
},
"comments": {
"data": [
{
"type": "JobComment",
"lid": "comment1"
}
]
}
}
},
"included": [
{
"type": "JobComment",
"lid": "comment1",
"attributes": {
"include": true,
"comment": "Progress note added via PATCH."
}
}
]
}
{
"data": {
"id": "10",
"type": "Job",
"attributes": {
"Status": "Proceed",
"CustRef": "PO-44821",
"OurRef": "JOB-REF-01",
"Priority": "Normal",
"FaultDesc": "Unit will not power on.",
"InvoiceDesc": "Repair and test.",
"ItemDesc": "Sale",
"SubBranchCode": "SYD-NORTH",
"BranchCode": "SYD",
"GLDeptCode": "SERVICE",
"dateIn": "2026-03-12T09:15:00+10:00",
"DateDue": "2024-06-24T14:05:00",
"StatusDue": "2024-06-20T09:00:00",
"Type": "Normal",
"priceLevel": "Retail",
"taxPaid": false,
"currencyCode": "AUD",
"companyCode": "HAPPEN",
"exchangeRate": 1.0000,
"rateLocked": false,
"quoteNo": 7,
"TaxInc": true
},
"relationships": {
"contract": {
"data": { "type": "Contract", "id": "5" }
},
"customer": {
"data": { "type": "CardFile", "id": "1" }
},
"from": {
"data": { "type": "CardFile", "id": "1" }
},
"ship": {
"data": { "type": "CardFile", "id": "1" }
},
"name": {
"data": { "type": "CardFile", "id": "1" }
},
"accountManager": {
"data": { "type": "CardFile", "id": "2" }
},
"item": {
"data": { "type": "Item", "id": "3" }
},
"quote": {
"data": { "type": "Quote", "id": "7" }
},
"asset": {
"data": { "type": "Asset", "id": "4" }
},
"comments": {
"data": [
{ "type": "JobComment", "id": "10-1" }
]
},
"stock": {
"data": [
{ "type": "JobStock", "id": "10-1" }
]
}
},
"links": {
"self": "/api/v1/jobs/10"
}
}
}