openapi: 3.0.1 x-mint: mcp: enabled: true info: title: Checkout description: >- fabric's **Checkout API** lets you complete the checkout process and place an order for cart items. This process includes specifying a customer's shipping and payment details, and calculating taxes and shipping rates. version: 3.0.0 x-audience: external-public contact: name: Checkout Support url: https://www.fabric.inc email: support.cnc@fabric.inc license: name: fabric API License url: https://fabric.inc/api-license termsOfService: https://fabric.inc/terms-of-use externalDocs: description: Find out more about Checkout url: https://developer.fabric.inc/v3/reference/checkout-getting-started servers: - url: https://api.fabric.inc/v3 description: Production tags: - name: Checkout Session description: >- The Checkout Session endpoint lets you create and complete a checkout session, and place an order for the cart items. paths: /checkout/sessions: post: tags: - Checkout Session summary: Create and Complete a Checkout Session description: >- Create and complete checkout session on all the items in a specific cart, identified by a `cartId`. Along with `cartId`, the checkout operation includes merchant account ID, amount to be paid, tax to be imposed on cart items, shipping address, and other details. operationId: createSession parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricChannelId' - $ref: '#/components/parameters/xFabricRequestId' requestBody: content: application/json: schema: $ref: '#/components/schemas/checkoutSessionRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/headers/xFabricRequestId' content: application/json: schema: $ref: '#/components/schemas/checkoutSessionResponse' example: state: COMPLETED orderId: 111-121-1234 '400': description: Bad request headers: x-fabric-request-id: $ref: '#/components/headers/xFabricRequestId' content: application/json: schema: $ref: '#/components/schemas/error400' '401': description: Unauthorized headers: x-fabric-request-id: $ref: '#/components/headers/xFabricRequestId' content: application/json: schema: $ref: '#/components/schemas/error401' '404': description: Not found headers: x-fabric-request-id: $ref: '#/components/headers/xFabricRequestId' content: application/json: schema: oneOf: - $ref: '#/components/schemas/cartNotFound' - $ref: '#/components/schemas/lineItemShippingDetailsNotFound' '424': description: Dependency failure headers: x-fabric-request-id: $ref: '#/components/headers/xFabricRequestId' content: application/json: schema: $ref: '#/components/schemas/checkoutSessionErrorResponse' '500': description: Internal server error headers: x-fabric-request-id: $ref: '#/components/headers/xFabricRequestId' content: application/json: schema: $ref: '#/components/schemas/error500' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT headers: xFabricRequestId: description: Unique request ID schema: type: string example: 263e731c-45c8-11ed-b878-0242ac120002 required: false parameters: xFabricChannelId: in: header name: x-fabric-channel-id description: >- x-fabric-channel-id identifies the sales channel where the API request is being made; primarily for multichannel use cases. The channel ids are 12 corresponding to US and 13 corresponding to Canada. The default channel id is 12. This field is required. schema: type: string example: '12' required: false xFabricTenantId: in: header name: x-fabric-tenant-id description: >- A header used by fabric to identify the tenant making the request. You must include tenant id in the authentication header for an API request to access any of fabric’s endpoints. You can retrieve the tenant id , which is also called account id, from [Copilot](/v3/platform/settings/account-details/getting-the-account-id). This header is required. schema: type: string example: 617329dfd5288b0011332311 required: true xFabricRequestId: in: header name: x-fabric-request-id description: Unique request ID schema: type: string example: 263e731c-45c8-11ed-b878-0242ac120002 required: false schemas: error400: type: object description: Bad request properties: type: description: Error type type: string example: BAD_REQUEST message: description: Error description type: string example: Bad Request error401: type: object description: Unauthorized error properties: type: description: Error type type: string example: UNAUTHORIZED message: description: Error description type: string example: Unauthorized user cartNotFound: type: object description: Cart not found error properties: type: description: Error code type: string example: NOT_FOUND message: description: Error description type: string example: Cart not found lineItemShippingDetailsNotFound: type: object description: Ship to not found error properties: type: description: Error code type: string example: NOT_FOUND message: description: Error description type: string example: Cart item ship to's are missing. error500: type: object description: Internal server error properties: type: description: Error type type: string example: INTERNAL_SERVER_ERROR message: description: Error description type: string example: Internal server error billingAddress: allOf: - $ref: '#/components/schemas/customerAddress' - description: Billing address type: object properties: name: $ref: '#/components/schemas/name' phone: $ref: '#/components/schemas/billingPhone' email: type: string description: Receiver email ID example: user@example.com customerId: type: string description: >- Customer profile ID, created by the payment gateway, for payment instruction. This ID is specific to payment flow. nullable: true example: 62cffd65e8d7eb868c6a29d6 type: type: string description: Address type nullable: true example: residence latitude: type: number format: double description: Address latitude nullable: true example: 47.6205 longitude: type: number format: double description: Address longitude nullable: true example: -122.3493 checkoutSessionRequest: description: Checkout request body required: - cartId - payments - tax type: object properties: cartId: type: string description: Unique cart ID example: d7e78a21-bee3-4448-bf1c-d5b5461dbda2 customer: description: Customer making payment type: object properties: name: type: object properties: firstName: type: string description: Contact person's first name example: Pat middleName: type: string description: Contact person's middle name or initial example: E lastName: type: string description: Contact person's last name example: Kake description: Order contact person's details email: type: string description: Contact person's email example: test@example.com phone: type: object properties: number: type: string description: Contact person's phone number example: '5555555555' type: type: string description: Contact number type example: MOBILE enum: - MOBILE - HOME - BUSINESS description: Contact person's phone number userId: type: string description: User ID example: 62272e917b12209e68751d94 accountId: type: string description: Account ID such as loyalty account ID example: 62272e917b12209e68751d94 employeeId: type: string description: Employee ID used when the customer is the employee example: 62272e917b12209e68751d94 company: type: string description: Company example: fabric payments: type: array description: Payment detail list items: $ref: '#/components/schemas/paymentDetailsRequest' tax: $ref: '#/components/schemas/estimatedTax' orderMetadata: type: object description: Additional order information properties: orderType: type: string description: Order type (WEB, CSC, MOBILE_APP, POS, etc.) nullable: true example: MOBILE_APP orderSubtype: type: string description: Order subtype (Android, IOS, International, etc.) nullable: true example: Android notes: type: array description: Customer service representative's notes items: $ref: '#/components/schemas/note' checkoutSessionResponse: description: Checkout response details type: object properties: state: type: string enum: - COMPLETED - PENDING description: >- Checkout session state.
COMPLETED: Checkout is complete
PENDING: Checkout is incomplete example: COMPLETED orderId: type: string description: Order ID nullable: true example: 111-123-4421 checkoutSessionErrorResponse: description: Checkout error response details type: object properties: type: type: string description: Error type example: PAYMENT_FAILURE message: type: string description: Error description example: Payment authorization failed due to payment mismatch pointOfFailure: $ref: '#/components/schemas/dependencyFailure' details: type: object description: Error details oneOf: - $ref: '#/components/schemas/paymentErrorResponse' dependencyFailure: description: Checkout dependency failure type type: string example: PAYMENT enum: - CART - PAYMENT - ORDER estimatedTax: description: Estimated taxes for items, shipping and fees required: - itemTaxes - shippingTaxes type: object properties: itemTaxes: type: array description: Item taxes items: $ref: '#/components/schemas/itemTaxes' shippingTaxes: type: array description: Shipping taxes items: $ref: '#/components/schemas/shippingTaxes' feeTaxes: type: array description: Taxes related to fees nullable: true items: $ref: '#/components/schemas/feeTaxes' note: description: Notes section for use by customer service representative only type: object properties: notedAt: allOf: - $ref: '#/components/schemas/date' - description: Time note was created user: type: string description: Customer service representative ID nullable: true example: 261AF48 notes: type: string description: Note content nullable: true example: Additional notes... itemTaxes: description: Cart line item tax type: object properties: lineItemId: type: string description: Line item ID example: d7e78a21-bee3-4448-bf1c-d5b5461dbda2 position: type: integer description: Item sequence number format: int32 example: 1 amount: type: number format: double description: Currency amount example: 150.25 currency: type: string description: Three-letter currency code as defined by ISO-4217 example: USD name: type: string description: Tax name nullable: true example: state tax rateType: type: string description: Rate type nullable: true example: PERCENTAGE rate: type: number description: Rate format: double nullable: true example: 10 paymentDetailsRequest: description: Payment request details.Empty if there is no payment configuration. type: object required: - paymentProvider properties: paymentProvider: type: string description: Payment gateway service provider example: authorize.net paymentMethod: type: string description: Payment method nullable: true example: card paymentToken: type: object properties: token: type: string description: Payment token example: pi_34tr6787rt paymentType: type: string description: Payment type, for credit card payments example: VISA description: Order payment token model amount: type: number format: double description: Payment amount example: 150.25 currency: type: string description: Three-letter currency code as defined by ISO-4217 example: USD billingAddress: $ref: '#/components/schemas/billingAddress' attributes: type: object additionalProperties: true description: Additional data passed by the caller nullable: true example: paymentId: 620d8896058edb0009385311 paymentErrorResponse: description: >- Payment mismatch response details. It's displayed when `totalAmount` and `orderTotal` are different. The user must authorize payment of the total order amount. type: object properties: paymentError: type: object description: Indicates payment error details properties: totalAmount: allOf: - $ref: '#/components/schemas/money' - description: Total authorized amount orderTotal: allOf: - $ref: '#/components/schemas/money' - description: Order total. It includes cart amount + taxes. billingPhone: description: Individual's phone details (for billing purposes) type: object properties: number: type: string description: Phone number example: 123-456-7890 type: type: string description: Phone type nullable: true example: office shippingTaxes: description: Shipping taxes type: object required: - shippingDetailsId properties: shippingDetailsId: type: string description: Unique shipping ID nullable: true example: fef78121-bee3-4448-bf1c-d5b5461dbda2 amount: type: number format: double description: Currency amount example: 150.25 currency: type: string description: Three-letter currency code as defined by ISO-4217 example: USD name: type: string description: Tax name nullable: true example: state tax feeTaxes: description: Fee taxes type: object required: - feeId properties: feeId: type: string description: Unique fee tax ID example: fef78121-bee3-4448-bf1c-d5b5461dbda2 name: type: string description: Fee tax type nullable: true example: State tax amount: type: number format: double description: Fee tax amount example: 150.25 currency: type: string description: Three-letter currency code as defined by ISO-4217 example: USD name: description: Individual's name type: object properties: firstName: type: string description: Individual's first name example: Pat middleName: type: string description: Individual's middle name or initial nullable: true example: E lastName: type: string description: Individual's last name example: Kake money: type: object description: Payment amount properties: amount: type: number format: double description: Currency amount example: 150.25 currency: type: string description: Three-letter currency code as defined by ISO-4217 example: USD date: description: Date and time in ISO-8601 format type: string format: date-time example: '2022-09-06T14:07:17.000Z' customerAddress: type: object description: Customer's address properties: addressLine1: description: Address line 1 type: string example: 123 Main St. addressLine2: description: Address line 2 type: string example: Suite 100 addressLine3: type: string description: Address line 3 example: Seventh floor addressLine4: type: string description: Address line 4 example: 'Attention: Pat E. Kake' city: description: City type: string example: Seattle region: type: string description: Region or state example: WA postalCode: type: string description: Postal or zip code example: '98121' country: description: Country (can be full name, or ISO 3166-1 alpha-2 or alpha-3 code) type: string example: US security: - bearerAuth: []