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

Recent highlights

  • New: AHJs — GET /ahjs (search, filter, and lat+lng geo lookup), GET /ahjs/{id}, and PATCH /ahjs/{id} to update custom property values. v2 mirrors these under /v2 with the standard success envelope.
  • Updated: GET /properties — now documents the ahj record type (custom AHJ properties only) and adds an isCustom boolean to every property to distinguish custom columns from built-in standard ones.
  • New: Sections — line items on projects, invoices, and bills can now be grouped into named sections (matching quotes and work orders); read responses expose sectionName per line item.
  • New: Vendors — full CRUD via GET/POST /vendors, GET/PATCH/DELETE /vendors/{vendorId}, GET /vendors/search, and many-to-many project linking via POST/DELETE /projects/{projectId}/vendors/{vendorId}. Vendor-specific fields: vendorType (enum), website, and projectIds.
  • 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.

Looking for a specific date? See the entries below.

Today’s release focuses on improving Work Orders creation, tightening schemas, and cleaning up the docs.

What’s new?

  • Create Work Order: You can now create a work order under a specific phase instance using templateId and phaseInstanceId. The response includes id, createdAt, updatedAt, description, position, phaseInstanceId, projectId, and createdById.
  • Full CRUD on Catalog Items: You can now, get, create, update, and delete catalog items in your company settings.
  • Form Retrieval: You can now get forms on a project and get form details.
  • Project Phase Instances: Getting a project by ID now includes the phase instances for that project.

Changes

  • Work Orders
    • POST /projects/{projectId}/work-orders requires templateId and phaseInstanceId.
  • Catalogs & Catalog Items
    • GET /catalog-items returns catalogs with their catalog items.
    • GET /catalog-items/{catalogItemId} returns a catalog item.
    • POST /catalog-items creates a catalog item.
    • PATCH /catalog-items/{catalogItemId} updates a catalog item.
  • Forms
    • GET /projects/{projectId}/forms returns a list of the forms on a project.
    • GET /forms/{formId} returns the form details, including field values.
  • Projects
    • GET /projects/{projectId} includes an array of phaseInstances.

Notes

  • The provided phaseInstanceId must belong to the project where the work order is created.