Project contracts

Associate a project contract and its corresponding project contract lines with a project to capture a mix of billable details and include those details into your construction project billing.

Please be aware that this object is currently "Uncertified", signifying that it has not undergone the complete review process and the design may change during ongoing refinement. Users are advised to exercise discretion in using this object and are encouraged to provide feedback.

List project contracts

get/objects/construction/project-contract

Returns up to 100 object references from the collection with a key, ID, and link for each object. This operation is mostly for use in testing; use the query service to find objects that meet certain criteria and specify the properties that are returned.

SecurityOAuth2
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": [
    • {
      • "key": "1",
      • "id": "BTI-01",
      • "href": "/objects/construction/project-contract/1"
      },
    • {
      • "key": "2",
      • "id": "BTI-02",
      • "href": "/objects/construction/project-contract/2"
      }
    ],
  • "ia::meta": {
    • "totalCount": 2,
    • "start": 1,
    • "pageSize": 100,
    • "next": null,
    • "previous": null
    }
}

Create a project contract

post/objects/construction/project-contract

Creates a new project contract.

SecurityOAuth2
Request
Request Body schema: application/json

Project contract to create

name
required
string

Project contract name

Example: "CONTRACT-01 - NW Food Warehouse"
required
object

Reference to an active project that this contract is associated with.

key
string

Project key

Example: "1"
id
string

Project id

Example: "DIM - BTI"
required
object

Reference to a customer

key
string

Customer Key

Example: "14"
id
string

Customer ID

Example: "BTI"
contractDate
required
string <date>

Contract date

Example: "2023-10-15"
id
string

Unique identifier of the project contract. You must specify a unique ID when creating a project contract unless document sequencing is configured, in which case the ID is auto-generated.

Example: "CONTRACT-01"
object
description
string

Description

Example: "NW Food Warehouse - Entry lobby renovation"
object

Reference to a project contract type

key
string

Project contract type key

Example: "2"
id
string

Project contract type id

Example: "COM"
object

Reference to an architect contact

key
string

Contact key

Example: "12"
id
string

Contact id

Example: "Eberhardt"
isBillable
boolean
Default: false

Set to true if the project contract is billable.

Example: true
object

Supporting document ID.

key
string

Attachment key

Example: "6"
id
string

Attachment id

Example: "att-1"
status
string
Default: "active"

Object status. Active objects are fully functional. Inactive objects are essentially hidden and cannot be used or referenced.

Enum: "active" "inactive"
Example: "active"
object

Billing

lastApplicationNumber
string

Last billing application number

Example: "A-123"
excludeFromWIPReporting
boolean
Default: false

