object CustomFieldsReorderEnumOptionRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EnumOptionInsertRequest"
    }
  }
}
object CustomFieldsReorderEnumOptionResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EnumOption"
    }
  }
}
object CustomFieldsUpdateEnumOptionRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EnumOption"
    }
  }
}
object CustomFieldsUpdateEnumOptionResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EnumOption"
    }
  }
}
object CustomFieldsUpdateFieldRecordRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/CustomFieldRequest"
    }
  }
}
object CustomFieldsUpdateFieldRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/CustomFieldResponse"
    }
  }
}
object DateVariableCompact
{
  "type": "object",
  "properties": {
    "gid": {
      "type": "string",
      "example": "1",
      "readOnly": true,
      "description": "Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date."
    },
    "name": {
      "type": "string",
      "example": "Start Date",
      "readOnly": true,
      "description": "The name of the date variable."
    },
    "description": {
      "type": "string",
      "example": "Choose a start date for your project.",
      "readOnly": true,
      "description": "The description of what the date variable is used for when instantiating a project."
    }
  }
}
object DateVariableRequest
{
  "type": "object",
  "properties": {
    "gid": {
      "type": "string",
      "example": "1",
      "description": "Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date."
    },
    "value": {
      "type": "string",
      "format": "date-time",
      "example": "2022-01-01",
      "nullable": true,
      "description": "The date with which the date variable should be replaced when instantiating a project. This takes a date with `YYYY-MM-DD` format."
    }
  }
}
object EmptyResponse
{
  "type": "object",
  "description": "An empty object. Some endpoints do not return an object on success. The success is conveyed through a 2-- status code and returning an empty object."
}
object EnumOption
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "Low",
          "description": "The name of the enum option."
        },
        "color": {
          "type": "string",
          "example": "blue",
          "description": "The color of the enum option. Defaults to ‘none’."
        },
        "enabled": {
          "type": "boolean",
          "example": true,
          "description": "Whether or not the enum option is a selectable value for the custom field."
        }
      },
      "description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to “trashing” the enum option in the Asana web app within the “Edit Fields” dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
      "x-docs-overrides": {
        "properties.resource_type.example": "enum_option"
      }
    }
  ]
}
object EnumOptionInsertRequest
{
  "type": "object",
  "required": [
    "enum_option"
  ],
  "properties": {
    "enum_option": {
      "type": "string",
      "example": "97285",
      "description": "The gid of the enum option to relocate."
    },
    "after_enum_option": {
      "type": "string",
      "example": "12345",
      "description": "An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option."
    },
    "before_enum_option": {
      "type": "string",
      "example": "12345",
      "description": "An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option."
    }
  }
}
object EnumOptionRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/EnumOption"
    },
    {
      "type": "object",
      "properties": {
        "insert_after": {
          "type": "string",
          "example": "12345",
          "description": "An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option."
        },
        "insert_before": {
          "type": "string",
          "example": "12345",
          "description": "An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option."
        }
      }
    }
  ]
}
object Error
{
  "type": "object",
  "properties": {
    "help": {
      "type": "string",
      "example": "For more information on API status codes and how to handle them, read the docs on errors: https://asana.github.io/developer-docs/#errors'",
      "readOnly": true,
      "description": "Additional information directing developers to resources on how to address and fix the problem, if available."
    },
    "phrase": {
      "type": "string",
      "example": "6 sad squid snuggle softly",
      "readOnly": true,
      "description": "*500 errors only*. A unique error phrase which can be used when contacting developer support to help identify the exact occurrence of the problem in Asana’s logs."
    },
    "message": {
      "type": "string",
      "example": "project: Missing input",
      "readOnly": true,
      "description": "Message providing more detail about the error that occurred, if available."
    }
  }
}
object ErrorResponse
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Error"
      }
    }
  },
  "description": "Sadly, sometimes requests to the API are not successful. Failures can\noccur for a wide range of reasons. In all cases, the API should return\nan HTTP Status Code that indicates the nature of the failure,\nwith a response body in JSON format containing additional information.\n\n\nIn the event of a server error the response body will contain an error\nphrase. These phrases are automatically generated using the\n[node-asana-phrase\nlibrary](https://github.com/Asana/node-asana-phrase) and can be used by\nAsana support to quickly look up the incident that caused the server\nerror."
}
object EventResponse
{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "example": "task",
      "readOnly": true,
      "description": "*Deprecated: Refer to the resource_type of the resource.* The type of the resource that generated the event."
    },
    "user": {
      "allOf": [
        {
          "$ref": "#/components/schemas/UserCompact"
        },
        {
          "description": "The user who triggered the event."
        }
      ]
    },
    "action": {
      "type": "string",
      "example": "changed",
      "readOnly": true,
      "description": "The type of action taken on the **resource** that triggered the event.  This can be one of `changed`, `added`, `removed`, `deleted`, or `undeleted` depending on the nature of the event."
    },
    "change": {
      "type": "object",
      "readOnly": true,
      "properties": {
        "field": {
          "type": "string",
          "example": "assignee",
          "readOnly": true,
          "description": "The name of the field that has changed in the resource."
        },
        "action": {
          "type": "string",
          "example": "changed",
          "readOnly": true,
          "description": "The type of action taken on the **field** which has been changed.  This can be one of `changed`, `added`, or `removed` depending on the nature of the change."
        },
        "new_value": {
          "example": {
            "gid": "12345",
            "resource_type": "user"
          },
          "description": "*Conditional.* This property is only present when the value of the event's `change.action` is `changed` _and_ the `new_value` is an Asana resource. This will be only the `gid` and `resource_type` of the resource when the events come from webhooks; this will be the compact representation (and can have fields expanded with [opt_fields](https://raw.githubusercontent.com)) when using the [get events](https://raw.githubusercontent.com) endpoint."
        },
        "added_value": {
          "example": {
            "gid": "12345",
            "resource_type": "user"
          },
          "description": "*Conditional.* This property is only present when the value of the event's `change.action` is `added` _and_ the `added_value` is an Asana resource. This will be only the `gid` and `resource_type` of the resource when the events come from webhooks; this will be the compact representation (and can have fields expanded with [opt_fields](https://raw.githubusercontent.com)) when using the [get events](https://raw.githubusercontent.com) endpoint."
        },
        "removed_value": {
          "example": {
            "gid": "12345",
            "resource_type": "user"
          },
          "description": "*Conditional.* This property is only present when the value of the event's `change.action` is `removed` _and_ the `removed_value` is an Asana resource. This will be only the `gid` and `resource_type` of the resource when the events come from webhooks; this will be the compact representation (and can have fields expanded with [opt_fields](https://raw.githubusercontent.com)) when using the [get events](https://raw.githubusercontent.com) endpoint."
        }
      },
      "description": "Information about the type of change that has occurred. This field is only present when the value of the property `action`, describing the action taken on the **resource**, is `changed`."
    },
    "parent": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AsanaNamedResource"
        },
        {
          "description": "For added/removed events, the parent object that resource was added to or removed from. The parent will be `null` for other event types."
        }
      ]
    },
    "resource": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AsanaNamedResource"
        },
        {
          "description": "The resource which has triggered the event by being modified in some way."
        }
      ]
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "example": "2012-02-22T02:06:58.147Z",
      "readOnly": true,
      "description": "The timestamp when the event occurred."
    }
  },
  "description": "An *event* is an object representing a change to a resource that was\nobserved by an event subscription or delivered asynchronously to\nthe target location of an active webhook.\n\nThe event may be triggered by a different `user` than the\nsubscriber. For example, if user A subscribes to a task and user B\nmodified it, the event’s user will be user B. Note: Some events\nare generated by the system, and will have `null` as the user. API\nconsumers should make sure to handle this case.\n\nThe `resource` that triggered the event may be different from the one\nthat the events were requested for or the webhook is subscribed to. For\nexample, a subscription to a project will contain events for tasks\ncontained within the project.\n\n**Note:** pay close attention to the relationship between the fields\n`Event.action` and `Event.change.action`.\n`Event.action` represents the action taken on the resource\nitself, and `Event.change.action` represents how the information\nwithin the resource's fields have been modified.\n\nFor instance, consider these scenarios:\n\n\n* When at task is added to a project, `Event.action` will be\n`added`, `Event.parent` will be an object with the `id` and\n`type` of the project, and there will be no `change` field.\n\n\n* When an assignee is set on the task, `Event.parent` will be\n`null`, `Event.action` will be `changed`,\n`Event.change.action` will be `changed`, and `new_value` will\nbe an object with the user's `id` and `type`.\n\n\n* When a collaborator is added to the task, `Event.parent` will\nbe `null`, `Event.action` will be `changed`,\n`Event.change.action` will be `added`, and `added_value` will be\nan object with the user's `id` and `type`."
}
object EventsGetResourceEvents412Response
{
  "type": "object",
  "properties": {
    "sync": {
      "type": "string",
      "example": "de4774f6915eae04714ca93bb2f5ee81",
      "readOnly": true,
      "description": "A sync token to be used with the next call to the /events endpoint."
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Sync token invalid or too old. If you are attempting to keep resources in sync, you must fetch the full dataset for this query now and use the new sync token for the next sync.",
            "readOnly": true,
            "description": "Message providing more detail about the error that occurred, if available."
          }
        }
      }
    }
  }
}
object EventsGetResourceEventsResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EventResponse"
      }
    },
    "sync": {
      "type": "string",
      "example": "de4774f6915eae04714ca93bb2f5ee81",
      "description": "A sync token to be used with the next call to the /events endpoint."
    },
    "has_more": {
      "type": "boolean",
      "example": true,
      "description": "Indicates whether there are more events to pull."
    }
  },
  "description": "The full record for all events that have occurred since the sync token was created."
}
object GoalAddSubgoalRequest
{
  "type": "object",
  "required": [
    "subgoal"
  ],
  "properties": {
    "subgoal": {
      "type": "string",
      "example": "1331",
      "description": "The goal gid to add as subgoal to a parent goal"
    },
    "insert_after": {
      "type": "string",
      "example": "1331",
      "description": "An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified."
    },
    "insert_before": {
      "type": "string",
      "example": "1331",
      "description": "An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified."
    }
  }
}
object GoalAddSupportingRelationshipRequest
{
  "type": "object",
  "required": [
    "supporting_resource"
  ],
  "properties": {
    "insert_after": {
      "type": "string",
      "example": "1331",
      "description": "An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal."
    },
    "insert_before": {
      "type": "string",
      "example": "1331",
      "description": "An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal."
    },
    "contribution_weight": {
      "type": "number",
      "example": 1,
      "description": "The weight that the supporting resource's progress will contribute to the supported goal's progress. This can only be 0 or 1."
    },
    "supporting_resource": {
      "type": "string",
      "example": "12345",
      "description": "The gid of the supporting resource to add to the parent goal. Must be the gid of a goal, project, task, or portfolio."
    }
  }
}
object GoalAddSupportingWorkRequest
{
  "type": "object",
  "required": [
    "supporting_work"
  ],
  "properties": {
    "supporting_work": {
      "type": "string",
      "example": "1331",
      "description": "The project/task/portfolio gid to add as supporting work for a goal"
    }
  }
}
object GoalBase
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "Grow web traffic by 30%",
          "description": "The name of the goal."
        },
        "liked": {
          "type": "boolean",
          "example": false,
          "description": "True if the goal is liked by the authorized user, false if not."
        },
        "notes": {
          "type": "string",
          "example": "Start building brand awareness.",
          "description": "Free-form textual information associated with the goal (i.e. its description)."
        },
        "due_on": {
          "type": "string",
          "example": "2019-09-15",
          "nullable": true,
          "description": "The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`."
        },
        "start_on": {
          "type": "string",
          "example": "2019-09-14",
          "nullable": true,
          "description": "The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date."
        },
        "html_notes": {
          "type": "string",
          "example": "<body>Start building brand awareness.</body>",
          "description": "The notes of the goal with formatting as HTML."
        },
        "is_workspace_level": {
          "type": "boolean",
          "example": true,
          "description": "*Conditional*. This property is only present when the `workspace` provided is an organization. Whether the goal belongs to the `workspace` (and is listed as part of the workspace’s goals) or not. If it isn’t a workspace-level goal, it is a team-level goal, and is associated with the goal’s team."
        }
      },
      "x-docs-overrides": {
        "properties.resource_type.example": "goal"
      }
    }
  ]
}
object GoalCompact
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "example": "Grow web traffic by 30%",
          "description": "The name of the goal."
        },
        "owner": {
          "allOf": [
            {
              "$ref": "#/components/schemas/UserCompact"
            },
            {
              "type": "object",
              "nullable": true
            }
          ]
        }
      },
      "x-docs-overrides": {
        "properties.resource_type.example": "goal"
      }
    }
  ]
}
object GoalMembershipBase
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "goal": {
          "allOf": [
            {
              "$ref": "#/components/schemas/GoalCompact"
            },
            {
              "type": "object",
              "readOnly": true,
              "deprecated": true,
              "description": "*Deprecated: new integrations should prefer the `parent` field.* A *Goal* is an object in the goal-tracking system that helps your organization drive measurable results."
            }
          ]
        },
        "role": {
          "enum": [
            "commenter",
            "editor"
          ],
          "type": "string",
          "example": "editor",
          "deprecated": true,
          "description": "*Deprecated: Describes if the member is a commenter or editor in goal.*"
        },
        "member": {
          "$ref": "#/components/schemas/MemberCompact"
        },
        "parent": {
          "allOf": [
            {
              "$ref": "#/components/schemas/GoalCompact"
            },
            {
              "type": "object",
              "readOnly": true
            }
          ]
        },
        "access_level": {
          "enum": [
            "commenter",
            "editor"
          ],
          "type": "string",
          "example": "editor",
          "description": "Describes if member is commenter or editor in goal. This is preferred over role"
        },
        "resource_type": {
          "type": "string",
          "example": "membership",
          "description": "The base type of this resource."
        },
        "resource_subtype": {
          "type": "string",
          "example": "goal_membership",
          "readOnly": true,
          "description": "The type of membership."
        }
      },
      "description": "This object represents a user's connection to a goal.",
      "x-docs-overrides": {
        "properties.resource_type.example": "membership"
      }
    }
  ]
}
object GoalMembershipCompact
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalMembershipBase"
    },
    {
      "type": "object",
      "properties": {
        "is_editor": {
          "type": "boolean",
          "example": false,
          "readOnly": true,
          "deprecated": true,
          "description": "*Deprecated: new integrations should prefer the `role` field.* Describes if the member is editor in goal."
        },
        "is_commenter": {
          "type": "boolean",
          "example": false,
          "readOnly": true,
          "deprecated": true,
          "description": "*Deprecated: new integrations should prefer the `role` field.* Describes if the member is comment only in goal."
        }
      }
    }
  ]
}
object GoalMembershipResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalMembershipBase"
    },
    {
      "type": "object",
      "properties": {
        "user": {
          "allOf": [
            {
              "$ref": "#/components/schemas/UserCompact"
            },
            {
              "type": "object",
              "readOnly": true,
              "deprecated": true,
              "description": "*Deprecated: new integrations should prefer the `member` field.* A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks."
            }
          ]
        },
        "workspace": {
          "allOf": [
            {
              "$ref": "#/components/schemas/WorkspaceCompact"
            },
            {
              "type": "object",
              "readOnly": true,
              "deprecated": true,
              "description": "*Deprecated:* A *workspace* is the highest-level organizational unit in Asana. All projects and tasks have an associated workspace."
            }
          ]
        }
      }
    }
  ]
}
object GoalMetricBase
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "unit": {
          "enum": [
            "none",
            "currency",
            "percentage"
          ],
          "type": "string",
          "description": "A supported unit of measure for the goal metric, or none."
        },
        "precision": {
          "type": "integer",
          "example": 2,
          "description": "*Conditional*. Only relevant for goal metrics of type ‘Number’. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%."
        },
        "currency_code": {
          "type": "string",
          "example": "EUR",
          "nullable": true,
          "description": "ISO 4217 currency code to format this custom field. This will be null if the `unit` is not `currency`."
        },
        "progress_source": {
          "enum": [
            "manual",
            "subgoal_progress",
            "project_task_completion",
            "project_milestone_completion",
            "task_completion",
            "external"
          ],
          "type": "string",
          "example": "manual",
          "description": "This field defines how the progress value of a goal metric is being calculated. A goal's progress can be provided manually by the user, calculated automatically from contributing subgoals, projects, or tasks, or managed by an integration with an external data source, such as Salesforce."
        },
        "resource_subtype": {
          "enum": [
            "number"
          ],
          "type": "string",
          "example": "number",
          "readOnly": true,
          "description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning."
        },
        "target_number_value": {
          "type": "number",
          "example": 10.2,
          "description": "This number is the end value of a goal metric of type number. This number cannot equal `initial_number_value`."
        },
        "current_number_value": {
          "type": "number",
          "example": 8.12,
          "description": "This number is the current value of a goal metric of type number."
        },
        "initial_number_value": {
          "type": "number",
          "example": 5.2,
          "description": "This number is the start value of a goal metric of type number."
        },
        "current_display_value": {
          "type": "string",
          "example": "8.12",
          "readOnly": true,
          "description": "This string is the current value of a goal metric of type string."
        }
      }
    }
  ]
}
object GoalMetricCurrentValueRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "current_number_value": {
          "type": "number",
          "example": 8.12,
          "description": "*Conditional*. This number is the current value of a goal metric of type number."
        }
      }
    }
  ]
}
object GoalRelationshipBase
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalRelationshipCompact"
    },
    {
      "type": "object",
      "properties": {
        "supported_goal": {
          "allOf": [
            {
              "$ref": "#/components/schemas/GoalCompact"
            },
            {
              "type": "object",
              "readOnly": true,
              "description": "The goal that the supporting resource supports."
            }
          ]
        }
      }
    }
  ]
}
object GoalRelationshipCompact
{
  "allOf": [
    {
      "$ref": "#/components/schemas/AsanaResource"
    },
    {
      "type": "object",
      "properties": {
        "resource_subtype": {
          "enum": [
            "subgoal",
            "supporting_work"
          ],
          "type": "string",
          "example": "subgoal",
          "readOnly": true,
          "description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning."
        },
        "contribution_weight": {
          "type": "number",
          "example": 1,
          "description": "The weight that the supporting resource's progress contributes to the supported goal's progress. This can only be 0 or 1."
        },
        "supporting_resource": {
          "allOf": [
            {
              "$ref": "#/components/schemas/ProjectCompact"
            },
            {
              "type": "object",
              "readOnly": true,
              "description": "The supporting resource that supports the goal. This can be either a project, task, portfolio, or goal."
            }
          ]
        }
      },
      "description": "A *goal relationship* is an object representing the relationship between a goal and another goal, a project, a task, or a portfolio.",
      "x-docs-overrides": {
        "properties.resource_type.example": "goal_relationship"
      }
    }
  ]
}
object GoalRelationshipRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalRelationshipBase"
    },
    {
      "type": "object"
    }
  ]
}
object GoalRelationshipResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalRelationshipBase"
    },
    {
      "type": "object"
    }
  ]
}
object GoalRelationshipsCreateSupportingRelationshipRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalAddSupportingRelationshipRequest"
    }
  }
}
object GoalRelationshipsCreateSupportingRelationshipResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalRelationshipResponse"
    }
  }
}
object GoalRelationshipsGetCompactRecordsResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/GoalRelationshipCompact"
      }
    },
    "next_page": {
      "$ref": "#/components/schemas/NextPage"
    }
  }
}
object GoalRelationshipsGetRecordByIdResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalRelationshipResponse"
    }
  }
}
object GoalRelationshipsRemoveSupportingRelationshipRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalRemoveSupportingRelationshipRequest"
    }
  }
}
object GoalRelationshipsRemoveSupportingRelationshipResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EmptyResponse"
    }
  }
}
object GoalRelationshipsUpdateGoalRelationshipRecordRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalRelationshipRequest"
    }
  }
}
object GoalRelationshipsUpdateGoalRelationshipRecordResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalRelationshipResponse"
    }
  }
}
object GoalRemoveSubgoalRequest
{
  "type": "object",
  "required": [
    "subgoal"
  ],
  "properties": {
    "subgoal": {
      "type": "string",
      "example": "1331",
      "description": "The goal gid to remove as subgoal from the parent goal"
    }
  }
}
object GoalRemoveSupportingRelationshipRequest
{
  "type": "object",
  "required": [
    "supporting_resource"
  ],
  "properties": {
    "supporting_resource": {
      "type": "string",
      "example": "12345",
      "description": "The gid of the supporting resource to remove from the parent goal. Must be the gid of a goal, project, task, or portfolio."
    }
  }
}
object GoalRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalRequestBase"
    },
    {
      "type": "object",
      "properties": {
        "followers": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "The `gid` of a user."
          },
          "example": [
            "12345"
          ]
        }
      }
    }
  ]
}
object GoalRequestBase
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalBase"
    },
    {
      "type": "object",
      "properties": {
        "team": {
          "type": "string",
          "example": "12345",
          "nullable": true,
          "description": "*Conditional*. This property is only present when the `workspace` provided is an organization."
        },
        "owner": {
          "type": "string",
          "example": "12345",
          "nullable": true,
          "description": "The `gid` of a user."
        },
        "workspace": {
          "type": "string",
          "example": "12345",
          "description": "The `gid` of a workspace."
        },
        "time_period": {
          "type": "string",
          "example": "12345",
          "nullable": true,
          "description": "The `gid` of a time period."
        }
      }
    }
  ]
}
object GoalResponse
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalBase"
    },
    {
      "type": "object",
      "properties": {
        "team": {
          "allOf": [
            {
              "$ref": "#/components/schemas/TeamCompact"
            },
            {
              "type": "object",
              "nullable": true,
              "description": "*Conditional*. This property is only present when the `workspace` provided is an organization."
            }
          ]
        },
        "likes": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/Like"
          },
          "readOnly": true,
          "description": "Array of likes for users who have liked this goal."
        },
        "owner": {
          "allOf": [
            {
              "$ref": "#/components/schemas/UserCompact"
            },
            {
              "type": "object",
              "nullable": true
            }
          ]
        },
        "metric": {
          "allOf": [
            {
              "$ref": "#/components/schemas/GoalMetricBase"
            },
            {
              "type": "object",
              "nullable": true,
              "properties": {
                "can_manage": {
                  "type": "boolean",
                  "example": true,
                  "readOnly": true,
                  "description": "*Conditional*. Only relevant for `progress_source` of type `external`. This boolean indicates whether the requester has the ability to update the current value of this metric. This returns `true` if the external metric was created by the requester, `false` otherwise."
                }
              }
            }
          ]
        },
        "status": {
          "type": "string",
          "example": "green",
          "nullable": true,
          "readOnly": true,
          "description": "The current status of this goal. When the goal is open, its status can be `green`, `yellow`, and `red` to reflect \"On Track\", \"At Risk\", and \"Off Track\", respectively. When the goal is closed, the value can be `missed`, `achieved`, `partial`, or `dropped`.\n*Note* you can only write to this property if `metric` is set."
        },
        "followers": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/UserCompact"
          },
          "description": "Array of users who are members of this goal."
        },
        "num_likes": {
          "type": "integer",
          "example": 5,
          "readOnly": true,
          "description": "The number of users who have liked this goal."
        },
        "workspace": {
          "allOf": [
            {
              "$ref": "#/components/schemas/WorkspaceCompact"
            },
            {
              "type": "object"
            }
          ]
        },
        "time_period": {
          "allOf": [
            {
              "$ref": "#/components/schemas/TimePeriodCompact"
            },
            {
              "type": "object",
              "nullable": true
            }
          ]
        },
        "current_status_update": {
          "allOf": [
            {
              "$ref": "#/components/schemas/StatusUpdateCompact"
            },
            {
              "nullable": true,
              "description": "The latest `status_update` posted to this goal."
            }
          ]
        }
      }
    }
  ]
}
object GoalUpdateRequest
{
  "allOf": [
    {
      "$ref": "#/components/schemas/GoalRequestBase"
    },
    {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "example": "green",
          "nullable": true,
          "description": "The current status of this goal. When the goal is open, its status can be `green`, `yellow`, and `red` to reflect \"On Track\", \"At Risk\", and \"Off Track\", respectively. When the goal is closed, the value can be `missed`, `achieved`, `partial`, or `dropped`.\n*Note* you can only write to this property if `metric` is set."
        }
      }
    }
  ]
}
object GoalsAddCollaboratorsToGoalRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/TaskAddFollowersRequest"
    }
  }
}
object GoalsAddCollaboratorsToGoalResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalResponse"
    }
  }
}
object GoalsCreateMetricRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalMetricBase"
    }
  }
}
object GoalsCreateMetricResponse
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalResponse"
    }
  }
}
object GoalsCreateNewGoalRecordRequest
{
  "type": "object",
  "properties": {
    "data": {
      "$ref": "#/components/schemas/GoalRequest"
    }
  }
}
Load more schemas