Phasio Manufacturer Quote Controller API
Endpoints for managing order quotes and pricing
Endpoints for managing order quotes and pricing
openapi: 3.1.0
info:
title: Phasio Activity Internal Manufacturer Quote 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 Quote Controller
description: Endpoints for managing order quotes and pricing
paths:
/api/manufacturer/v1/quote/pre-order:
post:
tags:
- Manufacturer Quote Controller
summary: Generate pre-order quote
description: Generates a preliminary quote for a potential order
operationId: generatePreOrderQuote
parameters:
- name: customerOrganisationId
in: query
description: Customer organisation to generate a quote for
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderDto'
required: true
responses:
'200':
description: Pre-order quote successfully generated
content:
application/json:
schema:
$ref: '#/components/schemas/QuoteDto'
'400':
description: Invalid order data or quote generation failed
'401':
description: Unauthorized - missing or invalid authentication
/api/manufacturer/v1/quote/order/{orderId}:
get:
tags:
- Manufacturer Quote Controller
summary: Generate order quote
description: Generates a detailed quote for an existing order
operationId: generateOrderQuote
parameters:
- name: orderId
in: path
description: ID of the order to generate a quote for
required: true
schema:
type: integer
format: int64
responses:
'200':
description: Quote successfully generated
content:
application/json:
schema:
$ref: '#/components/schemas/QuoteDto'
'400':
description: Invalid order ID or quote generation failed
'401':
description: Unauthorized - missing or invalid authentication
'404':
description: Order not found
components:
schemas:
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
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
SelfCollectionShipmentDto:
allOf:
- $ref: '#/components/schemas/ShipmentDto'
- type: object
properties:
contactName:
type: string
contactPhoneNumber:
type: string
rate:
type: number
name:
type: string
required:
- shippingMode
CreateOrderCommentDto:
type: object
discriminator:
propertyName: conversationType
properties:
message:
type: string
customerId:
type: integer
format: int64
actorType:
type: string
conversationType:
type: string
required:
- conversationType
- message
CreateDiscountDto:
type: object
properties:
discountType:
type: string
percentage:
type: number
required:
- discountType
- percentage
CreateInstantDiscountDto:
allOf:
- $ref: '#/components/schemas/CreateDiscountDto'
- type: object
properties:
note:
type: string
required:
- discountType
- note
- percentage
CreateHourlyExpenseDto:
allOf:
- $ref: '#/components/schemas/CreateExpenseDto'
- type: object
properties:
hours:
type: number
rate:
type: number
required:
- hours
- name
- rate
- type
TrackingDto:
type: object
properties:
id:
type: integer
format: int64
shipmentId:
type: integer
format: int64
trackingNumber:
type: string
required:
- id
- shipmentId
- trackingNumber
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
format: uuid
assemblyId:
type: string
format: uuid
quantity:
type: integer
required:
- assemblyId
- quantity
- requisitionIntentId
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
CreateOrderDto:
type: object
description: Updated order details
properties:
requisitions:
type: array
items:
$ref: '#/components/schemas/CreateRequisitionDto'
assemblyRequisitions:
type: array
items:
$ref: '#/components/schemas/CreateAssemblyRequisitionDto'
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
source:
type: string
discountId:
type: integer
format: int64
operatorNote:
type: string
isSilent:
type: boolean
affiliate:
type: string
paymentDueDate:
type: string
format: date-time
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
markPaymentConfirmed:
type: boolean
ccCustomerIds:
type: array
items:
type: integer
format: int64
uniqueItems: true
customReference:
type: string
required:
- assemblyRequisitions
- ccCustomerIds
- currency
- expenses
- markPaymentConfirmed
- requisitions
- source
TaxQuoteComponentDto:
type: object
properties:
shortName:
type: string
longName:
type: string
percentage:
type: number
amount:
type: number
required:
- amount
- 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
CreateRequisitionCommentDto:
allOf:
- $ref: '#/components/schemas/CreateOrderCommentDto'
required:
- conversationType
- message
CreateFixedOrientationRequisitionConstraintDto:
allOf:
- $ref: '#/components/schemas/CreateRequisitionConstraintDto'
- type: object
properties:
rotationMatrix:
type: array
items:
type: array
items:
type: number
maxItems: 3
minItems: 3
required:
- constraintType
- rotationMatrix
CreateRequisitionConstraintDto:
type: object
discriminator:
propertyName: constraintType
properties:
constraintType:
type: string
required:
- constraintType
CreateRequisitionPostProcessingDto:
type: object
properties:
postProcessingId:
type: integer
format: int64
variables:
type: object
additionalProperties:
type: number
required:
- postProcessingId
- variables
CreateExpenseDto:
type: object
properties:
name:
type: string
description:
type: string
type:
type: string
required:
- name
- type
QuoteLineItemDto:
type: object
properties:
name:
type: string
price:
type: number
required:
- name
- price
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
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
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
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
CreateFixedExpenseDto:
allOf:
- $ref: '#/components/schemas/CreateExpenseDto'
- type: object
properties:
quantity:
type: number
unitPrice:
type: number
costForOperator:
type: number
required:
- costForOperator
- name
- quantity
- type
- unitPrice
TaxQuoteDto:
type: object
properties:
components:
type: array
items:
$ref: '#/components/schemas/TaxQuoteComponentDto'
totalPrice:
type: number
totalPercentage:
type: number
isTaxAppliedToShipping:
type: boolean
isTaxExempted:
type: boolean
isTaxReverseCharged:
type: boolean
required:
- components
- isTaxAppliedToShipping
- isTaxExempted
- isTaxReverseCharged
- totalPercentage
- totalPrice
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
PostProcessingOptionQuoteDto:
type: object
properties:
id:
type: integer
format: int64
price:
type: number
required:
- id
- price
securitySchemes:
Phasio API Bearer Token:
type: http
name: Authorization
in: header
scheme: bearer
bearerFormat: JWT