arazzo: 1.0.1 info: title: Adobe Campaign Transactional Message summary: Trigger a transactional message, then poll its delivery status until it leaves the pending state. description: >- Sends an event-driven transactional message through Adobe Campaign and tracks it to delivery. The workflow triggers a transactional message to a recipient using a message template, captures the returned event id, and then polls the message status until it is no longer pending. Each step inlines the bearer token and API key so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: campaignApi url: ../openapi/adobe-campaign-api-openapi.yml type: openapi workflows: - workflowId: transactional-message summary: Trigger a transactional message and poll its delivery status. description: >- Triggers a transactional message and polls the message status by event id until it leaves the pending state. inputs: type: object required: - authorization - apiKey - transactionalMessageId - email properties: authorization: type: string description: Bearer access token. apiKey: type: string description: Adobe API key for the x-api-key header. transactionalMessageId: type: string description: The transactional message template identifier. email: type: string description: Recipient email address. steps: - stepId: sendMessage description: Trigger the transactional message to the recipient. operationId: sendTransactionalMessage parameters: - name: transactionalMessageId in: path value: $inputs.transactionalMessageId - name: Authorization in: header value: $inputs.authorization - name: x-api-key in: header value: $inputs.apiKey requestBody: contentType: application/json payload: email: $inputs.email ctx: {} successCriteria: - condition: $statusCode == 200 outputs: eventId: $response.body#/eventId status: $response.body#/status - stepId: pollStatus description: >- Poll the message status by event id. While the message is still pending the step retries; once it reaches a terminal status the workflow ends. operationId: getTransactionalMessageStatus parameters: - name: transactionalMessageId in: path value: $inputs.transactionalMessageId - name: eventId in: path value: $steps.sendMessage.outputs.eventId - name: Authorization in: header value: $inputs.authorization - name: x-api-key in: header value: $inputs.apiKey successCriteria: - condition: $statusCode == 200 outputs: finalStatus: $response.body#/status onSuccess: - name: stillPending type: retry retryAfter: 5 retryLimit: 10 criteria: - context: $response.body condition: $.status == "pending" type: jsonpath - name: delivered type: end criteria: - context: $response.body condition: $.status != "pending" type: jsonpath outputs: eventId: $steps.sendMessage.outputs.eventId finalStatus: $steps.pollStatus.outputs.finalStatus