Asana Memberships API

The Asana Memberships API is a tool that allows developers to integrate Asana's membership features into their own applications. This API allows users to access and manage information related to team membership, such as adding and removing members from teams, assigning roles and permissions, and viewing membership details. With the Asana Memberships API, developers can create custom workflows and automations that streamline the process of managing team membership within the Asana platform.

OpenAPI Specification

asana-memberships-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Asana Memberships API
  description: >-
    The Asana Memberships API manages the relationship between a team or user
    and an object in Asana. Currently supports memberships for goals, projects,
    and portfolios.
  version: '1.0'
  termsOfService: https://asana.com/terms
  contact:
    name: Asana Support
    url: https://asana.com/support
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://app.asana.com/api/1.0
    description: Main endpoint.
security:
  - personalAccessToken: []
  - oauth2: []
tags:
  - name: Memberships
    description: Manage memberships for goals, projects, and portfolios.
paths:
  /memberships:
    get:
      summary: Asana Get multiple memberships
      description: Returns compact membership records.
      operationId: getMemberships
      tags:
        - Memberships
      parameters:
        - name: parent
          in: query
          required: false
          schema:
            type: string
        - name: member
          in: query
          required: false
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: offset
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved the requested memberships.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/MembershipCompact'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
        '403':
          description: Forbidden.
        '500':
          description: Internal server error.
    post:
      summary: Asana Create a membership
      description: Creates a new membership.
      operationId: createMembership
      tags:
        - Memberships
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/CreateMembershipRequest'
      responses:
        '200':
          description: Successfully created the membership.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/MembershipResponse'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
        '403':
          description: Forbidden.
        '500':
          description: Internal server error.
  /memberships/{membership_gid}:
    get:
      summary: Asana Get a membership
      description: Returns the complete record for a single membership.
      operationId: getMembership
      tags:
        - Memberships
      parameters:
        - name: membership_gid
          in: path
          required: true
          schema:
            type: string
          example: '12345'
      responses:
        '200':
          description: Successfully retrieved the record for a single membership.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/MembershipResponse'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
        '403':
          description: Forbidden.
        '404':
          description: Not found.
        '500':
          description: Internal server error.
    put:
      summary: Asana Update a membership
      description: Updates a membership's properties.
      operationId: updateMembership
      tags:
        - Memberships
      parameters:
        - name: membership_gid
          in: path
          required: true
          schema:
            type: string
          example: '12345'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/MembershipUpdateRequest'
      responses:
        '200':
          description: Successfully updated the membership.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/MembershipResponse'
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
        '403':
          description: Forbidden.
        '404':
          description: Not found.
        '500':
          description: Internal server error.
    delete:
      summary: Asana Delete a membership
      description: Deletes a membership.
      operationId: deleteMembership
      tags:
        - Memberships
      parameters:
        - name: membership_gid
          in: path
          required: true
          schema:
            type: string
          example: '12345'
      responses:
        '200':
          description: Successfully deleted the membership.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
        '400':
          description: Bad request.
        '401':
          description: Unauthorized.
        '403':
          description: Forbidden.
        '404':
          description: Not found.
        '500':
          description: Internal server error.
components:
  securitySchemes:
    personalAccessToken:
      type: http
      scheme: bearer
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.asana.com/-/oauth_authorize
          tokenUrl: https://app.asana.com/-/oauth_token
          scopes:
            default: Provides access to all endpoints documented in the API reference.
  schemas:
    MembershipCompact:
      type: object
      properties:
        gid:
          type: string
          readOnly: true
          example: '12345'
        resource_type:
          type: string
          readOnly: true
          example: membership
    CreateMembershipRequest:
      type: object
      properties:
        member:
          type: string
          example: '12345'
        parent:
          type: string
          example: '12345'
        role:
          type: string
          enum:
            - editor
            - commenter
            - viewer
        is_active:
          type: boolean
    MembershipUpdateRequest:
      type: object
      properties:
        role:
          type: string
          enum:
            - editor
            - commenter
            - viewer
        is_active:
          type: boolean
    MembershipResponse:
      type: object
      properties:
        gid:
          type: string
          readOnly: true
          example: '12345'
        resource_type:
          type: string
          readOnly: true
          example: membership
        member:
          type: object
          properties:
            gid:
              type: string
            resource_type:
              type: string
            name:
              type: string
        parent:
          type: object
          properties:
            gid:
              type: string
            resource_type:
              type: string
            name:
              type: string
        role:
          type: string
          enum:
            - editor
            - commenter
            - viewer
        is_active:
          type: boolean
        is_guest:
          type: boolean
          readOnly: true
        is_editable:
          type: boolean
          readOnly: true
        access_level:
          type: string
          readOnly: true