Light v1 - Purchase Orders API
The v1 - Purchase Orders API from Light — 9 operation(s) for v1 - purchase orders.
The v1 - Purchase Orders API from Light — 9 operation(s) for v1 - purchase orders.
openapi: 3.0.1
info:
title: Light Authorization v1 - Purchase Orders API
version: 1.0.0
security:
- apiKeyAuth: []
- bearerAuth: []
tags:
- name: v1 - Purchase Orders
paths:
/v1/purchase-orders/{purchaseOrderId}/lines/bulk:
put:
tags:
- v1 - Purchase Orders
summary: Batch update purchase order lines
description: Updates multiple purchase order line items
operationId: batchUpdatePurchaseOrderLines
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalBatchUpdatePurchaseOrderLineRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalPurchaseOrderLineV1Model'
post:
tags:
- v1 - Purchase Orders
summary: Bulk create purchase order lines
description: Creates multiple purchase order line items
operationId: bulkCreatePurchaseOrderLines
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalCreatePurchaseOrderLineRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
type: array
items:
$ref: '#/components/schemas/ExternalPurchaseOrderLineV1Model'
/v1/purchase-orders/{purchaseOrderId}/cancel:
post:
tags:
- v1 - Purchase Orders
summary: Cancel purchase order
description: Cancels a purchase order
operationId: cancelPurchaseOrder
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
/v1/purchase-orders/{purchaseOrderId}/close:
post:
tags:
- v1 - Purchase Orders
summary: Close purchase order
description: Closes a purchase order
operationId: closePurchaseOrder
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
/v1/purchase-orders:
get:
tags:
- v1 - Purchase Orders
summary: List purchase orders
description: Returns a paginated list of purchase orders
operationId: listPurchaseOrders
parameters:
- name: sort
in: query
schema:
type: string
description: "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `purchaseOrderId`, `erpNumber`, `vendorName`, `ownerName`, `ownerId`, `companyEntityId`, `state`, `closedAt`, `cancelledAt`, `createdAt`, `totalAmount`."
example: amount:desc,createdAt:asc
- name: filter
in: query
schema:
type: string
description: "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `purchaseOrderId`, `vendorId`, `ownerId`, `state`, `erpNumber`, `updatedAt`."
example: state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null
- name: limit
in: query
description: Maximum number of items to return. Default is 50, maximum is 200.
schema:
maximum: 200
type: integer
format: int32
- name: offset
in: query
description: Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.
deprecated: true
schema:
type: integer
format: int64
- name: cursor
in: query
description: 'The cursor position to start returning results from.
To opt-in into cursor-based pagination, provide `0` for the initial request.
For subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.
Cursor values are opaque and should not be constructed manually.'
schema:
type: string
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPaginatedResponseV1ModelExternalBffPurchaseOrderV1Model'
post:
tags:
- v1 - Purchase Orders
summary: Create purchase order
description: Creates a new purchase order
operationId: createPurchaseOrder
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalCreatePurchaseOrderRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
/v1/purchase-orders/{purchaseOrderId}/lines:
post:
tags:
- v1 - Purchase Orders
summary: Create purchase order line
description: Creates a new purchase order line item
operationId: createPurchaseOrderLine
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalCreatePurchaseOrderLineRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderLineV1Model'
/v1/purchase-orders/{purchaseOrderId}:
get:
tags:
- v1 - Purchase Orders
summary: Get purchase order
description: Returns a purchase order by ID
operationId: getPurchaseOrder
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
patch:
tags:
- v1 - Purchase Orders
summary: Update purchase order
description: Updates an existing purchase order
operationId: updatePurchaseOrder
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdatePurchaseOrderRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
/v1/purchase-orders/{purchaseOrderId}/lock:
post:
tags:
- v1 - Purchase Orders
summary: Lock purchase order
description: Locks a purchase order to prevent modifications
operationId: locksPurchaseOrder
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
/v1/purchase-orders/{purchaseOrderId}/lines/{lineId}:
delete:
tags:
- v1 - Purchase Orders
summary: Delete purchase order line
description: Deletes a purchase order line item
operationId: deletePurchaseOrderLine
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
- name: lineId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8: {}
patch:
tags:
- v1 - Purchase Orders
summary: Update purchase order line
description: Updates a purchase order line item
operationId: updatePurchaseOrderLine
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
- name: lineId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalUpdatePurchaseOrderLineRequestV1Model'
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderLineV1Model'
/v1/purchase-orders/{purchaseOrderId}/reset:
post:
tags:
- v1 - Purchase Orders
summary: Reset purchase order
description: Resets a purchase order to its initial state
operationId: resetPurchaseOrder
parameters:
- name: purchaseOrderId
in: path
required: true
schema:
type: string
format: uuid
responses:
default:
description: default response
content:
application/json;charset=UTF-8:
schema:
$ref: '#/components/schemas/ExternalPurchaseOrderV1Model'
components:
schemas:
ExternalCreatePurchaseOrderRequestV1Model:
type: object
properties:
vendorId:
type: string
format: uuid
nullable: true
companyEntityId:
type: string
format: uuid
nullable: true
ownerId:
type: string
format: uuid
nullable: true
currency:
type: string
nullable: true
example: USD
vendorEmail:
type: string
nullable: true
purchaseOrderDate:
type: string
format: date
nullable: true
deliveryAddress:
type: string
nullable: true
deliveryDate:
type: string
format: date
nullable: true
description:
type: string
nullable: true
lines:
type: array
items:
$ref: '#/components/schemas/ExternalCreatePurchaseOrderLineRequestV1Model'
customProperties:
type: array
nullable: true
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
ExternalCreatePurchaseOrderLineRequestV1Model:
type: object
properties:
description:
type: string
costCenterId:
type: string
format: uuid
accountId:
type: string
format: uuid
taxCodeId:
type: string
format: uuid
quantity:
type: number
unitPrice:
type: integer
format: int64
customProperties:
type: array
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
ExternalBffPurchaseOrderV1Model:
type: object
properties:
id:
type: string
format: uuid
companyId:
type: string
format: uuid
createdBy:
type: string
format: uuid
nullable: true
companyEntityId:
type: string
format: uuid
nullable: true
purchaseRequestId:
type: string
format: uuid
nullable: true
state:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- IN_DRAFT
- RESET_PENDING
- APPROVED_ACCOUNTING_ENTRY_PENDING
- OPEN
- CLOSE_PENDING
- CLOSED
- CANCEL_PENDING
- CANCELLED
erpNumber:
type: string
nullable: true
description:
type: string
nullable: true
currency:
type: string
nullable: true
example: USD
totalAmount:
type: integer
format: int64
totalNetAmount:
type: integer
format: int64
totalTaxAmount:
type: integer
format: int64
totalMatchedAmount:
type: integer
format: int64
ownerId:
type: string
format: uuid
nullable: true
ownerName:
type: string
nullable: true
vendorId:
type: string
format: uuid
nullable: true
vendorEmail:
type: string
nullable: true
vendorName:
type: string
nullable: true
vendorAvatarUrl:
type: string
nullable: true
documentKey:
type: string
nullable: true
failureContext:
$ref: '#/components/schemas/ExternalUiClientExceptionV1Model'
purchaseOrderDate:
type: string
format: date
nullable: true
deliveryAddress:
type: string
nullable: true
deliveryDate:
type: string
format: date
nullable: true
erpSyncedAt:
type: string
format: date-time
nullable: true
lockedAt:
type: string
format: date-time
nullable: true
closedAt:
type: string
format: date-time
nullable: true
cancelledAt:
type: string
format: date-time
nullable: true
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
lines:
type: array
items:
$ref: '#/components/schemas/ExternalBffPurchaseOrderLineV1Model'
description: List of records for the current page
ExternalPurchaseOrderLineV1Model:
type: object
properties:
id:
type: string
format: uuid
companyId:
type: string
format: uuid
purchaseOrderId:
type: string
format: uuid
description:
type: string
costCenterId:
type: string
format: uuid
accountId:
type: string
format: uuid
taxCodeId:
type: string
format: uuid
quantity:
type: number
unitPrice:
type: integer
format: int64
amount:
type: integer
format: int64
netAmount:
type: integer
format: int64
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
customProperties:
type: array
items:
$ref: '#/components/schemas/ExternalCustomPropertyV1Model'
ExternalUpdatePurchaseOrderLineRequestV1Model:
type: object
properties:
customProperties:
type: array
nullable: true
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
description:
type: string
nullable: true
costCenterId:
type: string
format: uuid
nullable: true
accountId:
type: string
format: uuid
nullable: true
taxCodeId:
type: string
format: uuid
nullable: true
quantity:
type: number
nullable: true
unitPrice:
type: integer
format: int64
nullable: true
ExternalCustomPropertyValueV1Model:
type: object
properties:
id:
type: string
description: Unique identifier for the object
format: uuid
groupId:
type: string
description: ID of the custom property group
format: uuid
groupInternalName:
type: string
description: Internal name of the custom property group
companyId:
type: string
description: ID of the company
format: uuid
internalName:
type: string
description: Internal name of the custom property value
label:
type: string
description: Label of the custom property value
context:
type: string
description: Context/description of the custom property value
nullable: true
createdAt:
type: string
description: Timestamp when the custom property value was created
format: date-time
updatedAt:
type: string
description: Timestamp when the custom property value was last updated
format: date-time
description: List of values. Note that this will be a single value unless the group input type supports multiple values
ExternalBatchUpdatePurchaseOrderLineRequestV1Model:
type: object
properties:
lineId:
type: string
format: uuid
description:
type: string
nullable: true
costCenterId:
type: string
format: uuid
nullable: true
accountId:
type: string
format: uuid
nullable: true
taxCodeId:
type: string
format: uuid
nullable: true
quantity:
type: number
nullable: true
unitPrice:
type: integer
format: int64
nullable: true
customProperties:
type: array
nullable: true
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
ExternalBffPurchaseOrderLineV1Model:
type: object
properties:
id:
type: string
format: uuid
companyId:
type: string
format: uuid
purchaseOrderId:
type: string
format: uuid
description:
type: string
nullable: true
quantity:
type: integer
format: int64
nullable: true
unitPrice:
type: integer
format: int64
nullable: true
accountId:
type: string
format: uuid
nullable: true
accountLabel:
type: string
nullable: true
taxCodeId:
type: string
format: uuid
nullable: true
amount:
type: integer
format: int64
nullable: true
taxAmount:
type: integer
format: int64
nullable: true
netAmount:
type: integer
format: int64
nullable: true
taxCodeLabel:
type: string
nullable: true
costCenterId:
type: string
format: uuid
nullable: true
costCenterName:
type: string
nullable: true
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
ExternalUiClientExceptionErrorV1Model:
type: object
properties:
type:
type: string
description: A string code identifying the error type
message:
type: string
description: A human-readable message providing more details about the error
path:
type: array
description: Optional path of the error when the error is for a specific field. Used mostly on BAD_REQUEST errors, that path will match the field name on the request object
nullable: true
items:
type: string
description: Optional path of the error when the error is for a specific field. Used mostly on BAD_REQUEST errors, that path will match the field name on the request object
nullable: true
context:
type: object
additionalProperties:
type: object
description: Optional context providing additional information about the error. This can include any relevant data that might help in understanding or resolving the error
nullable: true
description: Optional context providing additional information about the error. This can include any relevant data that might help in understanding or resolving the error
nullable: true
description: List of errors providing details about what went wrong
ExternalUpdatePurchaseOrderRequestV1Model:
type: object
properties:
customProperties:
type: array
nullable: true
items:
$ref: '#/components/schemas/ExternalSetCustomPropertyRequestV1Model'
vendorId:
type: string
format: uuid
nullable: true
companyEntityId:
type: string
format: uuid
nullable: true
ownerId:
type: string
format: uuid
nullable: true
currency:
type: string
nullable: true
example: USD
purchaseOrderDate:
type: string
format: date
nullable: true
vendorEmail:
type: string
nullable: true
deliveryAddress:
type: string
nullable: true
deliveryDate:
type: string
format: date
nullable: true
description:
type: string
nullable: true
ExternalPurchaseOrderV1Model:
type: object
properties:
id:
type: string
format: uuid
companyId:
type: string
format: uuid
createdBy:
type: string
format: uuid
companyEntityId:
type: string
format: uuid
purchaseRequestId:
type: string
format: uuid
state:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- IN_DRAFT
- RESET_PENDING
- APPROVED_ACCOUNTING_ENTRY_PENDING
- OPEN
- CLOSE_PENDING
- CLOSED
- CANCEL_PENDING
- CANCELLED
totalAmount:
type: integer
format: int64
totalNetAmount:
type: integer
format: int64
totalTaxAmount:
type: integer
format: int64
erpNumber:
type: string
description:
type: string
currency:
type: string
example: USD
ownerId:
type: string
format: uuid
vendorId:
type: string
format: uuid
vendorEmail:
type: string
deliveryAddress:
type: string
deliveryDate:
type: string
format: date
documentKey:
type: string
failureContext:
$ref: '#/components/schemas/ExternalUiClientExceptionV1Model'
editStatus:
type: string
description: ⚠️ This enum is not exhaustive; new values may be added in the future.
enum:
- ALL_EDITS_ALLOWED
- ALL_EDITS_LOCKED
purchaseOrderDate:
type: string
format: date
erpSyncedAt:
type: string
format: date-time
lockedAt:
type: string
format: date-time
closedAt:
type: string
format: date-time
cancelledAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
lines:
type: array
items:
$ref: '#/components/schemas/ExternalPurchaseOrderLineV1Model'
customProperties:
type: array
items:
$ref: '#/components/schemas/ExternalCustomPropertyV1Model'
ExternalPaginatedResponseV1ModelExternalBffPurchaseOrderV1Model:
type: object
properties:
records:
type: array
description: List of records for the current page
items:
$ref: '#/components/schemas/ExternalBffPurchaseOrderV1Model'
hasMore:
type: boolean
description: Boolean flag indicating if there are more records available
total:
type: integer
description: Total number of records (only for offset pagination). This field is not guaranteed to be returned and only available for offset pagination, please do not rely on it and migrate to cursor pagination.
format: int64
nullable: true
deprecated: true
nextCursor:
type: string
description: Cursor for fetching the next page (only for cursor pagination)
nullable: true
prevCursor:
type: string
description: Cursor for fetching the previous page (only for cursor pagination)
nullable: true
ExternalUiClientExceptionV1Model:
type: object
properties:
name:
type: string
description: The error name
type:
type: string
description: 'The error type
⚠️ This enum is not exhaustive; new values may be added in the future.'
nullable: false
deprecated: false
enum:
- BAD_REQUEST
- UNAUTHORIZED
- FORBIDDEN
- NOT_FOUND
- CONFLICT
- UNPROCESSABLE_CONTENT
errors:
type: array
description: List of errors providing details about what went wrong
items:
$ref: '#/components/schemas/ExternalUiClientExceptionErrorV1Model'
description: Failure context when vendor onboarding fails.
nullable: true
ExternalSetCustomPropertyRequestV1Model:
type: object
properties:
groupId:
type: string
description: ID of the custom property group.
format: uuid
valueIds:
type: array
description: IDs of the selected custom property values. It behaves as a PUT operation, so if empty the existing ones will be effectively deleted.
items:
type: string
description: IDs of the selected custom property values. It behaves as a PUT operation, so if empty the existing ones will be effectively deleted.
format: uuid
inlineValues:
type: array
description: Inline custom property values (used for TEXT/NUMERIC/DATE/etc. groups). It behaves as a PUT operation, so if empty or null the existing ones will be effectively deleted.
nullable: true
items:
type: string
description: Inline custom property values (used for TEXT/NUMERIC/DATE/etc. groups). It behaves as a PUT operation, so if empty or null the existing ones will be effectively deleted.
nullable: true
description: List of custom properties to set on the vendor. Replaces the existing set.
nullable: true
ExternalCustomPropertyV1Model:
type: object
properties:
groupId:
type: string
description: ID of the custom property group
format: uuid
groupInternalName:
type: string
description: Internal name of the custom property group
values:
type: array
description: List of values. Note that this will be a single value unless the group input type supports multiple values
items:
$ref: '#/components/schemas/ExternalCustomPropertyValueV1Model'
description: Custom properties set on the vendor.
nullable: true
securitySchemes:
apiKeyAuth:
type: apiKey
description: Basic authentication header of the form **Basic** **<api_key>**, where **<api_key>** is your api key.
name: Authorization
in: header
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT