BlueSuite Developers
REST API v1

Installed equipment

Installed equipment in the BlueSuite REST API

Track units installed at customer properties, such as furnaces and water heaters. A property_id is required; the contact is separate and may change while the unit stays in place. Company trucks and tools belong in Company equipment.

auto_reminders_enabled defaults to true. Warranty/replacement dates can therefore schedule customer-facing reminders. Explicitly disable this field if automatic reminders are not wanted. Custom reminders independently select send_customer and send_internal; their defaults are false and true respectively.

The notifications REST endpoints correspond to installed-equipment reminder tools in MCP. Notes record service history. Job links connect the unit with past work; removing a link does not delete the job or equipment. Setting installed_by_job_id on creation also adds that job link.

There are no public update endpoints for installed-equipment notes or reminders. Their supported operations are listed below.

GET /api/v1/installed-equipment

GET /api/v1/installed-equipment

Required scopes: installed_equipment:read.

Query parameters

FieldType / accepted valuesRequiredDetails
pageintegerNoPage number, starting at 1. Default: 1.
per_pageintegerNoRecords per page, from 1 to 100. Default: 25. minimum: 1. maximum: 100.
searchstringNoSearch text. maxLength: 100.
sort_bystringNoSort column. See the supported columns below when listed.
sort_direction"asc", "desc"NoSort direction. Default: "desc".
statusstringNoFilter by status.
contact_idstringNoFilter by contact ID.
property_idstringNoFilter by property ID.

Response

200 with { "success": true, "data": [...], "pagination": { "page": 1, "per_page": 25, "total_pages": 1 } }.

See response conventions and errors.

POST /api/v1/installed-equipment

POST /api/v1/installed-equipment

Required scopes: installed_equipment:write.

JSON body

FieldType / accepted valuesRequiredDetails
namestringNo
property_idintegerYes
contact_idinteger or nullNo
equipment_typestring or nullNoe.g. "Furnace", "Water heater".
makestring or nullNo
modelstring or nullNo
serial_numberstring or nullNo
descriptionstring or nullNo
status"active", "needs_service", "replaced", "removed"NoDefault: "active".
install_datestring or nullNo
warranty_expirationstring or nullNo
warranty_numberstring or nullNo
replacement_datestring or nullNo
auto_reminders_enabledbooleanNoDefault: true.
installed_by_job_idinteger or nullNo
custom_fieldsJSON value or nullNo

Unknown body fields are rejected. Conditional requirements are explained above.

Response

201 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

GET /api/v1/installed-equipment/:id

GET /api/v1/installed-equipment/:id

Required scopes: installed_equipment:read.

Path parameters: id. Use positive integer record IDs from this workspace.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

PUT /api/v1/installed-equipment/:id

PUT /api/v1/installed-equipment/:id

Required scopes: installed_equipment:write.

Path parameters: id. Use positive integer record IDs from this workspace.

JSON body

FieldType / accepted valuesRequiredDetails
namestringNo
property_idintegerNo
contact_idinteger or nullNo
equipment_typestring or nullNoe.g. "Furnace", "Water heater".
makestring or nullNo
modelstring or nullNo
serial_numberstring or nullNo
descriptionstring or nullNo
status"active", "needs_service", "replaced", "removed"NoDefault: "active".
install_datestring or nullNo
warranty_expirationstring or nullNo
warranty_numberstring or nullNo
replacement_datestring or nullNo
auto_reminders_enabledbooleanNoDefault: true.
installed_by_job_idinteger or nullNo
custom_fieldsJSON value or nullNo

Unknown body fields are rejected. Conditional requirements are explained above.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

DELETE /api/v1/installed-equipment/:id

DELETE /api/v1/installed-equipment/:id

Required scopes: installed_equipment:write.

Path parameters: id. Use positive integer record IDs from this workspace.

No request body.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

GET /api/v1/installed-equipment/:id/jobs

GET /api/v1/installed-equipment/:id/jobs

Required scopes: installed_equipment:read.

Path parameters: id. Use positive integer record IDs from this workspace.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

