BlueCollar Projects includes integration APIs that let your other business systems participate directly in BCP workflows. If approvals happen in an external portal, a workflow platform, or a custom application, those systems can approve, reject, and unapprove change orders in BCP programmatically — so your approval process lives wherever your team works, and BCP stays the system of record.
The APIs are NetSuite RESTlets, which means they use NetSuite's standard, secure integration model:
POST with a JSON body to the RESTlet URL, identified by its script and deploy IDs:https://<account-id>.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=<script-id>&deploy=<deploy-id>
status of 200 on success or 500 on failure, and an errors array describing anything that went wrong.Every action performed through these APIs runs the same validation and produces the same downstream effects as the equivalent button in the BCP interface — budgets, contracts, and purchase orders update exactly as if a user had clicked Approve. That consistency is what makes them safe to automate against.
Drives the approval lifecycle of a BlueCollar Change Request (contract change order).
| Script ID | customscript_bc_ch_req_apprvl_restlet |
| Deploy ID | customdeploy_bc_ch_req_apprvl_restlet_d |
| Method | POST |
| Field | Required | Description |
|---|---|---|
ch_req_id |
Yes | Internal ID of the Change Request |
action |
Yes | approve, reject, unapprove, or editApprovedChangeOrder |
override_projections |
No | true to approve even when the change would exceed contract projections |
files_ids |
For editApprovedChangeOrder only |
Comma-separated file internal IDs of the prepared contract-line CSV files |
approve — approves the change request across both its billing side and its budget side. If any part of the approval fails, the API automatically rolls the change request back to its prior state, so it is never left half-approved. Change requests that have already been processed are rejected with a clear message.reject — rejects a pending change request.unapprove — reverses an approved change request, returning it to Pending Approval. The API validates that the change request is in a status that allows unapproval before making any changes.editApprovedChangeOrder — performs an atomic unapprove → update → re-approve cycle in a single call. This is the same operation the BCP interface uses when editing an approved change order; external callers should prefer approve / reject / unapprove, since the update step requires prepared CSV files. If the re-approval step fails, the response states explicitly that the change request is now in Pending Approval and needs manual re-approval — nothing is left in an ambiguous state.POST …restlet.nl?script=customscript_bc_ch_req_apprvl_restlet&deploy=customdeploy_bc_ch_req_apprvl_restlet_d
{
"ch_req_id": "1234",
"action": "approve",
"override_projections": false
}
{
"ch_req_id": "1234",
"action": "approve",
"status": 200,
"errors": []
}
Drives the approval lifecycle of a Subcontract Change Request. This allows subcontractor-facing portals or procurement systems to complete the subcontract change workflow end-to-end — including the purchase order updates that approval triggers — without anyone re-keying decisions into BCP.
| Script ID | customscript_bc_subc_ch_req_appr_rest |
| Deploy ID | customdeploy_bc_subc_ch_req_appr_rest_d |
| Method | POST |
| Field | Required | Description |
|---|---|---|
subc_chreq_id |
Yes | Internal ID of the Subcontract Change Request |
action |
Yes | approve, reject, unapprove, or delete |
approve — approves the subcontract change request and applies its purchase order changes.reject — rejects the subcontract change request.unapprove — reverses an approval, including reverting the purchase order line changes the approval made.delete — deletes the subcontract change request.Each action runs through the same controller the Subcontract Change Request screen uses, so permissions, validations, and side effects match the in-app experience exactly.
POST …restlet.nl?script=customscript_bc_subc_ch_req_appr_rest&deploy=customdeploy_bc_subc_ch_req_appr_rest_d
{
"subc_chreq_id": "5678",
"action": "unapprove"
}
{
"subc_chreq_id": "5678",
"action": "unapprove",
"status": 200,
"errors": [],
"result": { }
}
For the full in-app change order workflows these APIs automate, see Change Order Management, Contract Change Orders, and Subcontract Change Orders.