Set to `true to exclude the contract from work in progress reports.

Example: true
scope
string

Scope

Example: "Design"
inclusions
string

Inclusions

Example: "Original plan"
exclusions
string

Exclusions

Example: "Hardware accessories"
terms
string

Terms

Example: "Standard terms and conditions"
object
scheduledStartDate
string <date>

Scheduled start date

Example: "2021-06-15"
actualStartDate
string <date>

Actual start date

Example: "2021-06-30"
scheduledCompletionDate
string <date>

Scheduled completion date

Example: "2022-11-15'"
revisedCompletionDate
string <date>

Revised completion date

Example: "2021-12-15"
substantialCompletionDate
string <date>

Substantial completion date

Example: "2021-09-30"
actualCompletionDate
string <date>

Actual completion date

Example: "2021-12-15"
noticeToProceedDate
string <date>

Notice to proceed date

Example: "2021-05-30"
responseDueDate
string <date>

Response due date

Example: "2021-06-05"
executedOnDate
string <date>

Executed on date

Example: "2021-06-01"
scheduleImpact
string

Schedule Impact

Example: "None"
object
referenceNumber
string

Reference number

Example: "INT-01"
object

Initiated by

key
string

Employee key

Example: "2"
id
string

Employee id

Example: "dhatchet"
object

Verbal approval by

key
string

Employee key

Example: "2"
id
string

Employee id

Example: "sdye"
object

Issued by

key
string

Employee key

Example: "25"
id
string

Employee id

Example: "amarquess"
issuedOnDate
string <date>

Issued on date

Example: "2021-05-30"
object

Approved by

key
string

Employee key

Example: "1"
id
string

Employee id

Example: "treser"
approvedOnDate
string <date>

Approved on date

Example: "2021-10-02"
object

Signed by

key
string

Employee key

Example: "32"
id
string

Employee id

Example: "broberts"
signedOnDate
string <date>

Signed on date

Example: "2021-05-31"
source
string

Internal source

Example: "Internal"
sourceReferenceNumber
string

Internal source reference number

Example: "REF-INT-01"
object
referenceNumber
string

External reference number

Example: "A23"
object

Verbal approval by

key
string

Contact key

Example: "6"
id
string

Contact name

Example: "Johnson"
object

Approved by

key
string

Contact key

Example: "51"
id
string

Contact name

Example: "Jagadish"
approvedOnDate
string <date>

Approved on date

Example: "2021-11-03"
object

Signed by

key
string

Contact key

Example: "200"
id
string

Contact name

Example: "Modulus Industries"
signedOnDate
string <date>

Signed on date

Example: "2021-12-01"
Responses
201

Created

400

Bad Request

Request samples
application/json
{
  • "id": "BTI-05",
  • "name": "Berkeley Technology Inc - Contract 05",
  • "project": {
    • "id": "DIM - BTI"
    },
  • "customer": {
    • "id": "BTI"
    },
  • "contractDate": "2023-09-30",
  • "description": "Project contract for Berkeley Technology Inc",
  • "architect": {
    • "id": "Eberhardt"
    },
  • "projectContractType": {
    • "id": "COM"
    },
  • "attachment": {
    • "id": "pc-att-2"
    },
  • "isBillable": true,
  • "scope": "Project scope only",
  • "inclusions": "Per original contract",
  • "exclusions": "Plumbing",
  • "terms": "Per original contract",
  • "schedule": {
    • "scheduledStartDate": "2023-06-15",
    • "actualStartDate": "2023-06-30",
    • "scheduledCompletionDate": "2022-11-15",
    • "revisedCompletionDate": "2023-12-15",
    • "substantialCompletionDate": "2023-09-30",
    • "actualCompletionDate": "2023-12-15",
    • "noticeToProceedDate": "2023-05-30",
    • "responseDueDate": "2023-06-05",
    • "executedOnDate": "2023-06-01",
    • "scheduleImpact": "NA"
    },
  • "internalReference": {
    • "referenceNumber": "INT-01",
    • "initiatedBy": {
      • "id": "2"
      },
    • "verbalBy": {
      • "id": "2"
      },
    • "issuedBy": {
      • "id": "123"
      },
    • "issuedOnDate": "2023-05-30",
    • "approvedBy": {
      • "id": "1"
      },
    • "approvedOnDate": "2023-10-02",
    • "signedBy": {
      • "id": "Robert"
      },
    • "signedOnDate": "2023-05-31",
    • "source": "NA",
    • "sourceReferenceNumber": "REF-01"
    },
  • "externalReference": {
    • "referenceNumber": "A23",
    • "verbalBy": {
      • "name": "Johnson"
      },
    • "approvedBy": {
      • "name": "Jagadish"
      },
    • "approvedOnDate": "2023-11-03",
    • "signedBy": {
      • "name": "Modulus Industries"
      },
    • "signedOnDate": "2023-12-01"
    }
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "1",
    • "id": "BTI-01",
    • "href": "/objects/construction/project-contract/1"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Get a project contract

get/objects/construction/project-contract/{key}

Returns detailed information for a specified project contract.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the project contract.

Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "key": "1",
    • "id": "BTI-01",
    • "name": "Berkeley Technology Inc - Contract 01",
    • "project": {
      • "id": "DIM - BTI",
      • "name": "Dimensions - Berkeley Technology Inc",
      • "key": "1",
      • "href": "/objects/projects/project/1"
      },
    • "location": {
      • "id": "1",
      • "name": "United States of America",
      • "key": "1",
      • "href": "/objects/company-config/location/1"
      },
    • "customer": {
      • "id": "BTI",
      • "name": "Berkeley Technology Inc",
      • "key": "14",
      • "href": "/objects/accounts-receivable/customer/14"
      },
    • "contractDate": "2023-05-15",
    • "description": "BTI Project - Main lobby renovation contract",
    • "projectContractType": {
      • "id": "COM",
      • "key": "2",
      • "href": "/objects/construction/project-contract-type/2"
      },
    • "architect": {
      • "id": "Eberhardt",
      • "key": "12",
      • "href": "/objects/company-config/contact/12"
      },
    • "isBillable": true,
    • "attachment": {
      • "id": "pc-att-2",
      • "key": "7",
      • "href": "/objects/company-config/attachment/7"
      },
    • "status": "active",
    • "summary": {
      • "totalPrice": "2810.65",
      • "originalPrice": "1100.00",
      • "revisionPrice": "210.65",
      • "approvedChangePrice": "1500.00",
      • "pendingChangePrice": "311.85",
      • "otherPrice": "900.00",
      • "forecastPrice": "750.00"
      },
    • "billing": {
      • "billedPrice": "0.00",
      • "totalBilledNetRetainage": "0.00",
      • "percentBilled": "0.00",
      • "percentBilledNetRetainage": "0.00",
      • "totalRetainageHeld": "0.00",
      • "totalRetainageReleased": "0.00",
      • "retainageBalance": "0.00",
      • "balanceToBill": "2810.65",
      • "balanceToBillNetRetainage": "2810.65",
      • "totalPaymentsReceived": "0.00",
      • "netTotalBilled": "2810.65",
      • "netTotalPaymentsReceived": "1000.00",
      • "subtotalBilledAsTax": "0.00",
      • "subtotalBilledAsDiscount": "0.00",
      • "subtotalBilledAsCharge": "0.00",
      • "lastApplicationNumber": "A-122"
      },
    • "excludeFromWIPReporting": false,
    • "scope": "Project scope only",
    • "inclusions": "Per original contract",
    • "exclusions": "Plumbing",
    • "terms": "Per original contract",
    • "schedule": {
      • "scheduledStartDate": "2023-06-15",
      • "actualStartDate": "2023-06-30",
      • "scheduledCompletionDate": "2022-11-15",
      • "revisedCompletionDate": "2023-12-15",
      • "substantialCompletionDate": "2023-09-30",
      • "actualCompletionDate": "2023-12-15",
      • "noticeToProceedDate": "2023-05-30",
      • "responseDueDate": "2023-06-05",
      • "executedOnDate": "2023-06-01",
      • "scheduleImpact": "NA"
      },
    • "internalReference": {
      • "referenceNumber": "INT-01",
      • "initiatedBy": {
        },
      • "verbalBy": {
        },
      • "issuedBy": {
        },
      • "issuedOnDate": "2023-05-30",
      • "approvedBy": {
        },
      • "approvedOnDate": "2023-10-02",
      • "signedBy": {
        },
      • "signedOnDate": "2023-05-31",
      • "source": "NA",
      • "sourceReferenceNumber": "REF-01"
      },
    • "externalReference": {
      • "referenceNumber": "A23",
      • "verbalBy": {
        },
      • "approvedBy": {
        },
      • "approvedOnDate": "2023-11-03",
      • "signedBy": {
        },
      • "signedOnDate": "2023-12-01"
      },
    • "audit": {
      • "modifiedDateTime": "2022-01-19T00:00:00Z",
      • "createdDateTime": "2023-12-01T00:00:00Z",
      • "modifiedBy": "1",
      • "createdBy": "1"
      },
    • "href": "/objects/construction/project-contract/1"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Update a project contract

patch/objects/construction/project-contract/{key}

Updates an existing project contract by setting field values. Any fields not provided remain unchanged.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the project contract.

Request Body schema: application/json
name
string

Project contract name

Example: "CONTRACT-01 - NW Food Warehouse"
object

Reference to an active project that this contract is associated with.

key
string

Project key

Example: "1"
id
string

Project id

Example: "DIM - BTI"
object
object

Reference to a customer

key
string

Customer Key

Example: "14"
id
string

Customer ID

Example: "BTI"
contractDate
string <date>

Contract date

Example: "2023-10-15"
description
string

Description

Example: "NW Food Warehouse - Entry lobby renovation"
object

Reference to a project contract type

key
string

Project contract type key

Example: "2"
id
string

Project contract type id

Example: "COM"
object

Reference to an architect contact

key
string

Contact key

Example: "12"
id
string

Contact id

Example: "Eberhardt"
isBillable
boolean
Default: false

Set to true if the project contract is billable.

Example: true
object

Supporting document ID.

key
string

Attachment key

Example: "6"
id
string

Attachment id

Example: "att-1"
status
string
Default: "active"

Object status. Active objects are fully functional. Inactive objects are essentially hidden and cannot be used or referenced.

Enum: "active" "inactive"
Example: "active"
object

Billing

lastApplicationNumber
string

Last billing application number

Example: "A-123"
excludeFromWIPReporting
boolean
Default: false

Set to `true to exclude the contract from work in progress reports.

