arazzo: 1.0.1 info: title: Svix Resend a Failed Message Attempt summary: Find a failing delivery attempt for a message and resend it to its endpoint. description: >- When a single webhook delivery fails, an operator often wants to retry it to a specific endpoint. This workflow lists the delivery attempts for a message, branches on whether any failed attempt is present, and resends the message to the endpoint that failed. 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: svixApi url: ../openapi/svix-openapi.json type: openapi workflows: - workflowId: resend-failed-attempt summary: Locate a failed delivery attempt for a message and resend it. description: >- Lists the attempts for a message filtered to the failing status, and when a failed attempt exists, resends the message to the endpoint that failed. inputs: type: object required: - appId - msgId properties: appId: type: string description: The id or uid of the application owning the message. msgId: type: string description: The id or uid of the message whose attempts are inspected. steps: - stepId: listFailedAttempts description: >- List the delivery attempts for the message filtered to the failed status. Returns 200 with a paged attempt list. operationId: v1.message-attempt.list-by-msg parameters: - name: app_id in: path value: $inputs.appId - name: msg_id in: path value: $inputs.msgId - name: status in: query value: 2 - name: limit in: query value: 1 successCriteria: - condition: $statusCode == 200 outputs: failedEndpointId: $response.body#/data/0/endpointId onSuccess: - name: hasFailure type: goto stepId: resendWebhook criteria: - context: $response.body condition: $.data.length > 0 type: jsonpath onFailure: - name: noFailures type: end criteria: - condition: $statusCode == 200 - stepId: resendWebhook description: >- Resend the message to the endpoint whose attempt failed, creating a new delivery attempt. Returns 202 Accepted. operationId: v1.message-attempt.resend parameters: - name: app_id in: path value: $inputs.appId - name: msg_id in: path value: $inputs.msgId - name: endpoint_id in: path value: $steps.listFailedAttempts.outputs.failedEndpointId successCriteria: - condition: $statusCode == 202 outputs: failedEndpointId: $steps.listFailedAttempts.outputs.failedEndpointId