Asana · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Asana Projects API

20 actions 20 updates phrasing extends openapi/asana-projects-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Asana's API. It is a proposal applied on top of the contract, not a document Asana publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 20 · first 16 shown; the file carries all of them

$.info
$.paths['/projects'].get
$.paths['/projects'].post
$.paths['/projects/{project_gid}'].get
$.paths['/projects/{project_gid}'].put
$.paths['/projects/{project_gid}'].delete
$.paths['/projects/{project_gid}/duplicate'].post
$.paths['/tasks/{task_gid}/projects'].get
$.paths['/teams/{team_gid}/projects'].get
$.paths['/teams/{team_gid}/projects'].post
$.paths['/workspaces/{workspace_gid}/projects'].get
$.paths['/workspaces/{workspace_gid}/projects'].post
$.paths['/projects/{project_gid}/addCustomFieldSetting'].post
$.paths['/projects/{project_gid}/removeCustomFieldSetting'].post
$.paths['/projects/{project_gid}/task_counts'].get
$.paths['/projects/{project_gid}/addMembers'].post

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Asana Projects API
  version: 1.0.0
extends: openapi/asana-projects-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-01'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 19
- target: $.paths['/projects'].get
  update:
    x-apievangelist-phrasing:
      intent: List projects filtered by workspace or team
      effect: read
      questions:
      - How do I list projects across a workspace or team?
      - Can I exclude archived projects when listing projects?
      instructions:
      - text: List the projects in workspace {workspace}.
        slots:
          workspace: query.workspace
      - text: Show projects for team {team} where archived is {archived}.
        slots:
          team: query.team
          archived: query.archived
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a project
      effect: write
      questions:
      - How do I create a new project in Asana?
      - Can a project's workspace be changed after it's created?
      instructions:
      - text: Create a new project called {project}.
        slots:
          project: requestBody.data
      - text: 'Set up a new project with these settings: {fields}.'
        slots:
          fields: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a project's details
      effect: read
      questions:
      - What does the full record for one project include?
      - Can I look up a project's owner and due date by its ID?
      instructions:
      - text: Show the details of project {project}.
        slots:
          project: path.project_gid
      - text: Fetch the complete record for project {project}.
        slots:
          project: path.project_gid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update a project's settings
      effect: write
      questions:
      - How can I rename a project or change its owner?
      - Can I archive a project by updating it?
      instructions:
      - text: Archive project {project}.
        slots:
          project: path.project_gid
      - text: Update project {project} with {changes}.
        slots:
          project: path.project_gid
          changes: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a project
      effect: destructive
      questions:
      - What happens when I delete a project?
      - Can I remove a project permanently through the API?
      instructions:
      - text: Delete project {project}.
        slots:
          project: path.project_gid
      - text: Remove project {project} for good.
        slots:
          project: path.project_gid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/duplicate'].post
  update:
    x-apievangelist-phrasing:
      intent: Duplicate a project
      effect: write
      questions:
      - Can I copy a whole project including its tasks and members?
      - Does duplicating a project return a job I have to poll?
      instructions:
      - text: Duplicate project {project} as {new_project}.
        slots:
          project: path.project_gid
          new_project: requestBody.data
      - text: Make a copy of project {project}.
        slots:
          project: path.project_gid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/tasks/{task_gid}/projects'].get
  update:
    x-apievangelist-phrasing:
      intent: List the projects a task belongs to
      effect: read
      questions:
      - Which projects is a given task part of?
      - Can I see every project a task has been multi-homed into?
      instructions:
      - text: List the projects that task {task} is in.
        slots:
          task: path.task_gid
      - text: Show which projects contain task {task}.
        slots:
          task: path.task_gid
      method: generated
      generated: '2026-10-01'
- target: $.paths['/teams/{team_gid}/projects'].get
  update:
    x-apievangelist-phrasing:
      intent: List a team's projects
      effect: read
      questions:
      - What projects does a particular team own?
      - Can I list only a team's archived projects?
      instructions:
      - text: List the projects for team {team}.
        slots:
          team: path.team_gid
      - text: Show team {team}'s projects with archived set to {archived}.
        slots:
          team: path.team_gid
          archived: query.archived
      method: generated
      generated: '2026-10-01'
