Cross-Provider Workflow

Asana Task to GitHub Issue

Version 1.0.0

Create an Asana task, then open a matching GitHub issue for engineering.

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

Providers Orchestrated

asana github

Workflows

task-to-issue
Create an Asana task, then create a matching GitHub issue.
Creates an Asana task and uses its name and id to open a corresponding GitHub issue for engineering.
2 steps inputs: asanaProjectId, owner, repo, taskName, taskNotes outputs: issueUrl, taskId
1
create-task
$sourceDescriptions.asanaTasksApi.createTask
Create the Asana task for the planned work.
2
create-issue
$sourceDescriptions.githubIssuesApi.createAnIssue
Open a matching GitHub issue for engineering.

Source API Descriptions

Arazzo Workflow Specification

prod-asana-task-to-github-issue-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Asana Task to GitHub Issue
  summary: Create an Asana task, then open a matching GitHub issue for engineering.
  description: >-
    A productivity and internal-ops workflow that creates an Asana task for a
    planned work item and opens a corresponding GitHub issue so engineering can
    pick it up in source control. Demonstrates bridging a task-management
    provider and a source-control provider in a single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: asanaTasksApi
    url: https://raw.githubusercontent.com/api-evangelist/asana/refs/heads/main/openapi/asana-tasks-api-openapi.yml
    type: openapi
  - name: githubIssuesApi
    url: https://raw.githubusercontent.com/api-evangelist/github/refs/heads/main/openapi/github-repo-issues-api-openapi.yml
    type: openapi
workflows:
  - workflowId: task-to-issue
    summary: Create an Asana task, then create a matching GitHub issue.
    description: >-
      Creates an Asana task and uses its name and id to open a corresponding
      GitHub issue for engineering.
    inputs:
      type: object
      properties:
        taskName:
          type: string
        taskNotes:
          type: string
        asanaProjectId:
          type: string
        owner:
          type: string
        repo:
          type: string
    steps:
      - stepId: create-task
        description: Create the Asana task for the planned work.
        operationId: $sourceDescriptions.asanaTasksApi.createTask
        requestBody:
          contentType: application/json
          payload:
            data:
              name: $inputs.taskName
              notes: $inputs.taskNotes
              projects:
                - $inputs.asanaProjectId
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          taskId: $response.body#/data/gid
      - stepId: create-issue
        description: Open a matching GitHub issue for engineering.
        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.taskName
            body: $steps.create-task.outputs.taskId
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          issueUrl: $response.body#/html_url
    outputs:
      taskId: $steps.create-task.outputs.taskId
      issueUrl: $steps.create-issue.outputs.issueUrl