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.

Catalog items: new categories & trade groups

What’s new?

  • Catalog items are now backed by typed categories and trade groups:
    • category uses Product/Service categories (e.g., PV_MODULE, BATTERY_SYSTEM, INSTALLATION, MAINTENANCE).
    • tradeGroup is an enum (ENERGY, MECHANICAL, ELECTRICAL, PLUMBING, LOW_VOLTAGE, ENVELOPE, OTHER).
  • The GET /catalog-items endpoint now returns a flat list of catalog items instead of nested catalogs.
  • POST /catalog-items and PATCH /catalog-items/{catalogItemId} validate payloads against the new category + tradeGroup rules.

Impact

  • Generated docs show complete dropdowns for tradeGroup and category, making catalog item creation and updates easier and safer.