Project estimates

A project estimate enables you to approximate how much a project might cost to complete. You can compare the actual costs against your estimate to determine if the project is progressing as expected.

List project estimates

get/objects/construction/project-estimate

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": "2",
      • "id": "PJE-01-001",
      • "href": "/objects/construction/project-estimate/2"
      },
    • {
      • "key": "1",
      • "id": "PJE-00-01",
      • "href": "/objects/construction/project-estimate/1"
      }
    ],
  • "ia::meta": {
    • "totalCount": 2,
    • "start": 1,
    • "pageSize": 100,
    • "next": null,
    • "previous": null
    }
}

Create a project estimate

post/objects/construction/project-estimate

Creates a new project estimate. You must specify a unique ID when creating a project estimate unless document sequencing is configured, in which case the ID is auto-generated.

SecurityOAuth2
Request
Request Body schema: application/json
required

Project estimate to create

id
required
string

Unique identifier of the project estimate.

Example: "BTI-Estimate-01"
required
object

Reference to the project that this estimate is for.

key
string

Project key.

Example: "27"
id
string

Project ID.

Example: "BPN-PRJ-01"
description
string

Description of the project estimate.

Example: "Estimation for BTI"
postTo
string
Default: "firstPeriod"

Posting period for the project estimate.

  • firstPeriod - Post the amounts to the period in which the project begin date falls.
  • estimateDate - Post estimate entries to the period that corresponds with the project estimateDate. You can change this date, but you can't enter a date before the project begin date.
  • effectiveDate - Post each estimate line entry to the effective date for that line. Each line might post to different periods due to different effective dates. If you choose this option, enter an effective date for each line entry. Multiple estimate line entries for the same GL account, dimension, and budget period are summarized and posted as a single line to the same budget period.
  • allPeriods - Spread the amounts equally across periods between the project begin and end date.
Enum: "allPeriods" "effectiveDate" "estimateDate" "firstPeriod"
Example: "firstPeriod"
status
string
Default: "active"

The project estimate status.

  • active - For current estimates.
  • inactive - For historical estimates, such as an original customer bid.
  • finalized - Lock the estimate from further changes. You can change a finalized estimate to active status at any time.
Enum: "active" "finalized" "inactive"
Example: "active"
isPrimary
boolean
Default: false

Specifies whether the estimate is primary for the project. During create, the first estimate for a project is set to primary. This value can be changed in an update.

Example: false
isPrimaryForecast
boolean
Default: false

Specifies whether the estimate is the primary forecast for the project. This value can be changed in an update. There can be at most one primary forecast for a project. When this value is set to true in a create or an update, then the 'isPrimaryForecast' value for all other estimates is set to false.

Example: false
isPosted
boolean
Default: false

Specifies whether the estimate is posted to GL budgets. In an update, if this is set to false, then any existing GL budgets for that project estimate will be deleted.

Example: false
estimateDate
string <date>

Date of the project estimate, which must be in a budgetable period.

Example: "2022-06-23"
object

Reference to the budget that the estimate will be posted to. The budget must have postProjectEstimates set to true.

key
string

Key for the budget.

Example: "10"
id
string

Budget ID.

Example: "Root PJ Estimates"
object

Reference to the project estimate type.

key
string

Key of the project estimate type.

Example: "15"
id
string

Project estimate type ID.

Example: "Original"
Array of objects

Array of project estimate lines.

Array
amount
string^(-?(\d+\.?\d*|\d*\.?\d+))?$

Amount for the project estimate line.

Example: "2000.00"
quantity
string

Quantity for the project estimate line.

Example: "10"
unitCost
string <decimal-precision-2>

Unit rate for the project estimate line.

Example: "1000.00"
memo
string

Memo for the project estimate line. Use 2000 or fewer characters.

Example: "service charges"
externalUOM
string

External unit of measure.

Example: "Piece"
workflowType
string
Default: "original"

Workflow type for the project estimate line.

Enum: "approvedChange" "forecast" "original" "other" "pendingChange" "revision"
Example: "original"
isPosted
boolean
Default: false

Set to true to post this line to the budget specified in the project estimate. Set to false to unpost and deletes any existing GL budget lines for this estimate line.

Example: false
effectiveDate
string <date>

Date that the transaction line comes into effect from a GL budget or reporting perspective.

Example: "2023-06-23"
numberOfProductionUnits
integer

Number of production units, which are units that track several inputs of cost (such as for material, labor, equipment).

