Index | Conventions

api/v1/projects

Path: api/v1/projects

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 Contract
The identifier is projectno

Relationships

A relationship links this Contract 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
billingItemItemarray
customerCardFileobject
nameCardFileobject
shipCardFileobject

Includes

Use the include query parameter to embed Includable relationships in a single response, for example:
GET /api/v1/projects/{projectno}?include=customer,ship,accountManager,name,billingItem

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=customer returns the customer 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/projects/{projectno}?include=customer

{
  "data": {
    "type": "Contract",
    "id": "1001",
    "relationships": {
      "customer": {
        "data": { "type": "CardFile", "id": "2002" }
      }
    }
  },
  "included": [
    {
      "type": "CardFile",
      "id": "2002",
      "attributes": { ... }
    }
  ]
}
	

Attributes

The Contract resource type attributes are as follows:

AttributeTypeRead-onlyDescription
billingItemDescstringThe billing item description.
BranchCodestringThe branch code. On update, must match a configured branch.
Branches are optional in Jim2 - this is only set when your site is configured to use branches.
companyCodestringThe company code. On update, must match a configured company.
custRefstringThe customer's reference for the project.
dateInstringThe project start date, as an ISO date.
dateOutstringThe project end date, as an ISO date.
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.
groupsarray of objectThe groups the project belongs to.
See the groups section below.
prioritystringThe project's priority.
projectCodestringThe project (contract) code.
projectTypeNamestringThe project type name. On update, must match a configured project type.
reqDaysintegerThe default number of days until due (required days).
reqHoursintegerThe default number of hours until due (required hours).
statusstringThe project's 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.

groups

Attributes of each element in the groups array.

AttributeTypeRead-onlyDescription
idintegerThe group's unique identifier.
namestringThe group's name.
typestringThe group's type.

Example GET (Return using filter)

Path: api/v1/projects?filter[isActive]=True&filter[customer.id]=6&filter[master.id]=1111&filter[custRef][-like]CR-2026

Filtering

For more information see Resource Filtering.

