Phasio Customer Order Controller API
Endpoints for managing customer manufacturing orders
Endpoints for managing customer manufacturing orders
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/phasio-customer-order-controller-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Phasio Activity Internal Customer 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: Customer Order Controller
description: Endpoints for managing customer manufacturing orders
paths:
/api/customer/v1/order/{orderId}/purchase-order-pdf:
put:
tags:
- Customer Order Controller
summary: Upload purchase order PDF
description: 'Uploads a PDF document as a purchase order for an order. DEPRECATED: Use the confirmPurchaseOrderPayment endpoint instead, which confirms payment and uploads the PDF in a single call.'
operationId: uploadPurchaseOrderPDF
parameters:
- name: orderId
in: path
description: ID of the order
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
type: object
properties:
file:
type: string
format: binary
description: Purchase order PDF file
required:
- file
responses:
'204':
description: PDF successfully uploaded
'400':
description: Invalid order ID or upload failed
'401':
description: Unauthorized - missing or invalid authentication
deprecated: true
/api/customer/v1/order:
get:
tags:
- Customer Order Controller
summary: Get all orders
description: Retrieves all orders for the current customer organization
operationId: get_11
responses:
'200':
description: Successfully retrieved orders
content:
application/json:
schema:
type: string
'401':
description: Unauthorized - missing or invalid authentication
post:
tags:
- Customer Order Controller
summary: Create order
description: Creates a new manufacturing order
operationId: create_20
parameters:
- name: threadId
in: query
description: Thread ID the order belongs to
required: true
schema:
type: integer
format: int64
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
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/payment:
post:
tags:
- Customer Order Controller
summary: Create payment for order
description: Initiates a payment transaction for the specified order
operationId: createPayment_1
parameters:
- name: orderId
in: path
description: ID of the order to create payment for
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Payment successfully initiated
content:
application/json:
schema:
$ref: '#/components/schemas/CreatedPaymentDto'
'400':
description: Invalid order ID or payment setup failed
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/shipment:
patch:
tags:
- Customer Order Controller
summary: Update order shipment
description: Updates the shipping information for an order
operationId: updateShipment_1
parameters:
- name: orderId
in: path
description: ID of the order
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
description: Shipment information
oneOf:
- $ref: '#/components/schemas/CarrierAccountShipmentDto'
- $ref: '#/components/schemas/FixedPriceShipmentDto'
- $ref: '#/components/schemas/SelfCollectionShipmentDto'
required: true
responses:
'200':
description: Shipment successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/ShipmentDto'
'400':
description: Invalid order ID or shipment data
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/payment/purchase-order:
patch:
tags:
- Customer Order Controller
summary: Pay by purchase order
description: Confirms payment for an order when paying by purchase order, or updates an existing purchase order. Accepts PO number, message, and optional PDF file.
operationId: confirmPurchaseOrderPayment
parameters:
- name: orderId
in: path
description: ID of the order to confirm payment for
required: true
schema:
type: integer
format: int64
- name: purchaseOrderNumber
in: query
description: Purchase order number
required: false
schema:
type: string
- name: message
in: query
description: Optional message from customer
required: false
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Purchase order PDF file
responses:
'200':
description: Purchase order payment successfully confirmed or updated
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'400':
description: Invalid order ID or payment confirmation failed
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/payment/invoice:
patch:
tags:
- Customer Order Controller
summary: Confirm invoice payment
description: Confirms payment for an order when paying by invoice (for German manufacturers)
operationId: confirmInvoicePayment
parameters:
- name: orderId
in: path
description: ID of the order to confirm payment for
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Payment successfully confirmed
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'400':
description: Invalid order ID, invoice payment not enabled, or payment confirmation failed
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/discount/{discountId}/apply:
patch:
tags:
- Customer Order Controller
summary: Apply discount to order
description: Applies a specific discount to an order
operationId: applyDiscount_1
parameters:
- name: orderId
in: path
description: ID of the order
required: true
schema:
type: integer
format: int64
- name: discountId
in: path
description: ID of the discount to apply
required: true
schema:
type: integer
format: int64
responses:
'204':
description: Discount successfully applied
'400':
description: Invalid order ID, discount ID, or discount cannot be applied
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/discount/remove:
patch:
tags:
- Customer Order Controller
summary: Remove discount from order
description: Removes any applied discount from an order
operationId: removeDiscount_1
parameters:
- name: orderId
in: path
description: ID of the order
required: true
schema:
type: integer
format: int64
responses:
'204':
description: Discount successfully removed
'400':
description: Invalid order ID or discount removal failed
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}/awaiting-status:
patch:
tags:
- Customer Order Controller
summary: Update order awaiting status
description: Updates the awaiting status of an order, such as confirming or rejecting a quotation
operationId: updateAwaitingStatus_1
parameters:
- name: orderId
in: path
description: ID of the order to update
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAwaitingStatusDto'
required: true
responses:
'200':
description: Order status successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'400':
description: Invalid order ID or status update failed
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/{orderId}:
get:
tags:
- Customer Order Controller
summary: Get order by ID
description: Retrieves a specific order by its unique identifier
operationId: getById_12
parameters:
- name: orderId
in: path
description: ID of the order to retrieve
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Successfully retrieved order
content:
application/json:
schema:
$ref: '#/components/schemas/OrderDto'
'401':
description: Unauthorized - missing or invalid authentication
'404':
description: Order not found
/api/customer/v1/order/{orderId}/quote:
get:
tags:
- Customer Order Controller
summary: Get order quote
description: Retrieves a detailed quote for an existing order
operationId: getOrderQuote
parameters:
- name: orderId
in: path
description: ID of the order to get a quote for
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Order quote successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/QuoteDto'
'400':
description: Not found - Order does not exist
'401':
description: Unauthorized - Missing or invalid authentication
/api/customer/v1/order/{orderId}/purchasability:
get:
tags:
- Customer Order Controller
summary: Validate order purchasability
description: Checks if an order can be purchased (all parts manufacturable, etc.)
operationId: validateOrderPurchasability_1
parameters:
- name: orderId
in: path
description: ID of the order to validate
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Purchasability validation completed
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPurchasabilityDto'
'400':
description: Invalid order ID
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/project/{projectId}:
get:
tags:
- Customer Order Controller
summary: Get orders by project
description: Retrieves all orders associated with a specific project or thread
operationId: getByProject
parameters:
- name: projectId
in: path
description: ID of the project/thread
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Successfully retrieved orders
content:
application/json:
schema:
type: string
'401':
description: Unauthorized - missing or invalid authentication
/api/customer/v1/order/count:
get:
tags:
- Customer Order Controller
summary: Get order count
description: Returns the count of orders matching the specified filters
operationId: getCount_2
parameters:
- name: paymentStatus
in: query
description: Filter by payment status
required: false
schema:
type: array
items:
type: string
- name: awaitingStatus
in: query
description: Filter by awaiting status
required: false
schema:
type: string
- name: searchQuery
in: query
description: Search query for order details
required: false
schema:
type: string
- name: orderSource
in: query
description: Filter by order source
required: false
schema:
type: string
- name: showArchived
in: query
description: Include archived orders
required: false
schema:
type: boolean
- name: affiliate
in: query
description: Filter by affiliate
required: false
schema:
type: string
- name: threadId
in: query
description: Filter by thread ID
required: false
schema:
type: integer
format: int64
responses:
'200':
description: Successfully retrieved order count
content:
application/json:
schema:
type: integer
format: int64
'401':
description: Unauthorized - missing or invalid authentication
components:
schemas:
CreateHourlyExpenseDto:
allOf:
- $ref: '#/components/schemas/CreateExpenseDto'
- type: object
properties:
hours:
type: number
rate:
type: number
required:
- hours
- name
- rate
- type
CreateRequisitionConstraintDto:
type: object
discriminator:
propertyName: constraintType
properties:
constraintType:
type: string
required:
- constraintType
CreateGenericDiscountDto:
allOf:
- $ref: '#/components/schemas/CreateDiscountDto'
- type: object
properties:
code:
type: string
startTime:
type: string
format: date-time
endTime:
type: string
format: date-time
genericDiscountNoe:
type: string
required:
- code
- discountType
- endTime
- genericDiscountNoe
- percentage
- startTime
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
TrackingDto:
type: object
properties:
id:
type: integer
format: int64
shipmentId:
type: integer
format: int64
trackingNumber:
type: string
required:
- id
- shipmentId
- trackingNumber
CarrierAccountShipmentDto:
allOf:
- $ref: '#/components/schemas/ShipmentDto'
- type: object
properties:
toAddressDto:
$ref: '#/components/schemas/CustomerAddressDto'
carrierAccountProvider:
type: string
carrierAccountServiceType:
type: string
carrierAccountServiceName:
type: string
estimatedRate:
type: number
finalRatePaid:
type: number
trackingDto:
$ref: '#/components/schemas/TrackingDto'
required:
- shippingMode
TaxQuoteComponentDto:
type: object
properties:
shortName:
type: string
longName:
type: string
percentage:
type: number
amount:
type: number
required:
- amount
- longName
- percentage
- shortName
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
OrderTaxComponentDto:
type: object
properties:
id:
type: string
format: uuid
shortName:
type: string
longName:
type: string
percentage:
type: number
amount:
type: number
localAmount:
type: number
required:
- amount
- id
- localAmount
- longName
- percentage
- shortName
ShipmentDto:
type: object
discriminator:
propertyName: shippingMode
properties:
id:
type: integer
format: int64
shippingMode:
type: string
enum:
- SELF_COLLECTION
- FIXED_PRICE
- CARRIER_ACCOUNT
shippingMethodId:
type: integer
format: int64
rateId:
type: string
toAddressId:
type: integer
format: int64
status:
type: string
dispatchDate:
type: string
format: date
required:
- shippingMode
PartManufacturabilityWarningsDto:
type: object
properties:
hasOptimalWallThickness:
type: boolean
required:
- hasOptimalWallThickness
CreateRequisitionDto:
type: object
properties:
requisitionIntentId:
type: string
format: uuid
partRevisionId:
type: string
format: uuid
units:
type: string
enum:
- CENTIMETERS
- MILLIMETERS
- METRES
- INCHES
- FEET
quantity:
type: integer
materialId:
type: integer
format: int64
processPricesId:
type: string
format: uuid
infillId:
type: integer
format: int64
precisionId:
type: integer
format: int64
colorId:
type: integer
format: int64
postProcessing:
type: array
items:
$ref: '#/components/schemas/CreateRequisitionPostProcessingDto'
uniqueItems: true
variables:
type: object
additionalProperties:
type: number
manualPrice:
type: number
leadTimeId:
type: string
format: uuid
comments:
type: array
items:
oneOf:
- $ref: '#/components/schemas/CreateLocationCommentDto'
- $ref: '#/components/schemas/CreateRequisitionCommentDto'
name:
type: string
constraints:
type: array
items:
oneOf:
- $ref: '#/components/schemas/CreateFixedOrientationRequisitionConstraintDto'
required:
- comments
- constraints
- materialId
- partRevisionId
- postProcessing
- processPricesId
- quantity
- requisitionIntentId
- units
- variables
QuoteDto:
type: object
properties:
currency:
type: string
price:
type: number
subtotal:
type: number
tax:
$ref: '#/components/schemas/TaxQuoteDto'
discount:
type: number
shipment:
type: number
topUp:
type: number
lineItems:
type: array
items:
$ref: '#/components/schemas/QuoteLineItemDto'
requisitions:
type: object
additionalProperties:
$ref: '#/components/schemas/RequisitionQuoteDto'
dispatchDate:
type: string
format: date
required:
- currency
- discount
- lineItems
- price
- requisitions
- shipment
- subtotal
- tax
CreatedPaymentDto:
type: object
properties:
id:
type: string
clientSecret:
type: string
paymentPrincipal:
type: string
merchantAccount:
type: string
provider:
type: string
finalPrice:
type: number
tax:
type: number
currency:
type: string
woocommerceOrderKey:
type: string
flywireGatewayUrl:
type: string
stripePaymentIntentStatus:
type: string
required:
- currency
- finalPrice
- id
- provider
- tax
RequisitionQuoteDto:
type: object
properties:
partRevisionId:
type: string
format: uuid
quantity:
type: integer
price:
type: number
manufacturingPrice:
type: number
postProcessingPrice:
type: number
unitPrice:
type: number
postProcessingOptions:
type: array
items:
$ref: '#/components/schemas/PostProcessingOptionQuoteDto'
required:
- manufacturingPrice
- partRevisionId
- postProcessingOptions
- postProcessingPrice
- price
- quantity
- unitPrice
OrderTaxDto:
type: object
properties:
id:
type: string
format: uuid
components:
type: array
items:
$ref: '#/components/schemas/OrderTaxComponentDto'
totalPrice:
type: number
localTotalPrice:
type: number
isTaxAppliedToShipping:
type: boolean
isTaxExempted:
type: boolean
taxNumber:
type: string
required:
- components
- id
- isTaxAppliedToShipping
- isTaxExempted
- localTotalPrice
- totalPrice
QuoteLineItemDto:
type: object
properties:
name:
type: string
price:
type: number
required:
- name
- price
CreateRequisitionCommentDto:
allOf:
- $ref: '#/components/schemas/CreateOrderCommentDto'
required:
- conversationType
- message
RequisitionDto:
type: object
properties:
id:
type: integer
format: int64
orderId:
type: integer
format: int64
partRevisionId:
type: string
format: uuid
units:
type: string
enum:
- CENTIMETERS
- MILLIMETERS
- METRES
- INCHES
- FEET
name:
type: string
quantity:
type: integer
colorId:
type: integer
format: int64
precisionId:
type: integer
format: int64
materialId:
type: integer
format: int64
processPricesId:
type: string
format: uuid
infillId:
type: integer
format: int64
pricePaid:
type: number
postProcessingIds:
type: array
items:
type: integer
format: int64
watertight:
type: boolean
createdAt:
type: string
format: date-time
lastUpdated:
type: string
format: date-time
leadTimeId:
type: string
format: uuid
constraints:
type: array
items:
oneOf:
- $ref: '#/components/schemas/ConstraintDto'
- $ref: '#/components/schemas/FixedOrientationConstraintDto'
required:
- constraints
- createdAt
- id
- lastUpdated
- materialId
- name
- orderId
- partRevisionId
- postProcessingIds
- processPricesId
- quantity
- units
- watertight
CreateCustomerDiscountDto:
allOf:
- $ref: '#/components/schemas/CreateDiscountDto'
- type: object
properties:
code:
type: string
startTime:
type: string
format: date-time
endTime:
type: string
format: date-time
customerId:
type: integer
format: int64
required:
- code
- customerId
- discountType
- endTime
- percentage
- startTime
OrderDto:
type: object
properties:
id:
type: integer
format: int64
quoteNumber:
type: string
orderNumber:
type: string
price:
type: number
currency:
type: string
paymentStatus:
type: string
isArchived:
type: boolean
isInProject:
type: boolean
operatorNote:
type: string
createdAt:
type: string
format: date-time
lastUpdated:
type: string
format: date-time
accountingSystemEstimateId:
type: string
accountingSystemEstimateNumber:
type: string
accountingSystemConfirmationId:
type: string
accountingSystemConfirmationNumber:
type: string
accountingSystemInvoiceId:
type: string
accountingSystemInvoiceNumber:
type: string
requisitionIds:
type: array
items:
type: integer
format: int64
assemblyRequisitions:
type: array
items:
$ref: '#/components/schemas/AssemblyRequisitionDto'
source:
type: string
awaitingStatus:
type: string
shipment:
oneOf:
- $ref: '#/components/schemas/CarrierAccountShipmentDto'
- $ref: '#/components/schemas/FixedPriceShipmentDto'
- $ref: '#/components/schemas/SelfCollectionShipmentDto'
discount:
$ref: '#/components/schemas/DiscountDto'
threadId:
type: integer
format: int64
isVoided:
type: boolean
kanbanColumn:
$ref: '#/components/schemas/KanbanColumnDto'
expenses:
type: array
items:
$ref: '#/components/schemas/ExpenseDto'
tax:
$ref: '#/components/schemas/OrderTaxDto'
purchaseOrderNumber:
type: string
customReference:
type: string
bypassPurchasabilityChecks:
type: boolean
subscribedCustomerIds:
type: array
items:
type: integer
format: int64
uniqueItems: true
billingAddress:
$ref: '#/components/schemas/CustomerAddressDto'
required:
- assemblyRequisitions
- awaitingStatus
- bypassPurchasabilityChecks
- createdAt
- currency
- expenses
- id
- isArchived
- isInProject
- isVoided
- lastUpdated
- paymentStatus
- requisitionIds
- source
- subscribedCustomerIds
- threadId
CreateFixedExpenseDto:
allOf:
- $ref: '#/components/schemas/CreateExpenseDto'
- type: object
properties:
quantity:
type: number
unitPrice:
type: number
costForOperator:
type: number
required:
- costForOperator
- name
- quantity
- type
- unitPrice
CreateOrderResponseDto:
type: object
properties:
order:
$ref: '#/components/schemas/OrderDto'
requisitions:
type: object
additionalProperties:
$ref: '#/components/schemas/RequisitionDto'
required:
- requisitions
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
CreateRequisitionPostProcessingDto:
type: object
properties:
postProcessingId:
type: integer
format: int64
variables:
type: object
additionalProperties:
type: number
required:
- postProcessingId
- variables
OrderPurchasabilityDto:
type: object
properties:
parts:
type: object
additionalProperties:
$ref: '#/components/schemas/PartManufacturabilityDto'
withinBoundingBoxLimit:
type: boolean
withinMaximumOrderValue:
type: boolean
isMaterialPurchasable:
type: boolean
isPostProcessingPurchasable:
type: boolean
isPriceReviewRequired:
type: boolean
canBePurchased:
type: boolean
required:
- canBePurchased
- isMaterialPurchasable
- isPostProcessingPurchasable
- isPriceReviewRequired
- parts
- withinBoundingBoxLimit
- withinMaximumOrderValue
CustomerAddressDto:
type: object
properties:
addressId:
type: integer
format: int64
isBillingAddress:
type: boolean
isShippingAddress:
type: boolean
street1:
type: string
street2:
type: string
city:
type: string
state:
type: string
country:
type: string
countryAlpha2Code:
type: string
countryAlpha3Code:
type: string
jurisdictionIsoCode:
type: string
zip:
type: string
name:
type: string
company:
type: string
phone:
type: string
email:
type: string
residential:
type: boolean
taxId:
type: string
ConstraintDto:
type: object
discriminator:
propertyName: const
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/phasio/refs/heads/main/openapi/phasio-customer-order-controller-api-openapi.yml