Example: 200
object
object

Dimensions active on this project estimate line.

object

Supporting documents for this project estimate.

key
string or null

Key for the attachment.

Example: "21"
id
string or null

Unique identifier for the attachment.

Example: "Sales01"
Responses
201

Created

400

Bad Request

Request samples
application/json
{
  • "id": "PE-CB-BTI-003",
  • "description": "PE-CB-BTI-003",
  • "estimateDate": "2024-03-14",
  • "isPrimary": false,
  • "isPrimaryForecast": false,
  • "status": "active",
  • "postTo": "firstPeriod",
  • "budget": {
    • "key": "2"
    },
  • "projectEstimateType": {
    • "key": "7"
    },
  • "project": {
    • "key": "1"
    },
  • "projectEstimateLines": [
    • {
      • "externalUOM": "Hour",
      • "quantity": "10.00",
      • "unitCost": "300.00",
      • "amount": "3000.00",
      • "numberOfProductionUnits": 0,
      • "workflowType": "original",
      • "glAccount": {
        },
      • "dimensions": {
        }
      },
    • {
      • "externalUOM": "Box",
      • "quantity": "10.00",
      • "unitCost": "300.00",
      • "amount": "3000.00",
      • "numberOfProductionUnits": 0,
      • "workflowType": "original",
      • "glAccount": {
        },
      • "dimensions": {
        }
      }
    ]
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "27",
    • "id": "PE-CB-BTI-003",
    • "href": "/objects/construction/project-estimate/27"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Get a project estimate

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

Returns detailed information for a specified project estimate.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the project estimate.

Example: 27
Responses
200

OK

400

Bad Request

Request samples
Response samples
application/json
{
  • "ia::result": {
    • "key": "27",
    • "id": "PE-CB-BTI-003",
    • "description": "PE-CB-BTI-003",
    • "estimateDate": "2024-03-14",
    • "isPrimary": false,
    • "isPrimaryForecast": false,
    • "status": "active",
    • "isPosted": false,
    • "budget": {
      • "key": "2",
      • "id": "Root PJ Estimates",
      • "href": "/objects/general-ledger/budget/2"
      },
    • "postTo": "firstPeriod",
    • "project": {
      • "key": "1",
      • "id": "DIM - BTI",
      • "name": "Dimensions - Berkeley Technology Inc",
      • "startDate": "2000-01-01",
      • "endDate": "2023-12-31",
      • "href": "/objects/projects/project/1"
      },
    • "projectEstimateType": {
      • "key": "7",
      • "id": "Original",
      • "workflowTypes": [
        ],
      • "href": "/objects/construction/project-estimate-type/7"
      },
    • "currency": "USD",
    • "totalEstimateAmount": "6000.00",
    • "location": {
      • "key": "1",
      • "id": "USA",
      • "name": "United States of America"
      },
    • "parentProject": {
      • "key": "2",
      • "id": "DIM",
      • "name": "Dimensions"
      },
    • "customer": {
      • "key": "14",
      • "id": "BTI",
      • "name": "Berkeley Technology Inc",
      • "href": "/objects/accounts-receivable/customer/14"
      },
    • "attachment": {
      • "id": "Doc001"
      },
    • "audit": {
      • "modifiedDateTime": "2023-03-14T06:25:35Z",
      • "createdDateTime": "2023-03-14T06:25:35Z",
      • "modifiedBy": "1",
      • "createdBy": "1"
      },
    • "projectEstimateLines": [
      • {
        },
      • {
        }
      ],
    • "href": "/objects/construction/project-estimate/27"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Update a project estimate

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

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

If the budget reference is change when isPosted is true, the estimate is unposted from the first budget and posted to the new budget.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the project estimate.

Example: 27
Request Body schema: application/json
description
string

Description of the project estimate.

Example: "Estimation for BTI"
postTo
string
Default: "firstPeriod"

Posting period for the project estimate.

  • firstPeriod - Post the amounts to the period in which the project begin date falls.
  • estimateDate - Post estimate entries to the period that corresponds with the project estimateDate. You can change this date, but you can't enter a date before the project begin date.
  • effectiveDate - Post each estimate line entry to the effective date for that line. Each line might post to different periods due to different effective dates. If you choose this option, enter an effective date for each line entry. Multiple estimate line entries for the same GL account, dimension, and budget period are summarized and posted as a single line to the same budget period.
  • allPeriods - Spread the amounts equally across periods between the project begin and end date.
Enum: "allPeriods" "effectiveDate" "estimateDate" "firstPeriod"
Example: "firstPeriod"
status
string
Default: "active"

The project estimate status.

  • active - For current estimates.
  • inactive - For historical estimates, such as an original customer bid.
  • finalized - Lock the estimate from further changes. You can change a finalized estimate to active status at any time.
Enum: "active" "finalized" "inactive"
Example: "active"
isPrimary
boolean
Default: false

Specifies whether the estimate is primary for the project. During create, the first estimate for a project is set to primary. This value can be changed in an update.

Example: false
isPrimaryForecast
boolean
Default: false

Specifies whether the estimate is the primary forecast for the project. This value can be changed in an update. There can be at most one primary forecast for a project. When this value is set to true in a create or an update, then the 'isPrimaryForecast' value for all other estimates is set to false.

Example: false
isPosted
boolean
Default: false

Specifies whether the estimate is posted to GL budgets. In an update, if this is set to false, then any existing GL budgets for that project estimate will be deleted.

Example: false
estimateDate
string <date>

Date of the project estimate, which must be in a budgetable period.

Example: "2022-06-23"
object

Reference to the budget that the estimate will be posted to. The budget must have postProjectEstimates set to true.

key
string

Key for the budget.

Example: "10"
id
string

Budget ID.

Example: "Root PJ Estimates"
object

Reference to the project that this estimate is for.

key
string

Project key.

Example: "27"
id
string

Project ID.

Example: "BPN-PRJ-01"
object

Reference to the project estimate type.

key
string

Key of the project estimate type.

Example: "15"
id
string

Project estimate type ID.

Example: "Original"
Array of objects

Array of project estimate lines.

Array
amount
string^(-?(\d+\.?\d*|\d*\.?\d+))?$

Amount for the project estimate line.

Example: "2000.00"
quantity
string

Quantity for the project estimate line.

Example: "10"
unitCost
string <decimal-precision-2>

Unit rate for the project estimate line.

Example: "1000.00"
memo
string

Memo for the project estimate line. Use 2000 or fewer characters.

Example: "service charges"
externalUOM
string

External unit of measure.

Example: "Piece"
workflowType
string
Default: "original"

Workflow type for the project estimate line.

Enum: "approvedChange" "forecast" "original" "other" "pendingChange" "revision"
Example: "original"
isPosted
boolean
Default: false

Set to true to post this line to the budget specified in the project estimate. Set to false to unpost and deletes any existing GL budget lines for this estimate line.

Example: false
effectiveDate
string <date>

Date that the transaction line comes into effect from a GL budget or reporting perspective.

Example: "2023-06-23"
numberOfProductionUnits
integer

Number of production units, which are units that track several inputs of cost (such as for material, labor, equipment).

Example: 200
object
object

Dimensions active on this project estimate line.

object

Supporting documents for this project estimate.

key
string or null

Key for the attachment.

Example: "21"
id
string or null

Unique identifier for the attachment.

Example: "Sales01"
Responses
200

OK

400

Bad Request

Request samples
application/json
{
  • "description": "Project estimate for BUD BTI- update4",
  • "estimateDate": "2022-06-24",
  • "projectEstimateLines": [
    • {
      • "key": "70",
      • "externalUOM": "Seconds",
      • "quantity": "10.00",
      • "unitCost": "500.00",
      • "amount": "5000.00",
      • "numberOfProductionUnits": 0,
      • "workflowType": "original",
      • "glAccount": {
        },
      • "dimensions": {
        }
      },
    • {
      • "externalUOM": "Seconds",
      • "quantity": "10.00",
      • "unitCost": "600.00",
      • "amount": "6000.00",
      • "numberOfProductionUnits": 0,
      • "workflowType": "original",
      • "glAccount": {
        },
      • "dimensions": {
        }
      }
    ]
}
Response samples
application/json
{
  • "ia::result": {
    • "key": "23",
    • "id": "PE-GL-T001",
    • "href": "/objects/construction/project-estimate/23"
    },
  • "ia::meta": {
    • "totalCount": 1,
    • "totalSuccess": 1,
    • "totalError": 0
    }
}

Delete a project estimate

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

Deletes a project estimate. A primary project estimate cannot be deleted.

SecurityOAuth2
Request
path Parameters
key
required
string

System-assigned key for the project estimate.

Example: 27
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
    }
}