Project 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
BranchCodeTextBranch code
cardGroupTextThe group that the customer card file linked to the project belongs to
companyCodeTextCompany code
counterNameTextCounterName on the project meter setup
customer.idInt
customerPostCodeTextDelivery Postcode of the customer
custRefText
dateInDateTime
dateOutDateTimeDate project was finished
eKMLastContactDateTimeProjects last contact with EKM. Use equals only. It will get Projects with EKM contact date less than date
financeCardFile.idInt
financeExpireDateTime
financeStartDateTime
financeTermsIntNumber of months the finance Terms are. Use with -gt and -lt
GLDeptCodeTextGLDept code
groupsTextThe group the project belongs to
hasUnreadEmailBoolTick to show only projects with unread emails
isActiveBool
isBillableBoolSelects all projects that are billable.
isBillingDueBoolSelects all Projects in the state of Billing Due
isBillingReadyBoolSelects all Projects in the state of Finish
isConsolidatedBoolif Consolidated is selected on the Vendor tab of a cardfile (Group PO By Project Method), ticking this box will show all projects with Consolidated purchase orders
isFinishedBool
isHappenEKMBool
isRequestBoolHas a page request been sent
item.idInt
itemGroupTextThe group that the item linked to the project belongs to
itemMakeTextItem Make that is on the Project
itemModelTextItem Model that is on the Project
lastActualReadDateTimeProjects last read. Use equals only. It will get Projects with last read date less than date
lastBilledDateTime
master.idIntProjects that have this as Master
meterCardTextProjects with CardFile on the meter setup
meterStockTextProjects with Stock on the meter setup
nameCardTextThe Name CardFile on the Project
nextBillDateTime
notesTextText on a note on the project
noteTypeTextProjects with a particular Note Type
originatorCardFile.idInt
priceLevelTextThe Contract Price Level of the project
priceRevisionDateTimeProjects with Price Revision. Use equals only. It will get Projects with Price Revision date less than date
priorityText
project.idInt
projectTypeTextThe Type (Machine, Master etc.)
requestCardFile.idInt
requestSentDateTimeProjects with last read request. Use equals only. A date when the last request was sent before this date
serialTextSerial Number on the Project
ship.idInt
shipGroupTextThe group that the ship card file linked to the project belongs to
shipPostCodeTextDelivery Postcode of the ship card
shipSuburbTextDelivery Suburb of the ship card
sourceNameTextObjectSource code
sourceValueText
statusText
SubBranchCodeTextSubBranch code
suburbTextDelivery Suburb of the customer
warrantyInDateTime
warrantyOutDateTime

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": "4",
      "type": "Contract",
      "attributes": {
        "projectCode": "CONTRACT.SUB",
        "priority": "Normal",
        "status": "Booked",
        "custRef": "CR-2026-0041",
        "reqDays": 30,
        "reqHours": 4,
        "dateIn": "2025-10-22",
        "dateOut": "2026-10-21",
        "billingItemDesc": "MultiFunction Centre Type 2",
        "companyCode": "HAPPEN",
        "projectTypeName": "Machine",
        "BranchCode": "SYD",
        "SubBranchCode": "SYD-NORTH",
        "GLDeptCode": "SERVICE",
        "groups": [
          {
            "type": "Region",
            "id": 1,
            "name": "East Coast"
          },
          {
            "type": "Industry",
            "id": 4,
            "name": "Manufacturing"
          }
        ]
      },
      "relationships": {
        "customer": { "data": { "type": "CardFile", "id": "6" } },
        "ship": { "data": { "type": "CardFile", "id": "6" } },
        "billingItem": { "data": { "type": "Item", "id": "6" } },
        "name": { "data": { "type": "CardFile", "id": "16" } },
        "accountManager": { "data": { "type": "CardFile", "id": "16" } },
        "asset": { "data": { "type": "Asset", "id": "1" } }
      },
      "links": {
        "self": "/jim_webapi/api/v1/projects/4"
      }
    },
    {
      "id": "5",
      "type": "Contract",
      "attributes": {
        "projectCode": "CONTRACT.MAINT",
        "status": "In Progress"
      }
    }
  ]
}

Example GET (Return specific)