Example: true
scope
string

Scope

Example: "Design"
inclusions
string

Inclusions

Example: "Original plan"
exclusions
string

Exclusions

Example: "Hardware accessories"
terms
string

Terms

Example: "Standard terms and conditions"
object
scheduledStartDate
string <date>

Scheduled start date

Example: "2021-06-15"
actualStartDate
string <date>

Actual start date

Example: "2021-06-30"
scheduledCompletionDate
string <date>

Scheduled completion date

Example: "2022-11-15'"
revisedCompletionDate
string <date>

Revised completion date

Example: "2021-12-15"
substantialCompletionDate
string <date>

Substantial completion date

Example: "2021-09-30"
actualCompletionDate
string <date>

Actual completion date

Example: "2021-12-15"
noticeToProceedDate
string <date>

Notice to proceed date

Example: "2021-05-30"
responseDueDate
string <date>

Response due date

Example: "2021-06-05"
executedOnDate
string <date>

Executed on date

Example: "2021-06-01"
scheduleImpact
string

Schedule Impact

Example: "None"
object
referenceNumber
string

Reference number

Example: "INT-01"
object

Initiated by

key
string

Employee key

Example: "2"
id
string

Employee id

Example: "dhatchet"
object

Verbal approval by

key
string

Employee key

Example: "2"
id
string

