arazzo: 1.0.1 info: title: Stripe Cancel Subscription summary: Retrieve a subscription to confirm it is active, then cancel it. description: >- The churn pattern for ending a recurring plan. The workflow retrieves the subscription to confirm it exists and is active, then cancels the subscription so no further invoices are generated. 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: subscriptionApi url: ../openapi/stripe-subscription-api-openapi.yml type: openapi workflows: - workflowId: cancel-subscription summary: Confirm a subscription is active and cancel it. description: >- Retrieves the subscription and branches on its status, cancelling it immediately when it is active. inputs: type: object required: - subscription properties: subscription: type: string description: ID of the subscription to cancel. steps: - stepId: getSubscription description: Retrieve the subscription to confirm it exists before cancelling. operationId: GetSubscriptionsSubscriptionExposedId parameters: - name: subscription_exposed_id in: path value: $inputs.subscription successCriteria: - condition: $statusCode == 200 outputs: subscriptionId: $response.body#/id status: $response.body#/status onSuccess: - name: stillActive type: goto stepId: cancelSubscription criteria: - context: $response.body condition: $.status != "canceled" type: jsonpath - stepId: cancelSubscription description: Cancel the active subscription so no further invoices are created. operationId: DeleteSubscriptionsSubscriptionExposedId parameters: - name: subscription_exposed_id in: path value: $inputs.subscription successCriteria: - condition: $statusCode == 200 outputs: status: $response.body#/status canceledAt: $response.body#/canceled_at outputs: subscriptionId: $steps.getSubscription.outputs.subscriptionId status: $steps.cancelSubscription.outputs.status