Index | Conventions

api/v1/jobs

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.

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
commentsJobCommentarray
contractContractobject
customerCardFileobject
fromCardFileobject
invoiceInvoiceobject
itemItemobject
labourJobLabourobject
manufacturingStockStockobject
nameCardFileobject
quoteQuoteobject
shipCardFileobject
stockJobStockarray

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.

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/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:

AttributeTypeRead-onlyDescription
BranchCodestringThe 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.
companyCodestringThe company code.
currencyCodestringThe currency code.
CustRefstringThe customer's reference for the job.
DateDuestring (DateTime in ISO format)The date the job is due.
dateInstring (DateTime in ISO format)The job's date in.
exchangeRatenumberThe currency exchange rate applied to the job.
FaultDescstringThe fault description.
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.
InvoiceDescstringThe description shown on the invoice.
invoiceGroupNointegerAllows jobs with the same InvoiceGroupNo to be placed on the same invoice.
ItemDescstringThe item description.
jobDetailsobjectSee the jobDetails section below.
manufacturingobjectManufacturing details for the job. Only present when the job is a manufacturing job.
See the manufacturing section below.
OurRefstringOur reference for the job.
prevJobNointegerThe previous job's number.
priceLevelstringThe price level description.
PrioritystringThe job's priority.
quoteNointegerThe number of the quote associated with the job.
rateLockedbooleanWhether the job's currency exchange rate is locked.
serialstringThe job's serial number.
sourcestringThe job's source name, identifying where the job originated.
sourceValuestringThe value associated with the job's source.
StatusstringThe job's current status. Setting it changes the job status (see the job's setStatus).
StatusDuestring (DateTime in ISO format)The due date for the job's current status.
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 job pays tax.
TypestringThe 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).

jobDetails

Attributes of the jobDetails object.

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

manufacturing

Attributes of the manufacturing object.

AttributeTypeRead-onlyDescription
configNointegerThe stock configuration number.
costnumberThe manufacturing cost.
locationCodestringThe stock location code for the item being manufactured.
qtynumberThe manufacturing quantity.
stockCodestringThe code of the stock item being manufactured.

jobDetails.customer

Attributes of the jobDetails.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.

jobDetails.freight

Attributes of the jobDetails.freight object.

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

jobDetails.ship

Attributes of the jobDetails.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.

jobDetails.freight.dispatch

Attributes of each element in the jobDetails.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/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

Filtering

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.

The following fields can be used to filter by.
FieldTypeComment
accountManager.idInt
asset.idInt
BranchCodeTextBranch code
cardGroupTextThe group that the customer card file linked to the job belongs to
companyCodeTextCompany code
contractTextThe contract type of the project linked to the job
contract.idInt
createdFromQuoteBool
currencyCodeTextCurrencies code
customer.idInt
CustRefText
dateDueDateTime
dateInDateTime
dateOutDateTime
dueWithinInt
dueWithinMeasureText
from.idInt
GLDeptCodeTextGLDept code
hasReservedStockBool
hasUnreadEmailBool
invoice.idInt
isActiveBool
isFinishedBool
isInvoicedBool
isJobOverdueBool
isManufacturingBoolIs this a manufacturing Job
isReadyBool
isSalesBoolIs this a sales Job
isServiceBoolIs this a service Job
isStatusOverdueBool
item.idInt
itemGroupTextThe group that the item linked to the job belongs to
job.idInt
JobStock.serialNoTextSerial number linked to a stock line on the Job
JobStock.stockIdIntJobs that have this stock on them
lastModifiedDateTime
makeTextMake of the item linked to the job
modeTextThe mode the job is in
modelTextModel of the item linked to the job
name.idInt
orderNoIntPO number linked to a stock line on the Job
ourRefText
partStatusTextThe status of at least one of the stock linked to the job
priceLevelTextCustType code
PriorityText
projectGroupTextThe group that the project linked to the job belongs to
projectTypeTextThe contract type of the project linked to the job
quote.idInt
serialTextThe serial number of the manufactured stock that this job has created
ship.idInt
shipGroupTextThe group that the ship card file linked to the job belongs to
sourceNameTextObjectSource code
sourceValueText
StatusText
stockGroupTextThe group that at least one of the stock linked to the job belongs to
SubBranchCodeTextSubBranch code
taxPaidBool
TypeText

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": "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"
      }
    }
  ]
}

Example GET (Return specific)

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.

{
  "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"
      }
    }
  ]
}

Example POST

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.

{
  "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"
              }
            ]
          }
        ]
      }
    }
  ]
}

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": "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"
    }
  }
}

Example PATCH

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.

{
    "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."
            }
        }
    ]
}

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": "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"
    }
  }
}