Adobe Experience Cloud · Arazzo Workflow

Adobe Campaign Transactional Message

Version 1.0.0

Trigger a transactional message, then poll its delivery status until it leaves the pending state.

1 workflow 1 source API 1 provider
View Spec View on GitHub AnalyticsCustomer ExperienceDigital MarketingPersonalizationCampaign ManagementJourney OrchestrationArazzoWorkflows

Provider

adobe-experience-cloud

Workflows

transactional-message
Trigger a transactional message and poll its delivery status.
Triggers a transactional message and polls the message status by event id until it leaves the pending state.
2 steps inputs: apiKey, authorization, email, transactionalMessageId outputs: eventId, finalStatus
1
sendMessage
sendTransactionalMessage
Trigger the transactional message to the recipient.
2
pollStatus
getTransactionalMessageStatus
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.

Source API Descriptions

Arazzo Workflow Specification

adobe-experience-cloud-campaign-transactional-message-workflow.yml Raw ↑
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