Swell · Arazzo Workflow

Swell Create Cart and Apply Coupon

Version 1.0.0

Create a backend cart with items and apply a coupon code to it.

1 workflow 1 source API 1 provider
View Spec View on GitHub CommerceHeadless CommerceAPI-FirstB2CB2BSubscriptionsMarketplacesWholesaleStorefrontCheckoutPaymentsCartsOrdersCatalogInternationalizationArazzoWorkflows

Provider

swell-io

Workflows

create-cart-and-apply-coupon
Create a cart with items, then apply a coupon code.
Posts a cart with line items, then updates the cart to set a coupon code.
2 steps inputs: account_id, coupon_code, currency, items outputs: cartId, couponCode, grandTotal
1
createCartStep
createCart
Create a cart for the account with the supplied line items.
2
applyCouponStep
updateCart
Update the cart to set the coupon code so the discount applies.

Source API Descriptions

Arazzo Workflow Specification

swell-io-apply-coupon-to-cart-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Swell Create Cart and Apply Coupon
  summary: Create a backend cart with items and apply a coupon code to it.
  description: >-
    A back-office cart-building flow with discounting. The workflow creates a
    cart for an account with line items, captures its id, and then updates that
    cart to set a coupon code so the discount is reflected in the cart totals.
    Each step spells out its request inline so the flow can be read and executed
    without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: swellBackendApi
  url: ../openapi/swell-backend-api-openapi.yml
  type: openapi
workflows:
- workflowId: create-cart-and-apply-coupon
  summary: Create a cart with items, then apply a coupon code.
  description: >-
    Posts a cart with line items, then updates the cart to set a coupon code.
  inputs:
    type: object
    required:
    - account_id
    - items
    - coupon_code
    properties:
      account_id:
        type: string
        description: The account the cart belongs to.
      items:
        type: array
        description: Line items to place in the cart.
        items:
          type: object
      coupon_code:
        type: string
        description: The coupon code to apply to the cart.
      currency:
        type: string
        description: ISO 4217 currency code.
  steps:
  - stepId: createCartStep
    description: Create a cart for the account with the supplied line items.
    operationId: createCart
    requestBody:
      contentType: application/json
      payload:
        account_id: $inputs.account_id
        items: $inputs.items
        currency: $inputs.currency
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      cartId: $response.body#/id
      subTotal: $response.body#/sub_total
  - stepId: applyCouponStep
    description: Update the cart to set the coupon code so the discount applies.
    operationId: updateCart
    parameters:
    - name: id
      in: path
      value: $steps.createCartStep.outputs.cartId
    requestBody:
      contentType: application/json
      payload:
        coupon_code: $inputs.coupon_code
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      cartId: $response.body#/id
      couponCode: $response.body#/coupon_code
      discountTotal: $response.body#/discount_total
      grandTotal: $response.body#/grand_total
  outputs:
    cartId: $steps.applyCouponStep.outputs.cartId
    couponCode: $steps.applyCouponStep.outputs.couponCode
    grandTotal: $steps.applyCouponStep.outputs.grandTotal