BlueSuite Developers
REST API v1

Tags

Tags in the BlueSuite REST API

Tags belong to one entity type: contact, request, quote, job, or invoice. The same label on two entity types represents separate tags. A tag's type cannot be changed by the update endpoint.

GET /tags requires taggable_type. Assignment reads require that type plus taggable_id. Assignment writes replace the entity's full tag set; an empty tag_ids array clears it. To add a tag while keeping existing ones, read the current set and include all desired IDs in the update.

GET and PUT /tags/assignments return an array in data, without pagination. Contact/request/quote/job/invoice lists also accept comma-separated tag_ids, matching any of the selected tags.

GET /api/v1/tags

GET /api/v1/tags

Required scopes: tags: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".
taggable_typestringYesOne of request, quote, job, invoice, contact. Required.

Response

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

See response conventions and errors.

POST /api/v1/tags

POST /api/v1/tags

Required scopes: tags:write.

JSON body

FieldType / accepted valuesRequiredDetails
namestringYesminLength: 1.
taggable_type"request", "quote", "job", "invoice", "contact"Yes
descriptionstringNoDefault: "".
colorstring 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/tags/:id

GET /api/v1/tags/:id

Required scopes: tags: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/tags/:id

PUT /api/v1/tags/:id

Required scopes: tags:write.

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

JSON body

FieldType / accepted valuesRequiredDetails
namestringNominLength: 1.
descriptionstringNoDefault: "".
colorstring 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/tags/:id

DELETE /api/v1/tags/:id

Required scopes: tags: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/tags/assignments

GET /api/v1/tags/assignments

Required scopes: tags:read.

Query parameters

FieldType / accepted valuesRequiredDetails
taggable_typestringYesOne of request, quote, job, invoice, contact. Required.
taggable_idstringYesPositive integer ID of the tagged record. Required.

Response

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

See response conventions and errors.

PUT /api/v1/tags/assignments

PUT /api/v1/tags/assignments

Required scopes: tags:write.

JSON body

FieldType / accepted valuesRequiredDetails
taggable_type"request", "quote", "job", "invoice", "contact"Yes
taggable_idintegerYes
tag_idsarray of integerYes

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.

On this page