Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/maintainx-purchase-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
description: Welcome to the MaintainX API documentation!<br/><br/>You can use the MaintainX API to programmatically interact with all the entities in MaintainX. Use it to retrieve and manage data of Work Orders, Work Requests, Assets, and more!<br/><br/>To get started, in your MaintainX account go to <a href="https://app.getmaintainx.com/settings/integrations/apiKeys">"Settings > Integrations"</a> and click "+ New Key" button to generate a new Rest API key.<br/><br/><b>Missing something?</b><br/>Don't hesitate to reach out <a href="mailto:support@getmaintainx.com">support@getmaintainx.com</a><br/><br/>
version: '1'
title: MaintainX Asset Criticalities Purchase Orders API
contact:
url: https://www.getmaintainx.com/
name: Support
email: support@getmaintainx.com
x-logo:
url: https://maintainx-static.s3-us-west-2.amazonaws.com/img/default-org-logo.png
backgroundColor: '#FFFFFF'
altText: MaintainX logo
servers:
- url: https://api.getmaintainx.com/v1
description: Endpoint
security:
- Bearer: []
tags:
- name: Purchase Orders
description: Operations on Purchase Orders
x-traitTag: false
paths:
/purchaseorders:
post:
summary: Create new purchase order
requestBody:
description: Purchase Order to create
required: true
content:
application/json:
schema:
type: object
required:
- vendorId
- items
properties:
note:
type:
- string
- 'null'
description: Notes left for Purchase Orders
example: Please deliver during business hours
dueDate:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
description: Due date of Purchase Order
vendorId:
type:
- number
- 'null'
example: 432
description: ID of vendor that this Purchase Order is associated with
overrideNumber:
type:
- string
- 'null'
example: A123
description: Custom number/identifier for Purchase Order
deletedAt:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
format: date-time
description: Date at which the Purchase Order was deleted
vendorContactIds:
type: array
description: List of vendor contact IDs in the Purchase Order
example:
- 12
- 34
- 56
items:
type: number
example: 12
shippingAddress:
type:
- object
- 'null'
description: Shipping address in the Purchase Order
required:
- city
- country
- postalCode
- state
- street
properties:
city:
type: string
example: Montreal
country:
type: string
example: Canada
postalCode:
type: string
example: H4B 5G0
state:
type: string
example: Quebec
street:
type: string
example: 1909 Avenue des Canadiens-de-Montréal
label:
type:
- string
- 'null'
description: A string to specify how the address will be displayed - Defaults to Street, City, Province/State, Postal Code, Country
example: '1909 Avenue des Canadiens-de-Montréal, Montreal, H4B 5G0, QC, CA '
shippingAddressId:
type:
- number
- 'null'
description: Shipping address Id in the Purchase Order
billingAddress:
type:
- object
- 'null'
description: Billing address in the Purchase Order
required:
- city
- country
- postalCode
- state
- street
properties:
city:
type: string
example: Montreal
country:
type: string
example: Canada
postalCode:
type: string
example: H4B 5G0
state:
type: string
example: Quebec
street:
type: string
example: 1909 Avenue des Canadiens-de-Montréal
label:
type:
- string
- 'null'
description: A string to specify how the address will be displayed - Defaults to Street, City, Province/State, Postal Code, Country
example: '1909 Avenue des Canadiens-de-Montréal, Montreal, H4B 5G0, QC, CA '
billingAddressId:
type:
- number
- 'null'
description: Billing address Id in the Purchase Order
extraFields:
type: object
description: 'Custom Fields on the entity. The object keys are the exact Custom Field labels, including spaces or special characters. (ie: "Ordered Date")'
additionalProperties:
type: string
example:
Ordered Date: '2023-01-01'
items:
type: array
description: List of items in the Purchase Order
items:
type: object
required:
- quantityOrdered
properties:
partId:
type:
- number
- 'null'
example: 43
description: ID of the part this item is related to
name:
type:
- string
- 'null'
partNumber:
type:
- string
- 'null'
price:
type:
- number
- 'null'
example: 25000
description: Total price of items in cents
quantityOrdered:
type: number
example: 4
description: Represent the amount of units for this item that were ordered in the purchase order.
quantityReceived:
type:
- number
- 'null'
example: 3
description: Represents the total amount of this specific item that has been received to date.
unitCost:
type:
- number
- 'null'
example: 125000
description: Price of a single item in cents
extraFields:
type: object
additionalProperties:
type: string
description: 'Custom Fields on the entity. Deprecated: Use `lineExtraFields` instead.'
deprecated: true
lineExtraFields:
type: object
description: 'Custom Fields on the entity. The object keys are the exact Custom Field labels, including spaces or special characters. (ie: "Ordered Date")'
additionalProperties:
type: string
example:
Ordered Date: '2023-01-01'
costs:
type: array
description: List of costs in the Purchase Order
items:
type: object
required:
- name
- type
- amount
properties:
name:
type: string
example: Sales Tax
description: Description of the cost
type:
type: string
enum:
- AMOUNT_NON_TAXABLE
- AMOUNT_TAXABLE
- PERCENT_TAXABLE
example: AMOUNT_TAXABLE
description: Type of cost in either cents or percent. Accepted types in cents are AMOUNT_TAXABLE and AMOUNT_NON_TAXABLE. For percentage use PERCENT_TAXABLE
amount:
type: number
example: 125000
title:
type:
- string
- 'null'
description: Title of the Purchase Order. Will be ignored if organization setting for custom purchase order titles is disabled.
example: Office Supplies Order
responses:
'201':
description: Successfully created Purchase Order
content:
application/json:
schema:
type: object
required:
- id
- status
- items
properties:
id:
type: number
example: 135
description: Global ID of the Purchase Order
note:
type:
- string
- 'null'
description: Notes left for Purchase Orders
example: Please deliver during business hours
title:
type:
- string
- 'null'
description: Title of the Purchase Order.
example: Office Supplies Order
reviewNote:
type:
- string
- 'null'
description: Notes to be left for changes to be made when sending a Purchase Order for revision
example: Please adjust quantities and resubmit
status:
type:
- string
- 'null'
example: APPROVED
description: Status of the Purchase Order. Supported values are APPROVED, CANCELED, COMPLETED, DECLINED, PARTIALLY_FULFILLED, PENDING, REQUESTED
dueDate:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
description: Due date of Purchase Order
creatorId:
type: number
example: 432
description: ID of the user that created this Purchase Order
vendorId:
type:
- number
- 'null'
example: 432
description: ID of vendor that this Purchase Order is associated with
autoGeneratedNumber:
type:
- number
- 'null'
example: 987
description: Autogenerated Purchase Order number
overrideNumber:
type:
- string
- 'null'
example: A123
description: Custom number/identifier for Purchase Order
approverId:
type:
- number
- 'null'
example: 135
description: ID of the user who approved the Purchase Order
approvalDate:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
description: Date the Purchase Order was approved
createdAt:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
format: date-time
description: Date the Purchase Order was created
updatedAt:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
description: Date the Purchase Order was last updated
deletedAt:
type:
- string
- 'null'
example: '2022-01-01T00:00:00.000Z'
format: date-time
description: Date at which the Purchase Order was deleted
items:
type: array
description: List of items in the Purchase Order
items:
type: object
required:
- id
- quantityOrdered
properties:
id:
type: number
example: 23
description: ID of the item
partId:
type:
- number
- 'null'
example: 43
description: ID of the part this item is related to
name:
type:
- string
- 'null'
partNumber:
type:
- string
- 'null'
price:
type:
- number
- 'null'
example: 25000
description: Total price of items in cents
priceDecimal:
type:
- string
- 'null'
example: '250.000000'
description: Total price of items as a decimal value
quantityOrdered:
type: number
example: 4
description: Represent the amount of units for this item that were ordered in the purchase order.
quantityReceived:
type:
- number
- 'null'
example: 3
description: Represents the total amount of this specific item that has been received to date.
unitCost:
type:
- number
- 'null'
example: 125000
description: Price of a single item in cents
unitCostDecimal:
type:
- string
- 'null'
example: '1250.000000'
description: Price of a single item as a decimal value
fulfillments:
type: array
items:
type: object
properties:
id:
type: number
example: 23
description: ID of the item fulfillment
locationId:
type:
- number
- 'null'
example: 852
description: ID of the location where the item was fulfilled
quantityReceived:
type: string
example: '3.000000'
description: Quantity of the item fulfilled to this location
isLegacy:
type: boolean
description: Indicates the location is a legacy location. This is used to determine if this fulfillment was done before enablement of the multi-location parts feature.
example: true
description: Fulfillment information for the item's fulfillment locations.
extraFields:
type: object
additionalProperties:
type: string
description: 'Custom Fields on the entity. Deprecated: Use `lineExtraFields` instead.'
deprecated: true
lineExtraFields:
type: object
description: 'Custom Fields on the entity. The object keys are the exact Custom Field labels, including spaces or special characters. (ie: "Ordered Date")'
additionalProperties:
type: string
example:
Ordered Date: '2023-01-01'
partExtraFields:
type: object
description: 'Custom Fields on the entity. The object keys are the exact Custom Field labels, including spaces or special characters. (ie: "Part Number")'
additionalProperties:
type: string
example:
Part Number: '321'
costs:
type: array
description: List of costs in the Purchase Order
items:
type: object
required:
- name
- type
- amount
properties:
id:
type: number
example: 123
description: ID of the cost
name:
type: string
example: Sales Tax
description: Description of the cost
type:
type: string
enum:
- AMOUNT_NON_TAXABLE
- AMOUNT_TAXABLE
- PERCENT_TAXABLE
example: AMOUNT_TAXABLE
description: Type of cost in either cents or percent. Accepted types in cents are AMOUNT_TAXABLE and AMOUNT_NON_TAXABLE. For percentage use PERCENT_TAXABLE
amount:
type: number
example: 125000
thumbnail:
type:
- object
- 'null'
title: attachment
required:
- id
- mimeType
- fileName
- url
- createdAt
properties:
id:
type: number
description: Global ID of the attachment
example: 12345
mimeType:
type: string
description: MIME type of the file
example: image/png
fileName:
type: string
description: Attachment's file name
example: image.png
url:
type: string
description: Url of the file. Valid for 60 minutes.
example: http://example.com/image.png
createdAt:
type: string
format: date-time
description: Date & time at which the attachment was uploaded
example: '2022-01-01T00:00:00.000Z'
width:
type:
- number
- 'null'
description: Width if the file is an image
example: 220
height:
type:
- number
- 'null'
description: Height if the file is an image
example: 100
attachments:
type: array
title: attachment
description: List of attachments linked to the Purchase Order
items:
type: object
title: attachment
required:
- id
- mimeType
- fileName
- url
- createdAt
properties:
id:
type: number
description: Global ID of the attachment
example: 12345
mimeType:
type: string
description: MIME type of the file
example: image/png
fileName:
type: string
description: Attachment's file name
example: image.png
url:
type: string
description: Url of the file. Valid for 60 minutes.
example: http://example.com/image.png
createdAt:
type: string
format: date-time
description: Date & time at which the attachment was uploaded
example: '2022-01-01T00:00:00.000Z'
width:
type:
- number
- 'null'
description: Width if the file is an image
example: 220
height:
type:
- number
- 'null'
description: Height if the file is an image
example: 100
vendorContactIds:
type: array
description: List of vendor contact IDs in the Purchase Order
example:
- 12
- 34
- 56
items:
type: number
example: 12
shippingAddress:
type:
- object
- 'null'
description: Shipping address in the Purchase Order
required:
- city
- country
- postalCode
- state
- street
properties:
city:
type: string
example: Montreal
country:
type: string
example: Canada
postalCode:
type: string
example: H4B 5G0
state:
type: string
example: Quebec
street:
type: string
example: 1909 Avenue des Canadiens-de-Montréal
label:
type:
- string
- 'null'
description: A string to specify how the address will be displayed - Defaults to Street, City, Province/State, Postal Code, Country
example: '1909 Avenue des Canadiens-de-Montréal, Montreal, H4B 5G0, QC, CA '
billingAddress:
type:
- object
- 'null'
description: Billing address in the Purchase Order
required:
- city
- country
- postalCode
- state
- street
properties:
city:
type: string
example: Montreal
country:
type: string
example: Canada
postalCode:
type: string
example: H4B 5G0
state:
type: string
example: Quebec
street:
type: string
example: 1909 Avenue des Canadiens-de-Montréal
label:
type:
- string
- 'null'
description: A string to specify how the address will be displayed - Defaults to Street, City, Province/State, Postal Code, Country
example: '1909 Avenue des Canadiens-de-Montréal, Montreal, H4B 5G0, QC, CA '
extraFields:
type: object
description: 'Custom Fields on the entity. The object keys are the exact Custom Field labels, including spaces or special characters. (ie: "Ordered Date")'
additionalProperties:
type: string
example:
Ordered Date: '2023-01-01'
'400':
description: Failed to create the Purchase Order
content:
application/json:
schema:
type: object
required:
- errors
example:
errors:
- error: errors with request
properties:
errors:
type: array
items:
type: object
required:
- error
properties:
error:
type: string
fieldPath:
type:
- string
- 'null'
fieldValue:
oneOf:
- type: string
- type: number
- type: boolean
'401':
$ref: '#/components/responses/UnauthorizedError'
'403':
description: Failed to create the Purchase Order
content:
application/json:
schema:
type: object
required:
- errors
example:
errors:
- error: User doesn't have the right permissions
properties:
errors:
type: array
items:
type: object
required:
- error
properties:
error:
type: string
fieldPath:
type:
- string
- 'null'
fieldValue:
oneOf:
- type: string
- type: number
- type: boolean
'404':
description: Could not find the specified Purchase Order.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
example: Purchase Order Not Found
'429':
description: Too many requests. Please retry in 10 seconds
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
example: Too many requests. Please retry in 10 seconds
tags:
- Purchase Orders
parameters:
- schema:
type: boolean
description: Set `skipWebhook=true`, `skipWebhook=1` or `skipWebhook=yes` to skip all webhooks upon successful operation on the endpoint. [Learn more about webhooks](#tag/Subscriptions-and-Webhooks)
name: skipWebhook
in: query
required: false
- schema:
type: integer
description: Required if using a multi organizations token
name: x-organization-id
in: header
required: false
example: '1'
get:
summary: List purchase orders
description: Endpoint used to list purchase order resources
parameters:
- name: cursor
in: query
schema:
description: Last pagination reference
type: string
- name: limit
in: query
schema:
description: max number of Purchase Orders returned
type: integer
minimum: 1
maximum: 200
default: 100
- name: updatedAt[gte]
schema:
type: string
format: date-time
description: Return records whose updatedAt is at or after this ISO 8601 date-time (UTC).
example: '2024-01-01T00:00:00.000Z'
in: query
- name: updatedAt[lte]
schema:
type: string
format: date-time
description: Return records whose updatedAt is at or before this ISO 8601 date-time (UTC).
example: '2024-12-31T23:59:59.999Z'
in: query
- name: createdAt[gte]
schema:
type: string
format: date-time
description: Return records whose createdAt is at or after this ISO 8601 date-time (UTC).
example: '2024-01-01T00:00:00.000Z'
in: query
- name: createdAt[lte]
schema:
type: string
format: date-time
description: Return records whose createdAt is at or before this ISO 8601 date-time (UTC).
example: '2024-12-31T23:59:59.999Z'
in: query
- name: customFieldName
schema:
type: array
items:
type: string
description: "Filter purchase orders by custom field value. Your query par
# --- truncated at 32 KB (177 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/maintainx/refs/heads/main/openapi/maintainx-purchase-orders-api-openapi.yml