Phasio Cart Resource API
Read storefront carts, a single cart, and a cart's pre-order (quote and purchasability).
Read storefront carts, a single cart, and a cart's pre-order (quote and purchasability).
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:phasio-cart-resource-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Phasio Cart Resource 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: cart-resource
paths:
/api/manufacturer/v1/cart:
get:
tags:
- cart-resource
summary: Get paginated carts with RSQL filtering
description: Retrieves paginated cart records for the current operator. Intended for cart analytics — typical use case is identifying high-value or anomalous quoting activity across customers. Supports RSQL filtering via `filter` and a free-text `search` parameter matched against cart number.
operationId: getCarts
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
required: false
schema:
type: string
responses:
'200':
description: Carts retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Paginated'
'400':
description: 'Invalid filter specification (error code: INVALID_FILTER)'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
/api/manufacturer/v1/cart/{cartId}:
get:
tags:
- cart-resource
summary: Get a cart by ID
description: Retrieves a specific shopping cart by its ID. Companion to the paginated cart endpoint for drilling into individual records during analytics workflows.
operationId: getById_9
parameters:
- name: cartId
in: path
description: ID of the cart to retrieve
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Cart retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CartDto'
'404':
description: Cart not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
/api/manufacturer/v1/cart/{cartId}/pre-order:
get:
tags:
- cart-resource
summary: Get cart pre-order (quote + purchasability)
description: Generates a bundled quote and purchasability check for a cart via the pre-order pipeline. Exposed for analytics consumers needing the quoted total alongside cart contents.
operationId: getCartPreOrder
parameters:
- name: cartId
in: path
description: ID of the cart to pre-order
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Cart pre-order retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CartPreOrderDto'
'400':
description: 'Invalid cart request (error code: INVALID_REQUEST)'
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Cart not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
components:
schemas:
TaxQuoteComponentDto:
type: object
properties:
shortName:
type: string
longName:
type: string
percentage:
type: number
amount:
type: number
localAmount:
type: number
required:
- amount
- localAmount
- longName
- percentage
- shortName
QuoteLineItemDto:
type: object
properties:
name:
type: string
basePrice:
type: number
termPrice:
type: number
required:
- basePrice
- name
- termPrice
PartManufacturabilityWarningsDto:
type: object
properties:
hasOptimalWallThickness:
type: boolean
required:
- hasOptimalWallThickness
AccountingCategoryTaggedPriceDto:
type: object
properties:
price:
type: number
localPrice:
type: number
accountingCategory:
type: string
required:
- localPrice
- price
Paginated:
type: object
properties:
content:
type: array
items: {}
totalElements:
type: integer
totalPages:
type: integer
pageNumber:
type: integer
pageSize:
type: integer
isEmpty:
type: boolean
isFirst:
type: boolean
isLast:
type: boolean
required:
- content
- isEmpty
- isFirst
- isLast
- pageNumber
- pageSize
- totalElements
- totalPages
TaxQuoteDto:
type: object
properties:
components:
type: array
items:
$ref: '#/components/schemas/TaxQuoteComponentDto'
totalPrice:
type: number
localTotalPrice:
type: number
totalPercentage:
type: number
isTaxAppliedToShipping:
type: boolean
isTaxExempted:
type: boolean
isTaxReverseCharged:
type: boolean
accountingSystemTaxId:
type: string
required:
- components
- isTaxAppliedToShipping
- isTaxExempted
- isTaxReverseCharged
- localTotalPrice
- totalPercentage
- totalPrice
PartManufacturabilityDto:
type: object
properties:
partRevisionId:
type: string
format: uuid
warnings:
$ref: '#/components/schemas/PartManufacturabilityWarningsDto'
limits:
$ref: '#/components/schemas/PartManufacturabilityLimitsDto'
values:
$ref: '#/components/schemas/PartManufacturabilityValuesDto'
required:
- limits
- partRevisionId
- values
- warnings
CartDto:
type: object
properties:
cartId:
type: string
format: uuid
status:
type: string
enum:
- OPEN
- DELETED
- CONVERTED
customerOrganisationId:
type: integer
format: int64
customerOrganisationName:
type: string
customerId:
type: integer
format: int64
customerEmail:
type: string
customerPhone:
type: string
cartNumber:
type: integer
format: int64
itemCount:
type: integer
format: int32
items:
type: array
items:
$ref: '#/components/schemas/CartItemDto'
createdAt:
type: string
format: date-time
updateDt:
type: string
format: date-time
itemProcessIds:
type: array
items:
type: string
format: uuid
itemMaterialIds:
type: array
items:
type: integer
format: int64
itemLeadTimeIds:
type: array
items:
type: string
format: uuid
itemPostProcessingIds:
type: array
items:
type: integer
format: int64
itemUnits:
type: array
items:
type: string
enum:
- CENTIMETERS
- MILLIMETERS
- METRES
- INCHES
- FEET
required:
- cartId
- createdAt
- itemCount
- items
- status
- updateDt
PartManufacturabilityLimitsDto:
type: object
properties:
withinBoundingBoxLimit:
type: boolean
withinWallThicknessLimit:
type: boolean
required:
- withinBoundingBoxLimit
- withinWallThicknessLimit
CartItemDto:
type: object
properties:
id:
type: integer
format: int64
partRevisionId:
type: string
format: uuid
partName:
type: string
quantity:
type: integer
colorId:
type: integer
format: int64
precisionPricesId:
type: integer
format: int64
infillId:
type: integer
format: int64
processPricesId:
type: string
format: uuid
materialPricesId:
type: integer
format: int64
leadTimeId:
type: string
format: uuid
units:
type: string
enum:
- CENTIMETERS
- MILLIMETERS
- METRES
- INCHES
- FEET
postProcessingIds:
type: array
items:
type: integer
format: int64
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- id
- quantity
CartPreOrderDto:
type: object
properties:
quote:
$ref: '#/components/schemas/QuoteDtoLong'
purchasability:
$ref: '#/components/schemas/OrderPurchasabilityDto'
required:
- purchasability
- quote
RequisitionQuoteDto:
type: object
properties:
partRevisionId:
type: string
format: uuid
localManufacturingPrice:
type: number
manufacturingPrice:
type: number
localPostProcessingPrice:
type: number
postProcessingPrice:
type: number
localUnitPrice:
type: number
unitPrice:
type: number
localPrice:
type: number
price:
type: number
postProcessingOptions:
type: array
items:
$ref: '#/components/schemas/PostProcessingQuoteOptionDto'
accountingCategoryCode:
type: string
quantity:
type: integer
variables:
type: object
additionalProperties:
type: number
reviewRequired:
type: boolean
required:
- localManufacturingPrice
- localPostProcessingPrice
- localPrice
- localUnitPrice
- manufacturingPrice
- partRevisionId
- postProcessingOptions
- postProcessingPrice
- price
- quantity
- reviewRequired
- unitPrice
- variables
QuoteDtoLong:
type: object
properties:
currency:
type: string
localCurrency:
type: string
price:
type: number
localPrice:
type: number
subtotal:
type: number
localSubtotal:
type: number
tax:
$ref: '#/components/schemas/TaxQuoteDto'
lineItems:
type: array
items:
$ref: '#/components/schemas/QuoteLineItemDto'
discount:
type: number
localDiscount:
type: number
shipping:
$ref: '#/components/schemas/AccountingCategoryTaggedPriceDto'
topUp:
$ref: '#/components/schemas/AccountingCategoryTaggedPriceDto'
requisitions:
type: object
additionalProperties:
$ref: '#/components/schemas/RequisitionQuoteDto'
exchangeRate:
type: number
expenses:
type: object
additionalProperties:
type: number
expectedDispatchDate:
type: string
format: date
shipment:
$ref: '#/components/schemas/AccountingCategoryTaggedPriceDto'
readOnly: true
dispatchDate:
type: string
format: date
readOnly: true
required:
- currency
- discount
- exchangeRate
- expenses
- lineItems
- localCurrency
- localDiscount
- localPrice
- localSubtotal
- price
- requisitions
- subtotal
- tax
OrderPurchasabilityDto:
type: object
properties:
parts:
type: object
additionalProperties:
$ref: '#/components/schemas/PartManufacturabilityDto'
withinBoundingBoxLimit:
type: boolean
withinMaximumOrderValue:
type: boolean
isMaterialPurchasable:
type: boolean
isPostProcessingPurchasable:
type: boolean
withinWallThicknessLimit:
type: boolean
isPriceReviewRequired:
type: boolean
canBePurchased:
type: boolean
required:
- canBePurchased
- isMaterialPurchasable
- isPostProcessingPurchasable
- isPriceReviewRequired
- parts
- withinBoundingBoxLimit
- withinMaximumOrderValue
- withinWallThicknessLimit
PostProcessingQuoteOptionDto:
type: object
properties:
id:
type: integer
format: int64
price:
type: number
localPrice:
type: number
variables:
type: object
additionalProperties:
type: number
required:
- id
- localPrice
- price
- variables
ApiError:
type: object
additionalProperties: true
description: Stable error contract. `error` is a SCREAMING_SNAKE code that clients match on; `message` is a human-readable sentence. Some errors add extra string fields (for example organisationId).
properties:
error:
type: string
example: ORDER_NOT_FOUND
message:
type: string
example: Order not found
required:
- error
- message
PartManufacturabilityValuesDto:
type: object
properties:
boundingBox:
type: array
items:
type: number
wallThicknessLimit:
type: number
wallThicknessWarning:
type: number
bendingEnabled:
type: boolean
machiningEnabled:
type: boolean
required:
- bendingEnabled
- machiningEnabled
securitySchemes:
Phasio_API_Bearer_Token:
type: http
name: Authorization
in: header
scheme: bearer
bearerFormat: JWT