Path: api/v1/projects/4?include=customer,ship,accountManager,name,billingItem

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": "4",
    "type": "Contract",
    "attributes": {
      "projectCode": "CONTRACT.SUB",
      "priority": "Normal",
      "status": "Booked",
      "custRef": "CR-2026-0041",
      "reqDays": 30,
      "reqHours": 4,
      "dateIn": "2025-10-22",
      "dateOut": "2026-10-21",
      "billingItemDesc": "MultiFunction Centre Type 2",
      "companyCode": "HAPPEN",
      "projectTypeName": "Machine",
      "BranchCode": "SYD",
      "SubBranchCode": "SYD-NORTH",
      "GLDeptCode": "SERVICE",
      "groups": [
        {
          "type": "Region",
          "id": 1,
          "name": "East Coast"
        },
        {
          "type": "Industry",
          "id": 4,
          "name": "Manufacturing"
        }
      ]
    },
    "relationships": {
      "customer": { "data": { "type": "CardFile", "id": "6" } },
      "ship": { "data": { "type": "CardFile", "id": "6" } },
      "billingItem": { "data": { "type": "Item", "id": "6" } },
      "name": { "data": { "type": "CardFile", "id": "16" } },
      "accountManager": { "data": { "type": "CardFile", "id": "16" } },
      "asset": { "data": { "type": "Asset", "id": "1" } }
    },
    "links": {
      "self": "/jim_webapi/api/v1/projects/4"
    }
  },
  "included": [
    {
      "type": "CardFile",
      "id": "6",
      "attributes": {
        "cardNo": 6,
        "cardCode": "ACME",
        "contact": "Jane Smith",
        "name": "Acme Corporation Pty Ltd",
        "aBN": "51 824 753 556",
        "aCN": "824 753 556",
        "shipVia": "Courier Express",
        "shipAmount": 15.00,
        "branchCode": "SYD",
        "subBranchCode": "SYD-NORTH",
        "gLDeptCode": "SERVICE",
        "customer": {
          "terms": "30 Days",
          "priceLevel": "Retail",
          "custPONo": "PO-ACME-4471",
          "currencyCode": "AUD",
          "creditHold": "OFF( Auto )",
          "creditLimit": 50000.00,
          "accFeePerc": 1.50,
          "bPayRefNo": "1234567890",
          "backorder": "Allow Backorders",
          "requiredDays": 30,
          "requiredHours": 4,
          "taxPaid": true,
          "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": "12 Industrial Ave",
          "suburb": "Chatswood",
          "state": "NSW",
          "postCode": "2067",
          "country": "Australia"
        }
      },
      "relationships": {
        "contacts": {
          "data": [
            { "type": "CardFileContact", "id": "6-1" }
          ]
        },
        "accountManager": {
          "data": { "type": "CardFile", "id": "7" }
        }
      }
    },
    {
      "type": "CardFile",
      "id": "16",
      "attributes": {
        "cardNo": 16,
        "cardCode": "STAFF.AM",
        "contact": "Alex Manager",
        "name": "Alex Manager",
        "aBN": "",
        "aCN": "",
        "shipVia": "",
        "shipAmount": 0.00,
        "branchCode": "SYD",
        "subBranchCode": "SYD-NORTH",
        "gLDeptCode": "SALES",
        "customer": {
          "terms": "30 Days",
          "priceLevel": "Retail",
          "custPONo": "PO-AM-001",
          "currencyCode": "AUD",
          "creditHold": "OFF( Auto )",
          "creditLimit": 10000.00,
          "accFeePerc": 0.00,
          "bPayRefNo": "9900112233",
          "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": "Level 2, 88 Market Street",
          "suburb": "Sydney",
          "state": "NSW",
          "postCode": "2000",
          "country": "Australia"
        },
        "delAddress": {
          "isAddressResidential": false,
          "streetAddress": "Level 2, 88 Market Street",
          "suburb": "Sydney",
          "state": "NSW",
          "postCode": "2000",
          "country": "Australia"
        }
      },
      "relationships": {
        "contacts": {
          "data": [
            { "type": "CardFileContact", "id": "16-1" }
          ]
        },
        "accountManager": {
          "data": { "type": "CardFile", "id": "7" }
        }
      }
    },
    {
      "type": "Item",
      "id": "6",
      "attributes": {
        "ItemCode": "MFC.TYPE2",
        "Description": "MultiFunction Centre Type 2"
      }
    }
  ]
}

Example POST

Path: api/v1/projects

Request:

{
  "data": {
    "type": "Contract",
    "attributes": {
      "projectCode": "TEST-148079",
      "priority": "High",
      "status": "ACTIVE",
      "custRef": "48777",
      "reqDays": 30,
      "reqHours": 4,
      "dateIn": "2023-10-01",
      "dateOut": "2028-09-30",
      "billingItemDesc": "Master Contract",
      "companyCode": "PERTH",
      "projectTypeName": "Master",
      "BranchCode": "PER",
      "SubBranchCode": "PERHO",
      "GLDeptCode": "SERVICE"
    },
    "relationships": {
      "customer": {
        "data": {
          "type": "CardFile",
          "id": "4545"
        }
      },
      "ship": {
        "data": {
          "type": "CardFile",
          "id": "2221"
        }
      },
      "billingItem": {
        "data": {
          "type": "Item",
          "id": "4334"
        }
      },
      "accountManager": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "name": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "asset": {
        "data": {
          "type": "Asset",
          "id": "9021"
        }
      }
    }
  }
}

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": "148079",
    "type": "Contract",
    "attributes": {
      "projectCode": "TEST-148079",
      "priority": "High",
      "status": "ACTIVE",
      "custRef": "48777",
      "reqDays": 30,
      "reqHours": 4,
      "dateIn": "2023-10-01",
      "dateOut": "2028-09-30",
      "billingItemDesc": "Master Contract",
      "companyCode": "PERTH",
      "projectTypeName": "Master",
      "BranchCode": "PER",
      "SubBranchCode": "PERHO",
      "GLDeptCode": "SERVICE",
      "groups": [
        {
          "type": "Non Report",
          "id": 132,
          "name": "Non Government"
        }
      ]
    },
    "relationships": {
      "customer": {
        "data": {
          "type": "CardFile",
          "id": "4545"
        }
      },
      "ship": {
        "data": {
          "type": "CardFile",
          "id": "2221"
        }
      },
      "billingItem": {
        "data": {
          "type": "Item",
          "id": "4334"
        }
      },
      "accountManager": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "name": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "asset": {
        "data": {
          "type": "Asset",
          "id": "1"
        }
      }
    },
    "links": {
      "self": "/jim_webapi_nonmulticompany/api/v1/projects/148079"
    }
  }
}

Example PATCH

Path: api/v1/projects/10

Request:

{
  "data": {
    "id": "148079",
    "type": "Contract",
    "attributes": {
      "projectCode": "TEST-148079",
      "priority": "High",
      "status": "ACTIVE",
      "custRef": "48777",
      "reqDays": 30,
      "reqHours": 4,
      "dateIn": "2023-10-01",
      "dateOut": "2028-09-30",
      "billingItemDesc": "Master Contract",
      "companyCode": "PERTH",
      "projectTypeName": "Master",
      "BranchCode": "PER",
      "SubBranchCode": "PERHO",
      "GLDeptCode": "SERVICE"
    },
    "relationships": {
      "customer": {
        "data": {
          "type": "CardFile",
          "id": "4545"
        }
      },
      "ship": {
        "data": {
          "type": "CardFile",
          "id": "2221"
        }
      },
      "billingItem": {
        "data": {
          "type": "Item",
          "id": "4334"
        }
      },
      "accountManager": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "name": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "asset": {
        "data": {
          "type": "Asset",
          "id": "9021"
        }
      }
    },
    "links": {
      "self": "/jim_webapi_nonmulticompany/api/v1/projects/148079"
    }
  }
}

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": "148079",
    "type": "Contract",
    "attributes": {
      "projectCode": "TEST-148079",
      "priority": "High",
      "status": "ACTIVE",
      "custRef": "48777",
      "reqDays": 30,
      "reqHours": 4,
      "dateIn": "2023-10-01",
      "dateOut": "2028-09-30",
      "billingItemDesc": "Master Contract",
      "companyCode": "PERTH",
      "projectTypeName": "Master",
      "BranchCode": "PER",
      "SubBranchCode": "PERHO",
      "GLDeptCode": "SERVICE",
      "groups": [
        {
          "type": "Non Report",
          "id": 132,
          "name": "Non Government"
        }
      ]
    },
    "relationships": {
      "customer": {
        "data": {
          "type": "CardFile",
          "id": "4545"
        }
      },
      "ship": {
        "data": {
          "type": "CardFile",
          "id": "2221"
        }
      },
      "billingItem": {
        "data": {
          "type": "Item",
          "id": "4334"
        }
      },
      "accountManager": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "name": {
        "data": {
          "type": "CardFile",
          "id": "114705"
        }
      },
      "asset": {
        "data": {
          "type": "Asset",
          "id": "1"
        }
      }
    },
    "links": {
      "self": "/jim_webapi_nonmulticompany/api/v1/projects/148079"
    }
  }
}