Employee id

Example: "sdye"
object

Issued by

key
string

Employee key

Example: "25"
id
string

Employee id

Example: "amarquess"
issuedOnDate
string <date>

Issued on date

Example: "2021-05-30"
object

Approved by

key
string

Employee key

Example: "1"
id
string

Employee id

Example: "treser"
approvedOnDate
string <date>

Approved on date

Example: "2021-10-02"
object

Signed by

key
string

Employee key

Example: "32"
id
string

Employee id

Example: "broberts"
signedOnDate
string <date>

Signed on date

Example: "2021-05-31"
source
string

Internal source

Example: "Internal"
sourceReferenceNumber
string

Internal source reference number

Example: "REF-INT-01"
object
referenceNumber
string

External reference number

Example: "A23"
object

Verbal approval by

key
string

Contact key

Example: "6"
id
string

Contact name

Example: "Johnson"
object

Approved by

key
string

Contact key

Example: "51"
id
string

Contact name

Example: "Jagadish"
approvedOnDate
string <date>

Approved on date

Example: "2021-11-03"
object

Signed by

key
string

Contact key

Example: "200"
id
string

Contact name

Example: "Modulus Industries"
signedOnDate
string <date>

Signed on date

Example: "2021-12-01"
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "name": "Berkeley Technology Inc - Contract 05[Revised]",
  • "contractDate": "2023-10-15",
  • "description": "BTI Project - Main lobby renovation contract",
  • "scope": "Project scope only [updated]",
  • "inclusions": "Per original contract [updated]",
  • "exclusions": "Plumbing [updated]",
  • "terms": "Per revised contract",
  • "schedule": {
    • "scheduledStartDate": "2023-11-15",
    • "scheduledCompletionDate": "2022-11-15"
    },
  • "internalReference": {
    • "signedBy": {
      • "id": "Robert"
      },
    • "signedOnDate": "2023-10-15"
    },
  • "projectContractType": {
    • "id": "COM"
    }
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "1",
    • "id": "BTI-01",
    • "href": "/objects/construction/project-contract/1"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Delete a project contract

delete/objects/construction/project-contract/{key}

Deletes a project contract.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the project contract.

Responses
204

No Content

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "ia::error": {
      • "code": "invalidRequest",
      • "message": "A POST request requires a payload",
      • "errorId": "REST-1028",
      • "additionalInfo": {
        },
      • "supportId": "Kxi78%7EZuyXBDEGVHD2UmO1phYXDQAAAAo"
      }
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 0,
    • "totalError": 1
    }
}

Query project contracts

post/services/core/query

Queries an object for filtered data.

SecurityOAuth2
Request
Request Body schema: application/json
object
string

