Welcome to the Coperniq API release notes. This section highlights noteworthy changes across endpoints, schemas, and docs.
Recent highlights
- New: Labels —
GET /labels(filter bytype),POST /labels,GET /labels/{labelId}.typeisWORK(work orders) orASSET. v2 mirrors these under/v2with the standard success envelope. - New: Assets —
GET /assets(filter byaccount_id),POST /assets,GET/PATCH /assets/{assetId}(setisArchived: truevia PATCH to archive). v2 mirrors these under/v2with the standard success envelope. - New: Invoice payments —
GET /invoices/{invoiceId}/payments,GET /invoices/{invoiceId}/payments/{paymentId}, andPOST /invoices/{invoiceId}/payments(optionalpaymentReferenceon create). - New: Quotes — full CRUD via
GET/POST /quotes,GET/PATCH/DELETE /quotes/{quoteId},GET /quotes/{quoteId}/pdf,POST /quotes/{quoteId}/send, andGET /opportunities/{opportunityId}/quotes. - New: Work order line items —
PUT /work-orders/{workOrderId}/line-itemsreplaces line items on service work orders (account type).GET /work-orders/{workOrderId}now includeslineItemswhen present. - New: Taxes —
GET /taxeslists company tax rates with pagination and archived filtering. - New: Bills — full CRUD for project bills via
GET/POST /bills,GET/PATCH/DELETE /bills/{billId}, andGET /projects/{projectId}/bills. Supports LINE_ITEMS and PERCENTAGE calculation methods. - Improvement: Nullable fields on
PATCH /projects/{projectId},PATCH /accounts/{accountId}, andPATCH /clients/{clientId}— passnullto clear a field (e.g.description,ownerId,primaryEmail) or any custom property.
Looking for a specific date? See the entries below.
Form template update endpoint
Update a form template
A new endpoint lets you update an existing form template:
PATCH /form-templates/{formTemplateId}— Update a form template’s name, property layout, assignee, collaborators, labels, and due date configuration.
All fields are optional — only provided fields are updated. formLayouts is optional — when provided, it fully replaces all layout groups and their fields; omit it to leave the existing layout untouched. Include existing groups with their id to preserve them, or omit the id for new groups. Groups not included are removed. Array order determines position on the form.
Fields within each group are set via the properties array, where each item specifies a type (TEXT, NUMERIC, DROPDOWN, or FILE) or references an existing project property via projectPropertyKey.
Note: Layout
idvalues (for groups and properties) are not stable — they change after every update. Always re-fetch the template viaGET /form-templates/{formTemplateId}to get current IDs before referencing them in a subsequent update.
