Click Maint API (v1)

Download OpenAPI specification:

Getting Started

Welcome to the Click Maint API! The API allows you to programmatically work with your Click Maint data — including Assets, Locations, Parts, Work Orders, and more. Use it to integrate Click Maint with your internal tools, automate workflows, or synchronize data with external systems.

For support, contact support@clickmaint.com

Creating an API Key

  1. Log in to your Click Maint account as an Admin
  2. Go to Admin Settings > API Keys
  3. Click "+ API Key"
  4. Give the key a descriptive name
  5. Copy and securely store your key (it will only be shown once)

You will use this key to authenticate API requests.

Authentication

All API requests require authentication using an API key.

Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Entity ID

Most API requests also require an Entity ID, which identifies the entity (location/business unit) that the request applies to. The Entity ID is specified in the X-Entity-Id header.

To get the Entity ID, you must first make a call to the GET /entities API endpoint.

X-Entity-Id: YOUR_ENTITY_ID

Rate Limiting

API requests are limited to:

  • 1000 requests every 5 minutes per IP

Rate limit information is included in response headers:

  • X-RateLimit-Limit: Maximum requests allowed
  • X-RateLimit-Remaining: Requests remaining in current window
  • X-RateLimit-Reset: Unix timestamp when the limit resets
  • retry-after: Amount of seconds to wait until limit resets

Make Your First Request

Once you have your API Key and Entity ID, you can make your first request. Replace the .com with .ca if your account is in our Canadian region.

curl -X GET   "https://app.clickmaint.com/api/v1/assets"   -H "Authorization: Bearer <your-api-key>"   -H "X-Entity-Id: <your-entity-id>"   -H "Accept: application/json"

A successful response confirms your API Key and Entity ID are configured correctly.


Assets

Create new asset

Authorizations:
bearer_auth
header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Asset to create

required
object

Responses

Request samples

