Cross-Provider Workflow

Asana Project Kickoff Multi-Create

Version 1.0.0

Create an Asana project, section, and first task, then announce on Slack.

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

Providers Orchestrated

asana slack

Workflows

project-kickoff
Create an Asana project, section, and task, then notify Slack.
Creates an Asana project in a workspace, adds an initial section, creates the first task in the project, and posts a Slack kickoff announcement.
4 steps inputs: firstTaskName, projectName, sectionName, slackChannel, workspaceId outputs: messageTs, projectId, sectionId, taskId
1
create-project
$sourceDescriptions.asanaProjectsApi.createProjectForWorkspace
Create the Asana project in the workspace.
2
create-section
$sourceDescriptions.asanaSectionsApi.createSectionForProject
Add an initial section to the new project.
3
create-task
$sourceDescriptions.asanaTasksApi.createTask
Create the first task in the new project.
4
announce-kickoff
$sourceDescriptions.slackChatApi.postChatPostmessage
Announce the project kickoff in Slack.

Source API Descriptions

Arazzo Workflow Specification

prod-project-kickoff-multi-create-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Asana Project Kickoff Multi-Create
  summary: Create an Asana project, section, and first task, then announce on Slack.
  description: >-
    A productivity and internal-ops workflow that kicks off a new initiative by
    creating an Asana project, adding a section to it, creating the first task,
    and announcing the kickoff in a Slack channel. Demonstrates orchestrating
    multiple create operations across a task-management provider and a messaging
    provider in a single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: asanaProjectsApi
    url: https://raw.githubusercontent.com/api-evangelist/asana/refs/heads/main/openapi/asana-projects-api-openapi.yml
    type: openapi
  - name: asanaSectionsApi
    url: https://raw.githubusercontent.com/api-evangelist/asana/refs/heads/main/openapi/asana-sections-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
  - name: slackChatApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: project-kickoff
    summary: Create an Asana project, section, and task, then notify Slack.
    description: >-
      Creates an Asana project in a workspace, adds an initial section, creates
      the first task in the project, and posts a Slack kickoff announcement.
    inputs:
      type: object
      properties:
        workspaceId:
          type: string
        projectName:
          type: string
        sectionName:
          type: string
        firstTaskName:
          type: string
        slackChannel:
          type: string
    steps:
      - stepId: create-project
        description: Create the Asana project in the workspace.
        operationId: $sourceDescriptions.asanaProjectsApi.createProjectForWorkspace
        parameters:
          - name: workspace_gid
            in: path
            value: $inputs.workspaceId
        requestBody:
          contentType: application/json
          payload:
            data:
              name: $inputs.projectName
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          projectId: $response.body#/data/gid
      - stepId: create-section
        description: Add an initial section to the new project.
        operationId: $sourceDescriptions.asanaSectionsApi.createSectionForProject
        parameters:
          - name: project_gid
            in: path
            value: $steps.create-project.outputs.projectId
        requestBody:
          contentType: application/json
          payload:
            data:
              name: $inputs.sectionName
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          sectionId: $response.body#/data/gid
      - stepId: create-task
        description: Create the first task in the new project.
        operationId: $sourceDescriptions.asanaTasksApi.createTask
        requestBody:
          contentType: application/json
          payload:
            data:
              name: $inputs.firstTaskName
              projects:
                - $steps.create-project.outputs.projectId
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          taskId: $response.body#/data/gid
      - stepId: announce-kickoff
        description: Announce the project kickoff in Slack.
        operationId: $sourceDescriptions.slackChatApi.postChatPostmessage
        requestBody:
          contentType: application/json
          payload:
            channel: $inputs.slackChannel
            text: $inputs.projectName
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageTs: $response.body#/ts
    outputs:
      projectId: $steps.create-project.outputs.projectId
      sectionId: $steps.create-section.outputs.sectionId
      taskId: $steps.create-task.outputs.taskId
      messageTs: $steps.announce-kickoff.outputs.messageTs