Coperniq workOrders API
The workOrders API from Coperniq — 9 operation(s) for workorders.
The workOrders API from Coperniq — 9 operation(s) for workorders.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/coperniq-workorders-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Key accounts Work Orders API
version: 1.0.0
servers:
- url: https://api.coperniq.io/v1
description: Production server
tags:
- name: workOrders
paths:
/work-orders:
get:
operationId: list-work-orders
summary: List Work Orders
description: 'Retrieve a paginated list of work orders across all projects.
Supports:
- Pagination (`page_size`, `page`)
- Date filtering (`updated_after`, `updated_before`)
- Sorting (`order_by`)
'
tags:
- workOrders
parameters:
- name: page_size
in: query
description: Number of items per page (max 100)
required: false
schema:
type: integer
default: 20
- name: page
in: query
description: Page number (1-based)
required: false
schema:
type: integer
default: 1
- name: updated_after
in: query
description: Filter items updated after this timestamp (ISO 8601)
required: false
schema:
type: string
format: date-time
- name: updated_before
in: query
description: Filter items updated before this timestamp (ISO 8601)
required: false
schema:
type: string
format: date-time
- name: order_by
in: query
description: Sort order for results
required: false
schema:
$ref: '#/components/schemas/WorkOrdersGetParametersOrderBy'
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of work orders
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WorkOrder'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ListWorkOrdersRequestUnauthorizedError'
/projects/{projectId}/work-orders:
get:
operationId: list-project-work-orders
summary: List Project Work Orders
description: 'Retrieve work orders for a specific project.
Supports:
- Pagination (`page_size`, `page`)
- Date filtering (`updated_after`, `updated_before`)
- Sorting (`order_by`)
'
tags:
- workOrders
parameters:
- name: projectId
in: path
description: Project identifier
required: true
schema:
type: integer
- name: page_size
in: query
description: Number of items per page (max 100)
required: false
schema:
type: integer
default: 20
- name: page
in: query
description: Page number (1-based)
required: false
schema:
type: integer
default: 1
- name: updated_after
in: query
description: Filter items updated after this timestamp (ISO 8601)
required: false
schema:
type: string
format: date-time
- name: updated_before
in: query
description: Filter items updated before this timestamp (ISO 8601)
required: false
schema:
type: string
format: date-time
- name: order_by
in: query
description: Sort order for results
required: false
schema:
$ref: '#/components/schemas/ProjectsProjectIdWorkOrdersGetParametersOrderBy'
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of work orders
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WorkOrder'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ListProjectWorkOrdersRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ListProjectWorkOrdersRequestNotFoundError'
post:
operationId: create-project-work-order
summary: Create Project Work Order
description: 'Create a new work order in a project.
Notes:
- `templateId` is required.
- `phaseInstanceId` is optional; if provided the referenced phase must be started (active) for creation to succeed.
'
tags:
- workOrders
parameters:
- name: projectId
in: path
description: Project identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'201':
description: Work order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrderCreateResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectWorkOrderRequestNotFoundError'
requestBody:
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
description: Template to use for the work order
phaseInstanceId:
type: integer
description: Optional. Phase instance id where the work order will be created (phase must be started). You can gather phase instance ids from the get project endpoint.
required:
- templateId
/opportunities/{opportunityId}/work-orders:
get:
operationId: list-opportunity-work-orders
summary: List Opportunity Work Orders
description: 'Retrieve work orders for a specific opportunity
**Note:** The `/requests` path is an alias for `/opportunities` and will continue to work until users are individually notified and migrated.
'
tags:
- workOrders
parameters:
- name: opportunityId
in: path
description: Opportunity identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of work orders
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WorkOrder'
post:
operationId: create-opportunity-work-order
summary: Create Opportunity Work Order
description: 'Create a new work order for an opportunity.
Notes:
- `templateId` is required.
- `phaseInstanceId` is optional. The phase does not need to be started to create an opportunity work order.
**Note:** The `/requests` path is an alias for `/opportunities` and will continue to work until users are individually notified and migrated.
'
tags:
- workOrders
parameters:
- name: opportunityId
in: path
description: Opportunity identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'201':
description: Work order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrderCreateResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOpportunityWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOpportunityWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOpportunityWorkOrderRequestNotFoundError'
requestBody:
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
description: The ID of the work order template to use
phaseInstanceId:
type: integer
description: Optional. The ID of the phase instance to use. If provided, the phase does not need to be started to create an opportunity work order. You can gather phase instance ids from the get opportunity endpoint.
required:
- templateId
/accounts/{accountId}/work-orders:
get:
operationId: list-account-work-orders
summary: List Account Work Orders
description: 'Retrieve work orders for a specific account
**Note:** The `/clients` path is an alias for `/accounts` and will continue to work until users are individually notified and migrated.
'
tags:
- workOrders
parameters:
- name: accountId
in: path
description: Account identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of work orders
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WorkOrder'
post:
operationId: create-account-work-order
summary: Create Account Work Order
description: 'Create a new work order for an account (no phases)
**Note:** The `/clients` path is an alias for `/accounts` and will continue to work until users are individually notified and migrated.
'
tags:
- workOrders
parameters:
- name: accountId
in: path
description: Account identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'201':
description: Work order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrderCreateResponse'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccountWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccountWorkOrderRequestUnauthorizedError'
requestBody:
content:
application/json:
schema:
type: object
properties:
templateId:
type: integer
required:
- templateId
/work-orders/{workOrderId}:
get:
operationId: get-work-order
summary: Get Work Order
description: 'Retrieve a specific work order by ID.
The `lineItems` property is returned **only** for service work orders on an **account** (parent project type `ACCOUNT`), and **only** when at least one line item exists. Otherwise the field is omitted from the JSON object.
'
tags:
- workOrders
parameters:
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Work order details
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrder'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/GetWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/GetWorkOrderRequestNotFoundError'
/work-orders/templates:
get:
operationId: list-work-order-templates
summary: List Work Order Templates
description: Retrieve available work order templates. Returns all templates (not paginated).
tags:
- workOrders
parameters:
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: List of work order templates
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WorkOrderTemplate'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ListWorkOrderTemplatesRequestUnauthorizedError'
/projects/{projectId}/work-orders/{workOrderId}:
patch:
operationId: update-project-work-order
summary: Update Project Work Order
description: "Update a project's work order. Supports partial updates.\n\nUpdatable fields:\n- title, description, priority\n- startDate, endDate, startDateAllDay, endDateAllDay\n- status (label string)\n- assigneeId\n- visits: Only applicable on field work orders. When provided, the `visits` array REPLACES the full set of visits for the work order. Include all existing visits you wish to keep or update (with their `id`), and include new visits without an `id`. Any existing visit not included in the request will be removed. Visit booleans default to false when omitted.\n- checklist: Update the checklist for the work order.\n When this field is provided, the `checklist` array REPLACES the full set of checklist items on the work order.\n - Include every existing item you want to keep or modify (identified by `id`). \n - Any existing item NOT included in this array will be removed.\n - Each item MUST include an `id`. Items without an `id` are ignored (checklist item creation is not supported).\n"
tags:
- workOrders
parameters:
- name: projectId
in: path
description: Project identifier
required: true
schema:
type: integer
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Work order updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrder'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectWorkOrderRequestNotFoundError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrderUpdate'
delete:
operationId: delete-project-work-order
summary: Delete Project Work Order
description: Delete a specific work order from a project
tags:
- workOrders
parameters:
- name: projectId
in: path
description: Project identifier
required: true
schema:
type: integer
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Invalid request (missing or invalid parameters)
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteProjectWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteProjectWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteProjectWorkOrderRequestNotFoundError'
/opportunities/{opportunityId}/work-orders/{workOrderId}:
patch:
operationId: update-opportunity-work-order
summary: Update Opportunity Work Order
description: "Update an opportunity's work order. Supports partial updates.\n\n**Note:** The `/requests` path is an alias for `/opportunities` and will continue to work until users are individually notified and migrated.\n\nUpdatable fields:\n- title, description, priority\n- startDate, endDate, startDateAllDay, endDateAllDay\n- status (label string)\n- assigneeId\n- visits: Only applicable on field work orders. When provided, the `visits` array REPLACES the full set of visits for the work order. Include all existing visits you wish to keep or update (with their `id`), and include new visits without an `id`. Any existing visit not included in the request will be removed. Visit booleans default to false when omitted.\n- checklist: Update the checklist for the work order.\n When this field is provided, the `checklist` array REPLACES the full set of checklist items on the work order.\n - Include every existing item you want to keep or modify (identified by `id`). \n - Any existing item NOT included in this array will be removed.\n - Each item MUST include an `id`. Items without an `id` are ignored (checklist item creation is not supported).\n"
tags:
- workOrders
parameters:
- name: opportunityId
in: path
description: Opportunity identifier
required: true
schema:
type: integer
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Work order updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrder'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOpportunityWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOpportunityWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOpportunityWorkOrderRequestNotFoundError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrderUpdate'
delete:
operationId: delete-opportunity-work-order
summary: Delete Opportunity Work Order
description: 'Delete an opportunity''s work order by ID
**Note:** The `/requests` path is an alias for `/opportunities` and will continue to work until users are individually notified and migrated.
'
tags:
- workOrders
parameters:
- name: opportunityId
in: path
description: Opportunity identifier
required: true
schema:
type: integer
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteOpportunityWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteOpportunityWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteOpportunityWorkOrderRequestNotFoundError'
/accounts/{accountId}/work-orders/{workOrderId}:
patch:
operationId: update-account-work-order
summary: Update Account Work Order
description: "Update an account's work order. Supports partial updates.\n\n**Note:** The `/clients` path is an alias for `/accounts` and will continue to work until users are individually notified and migrated.\n\nUpdatable fields:\n- title, description, priority\n- startDate, endDate, startDateAllDay, endDateAllDay\n- status (label string)\n- assigneeId\n- visits: Only applicable on field work orders. When provided, the `visits` array REPLACES the full set of visits for the work order. Include all existing visits you wish to keep or update (with their `id`), and include new visits without an `id`. Any existing visit not included in the request will be removed. Visit booleans default to false when omitted.\n- checklist: Update the checklist for the work order.\n When this field is provided, the `checklist` array REPLACES the full set of checklist items on the work order.\n - Include every existing item you want to keep or modify (identified by `id`). \n - Any existing item NOT included in this array will be removed.\n - Each item MUST include an `id`. Items without an `id` are ignored (checklist item creation is not supported).\n\n**Line items** are not updated here. For account (service) work orders, replace quote line items with **`PUT /work-orders/{workOrderId}/line-items`** (see **Line Items** in this reference).\n"
tags:
- workOrders
parameters:
- name: accountId
in: path
description: Account identifier
required: true
schema:
type: integer
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Work order updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrder'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAccountWorkOrderRequestNotFoundError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WorkOrderUpdate'
delete:
operationId: delete-account-work-order
summary: Delete Account Work Order
description: 'Delete a specific work order for an account
**Note:** The `/clients` path is an alias for `/accounts` and will continue to work until users are individually notified and migrated.
'
tags:
- workOrders
parameters:
- name: accountId
in: path
description: Account identifier
required: true
schema:
type: integer
- name: workOrderId
in: path
description: Work order identifier
required: true
schema:
type: integer
- name: x-api-key
in: header
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteAccountWorkOrderRequestBadRequestError'
'401':
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteAccountWorkOrderRequestUnauthorizedError'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteAccountWorkOrderRequestNotFoundError'
components:
schemas:
ListProjectWorkOrdersRequestUnauthorizedError:
type: object
properties:
message:
type: string
code:
$ref: '#/components/schemas/ProjectsProjectIdWorkOrdersGetResponsesContentApplicationJsonSchemaCode'
title: ListProjectWorkOrdersRequestUnauthorizedError
CreateProjectWorkOrderRequestBadRequestError:
type: object
properties:
message:
type: string
code:
$ref: '#/components/schemas/ProjectsProjectIdWorkOrdersPostResponsesContentApplicationJsonSchemaCode'
field:
type: string
description: Field that caused the validation error (if applicable)
title: CreateProjectWorkOrderRequestBadRequestError
WorkOrderLabelsItems:
type: object
properties:
label:
$ref: '#/components/schemas/WorkOrderLabelsItemsLabel'
title: WorkOrderLabelsItems
DeleteAccountWorkOrderRequestUnauthorizedError:
type: object
properties:
message:
type: string
code:
$ref: '#/components/schemas/AccountsAccountIdWorkOrdersWorkOrderIdDeleteResponsesContentApplicationJsonSchemaCode'
title: DeleteAccountWorkOrderRequestUnauthorizedError
CatalogCategoryCode:
oneOf:
- $ref: '#/components/schemas/ProductCategory'
- $ref: '#/components/schemas/ServiceCategory'
description: 'Catalog item category code.
Must be:
- one of `ProductCategory` when `type` is `PRODUCT`, or
- one of `ServiceCategory` when `type` is `SERVICE`.
'
title: CatalogCategoryCode
WorkOrderVisits:
type: object
properties:
visits:
type: array
items:
$ref: '#/components/schemas/Visit'
description: List of visits
description: Site visits associated with the work order (legacy shape)
title: WorkOrderVisits
ProjectsProjectIdWorkOrdersGetResponsesContentApplicationJsonSchemaCode:
type: string
enum:
- NOT_FOUND
title: ProjectsProjectIdWorkOrdersGetResponsesContentApplicationJsonSchemaCode
GetWorkOrderRequestUnauthorizedError:
type: object
properties:
message:
type: string
code:
$ref: '#/components/schemas/WorkOrdersWorkOrderIdGetResponsesContentApplicationJsonSchemaCode'
title: GetWorkOrderRequestUnauthorizedError
WorkOrderFileRequestItemType:
type: string
enum:
- FILE_REQUEST
title: WorkOrderFileRequestItemType
DeleteProjectWorkOrderRequestBadRequestError:
type: object
properties:
message:
type: string
code:
type: string
title: DeleteProjectWorkOrderRequestBadRequestError
ProductCategory:
type: string
enum:
- BATTERY_SYSTEM
- BATTERY_MANAGEMENT_SYSTEM
- CHARGING_GATEWAY
- COMBINER_BOX
- EV_CHARGER
- LOAD_CENTER
- MICROINVERTER
- MOUNTING
- POWER_OPTIMIZER
- PRODUCTION_METER
- PV_INVERTER
- PV_MODULE
- RACKING
- RAPID_SHUTDOWN_DEVICE
- TRACKER
- WEATHER_STATION
- AIR_CONDITIONER
- AIR_HANDLING_UNIT
- BOILER
- CHILLER
- COOLING_TOWER
- FAN
- HEAT_EXCHANGER
- HEAT_PUMP
- MAKE_UP_AIR_UNIT
- PUMP
- ROOFTOP_UNIT
- THERMOSTAT
- VARIABLE_FREQUENCY_DRIVE
- AUTOMATIC_TRANSFER_SWITCH
- BREAKER
- DISCONNECT_SWITCH
- ELECTRIC_METER
- GENERATOR
- LIGHTING_PANEL
- PANELBOARD
- SWITCHGEAR
- TRANSFORMER
- UNINTERRUPTIBLE_POWER_SUPPLY
- WIRE
- BACKFLOW_PREVENTER
- BOOSTER_PUMP
- GREASE_INTERCEPTOR
- STORAGE_TANK
- SUMP_PUMP
- VALVE
- WATER_FILTRATION_SYSTEM
- WATER_HEATER
- WATER_SOFTENER
- ACCESS_CONTROLLER
- AUTOMATION_CONTROLLER
- CAMERA
- CARD_READER
- DOOR_STRIKE
- MAGLOCK
- NETWORK_SWITCH
- NETWORK_VIDEO_RECORDER
- SENSOR
- WIRELESS_ACCESS_POINT
- ROOF_COVERING
- ROOF_UNDERLAYMENT
- ROOF_MEMBRANE
- ROOF_FLASHING
- ROOF_VENT
- WALL_CLADDING
- WALL_TRIM
- WEATHER_BARRIER
- WINDOW
- EXTERIOR_DOOR
- SKYLIGHT
- OPENING_FLASHING
- GUTTER
- DOWNSPOUT
- INSULATION
- SEALANT
- SHEATHING
- OTHER
description: Product catalog category.
title: ProductCategory
UserSummary:
type: object
properties:
id:
type: integer
firstName:
type:
- string
- 'null'
lastName:
type:
- string
- 'null'
email:
type:
- string
- 'null'
format: email
avatarUrl:
type:
- string
- 'null'
description: Minimal user representation used in responses
title: UserSummary
DeleteOpportunityWorkOrderRequestBadRequestError:
type: object
properties:
message:
type: string
code:
$ref: '#/components/schemas/OpportunitiesOpportunityIdWorkOrdersWorkOrderIdDeleteResponsesContentApplicationJsonSchemaCode'
field:
type: string
description: Field that caused the validation error (if applicable)
title: DeleteOpportunityWorkOrderRequestBadRequestErr
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/coperniq/refs/heads/main/openapi/coperniq-workorders-api-openapi.yml