Welcome to the Coperniq API release notes. This section highlights noteworthy changes across endpoints, schemas, and docs.

Recent highlights

  • New: Labels — GET /labels (filter by type), POST /labels, GET /labels/{labelId}. type is WORK (work orders) or ASSET. v2 mirrors these under /v2 with the standard success envelope.
  • New: Assets — GET /assets (filter by account_id), POST /assets, GET/PATCH /assets/{assetId} (set isArchived: true via PATCH to archive). v2 mirrors these under /v2 with the standard success envelope.
  • New: Invoice payments — GET /invoices/{invoiceId}/payments, GET /invoices/{invoiceId}/payments/{paymentId}, and POST /invoices/{invoiceId}/payments (optional paymentReference on create).
  • New: Quotes — full CRUD via GET/POST /quotes, GET/PATCH/DELETE /quotes/{quoteId}, GET /quotes/{quoteId}/pdf, POST /quotes/{quoteId}/send, and GET /opportunities/{opportunityId}/quotes.
  • New: Work order line items — PUT /work-orders/{workOrderId}/line-items replaces line items on service work orders (account type). GET /work-orders/{workOrderId} now includes lineItems when present.
  • New: Taxes — GET /taxes lists company tax rates with pagination and archived filtering.
  • New: Bills — full CRUD for project bills via GET/POST /bills, GET/PATCH/DELETE /bills/{billId}, and GET /projects/{projectId}/bills. Supports LINE_ITEMS and PERCENTAGE calculation methods.
  • Improvement: Nullable fields on PATCH /projects/{projectId}, PATCH /accounts/{accountId}, and PATCH /clients/{clientId} — pass null to clear a field (e.g. description, ownerId, primaryEmail) or any custom property.

Looking for a specific date? See the entries below.

Summary

Today’s release adds request/client work order endpoints, consolidates visit schemas, and completes the comments API across projects/requests/clients. We also improved the docs’ structure and fixed operation IDs for navigation.

What’s new?

  • Request Work Orders: List, create, and update request work orders.
  • Client Work Orders: List and create client work orders.
  • Comments API: List/create/update/delete comments for projects, requests, and clients.

Changes

  • Work Orders
    • POST /projects/{projectId}/work-orders requires templateId and accepts optional phaseInstanceId (phase must be started when provided).
    • POST /requests/{requestId}/work-orders requires templateId, optional phaseInstanceId (phase doesn’t need to be started).
    • POST /clients/{clientId}/work-orders requires templateId (no phases).
    • GET /requests/{requestId}/work-orders lists request work orders.
    • PATCH /requests/{requestId}/work-orders/{workOrderId} updates a request work order.
  • Comments
    • Projects: GET /projects/{projectId}/comments, POST /projects/{projectId}/comments, PATCH /projects/{projectId}/comment/{commentId}, DELETE /projects/{projectId}/comment/{commentId}.
    • Requests: GET /requests/{requestId}/comments, POST /requests/{requestId}/comments, PATCH /requests/{requestId}/comment/{commentId}, DELETE /requests/{requestId}/comment/{commentId}.
    • Clients: GET /clients/{clientId}/comments, POST /clients/{clientId}/comments, PATCH /clients/{clientId}/comment/{commentId}, DELETE /clients/{clientId}/comment/{commentId}.
  • Projects
    • GET /projects/{projectId} includes phaseInstances array (phase data).
  • Requests
    • GET /requests/{requestId} includes phaseInstances array (phase data).
  • Catalog Items
    • Cleaned up examples and aligned schemas with public shape.

Notes

  • For project work order creation, when phaseInstanceId is provided, the phase must already be started.
  • Request work order creation does not require a started phase.