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.

AHJs and an isCustom flag on properties

New: AHJ (Authorities Having Jurisdiction) endpoints

Look up jurisdictions and manage their custom property values through the public API.

MethodPathDescription
GET/ahjsList AHJs (pagination, name/state code search, filter by state/type/country, or geo lookup via lat+lng)
GET/ahjs/{id}Get an AHJ by ID, including catalog metadata and custom field values
PATCH/ahjs/{id}Update custom property values on an AHJ

v2 mirrors these under the /v2 prefix with the standard { status, message, data } envelope.

Notes

  • AHJs are seeded globally from the US Census TIGER catalog, plus per-company private records. Only active jurisdictions are returned.
  • Pass lat+lng together to return every AHJ whose boundary covers the point (e.g. city, county, and state), ordered most-specific-first. Name/state/type filters are ignored in geo mode.
  • Built-in AHJ fields (shown under Community Data in the UI) are read-only. Only custom fields can be updated via PATCH /ahjs/{id}; the body custom map is keyed by property keyName — fetch the available keys via GET /properties?record_type=ahj. Pass null to clear a value.

GET /propertiesahj record type and isCustom flag

  • The ahj record type is now documented for GET /properties (?record_type=ahj). It was already returned in the default response and is now an accepted filter value.
  • For the ahj scope, only customer-defined custom properties are returned. Standard built-in AHJ fields are no longer listed here — they are not updatable via the public API and are exposed directly on the AHJ object instead.
  • Every property in the response now includes an isCustom boolean: true for customer-defined custom columns, false for built-in standard properties. Items in the ahj array are always isCustom: true.