- target: $.paths['/teams/{team_gid}/projects'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a project shared with a team
      effect: write
      questions:
      - How do I create a project that belongs to a specific team?
      - Can I make a new project directly under a team?
      instructions:
      - text: Create a project named {project} in team {team}.
        slots:
          team: path.team_gid
          project: requestBody.data
      - text: Start a new team project for team {team} with {fields}.
        slots:
          team: path.team_gid
          fields: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/workspaces/{workspace_gid}/projects'].get
  update:
    x-apievangelist-phrasing:
      intent: List all projects in a workspace
      effect: read
      questions:
      - Can I get every project in a workspace in one list?
      - Why might listing all of a large workspace's projects time out?
      instructions:
      - text: List all projects in workspace {workspace}.
        slots:
          workspace: path.workspace_gid
      - text: Show workspace {workspace}'s projects where archived is {archived}.
        slots:
          workspace: path.workspace_gid
          archived: query.archived
      method: generated
      generated: '2026-10-01'
- target: $.paths['/workspaces/{workspace_gid}/projects'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a project in a workspace
      effect: write
      questions:
      - Do I need to supply a team when creating a project in an organization workspace?
      - How do I create a project scoped directly to a workspace?
      instructions:
      - text: Create a project named {project} in workspace {workspace}.
        slots:
          workspace: path.workspace_gid
          project: requestBody.data
      - text: Add a new workspace project to {workspace} with {fields}.
        slots:
          workspace: path.workspace_gid
          fields: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/addCustomFieldSetting'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a custom field to a project
      effect: write
      questions:
      - How do I attach a custom field to a project?
      - Can I make a custom field important on a project when I add it?
      instructions:
      - text: Add custom field {custom_field} to project {project}.
        slots:
          project: path.project_gid
          custom_field: requestBody.data
      - text: Attach the field {custom_field} to project {project}'s columns.
        slots:
          project: path.project_gid
          custom_field: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/removeCustomFieldSetting'].post
  update:
    x-apievangelist-phrasing:
      intent: Remove a custom field from a project
      effect: write
      questions:
      - Can I detach a custom field from a project without deleting the field?
      - What's the way to drop a custom field column from one project?
      instructions:
      - text: Remove custom field {custom_field} from project {project}.
        slots:
          project: path.project_gid
          custom_field: requestBody.data
      - text: Detach field {custom_field} from project {project}.
        slots:
          project: path.project_gid
          custom_field: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/task_counts'].get
  update:
    x-apievangelist-phrasing:
      intent: Count a project's tasks
      effect: read
      questions:
      - How many tasks, completed and incomplete, does a project have?
      - Why does the task count come back empty unless I opt in to fields?
      instructions:
      - text: Count the tasks in project {project}.
        slots:
          project: path.project_gid
      - text: Get completed and incomplete task counts for project {project} with fields {fields}.
        slots:
          project: path.project_gid
          fields: query.opt_fields
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/addMembers'].post
  update:
    x-apievangelist-phrasing:
      intent: Add members to a project
      effect: write
      questions:
      - How do I give users access to a project?
      - Will adding someone as a project member also make them a follower?
      instructions:
      - text: Add members {users} to project {project}.
        slots:
          project: path.project_gid
          users: requestBody.data
      - text: Give users {users} membership in project {project}.
        slots:
          project: path.project_gid
          users: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/removeMembers'].post
  update:
    x-apievangelist-phrasing:
      intent: Remove members from a project
      effect: write
      questions:
      - Can I take users out of a project's membership?
      - How do I revoke someone's membership in a project?
      instructions:
      - text: Remove members {users} from project {project}.
        slots:
          project: path.project_gid
          users: requestBody.data
      - text: Take users {users} off project {project}'s member list.
        slots:
          project: path.project_gid
          users: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/addFollowers'].post
  update:
    x-apievangelist-phrasing:
      intent: Add followers to a project
      effect: write
      questions:
      - How do I get users notified when tasks are added to a project?
      - Can I make project members follow the project?
      instructions:
      - text: Add followers {users} to project {project}.
        slots:
          project: path.project_gid
          users: requestBody.data
      - text: Have {users} follow project {project} for new-task notifications.
        slots:
          project: path.project_gid
          users: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/removeFollowers'].post
  update:
    x-apievangelist-phrasing:
      intent: Remove followers from a project
      effect: write
      questions:
      - Does removing a project follower also remove their membership?
      - How do I stop users from following a project?
      instructions:
      - text: Remove followers {users} from project {project}.
        slots:
          project: path.project_gid
          users: requestBody.data
      - text: Stop {users} following project {project} but keep them as members.
        slots:
          project: path.project_gid
          users: requestBody.data
      method: generated
      generated: '2026-10-01'
- target: $.paths['/projects/{project_gid}/saveAsTemplate'].post
  update:
    x-apievangelist-phrasing:
      intent: Save a project as a project template
      effect: write
      questions:
      - Can I turn an existing project into a reusable template?
      - Is creating a template from a project an asynchronous job?
      instructions:
      - text: Save project {project} as a template named {template}.
        slots:
          project: path.project_gid
          template: requestBody.data
      - text: Create a project template from project {project}.
        slots:
          project: path.project_gid
      method: generated
      generated: '2026-10-01'