POST /api/v1/installed-equipment/:id/jobs

POST /api/v1/installed-equipment/:id/jobs

Required scopes: installed_equipment:write.

Path parameters: id. Use positive integer record IDs from this workspace.

JSON body

FieldType / accepted valuesRequiredDetails
job_idintegerYes

Unknown body fields are rejected. Conditional requirements are explained above.

Response

201 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

GET /api/v1/installed-equipment/:id/notes

GET /api/v1/installed-equipment/:id/notes

Required scopes: installed_equipment:read.

Path parameters: id. Use positive integer record IDs from this workspace.

Query parameters

FieldType / accepted valuesRequiredDetails
pageintegerNoPage number, starting at 1. Default: 1.
per_pageintegerNoRecords per page, from 1 to 100. Default: 25. minimum: 1. maximum: 100.
searchstringNoSearch text. maxLength: 100.
sort_bystringNoSort column. See the supported columns below when listed.
sort_direction"asc", "desc"NoSort direction. Default: "desc".
typestringNoFilter by type.

Response

200 with { "success": true, "data": [...], "pagination": { "page": 1, "per_page": 25, "total_pages": 1 } }.

See response conventions and errors.

POST /api/v1/installed-equipment/:id/notes

POST /api/v1/installed-equipment/:id/notes

Required scopes: installed_equipment:write.

Path parameters: id. Use positive integer record IDs from this workspace.

JSON body

FieldType / accepted valuesRequiredDetails
titlestringYesminLength: 1.
contentstring or nullNo
type"note", "maintenance", "repair", "inspection"NoDefault: "note".
activity_datestring or string or nullNoWhen the work happened, if not when it was recorded.

Unknown body fields are rejected. Conditional requirements are explained above.

Response

201 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

GET /api/v1/installed-equipment/:id/notifications

GET /api/v1/installed-equipment/:id/notifications

Required scopes: installed_equipment:read.

Path parameters: id. Use positive integer record IDs from this workspace.

Query parameters

FieldType / accepted valuesRequiredDetails
pageintegerNoPage number, starting at 1. Default: 1.
per_pageintegerNoRecords per page, from 1 to 100. Default: 25. minimum: 1. maximum: 100.
searchstringNoSearch text. maxLength: 100.
sort_bystringNoSort column. See the supported columns below when listed.
sort_direction"asc", "desc"NoSort direction. Default: "desc".

Response

200 with { "success": true, "data": [...], "pagination": { "page": 1, "per_page": 25, "total_pages": 1 } }.

See response conventions and errors.

POST /api/v1/installed-equipment/:id/notifications

POST /api/v1/installed-equipment/:id/notifications

Required scopes: installed_equipment:write.

Path parameters: id. Use positive integer record IDs from this workspace.

JSON body

FieldType / accepted valuesRequiredDetails
namestringYesminLength: 1.
subjectstringYesminLength: 1.
messagestringYesminLength: 1.
remind_onstringYesDate the reminder fires (YYYY-MM-DD). Format: date.
reason"warranty", "replacement", "custom"NoDefault: "custom".
send_customerbooleanNoDefault: false.
send_internalbooleanNoDefault: true.

Unknown body fields are rejected. Conditional requirements are explained above.

Response

201 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

DELETE /api/v1/installed-equipment/:id/jobs/:jobId

DELETE /api/v1/installed-equipment/:id/jobs/:jobId

Required scopes: installed_equipment:write.

Path parameters: id, jobId. Use positive integer record IDs from this workspace.

No request body.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

DELETE /api/v1/installed-equipment/:id/notes/:noteId

DELETE /api/v1/installed-equipment/:id/notes/:noteId

Required scopes: installed_equipment:write.

Path parameters: id, noteId. Use positive integer record IDs from this workspace.

No request body.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

DELETE /api/v1/installed-equipment/:id/notifications/:notificationId

DELETE /api/v1/installed-equipment/:id/notifications/:notificationId

Required scopes: installed_equipment:write.

Path parameters: id, notificationId. Use positive integer record IDs from this workspace.

No request body.

Response

200 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

On this page