Phasio Customer Order Controller API

Endpoints for managing customer manufacturing orders

OpenAPI Specification

phasio-customer-order-controller-api-openapi.yml Raw ↑
openapi: 3.1.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:
    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
    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
    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
    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
    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
    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
    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
    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
    PartManufacturabilityWarningsDto:
      type: object
      properties:
        hasOptimalWallThickness:
          type: boolean
      required:
      - hasOptimalWallThickness
    CreateRequisitionPostProcessingDto:
      type: object
      properties:
        postProcessingId:
          type: integer
          format: int64
        variables:
          type: object
          additionalProperties:
            type: number
      required:
      - postProcessingId
      - variables
    UpdateAwaitingStatusDto:
      type: object
      description: Status update information
      properties:
        awaitingStatus:
          type: string
          enum:
          - OPERATOR_CHAT_WITH_US
          - CUSTOMER_INVOICE_SENT
          - CUSTOMER_ACCEPTED
          - CUSTOMER_OFFLINE_PAYMENT
        purchaseOrderNumber:
          type: string
        message:
          type: string
      required:
      - awaitingStatus
    CreateExpenseDto:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        type:
          type: string
      required:
      - name
      - type
    CreateOrderResponseDto:
      type: object
      properties:
        order:
          $ref: '#/components/schemas/OrderDto'
        requisitions:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/RequisitionDto'
      required:
      - requisitions
    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
    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
      - totalPric

# --- 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