Phasio Manufacturer Order Controller API
API for managing manufacturing orders and their lifecycle
API for managing manufacturing orders and their lifecycle
openapi: 3.1.0
info:
title: Phasio Activity Internal Manufacturer Order Controller API
description: This is the API documentation for the Phasio application.
version: '1.0'
servers:
- url: https://m-api.eu.phas.io
description: Generated server url
security:
- Phasio API Bearer Token: []
tags:
- name: Manufacturer Order Controller
description: API for managing manufacturing orders and their lifecycle
paths:
/api/manufacturer/v1/order/{id}/edit:
put:
tags:
- Manufacturer Order Controller
summary: Edit a confirmed or paid order
description: Edits an order in-place (for CONFIRMED/PAID orders). Unlike the PATCH endpoint which voids and replaces quotes, this preserves the order ID and edits requisitions in-place.
operationId: editOrder
parameters:
- name: id
in: path
description: ID of the order to edit
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EditOrderDto'
required: true
responses:
'200':
description: Order successfully edited
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderResponseDto'
'400':
description: Invalid order data or edit failed
'401':
description: Unauthorized - missing operator context
'404':
description: Order not found
/api/manufacturer/v1/order:
get:
tags:
- Manufacturer Order Controller
summary: Get orders with filtering
description: Retrieves a paginated list of orders with optional filtering and search
operationId: get_7
parameters:
- name: filter
in: query
description: RSQL query string for filtering (e.g. paymentStatus=in=(PAID,UNPAID);price>10)
required: true
schema:
type: string
- name: page
in: query
description: Zero-based page index (0..N)
required: false
schema:
type: integer
default: 0
minimum: 0
- name: size
in: query
description: The size of the page to be returned
required: false
schema:
type: integer
default: 20
minimum: 1
- name: sort
in: query
description: 'Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.'
required: false
schema:
type: array
default:
- createdAt,DESC
items:
type: string
- name: search
in: query
description: Optional search term
required: false
schema:
type: string
responses:
'200':
description: Successfully retrieved orders
content:
application/json:
schema:
$ref: '#/components/schemas/Paginated'
'400':
description: Invalid filter specification
post:
tags:
- Manufacturer Order Controller
summary: Create a new order
description: Creates a new manufacturing order with the provided details
operationId: create_10
parameters:
- name: threadId
in: query
description: ID of the thread to associate with the order
required: false
schema:
type: integer
format: int64
- name: customerOrganisationId
in: query
description: ID of the customer organisation to associated with the order
required: true
schema:
type: integer
format: int64
- name: draft
in: query
description: Whether to save the quote as a draft. Draft quotes are internal and not visible to customers.
required: false
schema:
type: boolean
default: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderDto'
required: true
responses:
'200':
description: Order successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderResponseDto'
'400':
description: Invalid order data or creation failed
'401':
description: Unauthorized - missing operator context
/api/manufacturer/v1/order/{id}/resend-estimate:
post:
tags:
- Manufacturer Order Controller
operationId: resendEstimate
parameters:
- name: id
in: path
description: ID of the order to resend estimate for
required: true
schema:
type: integer
format: int64
example: 1
- name: includePaymentLink
in: query
description: Whether to include payment link in the estimate
required: false
schema:
type: boolean
default: false
example: true
responses:
'200':
description: OK
content:
'*/*':
schema:
type: string
/api/manufacturer/v1/order/{id}/payment:
post:
tags:
- Manufacturer Order Controller
summary: Create payment for an order
description: Initiates payment processing for the specified order
operationId: createPayment
parameters:
- name: id
in: path
description: ID of the order to create payment for
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Payment successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/CreatedPaymentDto'
'400':
description: Failed to create payment
/api/manufacturer/v1/order/{id}/convert:
post:
tags:
- Manufacturer Order Controller
summary: Convert a draft quote into an open quote
description: 'Converts a draft quote into an open quote. This is a one-way transition: the order must currently be a draft. On conversion the customer can view the quote, the customer is notified, and any accounting estimate is moved into the open state.'
operationId: convertDraftToOpen
parameters:
- name: id
in: path
description: ID of the draft quote to convert
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Draft successfully converted to an open quote
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'400':
description: Order is not a draft or conversion failed
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/confirmation:
post:
tags:
- Manufacturer Order Controller
operationId: sendOrderConfirmation
parameters:
- name: id
in: path
description: ID of the order to resend order confirmation for
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: OK
content:
'*/*':
schema:
type: string
/api/manufacturer/v1/order/{id}/clone:
post:
tags:
- Manufacturer Order Controller
summary: Clone an order
description: Creates a new order as a copy of an existing one
operationId: clone
parameters:
- name: id
in: path
description: ID of the order to clone
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Order successfully cloned
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'404':
description: Original order not found
/api/manufacturer/v1/order/{id}:
get:
tags:
- Manufacturer Order Controller
summary: Get order by ID
description: Retrieves a specific order by its ID
operationId: getById_2
parameters:
- name: id
in: path
description: ID of the order to retrieve
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Successfully retrieved order
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'404':
description: Order not found
delete:
tags:
- Manufacturer Order Controller
summary: Delete an order
description: Deletes an order by its ID
operationId: delete_9
parameters:
- name: id
in: path
description: ID of the order to delete
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Order successfully deleted
content:
text/plain: {}
'400':
description: Failed to delete order
content:
text/plain: {}
patch:
tags:
- Manufacturer Order Controller
summary: Update an existing order
description: Updates an order with the provided details
operationId: update_13
parameters:
- name: id
in: path
description: ID of the order to update
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderDto'
required: true
responses:
'200':
description: Order successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderResponseDto'
'400':
description: Invalid order data or update failed
'401':
description: Unauthorized - missing operator context
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/unarchive:
patch:
tags:
- Manufacturer Order Controller
summary: Unarchive an order
description: Removes archived status from an order
operationId: unarchive
parameters:
- name: id
in: path
description: ID of the order to unarchive
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Order successfully unarchived
content:
text/plain: {}
'400':
description: Failed to unarchive order
content:
text/plain: {}
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/shipment:
patch:
tags:
- Manufacturer Order Controller
summary: Update order shipment
description: Updates shipment information for an order
operationId: updateShipment
parameters:
- name: id
in: path
description: ID of the order to update shipment for
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrderShipmentDto'
required: true
responses:
'200':
description: Shipment successfully updated
content:
text/plain: {}
'400':
description: Failed to update shipment
'401':
description: Unauthorized - missing operator context
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/purchase-order:
patch:
tags:
- Manufacturer Order Controller
summary: Update purchase order
description: Update an order's purchase order
operationId: updatePurchaseOrder
parameters:
- name: id
in: path
description: ID of the order to update purchase order for
required: true
schema:
type: integer
format: int64
example: 1
- name: purchaseOrderNumber
in: query
description: Purchase order details
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
file:
type: string
format: binary
description: Purchase order PDF file
responses:
'200':
description: Purchase order updated successfully
content:
text/plain: {}
'400':
description: Failed to update purchase order
content:
text/plain: {}
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/payment/confirm:
patch:
tags:
- Manufacturer Order Controller
summary: Confirm order payment
description: Marks an order's payment as confirmed
operationId: markPaymentConfirmed
parameters:
- name: id
in: path
description: ID of the order to confirm payment for
required: true
schema:
type: integer
format: int64
example: 1
- name: purchaseOrderNumber
in: query
description: Purchase order number
required: false
schema:
type: string
- name: message
in: query
description: Message
required: false
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
file:
type: string
format: binary
description: Purchase order PDF file
responses:
'200':
description: Payment successfully confirmed
content:
text/plain: {}
'400':
description: Failed to confirm payment
content:
text/plain: {}
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/owner:
patch:
tags:
- Manufacturer Order Controller
summary: Update order owner
description: Reassigns the order owner. The new owner must be a user belonging to the same operator team as the order. Pass a null/blank owner to clear the assignment.
operationId: updateOwner
parameters:
- name: id
in: path
description: ID of the order to update
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrderOwnerDto'
required: true
responses:
'200':
description: Owner successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'400':
description: Owner does not belong to this operator
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/kanban-column:
patch:
tags:
- Manufacturer Order Controller
summary: Update order kanban column
description: Moves an order to a different kanban column. Optional skipAutomationTypes field suppresses the named column automations for this request only.
operationId: updateKanbanColumn
parameters:
- name: id
in: path
description: ID of the order to update
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrderKanbanColumnDto'
required: true
responses:
'204':
description: Kanban column successfully updated
'400':
description: Failed to update kanban column
'404':
description: Order or kanban column not found
/api/manufacturer/v1/order/{id}/discount:
delete:
tags:
- Manufacturer Order Controller
summary: Remove discount from an order
description: Removes any applied discount from an order
operationId: removeDiscount
parameters:
- name: id
in: path
description: ID of the order to remove discount from
required: true
schema:
type: integer
format: int64
example: 1
responses:
'204':
description: Discount successfully removed
'400':
description: Failed to remove discount
'404':
description: Order not found
patch:
tags:
- Manufacturer Order Controller
summary: Apply discount to an order
description: Applies a specified discount to an order
operationId: applyDiscount
parameters:
- name: id
in: path
description: ID of the order to apply discount to
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrderDiscountDto'
required: true
responses:
'204':
description: Discount successfully applied
'400':
description: Failed to apply discount
'404':
description: Order or discount not found
/api/manufacturer/v1/order/{id}/custom-reference:
patch:
tags:
- Manufacturer Order Controller
summary: Update order custom reference
description: Updates the custom reference for an order. This can be done on any order status.
operationId: updateCustomReference
parameters:
- name: id
in: path
description: ID of the order to update
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomReferenceDto'
required: true
responses:
'200':
description: Custom reference successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/bypass-purchasability-check:
patch:
tags:
- Manufacturer Order Controller
summary: Bypass purchasability checks for an order
description: Marks an order as bypassing purchasability validation
operationId: bypassPurchasabilityChecks
parameters:
- name: id
in: path
description: ID of the order to bypass checks for
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Purchasability checks successfully bypassed
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPurchasabilityDto'
'400':
description: Failed to bypass purchasability checks
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/awaiting-status:
patch:
tags:
- Manufacturer Order Controller
summary: Update order awaiting status
description: Updates the awaiting status of an order with additional details
operationId: updateAwaitingStatus
parameters:
- name: id
in: path
description: ID of the order to update
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAwaitingStatusDto'
required: true
responses:
'200':
description: Awaiting status successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'400':
description: Failed to update awaiting status
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/archive:
patch:
tags:
- Manufacturer Order Controller
summary: Archive an order
description: Marks an order as archived with an optional message
operationId: archive
parameters:
- name: id
in: path
description: ID of the order to archive
required: true
schema:
type: integer
format: int64
example: 1
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ArchiveOrderDto'
required: true
responses:
'200':
description: Order successfully archived
content:
text/plain: {}
'400':
description: Failed to archive order
content:
text/plain: {}
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/purchasability:
get:
tags:
- Manufacturer Order Controller
summary: Validate order purchasability
description: Checks if an order can be purchased by validating its details
operationId: validateOrderPurchasability
parameters:
- name: id
in: path
description: ID of the order to validate
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Purchasability validation successful
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPurchasabilityDto'
'400':
description: Failed to validate purchasability
'404':
description: Order not found
/api/manufacturer/v1/order/{id}/manufacturability:
get:
tags:
- Manufacturer Order Controller
summary: Validate part manufacturability for an order
description: Checks if all parts in an order can be manufactured with current setup
operationId: validatePartManufacturabilityForOrder
parameters:
- name: id
in: path
description: ID of the order to validate parts for
required: true
schema:
type: integer
format: int64
example: 1
responses:
'200':
description: Manufacturability validation completed
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PartManufacturabilityDto'
'404':
description: Order not found
components:
schemas:
AssemblyRequisitionDto:
type: object
properties:
id:
type: integer
format: int64
assemblyId:
type: string
format: uuid
assemblyName:
type: string
quantity:
type: integer
assemblyPricePaid:
type: number
totalPricePaid:
type: number
partCount:
type: integer
format: int32
createdAt:
type: string
format: date-time
required:
- assemblyId
- assemblyName
- assemblyPricePaid
- id
- partCount
- quantity
- totalPricePaid
FixedOrientationConstraintDto:
allOf:
- $ref: '#/components/schemas/ConstraintDto'
- type: object
properties:
rotationMatrix:
type: array
items:
type: array
items:
type: number
required:
- constraintType
- createdAt
- id
- partSpecificationId
- rotationMatrix
- updatedAt
FixedPriceShipmentDto:
allOf:
- $ref: '#/components/schemas/ShipmentDto'
- type: object
properties:
rate:
type: number
toAddressDto:
$ref: '#/components/schemas/CustomerAddressDto'
trackingDto:
$ref: '#/components/schemas/TrackingDto'
name:
type: string
required:
- shippingMode
DiscountDto:
type: object
properties:
discountId:
type: integer
format: int64
discountType:
type: string
code:
type: string
percentage:
type: number
startTime:
type: string
format: date-time
endTime:
type: string
format: date-time
required:
- discountId
- discountType
- endTime
- percentage
- startTime
SelfCollectionShipmentDto:
allOf:
- $ref: '#/components/schemas/ShipmentDto'
- type: object
properties:
contactName:
type: string
contactPhoneNumber:
type: string
rate:
type: number
name:
type: string
required:
- shippingMode
ExpenseDto:
type: object
properties:
expenseId:
type: integer
format: int64
name:
type: string
description:
type: string
type:
type: string
required:
- expenseId
- name
- type
CreateDiscountDto:
type: object
properties:
discountType:
type: string
percentage:
type: number
required:
- discountType
- percentage
CreateOrderCommentDto:
type: object
discriminator:
propertyName: conversationType
properties:
message:
type: string
customerId:
type: integer
format: int64
actorType:
type: string
conversationType:
type: string
required:
- conversationType
- message
ConstraintDto:
type: object
discriminator:
propertyName: constraintType
properties:
id:
type: string
format: uuid
constraintType:
type: string
partSpecificationId:
type: string
format: uuid
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- constraintType
- createdAt
- id
- partSpecificationId
- updatedAt
CreateInstantDiscountDto:
allOf:
- $ref: '#/components/schemas/CreateDiscountDto'
- type: object
properties:
note:
type: string
required:
- discountType
- note
- percentage
KanbanColumnDto:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
sequence:
type: integer
format: int32
orderStatus:
type: string
automations:
type: array
items:
$ref: '#/components/schemas/KanbanColumnAutomationDto'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- automations
- createdAt
- id
- name
- orderStatus
- sequence
- updatedAt
EditOrderDto:
type: object
description: Edit order details
properties:
existingRequisitions:
type: object
additionalProperties:
$ref: '#/components/schemas/CreateRequisitionDto'
newRequisitions:
type: object
additionalProperties:
$ref: '#/components/schemas/CreateRequisitionDto'
expenses:
type: array
items:
oneOf:
- $ref: '#/components/schemas/CreateFixedExpenseDto'
- $ref: '#/components/schemas/CreateHourlyExpenseDto'
currency:
type: string
enum:
- USD
- SGD
- EUR
- INR
- JPY
- AUD
- GBP
- NZD
- MYR
- CAD
- CHF
- DKK
- SEK
- MXN
- ZAR
- UAH
- NOK
- PHP
- TRY
discountId:
type: integer
format: int64
operatorNote:
type: string
discount:
oneOf:
- $ref: '#/components/schemas/CreateCustomerDiscountDto'
- $ref: '#/components/schemas/CreateGenericDiscountDto'
- $ref: '#/components/schemas/CreateInstantDiscountDto'
shipment:
oneOf:
- $ref: '#/components/schemas/CarrierAccountShipmentDto'
- $ref: '#/components/schemas/FixedPriceShipmentDto'
- $ref: '#/components/schemas/SelfCollectionShipmentDto'
billingAddressId:
type: integer
format: int64
ccCustomerIds:
type: array
items:
type: integer
format: int64
uniqueItems: true
required:
- ccCustomerIds
- currency
- existingRequisitions
- expenses
- newRequisitions
CreateHourlyExpenseDto:
allOf:
- $ref: '#/components/schemas/CreateExpenseDto'
- type: object
properties:
hours:
type: number
rate:
type: number
required:
- hours
- name
- rate
- type
KanbanColumnAutomationDto:
type: object
properties:
id:
type: string
format: uuid
kanbanColumnId:
type: string
format: uuid
type:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- createdAt
- id
- kanbanColumnId
- type
- updatedAt
TrackingDto:
type: object
properties:
id:
type: integer
format: int64
shipmentId:
type: integer
format: int64
trackingNumber:
type: string
required:
- id
- shipmentId
- trackingNumber
PartManufacturabilityLimitsDto:
type: object
properties:
withinBoundingBoxLimit:
type: boolean
withinWallThicknessLimit:
type: boolean
required:
- withinBoundingBoxLimit
- withinWallThicknessLimit
UpdateOrderOwnerDto:
type: object
properties:
owner:
type: string
CreateLocationCommentDto:
allOf:
- $ref: '#/components/schemas/CreateOrderCommentDto'
- type: object
properties:
locationX:
type: number
locationY:
type: number
locationZ:
type: number
cameraPositionX:
type: number
cameraPositionY:
type: number
cameraPositionZ:
type: number
cameraRotationX:
type: number
cameraRotationY:
type: number
cameraRotationZ:
type: number
required:
- cameraPositionX
- cameraPositionY
- cameraPositionZ
- cameraRotationX
- cameraRotationY
- cameraRotationZ
- conversationType
- locationX
- locationY
- locationZ
- message
CreateAssemblyRequisitionDto:
type: object
properties:
requisitionIntentId:
type: string
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/phasio/refs/heads/main/openapi/phasio-manufacturer-order-controller-api-openapi.yml