Cross-Provider Workflow

GitHub Issue to Asana Task

Version 1.0.0

Open a GitHub issue and mirror it as an Asana task for the team.

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

Providers Orchestrated

github asana

Workflows

issue-to-task
Create a GitHub issue, then create a matching Asana task.
Creates an issue in a GitHub repository and uses the returned issue number and url to create an Asana task that mirrors it for cross-team tracking.
2 steps inputs: asanaProjectId, body, owner, repo, title outputs: issueNumber, issueUrl, taskId
1
create-issue
$sourceDescriptions.githubIssuesApi.createAnIssue
File a new issue in the GitHub repository.
2
create-task
$sourceDescriptions.asanaTasksApi.createTask
Create an Asana task mirroring the GitHub issue.

Source API Descriptions

Arazzo Workflow Specification

prod-github-issue-to-asana-task-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: GitHub Issue to Asana Task
  summary: Open a GitHub issue and mirror it as an Asana task for the team.
  description: >-
    A productivity and internal-ops workflow that files a GitHub issue in a
    repository and creates a matching Asana task so non-engineering teams can
    track the work in their planning tool. Demonstrates bridging a source-control
    provider and a task-management 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: asanaTasksApi
    url: https://raw.githubusercontent.com/api-evangelist/asana/refs/heads/main/openapi/asana-tasks-api-openapi.yml
    type: openapi
workflows:
  - workflowId: issue-to-task
    summary: Create a GitHub issue, then create a matching Asana task.
    description: >-
      Creates an issue in a GitHub repository and uses the returned issue number
      and url to create an Asana task that mirrors it for cross-team tracking.
    inputs:
      type: object
      properties:
        owner:
          type: string
        repo:
          type: string
        title:
          type: string
        body:
          type: string
        asanaProjectId:
          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:
          issueNumber: $response.body#/number
          issueUrl: $response.body#/html_url
      - stepId: create-task
        description: Create an Asana task mirroring the GitHub issue.
        operationId: $sourceDescriptions.asanaTasksApi.createTask
        requestBody:
          contentType: application/json
          payload:
            data:
              name: $inputs.title
              notes: $steps.create-issue.outputs.issueUrl
              projects:
                - $inputs.asanaProjectId
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          taskId: $response.body#/data/gid
    outputs:
      issueNumber: $steps.create-issue.outputs.issueNumber
      issueUrl: $steps.create-issue.outputs.issueUrl
      taskId: $steps.create-task.outputs.taskId