Content type
application/json
{
  • "asset": {
    • "name": "Air Purifier",
    • "asset_code": "AST-001",
    • "description": "Machine used to purify the air in a shop by removing particles, allergens, and contaminants",
    • "model": "Dyson Pure Cool Link Tower",
    • "manufacturer": "Dyson",
    • "serial_number": "H8tG5nWp",
    • "purchase_date": "2023-08-24",
    • "warranty_exp_date": "2026-08-24",
    • "warranty_expiration_notification": 30,
    • "life_expectancy": 36,
    • "purchase_cost": 549.99,
    • "replacement_cost": 599.99,
    • "salvage_value": 150,
    • "location_id": 12,
    • "parent_id": 44,
    • "asset_types_ids": [
      ],
    • "technicians_ids": [
      ],
    • "parts_ids": [
      ],
    • "vendors_ids": [
      ],
    • "qr_code_attributes": {
      },
    • "urls_attributes": []
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 102,
    • "name": "Air Purifier",
    • "description": "Machine used to purify the air in a shop by removing particles, allergens, and contaminants",
    • "model": "Dyson Pure Cool Link Tower",
    • "manufacturer": "Dyson",
    • "serial_number": "H8tG5nWp",
    • "warranty_expiration_notification": 30,
    • "life_expectancy": 36,
    • "root_id": 44,
    • "asset_code": "AHU-BLD1-01-001",
    • "status": "online",
    • "purchase_cost": 549.99,
    • "replacement_cost": 599.99,
    • "salvage_value": 150,
    • "parent": {
      },
    • "location": {
      },
    • "technicians": [
      ],
    • "asset_types": [
      ],
    • "parts": [
      ],
    • "urls": [],
    • "vendors": [
      ],
    • "has_children": false,
    • "purchase_date": "2023-08-24",
    • "warranty_exp_date": "2026-08-24",
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

List assets

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[name_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get asset

Authorizations:
bearer_auth
path Parameters
id
required
integer

Asset ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 102,
    • "name": "Air Purifier",
    • "description": "Machine used to purify the air in a shop by removing particles, allergens, and contaminants",
    • "model": "Dyson Pure Cool Link Tower",
    • "manufacturer": "Dyson",
    • "serial_number": "H8tG5nWp",
    • "warranty_expiration_notification": 30,
    • "life_expectancy": 36,
    • "root_id": 44,
    • "asset_code": "AHU-BLD1-01-001",
    • "status": "online",
    • "purchase_cost": 549.99,
    • "replacement_cost": 599.99,
    • "salvage_value": 150,
    • "parent": {
      },
    • "location": {
      },
    • "technicians": [
      ],
    • "asset_types": [
      ],
    • "parts": [
      ],
    • "urls": [],
    • "vendors": [
      ],
    • "has_children": false,
    • "purchase_date": "2023-08-24",
    • "warranty_exp_date": "2026-08-24",
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update asset

Authorizations:
bearer_auth
path Parameters
id
required
integer

Asset ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Fields to update on Asset

required
object

Responses

Request samples

Content type
application/json
{
  • "asset": {
    • "name": "Air Purifier",
    • "asset_code": "AST-001",
    • "description": "Machine used to purify the air in a shop by removing particles, allergens, and contaminants",
    • "model": "Dyson Pure Cool Link Tower",
    • "manufacturer": "Dyson",
    • "serial_number": "H8tG5nWp",
    • "purchase_date": "2023-08-24",
    • "warranty_exp_date": "2026-08-24",
    • "warranty_expiration_notification": 30,
    • "life_expectancy": 36,
    • "purchase_cost": 549.99,
    • "replacement_cost": 599.99,
    • "salvage_value": 150,
    • "location_id": 12,
    • "parent_id": 44,
    • "asset_types_ids": [
      ],
    • "technicians_ids": [
      ],
    • "parts_ids": [
      ],
    • "vendors_ids": [
      ],
    • "qr_code_attributes": {
      },
    • "urls_attributes": []
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 102,
    • "name": "Air Purifier",
    • "description": "Machine used to purify the air in a shop by removing particles, allergens, and contaminants",
    • "model": "Dyson Pure Cool Link Tower",
    • "manufacturer": "Dyson",
    • "serial_number": "H8tG5nWp",
    • "warranty_expiration_notification": 30,
    • "life_expectancy": 36,
    • "root_id": 44,
    • "asset_code": "AHU-BLD1-01-001",
    • "status": "online",
    • "purchase_cost": 549.99,
    • "replacement_cost": 599.99,
    • "salvage_value": 150,
    • "parent": {
      },
    • "location": {
      },
    • "technicians": [
      ],
    • "asset_types": [
      ],
    • "parts": [
      ],
    • "urls": [],
    • "vendors": [
      ],
    • "has_children": false,
    • "purchase_date": "2023-08-24",
    • "warranty_exp_date": "2026-08-24",
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Delete asset

Authorizations:
bearer_auth
path Parameters
id
required
integer

Asset ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "message": "Invalid API key"
}

Bulk Operations

Bulk operations

Authorizations:
bearer_auth
header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
required
Array of objects [ 1 .. 100 ] items

Operations to be run sequentially.

sequential
required
boolean
Value: true

Must be set to true for request to be valid.

Responses

Request samples

Content type
application/json
{
  • "ops": [
    • {
      },
    • {
      }
    ],
  • "sequential": true
}

Response samples

Content type
application/json
{
  • "results": [
    • {
      },
    • {
      }
    ]
}

Entities

List entities

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[name_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Locations

Create new location

Authorizations:
bearer_auth
header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Location to create

required
object

Responses

Request samples

Content type
application/json
{
  • "location": {
    • "name": "Main Conference Room",
    • "description": "Large conference room with projector and whiteboard. Seats up to 12 people.",
    • "address": "101-123 Example St",
    • "parent_id": 55,
    • "qr_code_attributes": {
      }
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 56,
    • "name": "Main Conference Room",
    • "description": "Large conference room with projector and whiteboard. Seats up to 12 people.",
    • "address": "101-123 Example St",
    • "parent": {
      },
    • "root_id": 55,
    • "path": "Building A > Main Conference Room",
    • "has_children": false,
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 15,
    • "updated_by_id": 22
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

List locations

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[name_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get location

Authorizations:
bearer_auth
path Parameters
id
required
integer

Location ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 56,
    • "name": "Main Conference Room",
    • "description": "Large conference room with projector and whiteboard. Seats up to 12 people.",
    • "address": "101-123 Example St",
    • "parent": {
      },
    • "root_id": 55,
    • "path": "Building A > Main Conference Room",
    • "has_children": false,
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 15,
    • "updated_by_id": 22
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update location

Authorizations:
bearer_auth
path Parameters
id
required
integer

Location ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Fields to update on Location

required
object

Responses

Request samples

Content type
application/json
{
  • "location": {
    • "name": "Main Conference Room",
    • "description": "Large conference room with projector and whiteboard. Seats up to 12 people.",
    • "address": "101-123 Example St",
    • "parent_id": 55,
    • "qr_code_attributes": {
      }
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 56,
    • "name": "Main Conference Room",
    • "description": "Large conference room with projector and whiteboard. Seats up to 12 people.",
    • "address": "101-123 Example St",
    • "parent": {
      },
    • "root_id": 55,
    • "path": "Building A > Main Conference Room",
    • "has_children": false,
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 15,
    • "updated_by_id": 22
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Delete location

Authorizations:
bearer_auth
path Parameters
id
required
integer

Location ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "message": "Invalid API key"
}

Parts

Create new part

Authorizations:
bearer_auth
header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Part to create

required
object

Responses

Request samples

Content type
application/json
{
  • "part": {
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "part_type_id": 3,
    • "storeroom_id": 1,
    • "measurement_unit_id": 2,
    • "assets_ids": [
      ],
    • "vendor_parts_attributes": [
      ],
    • "qr_code_attributes": {
      },
    • "urls_attributes": []
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

List parts

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[name_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get part

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update part

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Fields to update on Part

required
object

Responses

Request samples

Content type
application/json
{
  • "part": {
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "min_qty": 5,
    • "desired_qty": 8,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "part_type_id": 3,
    • "storeroom_id": 1,
    • "measurement_unit_id": 2,
    • "assets_ids": [
      ],
    • "vendor_parts_attributes": [
      ],
    • "qr_code_attributes": {
      },
    • "urls_attributes": []
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Delete part

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "message": "Invalid API key"
}

Restock part inventory

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
quantity
required
number <decimal> decimal places <= 3
cost
required
number <decimal> decimal places <= 2 >= 0

Unit cost of restocked items. The Part's unit_cost will be set to this value.

note
string

Responses

Request samples

Content type
application/json
{
  • "quantity": 4,
  • "cost": 26.15,
  • "note": "Purchase order PO-12345 received"
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Reconcile part inventory

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
quantity
required
number <decimal> decimal places <= 3

Positive or negative adjustment amount. The resulting on_hand_qty after applying this reconciliation must not be negative.

note
required
string

Responses

Request samples

Content type
application/json
{
  • "quantity": -2,
  • "note": "2 units damaged during shipping"
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update part unit cost

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
cost
required
number decimal places <= 2 >= 0

Sets the new unit_cost for the Part by creating a "cost_update" transaction.

note
string

Responses

Request samples

Content type
application/json
{
  • "cost": 225.5,
  • "note": "Cost updated per invoice INV-9847"
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update part average unit cost

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
cost
required
number decimal places <= 2 >= 0

Sets the new avg_unit_cost for the Part by creating an "average_cost_update" transaction.

note
string

Responses

Request samples

Content type
application/json
{
  • "cost": 207.35,
  • "note": "Adjusting after supplier rebate credit"
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 72,
    • "name": "Air Filter",
    • "description": "Fiberglass panel filter",
    • "is_non_stock": false,
    • "number": "FL_A",
    • "area": "Filters bin",
    • "lead_time": 7,
    • "on_hand_qty": 6,
    • "min_qty": 5,
    • "desired_qty": 8,
    • "unit_cost": 26.15,
    • "avg_unit_cost": 26.15,
    • "part_type": {
      },
    • "storeroom": {
      },
    • "measurement_unit": {
      },
    • "urls": [],
    • "available": 5,
    • "reserved": 1,
    • "assets": [
      ],
    • "vendors": [
      ],
    • "qr_code": "guVT5ngMeZ9xPBIk8db4dCGXVU",
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

List part transaction history

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

query Parameters
search
string
sort
string
Default: "updated_at desc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[note_cont]=invoice

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      },
    • "total_used": 8.5
    }
}

Get part transaction

Authorizations:
bearer_auth
path Parameters
id
required
integer

Part ID

transaction_id
required
integer

Part Transaction ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 102,
    • "note": "Purchase order PO-12345 received",
    • "type": "restock",
    • "work_order_id": null,
    • "cost": 26.15,
    • "total_cost": 52.3,
    • "quantity": 2,
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

PMs

List PMs

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "created_at desc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[title_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get PM

Authorizations:
bearer_auth
path Parameters
id
required
integer

PM ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 22,
    • "status": "planned",
    • "type": "persistent",
    • "start_date": "2025-02-18T12:00:00.000Z",
    • "time_to_complete": 4,
    • "next_order_date": "2026-07-18T12:00:00.000Z",
    • "next_due_date": "2026-07-18T16:00:00.000Z",
    • "repeat_frequency": "month",
    • "repeat_occurrence": "custom",
    • "on_week_days": [
      ],
    • "in_months": [
      ],
    • "on_month_day": 18,
    • "procedure_templates": [
      ],
    • "template_work_order": {
      },
    • "has_work_orders": true,
    • "has_uncompleted_wo": false,
    • "progression": {
      },
    • "last_active_work_order_id": 756,
    • "last_active_work_order_title": "HVAC filter replacement",
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 1,
    • "updated_by_id": 2
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Procedures

List procedures

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[name_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get procedure

Authorizations:
bearer_auth
path Parameters
id
required
integer

Procedure ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 10,
    • "name": "Building Maintenance Audit",
    • "description": "Inspection to identify maintenance needs and safety issues",
    • "items": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 1,
    • "updated_by_id": 1
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Requests

Create new request

Authorizations:
bearer_auth
header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Request to create

required
object

Responses

Request samples

Content type
application/json
{
  • "work_order_request": {
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "status": "on_hold",
    • "notify": true,
    • "priority": "high",
    • "location_id": 122,
    • "asset_id": 45,
    • "categories_ids": [
      ],
    • "technicians_ids": [
      ],
    • "vendors_ids": [
      ],
    • "due_date": "2025-07-17T12:00:00Z"
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1126,
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "status": "on_hold",
    • "notify": true,
    • "priority": "high",
    • "work_order_id": 864,
    • "location": {
      },
    • "asset": {
      },
    • "categories": [
      ],
    • "technicians": [
      ],
    • "vendors": [
      ],
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "request_portal": {
      },
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

List requests

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "created_at desc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[title_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get request

Authorizations:
bearer_auth
path Parameters
id
required
integer

Request ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1126,
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "status": "on_hold",
    • "notify": true,
    • "priority": "high",
    • "work_order_id": 864,
    • "location": {
      },
    • "asset": {
      },
    • "categories": [
      ],
    • "technicians": [
      ],
    • "vendors": [
      ],
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "request_portal": {
      },
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update request

Authorizations:
bearer_auth
path Parameters
id
required
integer

Request ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Fields to update on Request

required
object

Responses

Request samples

Content type
application/json
{
  • "work_order_request": {
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "status": "on_hold",
    • "notify": true,
    • "priority": "high",
    • "location_id": 122,
    • "asset_id": 45,
    • "categories_ids": [
      ],
    • "technicians_ids": [
      ],
    • "vendors_ids": [
      ],
    • "due_date": "2025-07-17T12:00:00Z"
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1126,
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "status": "on_hold",
    • "notify": true,
    • "priority": "high",
    • "work_order_id": 864,
    • "location": {
      },
    • "asset": {
      },
    • "categories": [
      ],
    • "technicians": [
      ],
    • "vendors": [
      ],
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "request_portal": {
      },
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Delete request

Authorizations:
bearer_auth
path Parameters
id
required
integer

Request ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "message": "Invalid API key"
}

Users

List users

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[can_be_assigned_to_wo_eq]=true

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "John Doe",
    • "filter": {
      }
    }
}

Get user

Authorizations:
bearer_auth
path Parameters
id
required
integer

User ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1,
    • "name": "John",
    • "surname": "Doe",
    • "full_name": "John Doe",
    • "language": "en",
    • "email": "john-doe@acme-corporation.com",
    • "unconfirmed_email": "jdoe@acme-corporation.com",
    • "phone_number": "+12222222222",
    • "job_title": "Maintenance Manager",
    • "status": "active",
    • "can_be_assigned_to_wo": true,
    • "auth_type": "api_key",
    • "avatar": "/api/v1/store/attachments/image/1/upload/small-abc123def456.jpg",
    • "regular_rate": 41,
    • "overtime_rate1": 61.5,
    • "overtime_rate2": 82,
    • "permissions": [
      ],
    • "activity": {
      },
    • "tenant": "acme-corporation",
    • "invitation_details": {
      },
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 1,
    • "updated_by_id": 2
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Vendors

List vendors

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "name asc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[assign_to_work_orders_eq]=true

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "John Doe",
    • "filter": {
      }
    }
}

Get vendor

Authorizations:
bearer_auth
path Parameters
id
required
integer

Vendor ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 32,
    • "name": "Summit HVAC & Refrigeration",
    • "description": "Commercial HVAC and refrigeration installation, maintenance, and repair services",
    • "is_active": true,
    • "assign_to_work_orders": true,
    • "parts_supplier": true,
    • "tax_id": "12-3456789",
    • "address": "123 Example St",
    • "rating": 5,
    • "hourly_rate": 32.5,
    • "locations": [
      ],
    • "vendor_contacts": [
      ],
    • "urls": [],
    • "categories": [
      ],
    • "assets": [
      ],
    • "parts": [
      ],
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by_id": 1,
    • "updated_by_id": 2
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Work Orders

Create new work order

Authorizations:
bearer_auth
header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Work order to create

required
object

Responses

Request samples

Content type
application/json
{
  • "work_order": {
    • "title": "Fix water leakage in Freezer",
    • "type": "reactive",
    • "description": "Water leakage due to blocked defrost drain",
    • "priority": "high",
    • "work_order_request_id": 864,
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "location_id": 122,
    • "asset_id": 45,
    • "status_id": 5,
    • "categories_ids": [
      ],
    • "account_codes_ids": [
      ],
    • "procedure_template_ids": [
      ],
    • "technicians_ids": [
      ],
    • "vendors_ids": [
      ],
    • "notify_vendors_on_create": "yes",
    • "notify_vendors_on_update": "yes",
    • "checklist": [
      ]
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1126,
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "priority": "high",
    • "type": "reactive",
    • "pm_schedule_id": 78,
    • "procedures": [
      ],
    • "checklist": [
      ],
    • "status": {
      },
    • "work_order_request": {
      },
    • "asset": {
      },
    • "downtime_tracking": {
      },
    • "categories": [
      ],
    • "account_codes": [
      ],
    • "technicians": [
      ],
    • "vendors": [
      ],
    • "notify_vendors_on_create": "yes",
    • "notify_vendors_on_update": "yes",
    • "location": {
      },
    • "part_assignments": [
      ],
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "total_costs": {
      },
    • "active_timer_current_user": {
      },
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

List work orders

Authorizations:
bearer_auth
query Parameters
search
string
sort
string
Default: "created_at desc"
Example: sort=created_at desc

Sort by field ascending or descending

object
Example: filter[title_cont]=building

Filter using filter[field_matcher] syntax

page
integer
Default: 1

Page number

per_page
integer
Default: 50

Items per page

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": [
    • {
      }
    ],
  • "meta": {
    • "entity": {
      },
    • "customer": {
      },
    • "pagination": {
      },
    • "sort": [
      ],
    • "search": "Building A",
    • "filter": {
      }
    }
}

Get work order

Authorizations:
bearer_auth
path Parameters
id
required
integer

Work Order ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1126,
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "priority": "high",
    • "type": "reactive",
    • "pm_schedule_id": 78,
    • "procedures": [
      ],
    • "checklist": [
      ],
    • "status": {
      },
    • "work_order_request": {
      },
    • "asset": {
      },
    • "downtime_tracking": {
      },
    • "categories": [
      ],
    • "account_codes": [
      ],
    • "technicians": [
      ],
    • "vendors": [
      ],
    • "notify_vendors_on_create": "yes",
    • "notify_vendors_on_update": "yes",
    • "location": {
      },
    • "part_assignments": [
      ],
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "total_costs": {
      },
    • "active_timer_current_user": {
      },
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update work order

Authorizations:
bearer_auth
path Parameters
id
required
integer

Work Order ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json

Fields to update on Work Order

required
object

Responses

Request samples

Content type
application/json
{
  • "work_order": {
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "priority": "none",
    • "due_date": "2019-08-24T14:15:22Z",
    • "completed_at": "2019-08-24T14:15:22Z",
    • "location_id": 122,
    • "asset_id": 45,
    • "status_id": 1,
    • "categories_ids": [
      ],
    • "account_codes_ids": [
      ],
    • "procedure_template_ids": [
      ],
    • "technicians_ids": [
      ],
    • "vendors_ids": [
      ],
    • "notify_vendors_on_update": "yes",
    • "checklist": [
      ]
    }
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "id": 1126,
    • "title": "Fix water leakage in Freezer",
    • "description": "Water leakage due to blocked defrost drain",
    • "priority": "high",
    • "type": "reactive",
    • "pm_schedule_id": 78,
    • "procedures": [
      ],
    • "checklist": [
      ],
    • "status": {
      },
    • "work_order_request": {
      },
    • "asset": {
      },
    • "downtime_tracking": {
      },
    • "categories": [
      ],
    • "account_codes": [
      ],
    • "technicians": [
      ],
    • "vendors": [
      ],
    • "notify_vendors_on_create": "yes",
    • "notify_vendors_on_update": "yes",
    • "location": {
      },
    • "part_assignments": [
      ],
    • "due_date": "2025-07-17T12:00:00Z",
    • "completed_at": "2025-07-15T09:30:00Z",
    • "total_costs": {
      },
    • "active_timer_current_user": {
      },
    • "images": [
      ],
    • "documents": [
      ],
    • "created_at": "2025-07-17T19:19:20Z",
    • "updated_at": "2025-09-24T14:20:25Z",
    • "created_by": {
      },
    • "updated_by": {
      }
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Delete work order

Authorizations:
bearer_auth
path Parameters
id
required
integer

Work Order ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "message": "Invalid API key"
}

Add part assignment to work order

Authorizations:
bearer_auth
path Parameters
id
required
integer

Work Order ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
part_id
required
integer
quantity
required
number <decimal> decimal places <= 3 >= 0

Quantity to add. If this Part is already assigned, this will add to the existing quantity.

Responses

Request samples

Content type
application/json
{
  • "part_id": 52,
  • "quantity": 2
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "part_id": 52,
    • "part_name": "Air Filter",
    • "quantity": 2,
    • "unit_name": "Item",
    • "unit_short_name": "itm",
    • "type": "usage",
    • "total_cost": 52.3
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Update part assignment on work order

Authorizations:
bearer_auth
path Parameters
id
required
integer

Work Order ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Request Body schema: application/json
part_id
required
integer
quantity
required
number <decimal> decimal places <= 3 >= 0

New quantity for existing Part assignment

Responses

Request samples

Content type
application/json
{
  • "part_id": 52,
  • "quantity": 2
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    • "part_id": 52,
    • "part_name": "Air Filter",
    • "quantity": 2,
    • "unit_name": "Item",
    • "unit_short_name": "itm",
    • "type": "usage",
    • "total_cost": 52.3
    },
  • "meta": {
    • "entity": {
      },
    • "customer": {
      }
    }
}

Delete part assignment from work order

Authorizations:
bearer_auth
path Parameters
id
required
integer

Work Order ID

part_id
required
integer

Part ID

header Parameters
X-Entity-Id
required
integer

Entity ID

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "message": "Invalid API key"
}