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

Recent highlights

  • New: Object naming aligned with Coperniq UI — clients are now accounts, requests are now opportunities, and comments are now notes.
  • New: Retrieve archived records by passing include_archived=true on any GET list or get-by-ID endpoint for projects, opportunities, accounts, and workflows.
  • New: Form template endpoints — GET /form-templates and GET /form-templates/{formTemplateId} — let you retrieve workflow templates and their structure.
  • New: PATCH /form-templates/{formTemplateId} — update a form template’s name, layout, assignee, collaborators, labels, and due date configuration.
  • New: Streamed file uploads for projects and opportunities with binary-safe handling

Documentation updates

  • Clarified file upload usage, binary limits, and recommended large-file approach
  • Documented full TradeGroup, ProductCategory, and ServiceCategory enums for catalog items and wired them into the public schemas.

Looking for a specific date? See the entries below.

Projects search endpoint

What’s new?

  • Added GET /projects/search to query projects using up to two filters joined by logic (and/or).
  • Supports standard fields (e.g., status, title, city, type, numeric/datetime fields) and custom properties by key name.
  • Operators: eq, neq, gt, gte, lt, lte, contains, in, nin, between, exists.
  • Pagination and sorting supported via page_size, page, and order_by.

Parameters

  • prop1, op1, value1 (required)
  • prop2, op2, value2 (optional)
  • logic: and | or (default and)
  • page_size, page, order_by

Value formats

  • in/nin lists:
    • Plain CSV: value1=ACTIVE,ON_HOLD
    • Quoted CSV (values with commas): value1="Last, First",Other
    • JSON array: value1=["Last, First","Other"]
  • between ranges:
    • Dates: value1=2025-01-01,2025-12-31
    • Numbers: value1=10000,50000

Examples

  • Status equals ACTIVE:
    • GET /v1/projects/search?prop1=status&op1=eq&value1=ACTIVE
  • Title contains “Solar”:
    • GET /v1/projects/search?prop1=name&op1=contains&value1=Solar
  • Status IN (ACTIVE, ON_HOLD) AND city = Austin:
    • GET /v1/projects/search?prop1=status&op1=in&value1=ACTIVE,ON_HOLD&logic=and&prop2=city&op2=eq&value2=Austin
  • Custom multiselect includes any of [“1”, “Option, with a comma”]:
    • GET /v1/projects/search?prop1=custom_multiselect&op1=in&value1=["1","Option, with a comma"]
  • Updated within 2025:
    • GET /v1/projects/search?prop1=updatedAt&op1=between&value1=2025-01-01,2025-12-31