Shopify · Arazzo Workflow

Shopify Cancel and Restock an Order

Version 1.0.0

Confirm an order, cancel it with a reason and restock, then read the cancelled order back.

1 workflow 1 source API 1 provider
View Spec View on GitHub CommerceEcommercePaymentsRetailShopping CartT1ArazzoWorkflows

Provider

shopify

Workflows

cancel-and-restock-order
Cancel an order with restock and confirm the cancellation.
Confirms the order, cancels it with a reason and restock, and reads the order back to confirm the cancellation.
3 steps inputs: email, orderId, reason, restock outputs: cancelReason, cancelledAt, orderId
1
confirmOrder
getOrder
Read the order to confirm it exists before cancelling.
2
cancelOrder
cancelOrder
Cancel the order with a documented reason, restocking items and emailing the customer per the supplied flags.
3
getOrder
getOrder
Read the order back to confirm the cancellation reason and timestamp.

Source API Descriptions

Arazzo Workflow Specification

shopify-cancel-and-refund-order-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Shopify Cancel and Restock an Order
  summary: Confirm an order, cancel it with a reason and restock, then read the cancelled order back.
  description: >-
    Handles an order cancellation cleanly. The workflow reads the order to
    confirm it exists and is cancellable, cancels it with a documented reason
    while restocking items and emailing the customer, and then reads the order
    back so the caller can confirm the cancellation timestamp and reason. Every
    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: shopifyAdminRestApi
  url: ../openapi/shopify-admin-rest-api-openapi.yml
  type: openapi
workflows:
- workflowId: cancel-and-restock-order
  summary: Cancel an order with restock and confirm the cancellation.
  description: >-
    Confirms the order, cancels it with a reason and restock, and reads the
    order back to confirm the cancellation.
  inputs:
    type: object
    required:
    - orderId
    properties:
      orderId:
        type: integer
        description: The ID of the order to cancel.
      reason:
        type: string
        description: Cancellation reason (customer, fraud, inventory, declined, or other).
        default: customer
      email:
        type: boolean
        description: Whether to send a cancellation email to the customer.
        default: true
      restock:
        type: boolean
        description: Whether to restock the order's items.
        default: true
  steps:
  - stepId: confirmOrder
    description: Read the order to confirm it exists before cancelling.
    operationId: getOrder
    parameters:
    - name: order_id
      in: path
      value: $inputs.orderId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      orderId: $response.body#/order/id
      cancelledAt: $response.body#/order/cancelled_at
  - stepId: cancelOrder
    description: >-
      Cancel the order with a documented reason, restocking items and emailing
      the customer per the supplied flags.
    operationId: cancelOrder
    parameters:
    - name: order_id
      in: path
      value: $steps.confirmOrder.outputs.orderId
    requestBody:
      contentType: application/json
      payload:
        reason: $inputs.reason
        email: $inputs.email
        restock: $inputs.restock
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      cancelledOrderId: $response.body#/order/id
  - stepId: getOrder
    description: Read the order back to confirm the cancellation reason and timestamp.
    operationId: getOrder
    parameters:
    - name: order_id
      in: path
      value: $inputs.orderId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      cancelledAt: $response.body#/order/cancelled_at
      cancelReason: $response.body#/order/cancel_reason
      order: $response.body#/order
  outputs:
    orderId: $steps.confirmOrder.outputs.orderId
    cancelledAt: $steps.getOrder.outputs.cancelledAt
    cancelReason: $steps.getOrder.outputs.cancelReason