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