Phasio Manufacturer Order Controller API

API for managing manufacturing orders and their lifecycle

OpenAPI Specification

phasio-manufacturer-order-controller-api-openapi.yml Raw ↑
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