object UserTaskListsGetRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/UserTaskListCompact"
    }
  }
}
object UserTaskListsGetUserTaskListResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/UserTaskListCompact"
    }
  }
}
object UsersGetFavoritesForUserResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AsanaNamedResource"
      }
    },
    "next_page": {
      "$ref": "#/components/schemas/NextPage"
    }
  }
}
object UsersGetUserRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/UserResponse"
    }
  }
}
object UsersListTeamUsersResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserCompact"
      }
    }
  }
}
object UsersListWorkspaceUsersResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/UserCompact"
      }
    }
  }
}
object WebhookCompact
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "active": {
          "type": "boolean",
          "example": false,
          "readOnly": true,
          "description": "If true, the webhook will send events - if false it is considered inactive and will not generate events."
        },
        "target": {
          "type": "string",
          "format": "uri",
          "example": "https://example.com/receive-webhook/7654",
          "readOnly": true,
          "description": "The URL to receive the HTTP POST."
        },
        "resource": {
          "$ref": "#/components/schemas/AsanaNamedResource"
        }
      },
      "description": "Webhook objects represent the state of an active subscription for a server to be updated with information from Asana. This schema represents the subscription itself, not the objects that are sent to the server. For information on those please refer to the [event](https://raw.githubusercontent.com) schema.",
      "x-docs-overrides": {
        "properties.resource_type.example": "webhook"
      }
    }
  ]
}
object WebhookFilter
{
  "type": "object",
  "properties": {
    "action": {
      "type": "string",
      "example": "changed",
      "description": "The type of change on the **resource** to pass through the filter. For more information refer to `Event.action` in the [event](https://raw.githubusercontent.com) schema. This can be one of `changed`, `added`, `removed`, `deleted`, and `undeleted` depending on the nature of what has occurred on the resource."
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "example": [
        "due_at",
        "due_on",
        "dependencies"
      ],
      "description": "*Conditional.* A whitelist of fields for events which will pass the filter when the resource is changed. These can be any combination of the fields on the resources themselves. This field is only valid for `action` of type `changed`"
    },
    "resource_type": {
      "type": "string",
      "example": "task",
      "description": "The type of the resource which created the event when modified; for example, to filter to changes on regular tasks this field should be set to `task`."
    },
    "resource_subtype": {
      "type": "string",
      "example": "milestone",
      "description": "The resource subtype of the resource that the filter applies to. This should be set to the same value as is returned on the `resource_subtype` field on the resources themselves."
    }
  },
  "description": "A WebhookFilter can be passed on creation of a webhook in order to filter the types of actions that trigger delivery of an [event](https://raw.githubusercontent.com)"
}
object WebhookRequest
{
  "type": "object",
  "required": [
    "resource",
    "target"
  ],
  "properties": {
    "target": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/receive-webhook/7654?app_specific_param=app_specific_value",
      "description": "The URL to receive the HTTP POST. The full URL will be used to deliver events from this webhook (including parameters) which allows encoding of application-specific state when the webhook is created."
    },
    "filters": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookFilter"
          },
          {
            "description": "A set of filters to specify a whitelist for what types of events will be delivered."
          },
          {
            "type": "object"
          }
        ]
      },
      "description": "An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server."
    },
    "resource": {
      "type": "string",
      "example": "12345",
      "description": "A resource ID to subscribe to. Many Asana resources are valid to create webhooks on, but higher-level resources require filters."
    }
  }
}
object WebhookResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/WebhookCompact"
    },
    {
      "type": "object",
      "properties": {
        "filters": {
          "type": "array",
          "items": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WebhookFilter"
              },
              {
                "description": "A set of filters to specify a whitelist for what types of events will be delivered."
              },
              {
                "type": "object"
              }
            ]
          },
          "description": "Whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "example": "2012-02-22T02:06:58.147Z",
          "readOnly": true,
          "description": "The time at which this resource was created."
        },
        "last_failure_at": {
          "type": "string",
          "format": "date-time",
          "example": "2012-02-22T02:06:58.147Z",
          "readOnly": true,
          "description": "The timestamp when the webhook last received an error when sending an event to the target."
        },
        "last_success_at": {
          "type": "string",
          "format": "date-time",
          "example": "2012-02-22T02:06:58.147Z",
          "readOnly": true,
          "description": "The timestamp when the webhook last successfully sent an event to the target."
        },
        "last_failure_content": {
          "type": "string",
          "example": "500 Server Error\\n\\nCould not complete the request",
          "readOnly": true,
          "description": "The contents of the last error response sent to the webhook when attempting to deliver events to the target."
        }
      }
    }
  ]
}
object WebhookUpdateRequest
{
  "type": "object",
  "properties": {
    "filters": {
      "type": "array",
      "items": {
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookFilter"
          },
          {
            "description": "A set of filters to specify a whitelist for what types of events will be delivered."
          },
          {
            "type": "object"
          }
        ]
      },
      "description": "An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server."
    }
  }
}
object WebhooksEstablishWebhookRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WebhookRequest"
    }
  }
}
object WebhooksEstablishWebhookResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WebhookResponse"
    }
  }
}
object WebhooksGetWebhookRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WebhookResponse"
    }
  }
}
object WebhooksListMultipleWebhooksResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/WebhookResponse"
      }
    },
    "next_page": {
      "$ref": "#/components/schemas/NextPage"
    }
  }
}
object WebhooksRemoveWebhookResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EmptyResponse"
    }
  }
}
object WebhooksUpdateWebhookFiltersRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WebhookUpdateRequest"
    }
  }
}
object WebhooksUpdateWebhookFiltersResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WebhookResponse"
    }
  }
}
object WorkspaceAddUserRequest
{
  "type": "object",
  "properties": {
    "user": {
      "type": "string",
      "example": "12345",
      "description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
    }
  },
  "description": "A user identification object for specification with the addUser/removeUser endpoints."
}
object WorkspaceCompact
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "My Company Workspace",
          "description": "The name of the workspace."
        }
      },
      "description": "A *workspace* is the highest-level organizational unit in Asana. All projects and tasks have an associated workspace.",
      "x-docs-overrides": {
        "properties.resource_type.example": "workspace"
      }
    }
  ]
}
object WorkspaceMembershipCompact
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "user": {
          "$ref": "#/components/schemas/UserCompact"
        },
        "workspace": {
          "$ref": "#/components/schemas/WorkspaceCompact"
        }
      },
      "description": "This object determines if a user is a member of a workspace.",
      "x-docs-overrides": {
        "properties.resource_type.example": "workspace_membership"
      }
    }
  ]
}
object WorkspaceMembershipResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/WorkspaceMembershipCompact"
    },
    {
      "type": "object",
      "properties": {
        "is_admin": {
          "type": "boolean",
          "readOnly": true,
          "description": "Reflects if this user is an admin of the workspace."
        },
        "is_guest": {
          "type": "boolean",
          "readOnly": true,
          "description": "Reflects if this user is a guest of the workspace."
        },
        "is_active": {
          "type": "boolean",
          "readOnly": true,
          "description": "Reflects if this user still a member of the workspace."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "example": "2012-02-22T02:06:58.147Z",
          "readOnly": true,
          "description": "The time at which this resource was created."
        },
        "user_task_list": {
          "$ref": "#/components/schemas/UserTaskListCompact",
          "readOnly": true,
          "description": "The user's \"My Tasks\" in the workspace."
        },
        "vacation_dates": {
          "type": "object",
          "nullable": true,
          "readOnly": true,
          "properties": {
            "end_on": {
              "type": "string",
              "example": "2022-11-07",
              "nullable": true,
              "description": "The day on which the user's vacation in this workspace ends, or null if there is no end date. This is a date with `YYYY-MM-DD` format."
            },
            "start_on": {
              "type": "string",
              "example": "2022-11-05",
              "description": "The day on which the user's vacation in this workspace starts. This is a date with `YYYY-MM-DD` format."
            }
          },
          "description": "Contains keys `start_on` and `end_on` for the vacation dates for the user in this workspace. If `start_on` is null, the entire `vacation_dates` object will be null. If `end_on` is before today, the entire `vacation_dates` object will be null."
        }
      }
    }
  ]
}
object WorkspaceMembershipsGetRecordByIdResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkspaceMembershipResponse"
    }
  }
}
object WorkspaceMembershipsGetUserMembershipsResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/WorkspaceMembershipCompact"
      }
    },
    "next_page": {
      "$ref": "#/components/schemas/NextPage"
    }
  }
}
object WorkspaceMembershipsListForWorkspaceResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/WorkspaceMembershipCompact"
      }
    },
    "next_page": {
      "$ref": "#/components/schemas/NextPage"
    }
  }
}
object WorkspaceRemoveUserRequest
{
  "type": "object",
  "properties": {
    "user": {
      "type": "string",
      "example": "12345",
      "description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
    }
  },
  "description": "A user identification object for specification with the addUser/removeUser endpoints."
}
object WorkspaceResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/WorkspaceCompact"
    },
    {
      "type": "object",
      "properties": {
        "email_domains": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          },
          "example": [
            "asana.com"
          ],
          "description": "The email domains that are associated with this workspace."
        },
        "is_organization": {
          "type": "boolean",
          "example": false,
          "description": "Whether the workspace is an *organization*."
        }
      }
    }
  ]
}
object WorkspacesAddUserToWorkspaceRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkspaceAddUserRequest"
    }
  }
}
object WorkspacesAddUserToWorkspaceResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/UserBaseResponse"
    }
  }
}
object WorkspacesGetWorkspaceRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkspaceResponse"
    }
  }
}
object WorkspacesListMultipleResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/WorkspaceCompact"
      }
    },
    "next_page": {
      "$ref": "#/components/schemas/NextPage"
    }
  }
}
object WorkspacesRemoveUserFromWorkspaceRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkspaceRemoveUserRequest"
    }
  }
}
object WorkspacesRemoveUserFromWorkspaceResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EmptyResponse"
    }
  }
}
object WorkspacesUpdateWorkspaceRecordRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkspaceCompact"
    }
  }
}
object WorkspacesUpdateWorkspaceRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkspaceResponse"
    }
  }
}