Cross-Provider Workflow

GitHub Issue to Slack Alert

Version 1.0.0

File a GitHub issue, then alert the team in a Slack channel.

1 workflow 2 source APIs 2 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

github slack

Workflows

issue-to-slack-alert
Create a GitHub issue, then post a Slack alert with its url.
Creates an issue in a GitHub repository and posts a Slack message linking to the new issue so the team is alerted.
2 steps inputs: body, owner, repo, slackChannel, title outputs: issueUrl, messageTs
1
create-issue
$sourceDescriptions.githubIssuesApi.createAnIssue
File a new issue in the GitHub repository.
2
alert-slack
$sourceDescriptions.slackChatApi.postChatPostmessage
Post a Slack alert linking to the new issue.

Source API Descriptions

Arazzo Workflow Specification

prod-github-issue-to-slack-alert-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: GitHub Issue to Slack Alert
  summary: File a GitHub issue, then alert the team in a Slack channel.
  description: >-
    A productivity and internal-ops workflow that opens a GitHub issue and
    immediately posts an alert to a Slack channel with a link, so the team is
    notified the moment new work is filed. Demonstrates chaining a source-control
    provider and a messaging provider in a single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: githubIssuesApi
    url: https://raw.githubusercontent.com/api-evangelist/github/refs/heads/main/openapi/github-repo-issues-api-openapi.yml
    type: openapi
  - name: slackChatApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: issue-to-slack-alert
    summary: Create a GitHub issue, then post a Slack alert with its url.
    description: >-
      Creates an issue in a GitHub repository and posts a Slack message linking
      to the new issue so the team is alerted.
    inputs:
      type: object
      properties:
        owner:
          type: string
        repo:
          type: string
        title:
          type: string
        body:
          type: string
        slackChannel:
          type: string
    steps:
      - stepId: create-issue
        description: File a new issue in the GitHub repository.
        operationId: $sourceDescriptions.githubIssuesApi.createAnIssue
        parameters:
          - name: owner
            in: path
            value: $inputs.owner
          - name: repo
            in: path
            value: $inputs.repo
        requestBody:
          contentType: application/json
          payload:
            title: $inputs.title
            body: $inputs.body
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          issueUrl: $response.body#/html_url
          issueNumber: $response.body#/number
      - stepId: alert-slack
        description: Post a Slack alert linking to the new issue.
        operationId: $sourceDescriptions.slackChatApi.postChatPostmessage
        requestBody:
          contentType: application/json
          payload:
            channel: $inputs.slackChannel
            text: $steps.create-issue.outputs.issueUrl
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageTs: $response.body#/ts
    outputs:
      issueUrl: $steps.create-issue.outputs.issueUrl
      messageTs: $steps.alert-slack.outputs.messageTs