Object type to query, in the form <application-name>/<object name>. For custom objects use platform-apps/nsp::<object-name>.

Example: "construction/project-contract"
fields
Array of strings

List of fields to include in the response. Can be any combination of these:

  • The name of a field in the object that you are querying, such as id.

  • The name of a field in a related object, using the form relatedObjectName.fieldName, such as vendor.id.

  • The result of an aggregate function run against the values in the returned objects. Use the form function:fieldName, such as min:startDate to return the earliest starting date. Valid function names are:

    • count
    • avg
    • sum
    • min
    • max
  • The result of an aggregate function run against the values in related objects, using the form function:relatedObjectName.fieldName, such as max:vendor.creditLimit. The same functions are supported as for object fields.

Example: ["key","id","max:vendor.creditLimit"]
Array of equal (object) or not equal (object) or less than (object) or (less than or equal (object)) or greater than (object) or (greater than or equal (object)) or in (object) or not in (object) or between (object) or not between (object) or contains (object) or does not contain (object) or starts with (object) or does not start with (object) or ends with (object) or does not end with (object)

Filter conditions to select the objects to return based on their field values. You use operators and conditions to build your filter, such as {"$eq":{"status":"active"}} to select objects in which status is equal to "active".

Example: [{"$eq":{"status":"active"}},{"$gt":{"totalDue":"1000"}},{"$contains":{"name":"Acme"}}]
Array
Any of:

Field value must be equal to this specified value.

For date fields, you can use these macro values that are relative to the current date or the asOfDate in filterParameters, if set:

  • today
  • currentWeek
  • currentMonth
  • currentQuarter
  • currentYear
  • yesterday
  • lastWeek
  • priorMonth
  • priorQuarter
  • priorYear

These are most useful for queries that you want to save and use repeatedly, such as for views or reports. Just change the asOfDate each time to retrieve the same data set for different time periods.

For example, {"eq":{"postingDate":"priorYear"}}.

object

The field name and value to be compared with object values.

Example: {"status":"active"}
filterExpression
string
Default: "and"

Logical operators to apply when there are multiple filter conditions. The conditions in the filters array are implicitly numbered starting at 1. Supports and, or, and grouping with parentheses.

Shortcuts:

  • and by itself means that all conditions must be true.
  • or by itself means that at least one condition must be true.
Example: "(1 and 2) or 3"
object

Pre-defined filter options.

asOfDate
string <date>

The "as of" date to use with any relative date comparisons in filters. For example, if asOfDate is set to "2022-04-01" then priorMonth will be "03".

The current date is used if asOfDate is not set.

Example: "2022-04-01"
includeHierarchyFields
boolean
Default: false

Set to true to include hierarchical structure information with each object in the response.

Example: false
caseSensitiveComparison
boolean
Default: true

Queries are case-sensitive by default. Set to false to ignore case in a query.

Example: true
includePrivate
boolean
Default: false

By default, in a multi-entity company, queries from the top-level entity do not access data in private entities. Set includePrivate to true if you want to query data in private entities.

Example: false
Array of objects

Set the order of the results by specifying field names to sort by and whether they should be in ascending or descending order.

Example: [{"totalDue":"asc"},{"lastPaymentMadeDate":"desc"}]
Array
property name*
additional property
string
Enum: "asc" "desc"
start
integer

First record of the result set to include in the response.

Example: 1
size
integer

Number of records to include in the response.

Example: 100
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "object": "accounts-payable/vendor",
  • "fields": [
    • "id",
    • "name",
    • "status",
    • "href"
    ],
  • "filters": [
    • {
      • "$eq": {
        }
      },
    • {
      • "$eq": {
        }
      }
    ],
  • "filterExpression": "1 and 2",
  • "orderBy": [
    • {
      • "id": "asc"
      }
    ]
}
Response samples
application/json
{
  • "ia::result": [
    • {
      • "id": "Vend-00002",
      • "name": "Test vendor",
      • "status": "active",
      • "href": "/objects/accounts-payable/vendor/85"
      },
    • {
      • "id": "VEND-00010",
      • "name": "Design Works",
      • "status": "active",
      • "href": "/objects/accounts-payable/vendor/111"
      }
    ],
  • "ia::meta": {
    • "totalCount": 2,
    • "start": 1,
    • "pageSize": 100,
    • "next": null,
    • "previous": null
    }
}