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.
Assets — list, create, read, update
Manage physical assets tied to a site and account. Reads use project-service GraphQL; creates and updates call fleet-service.
Endpoints
v2 exposes the same routes under the /v2 prefix with the standard { status, message, data } JSON envelope where applicable.
Query parameters (GET /assets)
Create body highlights
- Required:
accountId,siteId,type,manufacturer,model,serialNumber. - Optional:
status,labelIds, dates,description, image file ids,size,expectedLifetime.
PATCH notes
siteIdandaccountIdcannot be changed after creation; PATCH requests that include either field are rejected by request validation with400rather than being silently ignored.- Set
isArchived: trueto archive an asset, orisArchived: falseto unarchive it.
Invoice payments
New: List, get, and create payments on an invoice
You can list payments for an invoice, fetch a single payment by id, and record manual payments. Paths are scoped under the invoice (there is no global /payments resource).
v1 returns a JSON array for list, a single object for get-by-id, and the payment service payload for create (amounts in dollars on reads; create accepts dollars and converts to cents for core).
v2 (/v2/...) uses the same paths with the standard { status, message, data } envelope and dollar amounts on all responses.
Create a payment
Notes
paymentReferenceandnotesare optional.paymentMethodmust be one of:CASH,ACH,CREDIT_CARD,KLARNA,AFFIRM,CHECK.- Core does not expose
GET /payment-records/:id; get-by-id resolves the payment from the invoice’s nested payment records.
