asana 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1041) hide show
  1. package/.babelrc +33 -0
  2. package/.github/workflows/publish.yaml +72 -0
  3. package/.swagger-codegen/VERSION +1 -0
  4. package/.swagger-codegen-ignore +21 -1
  5. package/README.md +885 -296
  6. package/codegen/swagger/README.md +74 -0
  7. package/codegen/swagger/pom.xml +129 -0
  8. package/codegen/swagger/src/main/java/com/asana/codegen/ExampleUtility.java +27 -0
  9. package/codegen/swagger/src/main/java/com/asana/codegen/JavascriptClientCodegenGenerator.java +79 -0
  10. package/codegen/swagger/src/main/java/com/asana/codegen/ReadMe.java +164 -0
  11. package/codegen/swagger/src/main/resources/META-INF/services/io.swagger.codegen.v3.CodegenConfig +1 -0
  12. package/codegen/templates/ApiClient.mustache +618 -0
  13. package/codegen/templates/README.mustache +439 -0
  14. package/codegen/templates/api_doc.mustache +51 -0
  15. package/codegen/templates/code_sample.mustache +47 -0
  16. package/codegen/templates/code_samples.mustache +11 -0
  17. package/dist/ApiClient.js +607 -0
  18. package/dist/api/AttachmentsApi.js +217 -0
  19. package/dist/api/AuditLogAPIApi.js +105 -0
  20. package/dist/api/BatchAPIApi.js +90 -0
  21. package/dist/api/CustomFieldSettingsApi.js +139 -0
  22. package/dist/api/CustomFieldsApi.js +376 -0
  23. package/dist/api/EventsApi.js +93 -0
  24. package/dist/api/GoalRelationshipsApi.js +271 -0
  25. package/dist/api/GoalsApi.js +486 -0
  26. package/dist/api/JobsApi.js +91 -0
  27. package/dist/api/MembershipsApi.js +161 -0
  28. package/dist/api/OrganizationExportsApi.js +130 -0
  29. package/dist/api/PortfolioMembershipsApi.js +181 -0
  30. package/dist/api/PortfoliosApi.js +560 -0
  31. package/dist/api/ProjectBriefsApi.js +219 -0
  32. package/dist/api/ProjectMembershipsApi.js +138 -0
  33. package/dist/api/ProjectStatusesApi.js +218 -0
  34. package/dist/api/ProjectTemplatesApi.js +256 -0
  35. package/dist/api/ProjectsApi.js +881 -0
  36. package/dist/api/RulesApi.js +92 -0
  37. package/dist/api/SectionsApi.js +334 -0
  38. package/dist/api/StatusUpdatesApi.js +216 -0
  39. package/dist/api/StoriesApi.js +264 -0
  40. package/dist/api/TagsApi.js +380 -0
  41. package/dist/api/TasksApi.js +1277 -0
  42. package/dist/api/TeamMembershipsApi.js +229 -0
  43. package/dist/api/TeamsApi.js +360 -0
  44. package/dist/api/TimePeriodsApi.js +139 -0
  45. package/dist/api/TimeTrackingEntriesApi.js +264 -0
  46. package/dist/api/TypeaheadApi.js +103 -0
  47. package/dist/api/UserTaskListsApi.js +137 -0
  48. package/dist/api/UsersApi.js +274 -0
  49. package/dist/api/WebhooksApi.js +258 -0
  50. package/dist/api/WorkspaceMembershipsApi.js +182 -0
  51. package/dist/api/WorkspacesApi.js +264 -0
  52. package/dist/index.js +3141 -0
  53. package/dist/model/AddCustomFieldSettingRequest.js +89 -0
  54. package/dist/model/AddFollowersRequest.js +68 -0
  55. package/dist/model/AddMembersRequest.js +68 -0
  56. package/dist/model/AllOfProjectResponseOwner.js +61 -0
  57. package/dist/model/AllOfProjectTemplateBaseOwner.js +61 -0
  58. package/dist/model/AllOfProjectTemplateResponseOwner.js +61 -0
  59. package/dist/model/AllOfStoryResponseNewDateValue.js +60 -0
  60. package/dist/model/AllOfStoryResponseOldDateValue.js +60 -0
  61. package/dist/model/AllOfUserTaskListBaseOwner.js +61 -0
  62. package/dist/model/AllOfUserTaskListBaseWorkspace.js +61 -0
  63. package/dist/model/AllOfUserTaskListCompactOwner.js +61 -0
  64. package/dist/model/AllOfUserTaskListCompactWorkspace.js +61 -0
  65. package/dist/model/AllOfUserTaskListRequestOwner.js +61 -0
  66. package/dist/model/AllOfUserTaskListRequestWorkspace.js +61 -0
  67. package/dist/model/AllOfUserTaskListResponseOwner.js +61 -0
  68. package/dist/model/AllOfUserTaskListResponseWorkspace.js +61 -0
  69. package/dist/model/AllOfWorkspaceMembershipResponseUserTaskListOwner.js +61 -0
  70. package/dist/model/AllOfWorkspaceMembershipResponseUserTaskListWorkspace.js +61 -0
  71. package/dist/model/AsanaNamedResource.js +81 -0
  72. package/dist/model/AsanaNamedResourceArray.js +75 -0
  73. package/dist/model/AsanaResource.js +74 -0
  74. package/dist/model/AttachmentBase.js +88 -0
  75. package/dist/model/AttachmentCompact.js +88 -0
  76. package/dist/model/AttachmentRequest.js +145 -0
  77. package/dist/model/AttachmentResponse.js +143 -0
  78. package/dist/model/AttachmentResponseArray.js +75 -0
  79. package/dist/model/AttachmentResponseData.js +68 -0
  80. package/dist/model/AttachmentResponseParent.js +88 -0
  81. package/dist/model/AuditLogEvent.js +116 -0
  82. package/dist/model/AuditLogEventActor.js +120 -0
  83. package/dist/model/AuditLogEventArray.js +75 -0
  84. package/dist/model/AuditLogEventContext.js +164 -0
  85. package/dist/model/AuditLogEventDetails.js +61 -0
  86. package/dist/model/AuditLogEventResource.js +95 -0
  87. package/dist/model/BatchBody.js +66 -0
  88. package/dist/model/BatchRequest.js +67 -0
  89. package/dist/model/BatchRequestAction.js +129 -0
  90. package/dist/model/BatchRequestActions.js +129 -0
  91. package/dist/model/BatchRequestOptions.js +81 -0
  92. package/dist/model/BatchResponse.js +81 -0
  93. package/dist/model/BatchResponseArray.js +75 -0
  94. package/dist/model/CreateMembershipRequest.js +80 -0
  95. package/dist/model/CreateTimeTrackingEntryRequest.js +73 -0
  96. package/dist/model/CustomFieldBase.js +1047 -0
  97. package/dist/model/CustomFieldBaseDateValue.js +74 -0
  98. package/dist/model/CustomFieldBaseEnumOptions.js +95 -0
  99. package/dist/model/CustomFieldBaseEnumValue.js +95 -0
  100. package/dist/model/CustomFieldCompact.js +233 -0
  101. package/dist/model/CustomFieldGidEnumOptionsBody.js +66 -0
  102. package/dist/model/CustomFieldRequest.js +1070 -0
  103. package/dist/model/CustomFieldResponse.js +1069 -0
  104. package/dist/model/CustomFieldResponseArray.js +75 -0
  105. package/dist/model/CustomFieldResponseCreatedBy.js +81 -0
  106. package/dist/model/CustomFieldResponseData.js +68 -0
  107. package/dist/model/CustomFieldResponsePeopleValue.js +81 -0
  108. package/dist/model/CustomFieldSettingBase.js +74 -0
  109. package/dist/model/CustomFieldSettingCompact.js +74 -0
  110. package/dist/model/CustomFieldSettingResponse.js +102 -0
  111. package/dist/model/CustomFieldSettingResponseArray.js +75 -0
  112. package/dist/model/CustomFieldSettingResponseCustomField.js +1069 -0
  113. package/dist/model/CustomFieldSettingResponseData.js +68 -0
  114. package/dist/model/CustomFieldSettingResponseParent.js +81 -0
  115. package/dist/model/CustomFieldSettingResponseProject.js +81 -0
  116. package/dist/model/CustomFieldsBody.js +66 -0
  117. package/dist/model/CustomFieldsCustomFieldGidBody.js +66 -0
  118. package/dist/model/DateVariableCompact.js +80 -0
  119. package/dist/model/DateVariableRequest.js +73 -0
  120. package/dist/model/EmptyResponse.js +61 -0
  121. package/dist/model/EmptyResponseData.js +68 -0
  122. package/dist/model/EnumOption.js +95 -0
  123. package/dist/model/EnumOptionBase.js +95 -0
  124. package/dist/model/EnumOptionData.js +68 -0
  125. package/dist/model/EnumOptionInsertRequest.js +82 -0
  126. package/dist/model/EnumOptionRequest.js +109 -0
  127. package/dist/model/EnumOptionsEnumOptionGidBody.js +66 -0
  128. package/dist/model/EnumOptionsInsertBody.js +66 -0
  129. package/dist/model/Error.js +80 -0
  130. package/dist/model/ErrorResponse.js +67 -0
  131. package/dist/model/ErrorResponseErrors.js +80 -0
  132. package/dist/model/EventResponse.js +109 -0
  133. package/dist/model/EventResponseArray.js +75 -0
  134. package/dist/model/EventResponseChange.js +95 -0
  135. package/dist/model/EventResponseParent.js +81 -0
  136. package/dist/model/EventResponseResource.js +81 -0
  137. package/dist/model/EventResponseUser.js +81 -0
  138. package/dist/model/GoalAddSubgoalRequest.js +82 -0
  139. package/dist/model/GoalAddSupportingRelationshipRequest.js +89 -0
  140. package/dist/model/GoalAddSupportingWorkRequest.js +68 -0
  141. package/dist/model/GoalBase.js +123 -0
  142. package/dist/model/GoalCompact.js +88 -0
  143. package/dist/model/GoalGidAddFollowersBody.js +66 -0
  144. package/dist/model/GoalGidAddSupportingRelationshipBody.js +66 -0
  145. package/dist/model/GoalGidRemoveFollowersBody.js +66 -0
  146. package/dist/model/GoalGidRemoveSupportingRelationshipBody.js +66 -0
  147. package/dist/model/GoalGidSetMetricBody.js +66 -0
  148. package/dist/model/GoalGidSetMetricCurrentValueBody.js +66 -0
  149. package/dist/model/GoalMembershipBase.js +102 -0
  150. package/dist/model/GoalMembershipBaseGoal.js +88 -0
  151. package/dist/model/GoalMembershipCompact.js +102 -0
  152. package/dist/model/GoalMembershipResponse.js +102 -0
  153. package/dist/model/GoalMetricBase.js +203 -0
  154. package/dist/model/GoalMetricCurrentValueRequest.js +81 -0
  155. package/dist/model/GoalMetricRequest.js +203 -0
  156. package/dist/model/GoalRelationshipBase.js +119 -0
  157. package/dist/model/GoalRelationshipBaseSupportedGoal.js +88 -0
  158. package/dist/model/GoalRelationshipBaseSupportingResource.js +81 -0
  159. package/dist/model/GoalRelationshipCompact.js +112 -0
  160. package/dist/model/GoalRelationshipRequest.js +119 -0
  161. package/dist/model/GoalRelationshipResponse.js +119 -0
  162. package/dist/model/GoalRelationshipResponseArray.js +75 -0
  163. package/dist/model/GoalRelationshipResponseData.js +68 -0
  164. package/dist/model/GoalRelationshipsGoalRelationshipGidBody.js +66 -0
  165. package/dist/model/GoalRemoveSubgoalRequest.js +68 -0
  166. package/dist/model/GoalRemoveSupportingRelationshipRequest.js +68 -0
  167. package/dist/model/GoalRequest.js +157 -0
  168. package/dist/model/GoalRequestBase.js +151 -0
  169. package/dist/model/GoalResponse.js +195 -0
  170. package/dist/model/GoalResponseArray.js +75 -0
  171. package/dist/model/GoalResponseCurrentStatusUpdate.js +110 -0
  172. package/dist/model/GoalResponseData.js +68 -0
  173. package/dist/model/GoalResponseLikes.js +74 -0
  174. package/dist/model/GoalResponseMetric.js +210 -0
  175. package/dist/model/GoalResponseTeam.js +81 -0
  176. package/dist/model/GoalResponseTimePeriod.js +144 -0
  177. package/dist/model/GoalResponseWorkspace.js +81 -0
  178. package/dist/model/GoalUpdateRequest.js +158 -0
  179. package/dist/model/GoalsBody.js +66 -0
  180. package/dist/model/GoalsGoalGidBody.js +66 -0
  181. package/dist/model/InlineResponse412.js +73 -0
  182. package/dist/model/InlineResponse412Errors.js +66 -0
  183. package/dist/model/JobBase.js +136 -0
  184. package/dist/model/JobBaseNewProject.js +81 -0
  185. package/dist/model/JobBaseNewProjectTemplate.js +81 -0
  186. package/dist/model/JobBaseNewTask.js +115 -0
  187. package/dist/model/JobCompact.js +136 -0
  188. package/dist/model/JobResponse.js +136 -0
  189. package/dist/model/JobResponseData.js +68 -0
  190. package/dist/model/Like.js +74 -0
  191. package/dist/model/MemberCompact.js +81 -0
  192. package/dist/model/MembershipRequest.js +66 -0
  193. package/dist/model/MembershipResponse.js +60 -0
  194. package/dist/model/MembershipResponseArray.js +75 -0
  195. package/dist/model/MembershipResponseData.js +68 -0
  196. package/dist/model/MembershipsBody.js +66 -0
  197. package/dist/model/ModifyDependenciesRequest.js +66 -0
  198. package/dist/model/ModifyDependentsRequest.js +67 -0
  199. package/dist/model/NextPage.js +81 -0
  200. package/dist/model/OrganizationExportBase.js +129 -0
  201. package/dist/model/OrganizationExportCompact.js +129 -0
  202. package/dist/model/OrganizationExportRequest.js +67 -0
  203. package/dist/model/OrganizationExportResponse.js +129 -0
  204. package/dist/model/OrganizationExportResponseData.js +68 -0
  205. package/dist/model/OrganizationExportsBody.js +66 -0
  206. package/dist/model/PortfolioAddItemRequest.js +82 -0
  207. package/dist/model/PortfolioBase.js +185 -0
  208. package/dist/model/PortfolioCompact.js +81 -0
  209. package/dist/model/PortfolioGidAddCustomFieldSettingBody.js +66 -0
  210. package/dist/model/PortfolioGidAddItemBody.js +66 -0
  211. package/dist/model/PortfolioGidAddMembersBody.js +66 -0
  212. package/dist/model/PortfolioGidRemoveCustomFieldSettingBody.js +66 -0
  213. package/dist/model/PortfolioGidRemoveItemBody.js +66 -0
  214. package/dist/model/PortfolioGidRemoveMembersBody.js +66 -0
  215. package/dist/model/PortfolioMembershipBase.js +88 -0
  216. package/dist/model/PortfolioMembershipBasePortfolio.js +81 -0
  217. package/dist/model/PortfolioMembershipCompact.js +88 -0
  218. package/dist/model/PortfolioMembershipResponse.js +88 -0
  219. package/dist/model/PortfolioMembershipResponseArray.js +75 -0
  220. package/dist/model/PortfolioMembershipResponseData.js +68 -0
  221. package/dist/model/PortfolioRemoveItemRequest.js +68 -0
  222. package/dist/model/PortfolioRequest.js +206 -0
  223. package/dist/model/PortfolioResponse.js +277 -0
  224. package/dist/model/PortfolioResponseArray.js +75 -0
  225. package/dist/model/PortfolioResponseCurrentStatusUpdate.js +110 -0
  226. package/dist/model/PortfolioResponseCustomFieldSettings.js +102 -0
  227. package/dist/model/PortfolioResponseCustomFields.js +233 -0
  228. package/dist/model/PortfolioResponseData.js +68 -0
  229. package/dist/model/PortfolioResponseWorkspace.js +81 -0
  230. package/dist/model/PortfoliosBody.js +66 -0
  231. package/dist/model/PortfoliosPortfolioGidBody.js +66 -0
  232. package/dist/model/Preview.js +116 -0
  233. package/dist/model/ProjectBase.js +329 -0
  234. package/dist/model/ProjectBaseCurrentStatus.js +160 -0
  235. package/dist/model/ProjectBaseCurrentStatusUpdate.js +110 -0
  236. package/dist/model/ProjectBaseWorkspace.js +81 -0
  237. package/dist/model/ProjectBriefBase.js +88 -0
  238. package/dist/model/ProjectBriefCompact.js +74 -0
  239. package/dist/model/ProjectBriefRequest.js +95 -0
  240. package/dist/model/ProjectBriefResponse.js +109 -0
  241. package/dist/model/ProjectBriefResponseData.js +68 -0
  242. package/dist/model/ProjectBriefResponseProject.js +81 -0
  243. package/dist/model/ProjectBriefsProjectBriefGidBody.js +66 -0
  244. package/dist/model/ProjectCompact.js +81 -0
  245. package/dist/model/ProjectDuplicateRequest.js +89 -0
  246. package/dist/model/ProjectDuplicateRequestScheduleDates.js +83 -0
  247. package/dist/model/ProjectGidAddCustomFieldSettingBody.js +66 -0
  248. package/dist/model/ProjectGidAddFollowersBody.js +66 -0
  249. package/dist/model/ProjectGidAddMembersBody.js +66 -0
  250. package/dist/model/ProjectGidDuplicateBody.js +66 -0
  251. package/dist/model/ProjectGidProjectBriefsBody.js +66 -0
  252. package/dist/model/ProjectGidProjectStatusesBody.js +66 -0
  253. package/dist/model/ProjectGidRemoveCustomFieldSettingBody.js +66 -0
  254. package/dist/model/ProjectGidRemoveFollowersBody.js +66 -0
  255. package/dist/model/ProjectGidRemoveMembersBody.js +66 -0
  256. package/dist/model/ProjectGidSaveAsTemplateBody.js +66 -0
  257. package/dist/model/ProjectGidSectionsBody.js +66 -0
  258. package/dist/model/ProjectMembershipBase.js +81 -0
  259. package/dist/model/ProjectMembershipCompact.js +81 -0
  260. package/dist/model/ProjectMembershipResponse.js +153 -0
  261. package/dist/model/ProjectMembershipResponseArray.js +75 -0
  262. package/dist/model/ProjectMembershipResponseData.js +68 -0
  263. package/dist/model/ProjectMembershipResponseMember.js +81 -0
  264. package/dist/model/ProjectRequest.js +359 -0
  265. package/dist/model/ProjectResponse.js +574 -0
  266. package/dist/model/ProjectResponseArray.js +75 -0
  267. package/dist/model/ProjectResponseCompletedBy.js +81 -0
  268. package/dist/model/ProjectResponseCreatedFromTemplate.js +81 -0
  269. package/dist/model/ProjectResponseData.js +68 -0
  270. package/dist/model/ProjectResponseProjectBrief.js +74 -0
  271. package/dist/model/ProjectResponseTeam.js +81 -0
  272. package/dist/model/ProjectSaveAsTemplateRequest.js +91 -0
  273. package/dist/model/ProjectSectionInsertRequest.js +82 -0
  274. package/dist/model/ProjectStatusBase.js +133 -0
  275. package/dist/model/ProjectStatusCompact.js +81 -0
  276. package/dist/model/ProjectStatusRequest.js +133 -0
  277. package/dist/model/ProjectStatusResponse.js +160 -0
  278. package/dist/model/ProjectStatusResponseArray.js +75 -0
  279. package/dist/model/ProjectStatusResponseData.js +68 -0
  280. package/dist/model/ProjectTemplateBase.js +241 -0
  281. package/dist/model/ProjectTemplateBaseRequestedDates.js +80 -0
  282. package/dist/model/ProjectTemplateBaseRequestedRoles.js +81 -0
  283. package/dist/model/ProjectTemplateBaseTeam.js +81 -0
  284. package/dist/model/ProjectTemplateCompact.js +81 -0
  285. package/dist/model/ProjectTemplateGidInstantiateProjectBody.js +66 -0
  286. package/dist/model/ProjectTemplateInstantiateProjectRequest.js +105 -0
  287. package/dist/model/ProjectTemplateInstantiateProjectRequestRequestedDates.js +73 -0
  288. package/dist/model/ProjectTemplateInstantiateProjectRequestRequestedRoles.js +73 -0
  289. package/dist/model/ProjectTemplateResponse.js +241 -0
  290. package/dist/model/ProjectTemplateResponseArray.js +75 -0
  291. package/dist/model/ProjectTemplateResponseData.js +68 -0
  292. package/dist/model/ProjectsBody.js +66 -0
  293. package/dist/model/ProjectsProjectGidBody.js +66 -0
  294. package/dist/model/RemoveCustomFieldSettingRequest.js +68 -0
  295. package/dist/model/RemoveFollowersRequest.js +68 -0
  296. package/dist/model/RemoveMembersRequest.js +68 -0
  297. package/dist/model/RequestedRoleRequest.js +73 -0
  298. package/dist/model/RuleTriggerGidRunBody.js +66 -0
  299. package/dist/model/RuleTriggerRequest.js +79 -0
  300. package/dist/model/RuleTriggerResponse.js +66 -0
  301. package/dist/model/RuleTriggerResponseData.js +68 -0
  302. package/dist/model/SectionBase.js +81 -0
  303. package/dist/model/SectionCompact.js +81 -0
  304. package/dist/model/SectionGidAddTaskBody.js +66 -0
  305. package/dist/model/SectionRequest.js +82 -0
  306. package/dist/model/SectionResponse.js +102 -0
  307. package/dist/model/SectionResponseArray.js +75 -0
  308. package/dist/model/SectionResponseData.js +68 -0
  309. package/dist/model/SectionTaskInsertRequest.js +82 -0
  310. package/dist/model/SectionsInsertBody.js +66 -0
  311. package/dist/model/SectionsSectionGidBody.js +66 -0
  312. package/dist/model/StatusUpdateBase.js +187 -0
  313. package/dist/model/StatusUpdateCompact.js +110 -0
  314. package/dist/model/StatusUpdateRequest.js +196 -0
  315. package/dist/model/StatusUpdateResponse.js +264 -0
  316. package/dist/model/StatusUpdateResponseArray.js +75 -0
  317. package/dist/model/StatusUpdateResponseData.js +68 -0
  318. package/dist/model/StatusUpdateResponseParent.js +81 -0
  319. package/dist/model/StatusUpdatesBody.js +66 -0
  320. package/dist/model/StoriesStoryGidBody.js +66 -0
  321. package/dist/model/StoryBase.js +183 -0
  322. package/dist/model/StoryCompact.js +102 -0
  323. package/dist/model/StoryRequest.js +183 -0
  324. package/dist/model/StoryResponse.js +540 -0
  325. package/dist/model/StoryResponseArray.js +75 -0
  326. package/dist/model/StoryResponseAssignee.js +81 -0
  327. package/dist/model/StoryResponseCustomField.js +233 -0
  328. package/dist/model/StoryResponseData.js +68 -0
  329. package/dist/model/StoryResponseDates.js +81 -0
  330. package/dist/model/StoryResponseOldDates.js +81 -0
  331. package/dist/model/StoryResponseOldEnumValue.js +95 -0
  332. package/dist/model/StoryResponseOldSection.js +81 -0
  333. package/dist/model/StoryResponsePreviews.js +116 -0
  334. package/dist/model/StoryResponseProject.js +81 -0
  335. package/dist/model/StoryResponseStory.js +102 -0
  336. package/dist/model/StoryResponseTag.js +81 -0
  337. package/dist/model/StoryResponseTarget.js +115 -0
  338. package/dist/model/StoryResponseTask.js +115 -0
  339. package/dist/model/TagBase.js +197 -0
  340. package/dist/model/TagCompact.js +81 -0
  341. package/dist/model/TagRequest.js +211 -0
  342. package/dist/model/TagResponse.js +226 -0
  343. package/dist/model/TagResponseArray.js +75 -0
  344. package/dist/model/TagResponseData.js +68 -0
  345. package/dist/model/TagsBody.js +66 -0
  346. package/dist/model/TaskAddFollowersRequest.js +68 -0
  347. package/dist/model/TaskAddProjectRequest.js +89 -0
  348. package/dist/model/TaskAddTagRequest.js +68 -0
  349. package/dist/model/TaskBase.js +359 -0
  350. package/dist/model/TaskBaseCompletedBy.js +81 -0
  351. package/dist/model/TaskBaseDependencies.js +74 -0
  352. package/dist/model/TaskBaseExternal.js +72 -0
  353. package/dist/model/TaskBaseMemberships.js +73 -0
  354. package/dist/model/TaskBaseSection.js +81 -0
  355. package/dist/model/TaskCompact.js +115 -0
  356. package/dist/model/TaskCountResponse.js +102 -0
  357. package/dist/model/TaskCountResponseData.js +68 -0
  358. package/dist/model/TaskDuplicateRequest.js +73 -0
  359. package/dist/model/TaskGidAddDependenciesBody.js +66 -0
  360. package/dist/model/TaskGidAddDependentsBody.js +66 -0
  361. package/dist/model/TaskGidAddFollowersBody.js +66 -0
  362. package/dist/model/TaskGidAddProjectBody.js +66 -0
  363. package/dist/model/TaskGidAddTagBody.js +66 -0
  364. package/dist/model/TaskGidDuplicateBody.js +66 -0
  365. package/dist/model/TaskGidRemoveDependenciesBody.js +66 -0
  366. package/dist/model/TaskGidRemoveDependentsBody.js +66 -0
  367. package/dist/model/TaskGidRemoveFollowersBody.js +66 -0
  368. package/dist/model/TaskGidRemoveProjectBody.js +66 -0
  369. package/dist/model/TaskGidRemoveTagBody.js +66 -0
  370. package/dist/model/TaskGidSetParentBody.js +66 -0
  371. package/dist/model/TaskGidStoriesBody.js +66 -0
  372. package/dist/model/TaskGidSubtasksBody.js +66 -0
  373. package/dist/model/TaskGidTimeTrackingEntriesBody.js +66 -0
  374. package/dist/model/TaskRemoveFollowersRequest.js +68 -0
  375. package/dist/model/TaskRemoveProjectRequest.js +68 -0
  376. package/dist/model/TaskRemoveTagRequest.js +68 -0
  377. package/dist/model/TaskRequest.js +417 -0
  378. package/dist/model/TaskResponse.js +426 -0
  379. package/dist/model/TaskResponseArray.js +75 -0
  380. package/dist/model/TaskResponseAssigneeSection.js +81 -0
  381. package/dist/model/TaskResponseCustomFields.js +1069 -0
  382. package/dist/model/TaskResponseData.js +68 -0
  383. package/dist/model/TaskResponseParent.js +115 -0
  384. package/dist/model/TaskResponseTags.js +81 -0
  385. package/dist/model/TaskResponseWorkspace.js +81 -0
  386. package/dist/model/TaskSetParentRequest.js +82 -0
  387. package/dist/model/TasksBody.js +66 -0
  388. package/dist/model/TasksTaskGidBody.js +66 -0
  389. package/dist/model/TeamAddUserRequest.js +67 -0
  390. package/dist/model/TeamBase.js +81 -0
  391. package/dist/model/TeamCompact.js +81 -0
  392. package/dist/model/TeamGidAddUserBody.js +66 -0
  393. package/dist/model/TeamGidProjectsBody.js +66 -0
  394. package/dist/model/TeamGidRemoveUserBody.js +66 -0
  395. package/dist/model/TeamMembershipBase.js +109 -0
  396. package/dist/model/TeamMembershipCompact.js +109 -0
  397. package/dist/model/TeamMembershipResponse.js +109 -0
  398. package/dist/model/TeamMembershipResponseArray.js +75 -0
  399. package/dist/model/TeamMembershipResponseData.js +68 -0
  400. package/dist/model/TeamRemoveUserRequest.js +67 -0
  401. package/dist/model/TeamRequest.js +275 -0
  402. package/dist/model/TeamResponse.js +282 -0
  403. package/dist/model/TeamResponseArray.js +75 -0
  404. package/dist/model/TeamResponseData.js +68 -0
  405. package/dist/model/TeamResponseOrganization.js +81 -0
  406. package/dist/model/TeamsBody.js +66 -0
  407. package/dist/model/TeamsTeamGidBody.js +66 -0
  408. package/dist/model/TemplateRole.js +81 -0
  409. package/dist/model/TimePeriodBase.js +151 -0
  410. package/dist/model/TimePeriodCompact.js +144 -0
  411. package/dist/model/TimePeriodResponse.js +151 -0
  412. package/dist/model/TimePeriodResponseArray.js +75 -0
  413. package/dist/model/TimePeriodResponseData.js +68 -0
  414. package/dist/model/TimeTrackingEntriesTimeTrackingEntryGidBody.js +66 -0
  415. package/dist/model/TimeTrackingEntryBase.js +109 -0
  416. package/dist/model/TimeTrackingEntryBaseData.js +68 -0
  417. package/dist/model/TimeTrackingEntryCompact.js +95 -0
  418. package/dist/model/TimeTrackingEntryCompactArray.js +75 -0
  419. package/dist/model/UpdateTimeTrackingEntryRequest.js +73 -0
  420. package/dist/model/UserBase.js +81 -0
  421. package/dist/model/UserBaseResponse.js +95 -0
  422. package/dist/model/UserBaseResponseData.js +68 -0
  423. package/dist/model/UserBaseResponsePhoto.js +96 -0
  424. package/dist/model/UserCompact.js +81 -0
  425. package/dist/model/UserRequest.js +81 -0
  426. package/dist/model/UserResponse.js +103 -0
  427. package/dist/model/UserResponseArray.js +75 -0
  428. package/dist/model/UserResponseData.js +68 -0
  429. package/dist/model/UserTaskListBase.js +95 -0
  430. package/dist/model/UserTaskListCompact.js +95 -0
  431. package/dist/model/UserTaskListRequest.js +95 -0
  432. package/dist/model/UserTaskListResponse.js +95 -0
  433. package/dist/model/UserTaskListResponseData.js +68 -0
  434. package/dist/model/WebhookCompact.js +95 -0
  435. package/dist/model/WebhookCompactResource.js +81 -0
  436. package/dist/model/WebhookFilter.js +88 -0
  437. package/dist/model/WebhookRequest.js +85 -0
  438. package/dist/model/WebhookRequestFilters.js +88 -0
  439. package/dist/model/WebhookResponse.js +131 -0
  440. package/dist/model/WebhookResponseArray.js +75 -0
  441. package/dist/model/WebhookResponseData.js +68 -0
  442. package/dist/model/WebhookUpdateRequest.js +67 -0
  443. package/dist/model/WebhooksBody.js +66 -0
  444. package/dist/model/WebhooksWebhookGidBody.js +66 -0
  445. package/dist/model/WorkspaceAddUserRequest.js +67 -0
  446. package/dist/model/WorkspaceBase.js +81 -0
  447. package/dist/model/WorkspaceCompact.js +81 -0
  448. package/dist/model/WorkspaceGidAddUserBody.js +66 -0
  449. package/dist/model/WorkspaceGidProjectsBody.js +66 -0
  450. package/dist/model/WorkspaceGidRemoveUserBody.js +66 -0
  451. package/dist/model/WorkspaceGidTagsBody.js +66 -0
  452. package/dist/model/WorkspaceMembershipBase.js +88 -0
  453. package/dist/model/WorkspaceMembershipCompact.js +88 -0
  454. package/dist/model/WorkspaceMembershipRequest.js +88 -0
  455. package/dist/model/WorkspaceMembershipResponse.js +130 -0
  456. package/dist/model/WorkspaceMembershipResponseArray.js +75 -0
  457. package/dist/model/WorkspaceMembershipResponseData.js +68 -0
  458. package/dist/model/WorkspaceMembershipResponseUserTaskList.js +95 -0
  459. package/dist/model/WorkspaceMembershipResponseVacationDates.js +74 -0
  460. package/dist/model/WorkspaceRemoveUserRequest.js +67 -0
  461. package/dist/model/WorkspaceRequest.js +81 -0
  462. package/dist/model/WorkspaceResponse.js +95 -0
  463. package/dist/model/WorkspaceResponseArray.js +75 -0
  464. package/dist/model/WorkspaceResponseData.js +68 -0
  465. package/dist/model/WorkspacesWorkspaceGidBody.js +66 -0
  466. package/mocha.opts +1 -0
  467. package/package.json +33 -44
  468. package/src/ApiClient.js +600 -0
  469. package/src/api/AttachmentsApi.js +238 -0
  470. package/src/api/AuditLogAPIApi.js +95 -0
  471. package/src/api/BatchAPIApi.js +89 -0
  472. package/src/api/CustomFieldSettingsApi.js +141 -0
  473. package/src/api/CustomFieldsApi.js +439 -0
  474. package/src/api/EventsApi.js +90 -0
  475. package/src/api/GoalRelationshipsApi.js +305 -0
  476. package/src/api/GoalsApi.js +563 -0
  477. package/src/api/JobsApi.js +88 -0
  478. package/src/api/MembershipsApi.js +181 -0
  479. package/src/api/OrganizationExportsApi.js +138 -0
  480. package/src/api/PortfolioMembershipsApi.js +190 -0
  481. package/src/api/PortfoliosApi.js +669 -0
  482. package/src/api/ProjectBriefsApi.js +246 -0
  483. package/src/api/ProjectMembershipsApi.js +141 -0
  484. package/src/api/ProjectStatusesApi.js +243 -0
  485. package/src/api/ProjectTemplatesApi.js +288 -0
  486. package/src/api/ProjectsApi.js +1040 -0
  487. package/src/api/RulesApi.js +92 -0
  488. package/src/api/SectionsApi.js +390 -0
  489. package/src/api/StatusUpdatesApi.js +241 -0
  490. package/src/api/StoriesApi.js +298 -0
  491. package/src/api/TagsApi.js +440 -0
  492. package/src/api/TasksApi.js +1454 -0
  493. package/src/api/TeamMembershipsApi.js +245 -0
  494. package/src/api/TeamsApi.js +411 -0
  495. package/src/api/TimePeriodsApi.js +142 -0
  496. package/src/api/TimeTrackingEntriesApi.js +298 -0
  497. package/src/api/TypeaheadApi.js +96 -0
  498. package/src/api/UserTaskListsApi.js +142 -0
  499. package/src/api/UsersApi.js +299 -0
  500. package/src/api/WebhooksApi.js +294 -0
  501. package/src/api/WorkspaceMembershipsApi.js +192 -0
  502. package/src/api/WorkspacesApi.js +300 -0
  503. package/src/index.js +3183 -0
  504. package/src/model/AddCustomFieldSettingRequest.js +79 -0
  505. package/src/model/AddFollowersRequest.js +55 -0
  506. package/src/model/AddMembersRequest.js +55 -0
  507. package/src/model/AllOfProjectResponseOwner.js +45 -0
  508. package/src/model/AllOfProjectTemplateBaseOwner.js +45 -0
  509. package/src/model/AllOfProjectTemplateResponseOwner.js +45 -0
  510. package/src/model/AllOfStoryResponseNewDateValue.js +44 -0
  511. package/src/model/AllOfStoryResponseOldDateValue.js +44 -0
  512. package/src/model/AllOfUserTaskListBaseOwner.js +45 -0
  513. package/src/model/AllOfUserTaskListBaseWorkspace.js +45 -0
  514. package/src/model/AllOfUserTaskListCompactOwner.js +45 -0
  515. package/src/model/AllOfUserTaskListCompactWorkspace.js +45 -0
  516. package/src/model/AllOfUserTaskListRequestOwner.js +45 -0
  517. package/src/model/AllOfUserTaskListRequestWorkspace.js +45 -0
  518. package/src/model/AllOfUserTaskListResponseOwner.js +45 -0
  519. package/src/model/AllOfUserTaskListResponseWorkspace.js +45 -0
  520. package/src/model/AllOfWorkspaceMembershipResponseUserTaskListOwner.js +45 -0
  521. package/src/model/AllOfWorkspaceMembershipResponseUserTaskListWorkspace.js +45 -0
  522. package/src/model/AsanaNamedResource.js +70 -0
  523. package/src/model/AsanaNamedResourceArray.js +63 -0
  524. package/src/model/AsanaResource.js +62 -0
  525. package/src/model/AttachmentBase.js +78 -0
  526. package/src/model/AttachmentCompact.js +78 -0
  527. package/src/model/AttachmentRequest.js +143 -0
  528. package/src/model/AttachmentResponse.js +141 -0
  529. package/src/model/AttachmentResponseArray.js +63 -0
  530. package/src/model/AttachmentResponseData.js +55 -0
  531. package/src/model/AttachmentResponseParent.js +78 -0
  532. package/src/model/AuditLogEvent.js +110 -0
  533. package/src/model/AuditLogEventActor.js +114 -0
  534. package/src/model/AuditLogEventArray.js +63 -0
  535. package/src/model/AuditLogEventContext.js +164 -0
  536. package/src/model/AuditLogEventDetails.js +45 -0
  537. package/src/model/AuditLogEventResource.js +86 -0
  538. package/src/model/BatchBody.js +53 -0
  539. package/src/model/BatchRequest.js +54 -0
  540. package/src/model/BatchRequestAction.js +124 -0
  541. package/src/model/BatchRequestActions.js +124 -0
  542. package/src/model/BatchRequestOptions.js +70 -0
  543. package/src/model/BatchResponse.js +70 -0
  544. package/src/model/BatchResponseArray.js +63 -0
  545. package/src/model/CreateMembershipRequest.js +69 -0
  546. package/src/model/CreateTimeTrackingEntryRequest.js +61 -0
  547. package/src/model/CustomFieldBase.js +1209 -0
  548. package/src/model/CustomFieldBaseDateValue.js +62 -0
  549. package/src/model/CustomFieldBaseEnumOptions.js +86 -0
  550. package/src/model/CustomFieldBaseEnumValue.js +86 -0
  551. package/src/model/CustomFieldCompact.js +243 -0
  552. package/src/model/CustomFieldGidEnumOptionsBody.js +53 -0
  553. package/src/model/CustomFieldRequest.js +1235 -0
  554. package/src/model/CustomFieldResponse.js +1234 -0
  555. package/src/model/CustomFieldResponseArray.js +63 -0
  556. package/src/model/CustomFieldResponseCreatedBy.js +70 -0
  557. package/src/model/CustomFieldResponseData.js +55 -0
  558. package/src/model/CustomFieldResponsePeopleValue.js +70 -0
  559. package/src/model/CustomFieldSettingBase.js +62 -0
  560. package/src/model/CustomFieldSettingCompact.js +62 -0
  561. package/src/model/CustomFieldSettingResponse.js +94 -0
  562. package/src/model/CustomFieldSettingResponseArray.js +63 -0
  563. package/src/model/CustomFieldSettingResponseCustomField.js +1234 -0
  564. package/src/model/CustomFieldSettingResponseData.js +55 -0
  565. package/src/model/CustomFieldSettingResponseParent.js +70 -0
  566. package/src/model/CustomFieldSettingResponseProject.js +70 -0
  567. package/src/model/CustomFieldsBody.js +53 -0
  568. package/src/model/CustomFieldsCustomFieldGidBody.js +53 -0
  569. package/src/model/DateVariableCompact.js +69 -0
  570. package/src/model/DateVariableRequest.js +61 -0
  571. package/src/model/EmptyResponse.js +45 -0
  572. package/src/model/EmptyResponseData.js +55 -0
  573. package/src/model/EnumOption.js +86 -0
  574. package/src/model/EnumOptionBase.js +86 -0
  575. package/src/model/EnumOptionData.js +55 -0
  576. package/src/model/EnumOptionInsertRequest.js +71 -0
  577. package/src/model/EnumOptionRequest.js +102 -0
  578. package/src/model/EnumOptionsEnumOptionGidBody.js +53 -0
  579. package/src/model/EnumOptionsInsertBody.js +53 -0
  580. package/src/model/Error.js +69 -0
  581. package/src/model/ErrorResponse.js +54 -0
  582. package/src/model/ErrorResponseErrors.js +69 -0
  583. package/src/model/EventResponse.js +102 -0
  584. package/src/model/EventResponseArray.js +63 -0
  585. package/src/model/EventResponseChange.js +86 -0
  586. package/src/model/EventResponseParent.js +70 -0
  587. package/src/model/EventResponseResource.js +70 -0
  588. package/src/model/EventResponseUser.js +70 -0
  589. package/src/model/GoalAddSubgoalRequest.js +71 -0
  590. package/src/model/GoalAddSupportingRelationshipRequest.js +79 -0
  591. package/src/model/GoalAddSupportingWorkRequest.js +55 -0
  592. package/src/model/GoalBase.js +118 -0
  593. package/src/model/GoalCompact.js +78 -0
  594. package/src/model/GoalGidAddFollowersBody.js +53 -0
  595. package/src/model/GoalGidAddSupportingRelationshipBody.js +53 -0
  596. package/src/model/GoalGidRemoveFollowersBody.js +53 -0
  597. package/src/model/GoalGidRemoveSupportingRelationshipBody.js +53 -0
  598. package/src/model/GoalGidSetMetricBody.js +53 -0
  599. package/src/model/GoalGidSetMetricCurrentValueBody.js +53 -0
  600. package/src/model/GoalMembershipBase.js +94 -0
  601. package/src/model/GoalMembershipBaseGoal.js +78 -0
  602. package/src/model/GoalMembershipCompact.js +94 -0
  603. package/src/model/GoalMembershipResponse.js +94 -0
  604. package/src/model/GoalMetricBase.js +206 -0
  605. package/src/model/GoalMetricCurrentValueRequest.js +70 -0
  606. package/src/model/GoalMetricRequest.js +206 -0
  607. package/src/model/GoalRelationshipBase.js +112 -0
  608. package/src/model/GoalRelationshipBaseSupportedGoal.js +78 -0
  609. package/src/model/GoalRelationshipBaseSupportingResource.js +70 -0
  610. package/src/model/GoalRelationshipCompact.js +104 -0
  611. package/src/model/GoalRelationshipRequest.js +112 -0
  612. package/src/model/GoalRelationshipResponse.js +112 -0
  613. package/src/model/GoalRelationshipResponseArray.js +63 -0
  614. package/src/model/GoalRelationshipResponseData.js +55 -0
  615. package/src/model/GoalRelationshipsGoalRelationshipGidBody.js +53 -0
  616. package/src/model/GoalRemoveSubgoalRequest.js +55 -0
  617. package/src/model/GoalRemoveSupportingRelationshipRequest.js +55 -0
  618. package/src/model/GoalRequest.js +157 -0
  619. package/src/model/GoalRequestBase.js +150 -0
  620. package/src/model/GoalResponse.js +200 -0
  621. package/src/model/GoalResponseArray.js +63 -0
  622. package/src/model/GoalResponseCurrentStatusUpdate.js +102 -0
  623. package/src/model/GoalResponseData.js +55 -0
  624. package/src/model/GoalResponseLikes.js +62 -0
  625. package/src/model/GoalResponseMetric.js +214 -0
  626. package/src/model/GoalResponseTeam.js +70 -0
  627. package/src/model/GoalResponseTimePeriod.js +142 -0
  628. package/src/model/GoalResponseWorkspace.js +70 -0
  629. package/src/model/GoalUpdateRequest.js +158 -0
  630. package/src/model/GoalsBody.js +53 -0
  631. package/src/model/GoalsGoalGidBody.js +53 -0
  632. package/src/model/InlineResponse412.js +61 -0
  633. package/src/model/InlineResponse412Errors.js +53 -0
  634. package/src/model/JobBase.js +132 -0
  635. package/src/model/JobBaseNewProject.js +70 -0
  636. package/src/model/JobBaseNewProjectTemplate.js +70 -0
  637. package/src/model/JobBaseNewTask.js +108 -0
  638. package/src/model/JobCompact.js +132 -0
  639. package/src/model/JobResponse.js +132 -0
  640. package/src/model/JobResponseData.js +55 -0
  641. package/src/model/Like.js +62 -0
  642. package/src/model/MemberCompact.js +70 -0
  643. package/src/model/MembershipRequest.js +53 -0
  644. package/src/model/MembershipResponse.js +44 -0
  645. package/src/model/MembershipResponseArray.js +63 -0
  646. package/src/model/MembershipResponseData.js +55 -0
  647. package/src/model/MembershipsBody.js +53 -0
  648. package/src/model/ModifyDependenciesRequest.js +53 -0
  649. package/src/model/ModifyDependentsRequest.js +54 -0
  650. package/src/model/NextPage.js +70 -0
  651. package/src/model/OrganizationExportBase.js +124 -0
  652. package/src/model/OrganizationExportCompact.js +124 -0
  653. package/src/model/OrganizationExportRequest.js +54 -0
  654. package/src/model/OrganizationExportResponse.js +124 -0
  655. package/src/model/OrganizationExportResponseData.js +55 -0
  656. package/src/model/OrganizationExportsBody.js +53 -0
  657. package/src/model/PortfolioAddItemRequest.js +71 -0
  658. package/src/model/PortfolioBase.js +192 -0
  659. package/src/model/PortfolioCompact.js +70 -0
  660. package/src/model/PortfolioGidAddCustomFieldSettingBody.js +53 -0
  661. package/src/model/PortfolioGidAddItemBody.js +53 -0
  662. package/src/model/PortfolioGidAddMembersBody.js +53 -0
  663. package/src/model/PortfolioGidRemoveCustomFieldSettingBody.js +53 -0
  664. package/src/model/PortfolioGidRemoveItemBody.js +53 -0
  665. package/src/model/PortfolioGidRemoveMembersBody.js +53 -0
  666. package/src/model/PortfolioMembershipBase.js +78 -0
  667. package/src/model/PortfolioMembershipBasePortfolio.js +70 -0
  668. package/src/model/PortfolioMembershipCompact.js +78 -0
  669. package/src/model/PortfolioMembershipResponse.js +78 -0
  670. package/src/model/PortfolioMembershipResponseArray.js +63 -0
  671. package/src/model/PortfolioMembershipResponseData.js +55 -0
  672. package/src/model/PortfolioRemoveItemRequest.js +55 -0
  673. package/src/model/PortfolioRequest.js +216 -0
  674. package/src/model/PortfolioResponse.js +297 -0
  675. package/src/model/PortfolioResponseArray.js +63 -0
  676. package/src/model/PortfolioResponseCurrentStatusUpdate.js +102 -0
  677. package/src/model/PortfolioResponseCustomFieldSettings.js +94 -0
  678. package/src/model/PortfolioResponseCustomFields.js +243 -0
  679. package/src/model/PortfolioResponseData.js +55 -0
  680. package/src/model/PortfolioResponseWorkspace.js +70 -0
  681. package/src/model/PortfoliosBody.js +53 -0
  682. package/src/model/PortfoliosPortfolioGidBody.js +53 -0
  683. package/src/model/Preview.js +110 -0
  684. package/src/model/ProjectBase.js +356 -0
  685. package/src/model/ProjectBaseCurrentStatus.js +159 -0
  686. package/src/model/ProjectBaseCurrentStatusUpdate.js +102 -0
  687. package/src/model/ProjectBaseWorkspace.js +70 -0
  688. package/src/model/ProjectBriefBase.js +78 -0
  689. package/src/model/ProjectBriefCompact.js +62 -0
  690. package/src/model/ProjectBriefRequest.js +86 -0
  691. package/src/model/ProjectBriefResponse.js +102 -0
  692. package/src/model/ProjectBriefResponseData.js +55 -0
  693. package/src/model/ProjectBriefResponseProject.js +70 -0
  694. package/src/model/ProjectBriefsProjectBriefGidBody.js +53 -0
  695. package/src/model/ProjectCompact.js +70 -0
  696. package/src/model/ProjectDuplicateRequest.js +79 -0
  697. package/src/model/ProjectDuplicateRequestScheduleDates.js +72 -0
  698. package/src/model/ProjectGidAddCustomFieldSettingBody.js +53 -0
  699. package/src/model/ProjectGidAddFollowersBody.js +53 -0
  700. package/src/model/ProjectGidAddMembersBody.js +53 -0
  701. package/src/model/ProjectGidDuplicateBody.js +53 -0
  702. package/src/model/ProjectGidProjectBriefsBody.js +53 -0
  703. package/src/model/ProjectGidProjectStatusesBody.js +53 -0
  704. package/src/model/ProjectGidRemoveCustomFieldSettingBody.js +53 -0
  705. package/src/model/ProjectGidRemoveFollowersBody.js +53 -0
  706. package/src/model/ProjectGidRemoveMembersBody.js +53 -0
  707. package/src/model/ProjectGidSaveAsTemplateBody.js +53 -0
  708. package/src/model/ProjectGidSectionsBody.js +53 -0
  709. package/src/model/ProjectMembershipBase.js +70 -0
  710. package/src/model/ProjectMembershipCompact.js +70 -0
  711. package/src/model/ProjectMembershipResponse.js +150 -0
  712. package/src/model/ProjectMembershipResponseArray.js +63 -0
  713. package/src/model/ProjectMembershipResponseData.js +55 -0
  714. package/src/model/ProjectMembershipResponseMember.js +70 -0
  715. package/src/model/ProjectRequest.js +388 -0
  716. package/src/model/ProjectResponse.js +643 -0
  717. package/src/model/ProjectResponseArray.js +63 -0
  718. package/src/model/ProjectResponseCompletedBy.js +70 -0
  719. package/src/model/ProjectResponseCreatedFromTemplate.js +70 -0
  720. package/src/model/ProjectResponseData.js +55 -0
  721. package/src/model/ProjectResponseProjectBrief.js +62 -0
  722. package/src/model/ProjectResponseTeam.js +70 -0
  723. package/src/model/ProjectSaveAsTemplateRequest.js +81 -0
  724. package/src/model/ProjectSectionInsertRequest.js +71 -0
  725. package/src/model/ProjectStatusBase.js +128 -0
  726. package/src/model/ProjectStatusCompact.js +70 -0
  727. package/src/model/ProjectStatusRequest.js +128 -0
  728. package/src/model/ProjectStatusResponse.js +159 -0
  729. package/src/model/ProjectStatusResponseArray.js +63 -0
  730. package/src/model/ProjectStatusResponseData.js +55 -0
  731. package/src/model/ProjectTemplateBase.js +256 -0
  732. package/src/model/ProjectTemplateBaseRequestedDates.js +69 -0
  733. package/src/model/ProjectTemplateBaseRequestedRoles.js +70 -0
  734. package/src/model/ProjectTemplateBaseTeam.js +70 -0
  735. package/src/model/ProjectTemplateCompact.js +70 -0
  736. package/src/model/ProjectTemplateGidInstantiateProjectBody.js +53 -0
  737. package/src/model/ProjectTemplateInstantiateProjectRequest.js +97 -0
  738. package/src/model/ProjectTemplateInstantiateProjectRequestRequestedDates.js +61 -0
  739. package/src/model/ProjectTemplateInstantiateProjectRequestRequestedRoles.js +61 -0
  740. package/src/model/ProjectTemplateResponse.js +256 -0
  741. package/src/model/ProjectTemplateResponseArray.js +63 -0
  742. package/src/model/ProjectTemplateResponseData.js +55 -0
  743. package/src/model/ProjectsBody.js +53 -0
  744. package/src/model/ProjectsProjectGidBody.js +53 -0
  745. package/src/model/RemoveCustomFieldSettingRequest.js +55 -0
  746. package/src/model/RemoveFollowersRequest.js +55 -0
  747. package/src/model/RemoveMembersRequest.js +55 -0
  748. package/src/model/RequestedRoleRequest.js +61 -0
  749. package/src/model/RuleTriggerGidRunBody.js +53 -0
  750. package/src/model/RuleTriggerRequest.js +65 -0
  751. package/src/model/RuleTriggerResponse.js +53 -0
  752. package/src/model/RuleTriggerResponseData.js +55 -0
  753. package/src/model/SectionBase.js +70 -0
  754. package/src/model/SectionCompact.js +70 -0
  755. package/src/model/SectionGidAddTaskBody.js +53 -0
  756. package/src/model/SectionRequest.js +71 -0
  757. package/src/model/SectionResponse.js +94 -0
  758. package/src/model/SectionResponseArray.js +63 -0
  759. package/src/model/SectionResponseData.js +55 -0
  760. package/src/model/SectionTaskInsertRequest.js +71 -0
  761. package/src/model/SectionsInsertBody.js +53 -0
  762. package/src/model/SectionsSectionGidBody.js +53 -0
  763. package/src/model/StatusUpdateBase.js +190 -0
  764. package/src/model/StatusUpdateCompact.js +102 -0
  765. package/src/model/StatusUpdateRequest.js +200 -0
  766. package/src/model/StatusUpdateResponse.js +278 -0
  767. package/src/model/StatusUpdateResponseArray.js +63 -0
  768. package/src/model/StatusUpdateResponseData.js +55 -0
  769. package/src/model/StatusUpdateResponseParent.js +70 -0
  770. package/src/model/StatusUpdatesBody.js +53 -0
  771. package/src/model/StoriesStoryGidBody.js +53 -0
  772. package/src/model/StoryBase.js +188 -0
  773. package/src/model/StoryCompact.js +94 -0
  774. package/src/model/StoryRequest.js +188 -0
  775. package/src/model/StoryResponse.js +595 -0
  776. package/src/model/StoryResponseArray.js +63 -0
  777. package/src/model/StoryResponseAssignee.js +70 -0
  778. package/src/model/StoryResponseCustomField.js +243 -0
  779. package/src/model/StoryResponseData.js +55 -0
  780. package/src/model/StoryResponseDates.js +70 -0
  781. package/src/model/StoryResponseOldDates.js +70 -0
  782. package/src/model/StoryResponseOldEnumValue.js +86 -0
  783. package/src/model/StoryResponseOldSection.js +70 -0
  784. package/src/model/StoryResponsePreviews.js +110 -0
  785. package/src/model/StoryResponseProject.js +70 -0
  786. package/src/model/StoryResponseStory.js +94 -0
  787. package/src/model/StoryResponseTag.js +70 -0
  788. package/src/model/StoryResponseTarget.js +108 -0
  789. package/src/model/StoryResponseTask.js +108 -0
  790. package/src/model/TagBase.js +206 -0
  791. package/src/model/TagCompact.js +70 -0
  792. package/src/model/TagRequest.js +222 -0
  793. package/src/model/TagResponse.js +239 -0
  794. package/src/model/TagResponseArray.js +63 -0
  795. package/src/model/TagResponseData.js +55 -0
  796. package/src/model/TagsBody.js +53 -0
  797. package/src/model/TaskAddFollowersRequest.js +55 -0
  798. package/src/model/TaskAddProjectRequest.js +79 -0
  799. package/src/model/TaskAddTagRequest.js +55 -0
  800. package/src/model/TaskBase.js +385 -0
  801. package/src/model/TaskBaseCompletedBy.js +70 -0
  802. package/src/model/TaskBaseDependencies.js +62 -0
  803. package/src/model/TaskBaseExternal.js +60 -0
  804. package/src/model/TaskBaseMemberships.js +61 -0
  805. package/src/model/TaskBaseSection.js +70 -0
  806. package/src/model/TaskCompact.js +108 -0
  807. package/src/model/TaskCountResponse.js +94 -0
  808. package/src/model/TaskCountResponseData.js +55 -0
  809. package/src/model/TaskDuplicateRequest.js +61 -0
  810. package/src/model/TaskGidAddDependenciesBody.js +53 -0
  811. package/src/model/TaskGidAddDependentsBody.js +53 -0
  812. package/src/model/TaskGidAddFollowersBody.js +53 -0
  813. package/src/model/TaskGidAddProjectBody.js +53 -0
  814. package/src/model/TaskGidAddTagBody.js +53 -0
  815. package/src/model/TaskGidDuplicateBody.js +53 -0
  816. package/src/model/TaskGidRemoveDependenciesBody.js +53 -0
  817. package/src/model/TaskGidRemoveDependentsBody.js +53 -0
  818. package/src/model/TaskGidRemoveFollowersBody.js +53 -0
  819. package/src/model/TaskGidRemoveProjectBody.js +53 -0
  820. package/src/model/TaskGidRemoveTagBody.js +53 -0
  821. package/src/model/TaskGidSetParentBody.js +53 -0
  822. package/src/model/TaskGidStoriesBody.js +53 -0
  823. package/src/model/TaskGidSubtasksBody.js +53 -0
  824. package/src/model/TaskGidTimeTrackingEntriesBody.js +53 -0
  825. package/src/model/TaskRemoveFollowersRequest.js +55 -0
  826. package/src/model/TaskRemoveProjectRequest.js +55 -0
  827. package/src/model/TaskRemoveTagRequest.js +55 -0
  828. package/src/model/TaskRequest.js +449 -0
  829. package/src/model/TaskResponse.js +461 -0
  830. package/src/model/TaskResponseArray.js +63 -0
  831. package/src/model/TaskResponseAssigneeSection.js +70 -0
  832. package/src/model/TaskResponseCustomFields.js +1234 -0
  833. package/src/model/TaskResponseData.js +55 -0
  834. package/src/model/TaskResponseParent.js +108 -0
  835. package/src/model/TaskResponseTags.js +70 -0
  836. package/src/model/TaskResponseWorkspace.js +70 -0
  837. package/src/model/TaskSetParentRequest.js +71 -0
  838. package/src/model/TasksBody.js +53 -0
  839. package/src/model/TasksTaskGidBody.js +53 -0
  840. package/src/model/TeamAddUserRequest.js +54 -0
  841. package/src/model/TeamBase.js +70 -0
  842. package/src/model/TeamCompact.js +70 -0
  843. package/src/model/TeamGidAddUserBody.js +53 -0
  844. package/src/model/TeamGidProjectsBody.js +53 -0
  845. package/src/model/TeamGidRemoveUserBody.js +53 -0
  846. package/src/model/TeamMembershipBase.js +102 -0
  847. package/src/model/TeamMembershipCompact.js +102 -0
  848. package/src/model/TeamMembershipResponse.js +102 -0
  849. package/src/model/TeamMembershipResponseArray.js +63 -0
  850. package/src/model/TeamMembershipResponseData.js +55 -0
  851. package/src/model/TeamRemoveUserRequest.js +54 -0
  852. package/src/model/TeamRequest.js +282 -0
  853. package/src/model/TeamResponse.js +290 -0
  854. package/src/model/TeamResponseArray.js +63 -0
  855. package/src/model/TeamResponseData.js +55 -0
  856. package/src/model/TeamResponseOrganization.js +70 -0
  857. package/src/model/TeamsBody.js +53 -0
  858. package/src/model/TeamsTeamGidBody.js +53 -0
  859. package/src/model/TemplateRole.js +70 -0
  860. package/src/model/TimePeriodBase.js +150 -0
  861. package/src/model/TimePeriodCompact.js +142 -0
  862. package/src/model/TimePeriodResponse.js +150 -0
  863. package/src/model/TimePeriodResponseArray.js +63 -0
  864. package/src/model/TimePeriodResponseData.js +55 -0
  865. package/src/model/TimeTrackingEntriesTimeTrackingEntryGidBody.js +53 -0
  866. package/src/model/TimeTrackingEntryBase.js +102 -0
  867. package/src/model/TimeTrackingEntryBaseData.js +55 -0
  868. package/src/model/TimeTrackingEntryCompact.js +86 -0
  869. package/src/model/TimeTrackingEntryCompactArray.js +63 -0
  870. package/src/model/UpdateTimeTrackingEntryRequest.js +61 -0
  871. package/src/model/UserBase.js +70 -0
  872. package/src/model/UserBaseResponse.js +86 -0
  873. package/src/model/UserBaseResponseData.js +55 -0
  874. package/src/model/UserBaseResponsePhoto.js +88 -0
  875. package/src/model/UserCompact.js +70 -0
  876. package/src/model/UserRequest.js +70 -0
  877. package/src/model/UserResponse.js +95 -0
  878. package/src/model/UserResponseArray.js +63 -0
  879. package/src/model/UserResponseData.js +55 -0
  880. package/src/model/UserTaskListBase.js +86 -0
  881. package/src/model/UserTaskListCompact.js +86 -0
  882. package/src/model/UserTaskListRequest.js +86 -0
  883. package/src/model/UserTaskListResponse.js +86 -0
  884. package/src/model/UserTaskListResponseData.js +55 -0
  885. package/src/model/WebhookCompact.js +86 -0
  886. package/src/model/WebhookCompactResource.js +70 -0
  887. package/src/model/WebhookFilter.js +78 -0
  888. package/src/model/WebhookRequest.js +74 -0
  889. package/src/model/WebhookRequestFilters.js +78 -0
  890. package/src/model/WebhookResponse.js +127 -0
  891. package/src/model/WebhookResponseArray.js +63 -0
  892. package/src/model/WebhookResponseData.js +55 -0
  893. package/src/model/WebhookUpdateRequest.js +54 -0
  894. package/src/model/WebhooksBody.js +53 -0
  895. package/src/model/WebhooksWebhookGidBody.js +53 -0
  896. package/src/model/WorkspaceAddUserRequest.js +54 -0
  897. package/src/model/WorkspaceBase.js +70 -0
  898. package/src/model/WorkspaceCompact.js +70 -0
  899. package/src/model/WorkspaceGidAddUserBody.js +53 -0
  900. package/src/model/WorkspaceGidProjectsBody.js +53 -0
  901. package/src/model/WorkspaceGidRemoveUserBody.js +53 -0
  902. package/src/model/WorkspaceGidTagsBody.js +53 -0
  903. package/src/model/WorkspaceMembershipBase.js +78 -0
  904. package/src/model/WorkspaceMembershipCompact.js +78 -0
  905. package/src/model/WorkspaceMembershipRequest.js +78 -0
  906. package/src/model/WorkspaceMembershipResponse.js +126 -0
  907. package/src/model/WorkspaceMembershipResponseArray.js +63 -0
  908. package/src/model/WorkspaceMembershipResponseData.js +55 -0
  909. package/src/model/WorkspaceMembershipResponseUserTaskList.js +86 -0
  910. package/src/model/WorkspaceMembershipResponseVacationDates.js +62 -0
  911. package/src/model/WorkspaceRemoveUserRequest.js +54 -0
  912. package/src/model/WorkspaceRequest.js +70 -0
  913. package/src/model/WorkspaceResponse.js +86 -0
  914. package/src/model/WorkspaceResponseArray.js +63 -0
  915. package/src/model/WorkspaceResponseData.js +55 -0
  916. package/src/model/WorkspacesWorkspaceGidBody.js +53 -0
  917. package/.github/workflows/build.yml +0 -27
  918. package/.github/workflows/publish-to-github-releases.yml +0 -26
  919. package/.github/workflows/publish-to-npmjs.yml +0 -21
  920. package/VERSION +0 -1
  921. package/bower.json +0 -29
  922. package/gulpfile.js +0 -205
  923. package/index.js +0 -7
  924. package/lib/auth/app.js +0 -136
  925. package/lib/auth/authenticator.js +0 -41
  926. package/lib/auth/auto_detect.js +0 -36
  927. package/lib/auth/base_browser_flow.js +0 -97
  928. package/lib/auth/basic_authenticator.js +0 -33
  929. package/lib/auth/chrome_extension_flow.js +0 -94
  930. package/lib/auth/index.js +0 -9
  931. package/lib/auth/native_flow.js +0 -106
  932. package/lib/auth/oauth_authenticator.js +0 -125
  933. package/lib/auth/oauth_error.js +0 -24
  934. package/lib/auth/oauth_util.js +0 -52
  935. package/lib/auth/popup_flow.js +0 -135
  936. package/lib/auth/redirect_flow.js +0 -54
  937. package/lib/client.js +0 -250
  938. package/lib/default_environment.js +0 -21
  939. package/lib/dispatcher.js +0 -438
  940. package/lib/errors/error.js +0 -12
  941. package/lib/errors/forbidden.js +0 -12
  942. package/lib/errors/index.js +0 -7
  943. package/lib/errors/invalid_request.js +0 -12
  944. package/lib/errors/no_authorization.js +0 -12
  945. package/lib/errors/not_found.js +0 -12
  946. package/lib/errors/premium_only.js +0 -12
  947. package/lib/errors/rate_limit_enforced.js +0 -17
  948. package/lib/errors/server_error.js +0 -12
  949. package/lib/resources/attachments.js +0 -43
  950. package/lib/resources/audit_log_api.js +0 -6
  951. package/lib/resources/batch_api.js +0 -3
  952. package/lib/resources/custom_field_settings.js +0 -41
  953. package/lib/resources/custom_fields.js +0 -195
  954. package/lib/resources/events.js +0 -41
  955. package/lib/resources/gen/attachments.js +0 -78
  956. package/lib/resources/gen/audit_log_api.js +0 -45
  957. package/lib/resources/gen/batch_api.js +0 -35
  958. package/lib/resources/gen/custom_field_settings.js +0 -63
  959. package/lib/resources/gen/custom_fields.js +0 -167
  960. package/lib/resources/gen/events.js +0 -39
  961. package/lib/resources/gen/goals.js +0 -321
  962. package/lib/resources/gen/jobs.js +0 -39
  963. package/lib/resources/gen/organization_exports.js +0 -55
  964. package/lib/resources/gen/portfolio_memberships.js +0 -85
  965. package/lib/resources/gen/portfolios.js +0 -243
  966. package/lib/resources/gen/project_briefs.js +0 -93
  967. package/lib/resources/gen/project_memberships.js +0 -62
  968. package/lib/resources/gen/project_statuses.js +0 -97
  969. package/lib/resources/gen/project_templates.js +0 -101
  970. package/lib/resources/gen/projects.js +0 -384
  971. package/lib/resources/gen/sections.js +0 -151
  972. package/lib/resources/gen/status_updates.js +0 -95
  973. package/lib/resources/gen/stories.js +0 -117
  974. package/lib/resources/gen/tags.js +0 -176
  975. package/lib/resources/gen/tasks.js +0 -579
  976. package/lib/resources/gen/team_memberships.js +0 -107
  977. package/lib/resources/gen/teams.js +0 -138
  978. package/lib/resources/gen/time_periods.js +0 -62
  979. package/lib/resources/gen/typeahead.js +0 -43
  980. package/lib/resources/gen/user_task_lists.js +0 -60
  981. package/lib/resources/gen/users.js +0 -125
  982. package/lib/resources/gen/webhooks.js +0 -113
  983. package/lib/resources/gen/workspace_memberships.js +0 -84
  984. package/lib/resources/gen/workspaces.js +0 -113
  985. package/lib/resources/index.js +0 -26
  986. package/lib/resources/jobs.js +0 -23
  987. package/lib/resources/organization_exports.js +0 -41
  988. package/lib/resources/portfolio_memberships.js +0 -61
  989. package/lib/resources/portfolios.js +0 -263
  990. package/lib/resources/project_memberships.js +0 -51
  991. package/lib/resources/project_statuses.js +0 -83
  992. package/lib/resources/projects.js +0 -359
  993. package/lib/resources/resource.js +0 -118
  994. package/lib/resources/sections.js +0 -158
  995. package/lib/resources/stories.js +0 -99
  996. package/lib/resources/tags.js +0 -167
  997. package/lib/resources/tasks.js +0 -702
  998. package/lib/resources/teams.js +0 -122
  999. package/lib/resources/typeahead.js +0 -3
  1000. package/lib/resources/user_task_lists.js +0 -78
  1001. package/lib/resources/users.js +0 -98
  1002. package/lib/resources/webhooks.js +0 -100
  1003. package/lib/resources/workspace_memberships.js +0 -3
  1004. package/lib/resources/workspaces.js +0 -135
  1005. package/lib/util/buffered_readable.js +0 -59
  1006. package/lib/util/collection.js +0 -133
  1007. package/lib/util/event_stream.js +0 -71
  1008. package/lib/util/resource_stream.js +0 -80
  1009. package/samples/attachments_sample.yaml +0 -45
  1010. package/samples/audit_log_api_sample.yaml +0 -12
  1011. package/samples/batch_api_sample.yaml +0 -12
  1012. package/samples/custom_field_settings_sample.yaml +0 -23
  1013. package/samples/custom_fields_sample.yaml +0 -89
  1014. package/samples/events_sample.yaml +0 -12
  1015. package/samples/goals_sample.yaml +0 -177
  1016. package/samples/jobs_sample.yaml +0 -12
  1017. package/samples/organization_exports_sample.yaml +0 -23
  1018. package/samples/portfolio_memberships_sample.yaml +0 -34
  1019. package/samples/portfolios_sample.yaml +0 -133
  1020. package/samples/project_briefs_sample.yaml +0 -45
  1021. package/samples/project_memberships_sample.yaml +0 -23
  1022. package/samples/project_statuses_sample.yaml +0 -45
  1023. package/samples/project_templates_sample.yaml +0 -45
  1024. package/samples/projects_sample.yaml +0 -210
  1025. package/samples/sections_sample.yaml +0 -78
  1026. package/samples/status_updates_sample.yaml +0 -45
  1027. package/samples/stories_sample.yaml +0 -56
  1028. package/samples/tags_sample.yaml +0 -89
  1029. package/samples/tasks_sample.yaml +0 -287
  1030. package/samples/team_memberships_sample.yaml +0 -45
  1031. package/samples/teams_sample.yaml +0 -67
  1032. package/samples/time_periods_sample.yaml +0 -23
  1033. package/samples/typeahead_sample.yaml +0 -12
  1034. package/samples/user_task_lists_sample.yaml +0 -23
  1035. package/samples/users_sample.yaml +0 -56
  1036. package/samples/webhooks_sample.yaml +0 -56
  1037. package/samples/workspace_memberships_sample.yaml +0 -34
  1038. package/samples/workspaces_sample.yaml +0 -56
  1039. package/swagger_templates/api.mustache +0 -60
  1040. package/swagger_templates/api_doc.mustache +0 -13
  1041. package/swagger_templates/node-config.json +0 -7
package/README.md CHANGED
@@ -1,353 +1,942 @@
1
- # Asana [![GitHub release][release-image]]() [![Build Status][github-actions-image]][github-actions-url] [![NPM Version][npm-image]][npm-url]
1
+ # asana [![GitHub release][release-image]]() [![Build Status][github-actions-image]][github-actions-url] [![NPM Version][npm-image]][npm-url]
2
2
 
3
- A JavaScript client (for both Node and browser) for the Asana API v1.0.
3
+ JavaScript client library for Asana.
4
+
5
+ - API version: 1.0
6
+ - Package version: 2.0.0
4
7
 
5
8
  ## Installation
6
9
 
7
- ### Node
10
+ ### For [Node.js](https://nodejs.org/)
8
11
 
9
- Install with npm:
12
+ #### npm install from [npm](https://www.npmjs.com/package/asana)
10
13
 
11
- ```sh
14
+ ```shell
12
15
  npm install asana --save
13
16
  ```
14
17
 
15
- ### Browser
16
-
17
- Include the latest release directly from GitHub.
18
+ #### git
19
+ #
20
+ If the library is hosted at a git repository, e.g.
21
+ https://github.com/GIT_USER_ID/GIT_REPO_ID
22
+ then install it via:
18
23
 
19
- ```html
20
- <script src="https://github.com/Asana/node-asana/releases/download/<LATEST_RELEASE>/asana-min.js"></script>
24
+ ```shell
25
+ npm install GIT_USER_ID/GIT_REPO_ID --save
21
26
  ```
22
27
 
23
- **OR:**
24
-
25
- 1. Download the latest distribution in [releases](https://github.com/Asana/node-asana/releases).
26
- 2. Make sure to serve it from your webserver.
27
- 3. Include it on the client from a `<script>` tag.
28
-
29
- ## Design Decisions
30
-
31
- - **Thin Wrapper** This client is a <dfn>thin wrapper</dfn>, which means that the client
32
- makes little attempt to verify the validity of the arguments locally. All errors
33
- are reported by the server. We include custom Error types which contain
34
- the response from the server.
35
- - **Promises** Promises with [bluebird][bluebird] seem like the most neutral way
36
- to support node's various async paradigms. If you want Promises, you get them
37
- by default. If you want callbacks, bluebird promises support `nodeify`, which
38
- takes a callback as parameter. For generators and streams, [co][co] and
39
- [highland][highland] also support promises, respectively. Beyond that, other
40
- major libraries such as mongoose, mocha, and elastic search (which uses
41
- bluebird) also support Promises.
42
-
43
- ## Usage
28
+ ### For browser
44
29
 
45
- To do anything, you'll need always an instance of an `Asana.Client` configured
46
- with your preferred authentication method (see the Authentication section below
47
- for more complex scenarios) and other options.
30
+ The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following
31
+ the above steps with Node.js and installing browserify with `npm install -g browserify`,
32
+ perform the following (assuming *main.js* is your entry file):
48
33
 
49
- The most minimal example would be as follows:
50
-
51
- ```js
52
- const asana = require('asana');
53
- const client = asana.Client.create().useAccessToken('my_access_token');
54
- client.users.me().then(function(me) {
55
- console.log(me);
56
- });
34
+ ```shell
35
+ browserify main.js > bundle.js
57
36
  ```
58
37
 
59
- All resources are exposed as properties of the `Asana.Client` instance (e.g. `client.workspaces`). See the [developer documentation][api-reference] for docs on each of them.
60
-
61
- ### Authentication
38
+ Then include *bundle.js* in the HTML pages.
62
39
 
63
- This module supports authenticating against the Asana API with either a Personal Access Token or through OAuth 2.0.
40
+ ### Webpack Configuration
64
41
 
65
- #### Personal Access Token
42
+ Using Webpack you may encounter the following error: "Module not found: Error:
43
+ Cannot resolve module", most certainly you should disable AMD loader. Add/merge
44
+ the following section to your webpack config:
66
45
 
67
- ```js
68
- const client = Asana.Client.create().useAccessToken('personal_access_token');
46
+ ```javascript
47
+ module: {
48
+ rules: [
49
+ {
50
+ parser: {
51
+ amd: false
52
+ }
53
+ }
54
+ ]
55
+ }
69
56
  ```
70
57
 
71
- #### OAuth 2.0
58
+ ## Getting Started
72
59
 
73
- Authenticating through OAuth2 is preferred. There are many ways you can do this.
60
+ Please follow the [installation](#installation) instruction and execute the following JS code:
74
61
 
75
- In all cases, you should create a `Client` that contains your app information. The values in the below snippet should be substituted with the real properties from your application's settings.
76
-
77
- ```js
78
- const client = Asana.Client.create({
79
- clientId: 123,
80
- clientSecret: 'my_client_secret',
81
- redirectUri: 'my_redirect_uri'
82
- });
83
- ```
62
+ ```javascript
63
+ const Asana = require('asana');
64
+ const defaultClient = Asana.ApiClient.instance;
84
65
 
85
- ##### With a plain bearer token (doesn't support auto-refresh)
66
+ // Configure OAuth2 access token for authorization: oauth2
67
+ const oauth2 = defaultClient.authentications['oauth2'];
68
+ oauth2.accessToken = "<YOUR_PERSONAL_ACCESS_TOKEN>"
86
69
 
87
- If you have a plain bearer token obtained somewhere else and you don't mind not
88
- having your token auto-refresh, you can authenticate with it as follows:
70
+ let usersApiInstance = new Asana.UsersApi()
71
+ let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.
72
+ let opts = {
73
+ 'opt_fields': ["email","name","photo","photo.image_1024x1024","photo.image_128x128","photo.image_21x21","photo.image_27x27","photo.image_36x36","photo.image_60x60","workspaces","workspaces.name"] // [String] | Properties to include in the response. Set this query parameter to a comma-separated list of the properties you wish to include.
74
+ };
89
75
 
90
- ```js
91
- client.useOauth({
92
- credentials: 'my_access_token'
76
+ usersApiInstance.getUser(user_gid, opts, (error, data, response) => {
77
+ if (error) {
78
+ console.error(error);
79
+ } else {
80
+ console.log('API called successfully. Returned data: ' + JSON.stringify(data, null, 2));
81
+ }
93
82
  });
94
83
  ```
95
84
 
96
- ##### With a refresh token
85
+ ### Example: GET, POST, PUT, DELETE on tasks
97
86
 
98
- If you obtained a refresh token (from a previous authorization), you can use it together with your client
99
- credentials to authenticate:
100
-
101
- ```js
102
- const credentials = {
103
- // access_token: 'my_access_token',
104
- refresh_token: 'my_refresh_token'
87
+ #### GET - get multiple tasks
88
+ ```javascript
89
+ const Asana = require('asana');
90
+ const defaultClient = Asana.ApiClient.instance;
91
+
92
+ // Configure OAuth2 access token for authorization: oauth2
93
+ const oauth2 = defaultClient.authentications['oauth2'];
94
+ oauth2.accessToken = "<YOUR_PERSONAL_ACCESS_TOKEN>"
95
+
96
+ let tasksApiInstance = new Asana.TasksApi()
97
+ let opts = {
98
+ 'limit': 50, // Number | Results per page. The number of objects to return per page. The value must be between 1 and 100.
99
+ 'project': "<YOUR_PROJECT_GID>", // String | The project to filter tasks on.
100
+ 'modified_since': new Date("2012-02-22T02:06:58.158Z"), // Date | Only return tasks that have been modified since the given time. *Note: A task is considered “modified” if any of its properties change, or associations between it and other objects are modified (e.g. a task being added to a project). A task is not considered modified just because another object it is associated with (e.g. a subtask) is modified. Actions that count as modifying the task include assigning, renaming, completing, and adding stories.*
101
+ 'opt_fields': ["actual_time_minutes","approval_status","assignee","assignee.name","assignee_section","assignee_section.name","assignee_status","completed","completed_at","completed_by","completed_by.name","created_at","custom_fields","custom_fields.asana_created_field","custom_fields.created_by","custom_fields.created_by.name","custom_fields.currency_code","custom_fields.custom_label","custom_fields.custom_label_position","custom_fields.date_value","custom_fields.date_value.date","custom_fields.date_value.date_time","custom_fields.description","custom_fields.display_value","custom_fields.enabled","custom_fields.enum_options","custom_fields.enum_options.color","custom_fields.enum_options.enabled","custom_fields.enum_options.name","custom_fields.enum_value","custom_fields.enum_value.color","custom_fields.enum_value.enabled","custom_fields.enum_value.name","custom_fields.format","custom_fields.has_notifications_enabled","custom_fields.is_formula_field","custom_fields.is_global_to_workspace","custom_fields.is_value_read_only","custom_fields.multi_enum_values","custom_fields.multi_enum_values.color","custom_fields.multi_enum_values.enabled","custom_fields.multi_enum_values.name","custom_fields.name","custom_fields.number_value","custom_fields.people_value","custom_fields.people_value.name","custom_fields.precision","custom_fields.resource_subtype","custom_fields.text_value","custom_fields.type","dependencies","dependents","due_at","due_on","external","external.data","followers","followers.name","hearted","hearts","hearts.user","hearts.user.name","html_notes","is_rendered_as_separator","liked","likes","likes.user","likes.user.name","memberships","memberships.project","memberships.project.name","memberships.section","memberships.section.name","modified_at","name","notes","num_hearts","num_likes","num_subtasks","offset","parent","parent.name","parent.resource_subtype","path","permalink_url","projects","projects.name","resource_subtype","start_at","start_on","tags","tags.name","uri","workspace","workspace.name"] // [String] | This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.
105
102
  };
106
- client.useOauth({
107
- credentials: credentials
108
- });
109
- ```
110
-
111
- See `examples/oauth/webserver` for a working example of this.
112
-
113
- #### Client OAuth
114
-
115
- Currently, Asana has removed support for implicit grant and client-side authorization code grant. To correctly implement
116
- oauth in a browser, use your own server as the token exchange endpoint:
117
103
 
118
- ```js
119
- Asana.Client.create({
120
- clientId: clientId,
121
- redirectUri: 'http://localhost:' + port + '/oauth_callback',
122
- tokenExchangeEndpoint: 'https://my-app-server.io/oauth_token'
123
- });
124
- ```
125
-
126
- When a request comes to your server, verify it's a valid request (either using your own login cookie, cors, etc.). Then
127
- take the body, add your `client_secret` to it, and send a POST request with the body to
128
- `https://app.asana.com/-/oauth_token`. This will give your server the access and refresh tokens. Either return the
129
- access_token to the browser, or keep it on your server if your server handles requests to Asana.
130
-
131
- Here is an [express example](https://github.com/Asana/devrel-examples/blob/master/javascript/pkce_oauth/server/index.js)
132
- for AWS Lambda that works as an app server.
133
-
134
- Your client side code will look similar to the [webserver](https://github.com/Asana/node-asana/blob/master/examples/oauth/webserver/oauth_webserver.js)
135
- example, but with client side routing instead of express.
136
-
137
- ### Collections
138
-
139
- Whenever you ask for a collection of resources, you will receive a `Collection`
140
- object which gives you access to a page of results at a time. You can provide
141
- a number of results per page to fetch, between `1` and `100`.
142
-
143
- It defaults to `50` if you don't provide any.
144
-
145
- ```js
146
- client.tasks.getTasksForTag(tagId, { limit: 5 }).then(function(collection) {
147
- console.log(collection.data);
148
- // [ .. array of up to 5 task objects .. ]
104
+ // GET - get multiple tasks
105
+ tasksApiInstance.getTasks(opts, (error, data, response) => {
106
+ if (error) {
107
+ console.error(error);
108
+ } else {
109
+ console.log('API called successfully. Returned data: ' + JSON.stringify(data, null, 2));
110
+ }
149
111
  });
150
112
  ```
151
113
 
152
- Additionally, `Collection` has a few useful methods that can make them
153
- more convenient to deal with.
154
-
155
- #### Individual page iteration
156
-
157
- To get the next page of a collection, you do not have to manually construct
158
- the next request. The `nextPage()` method takes care of this for you:
159
-
160
- ```js
161
- client.tasks.getTasksForTag(tagId).then(firstPage => {
162
- console.log(firstPage.data);
163
- firstPage.nextPage().then(secondPage => {
164
- console.log(secondPage.data);
165
- });
114
+ #### POST - create a task
115
+ ```javascript
116
+ const Asana = require('asana');
117
+ const defaultClient = Asana.ApiClient.instance;
118
+
119
+ // Configure OAuth2 access token for authorization: oauth2
120
+ const oauth2 = defaultClient.authentications['oauth2'];
121
+ oauth2.accessToken = "<YOUR_PERSONAL_ACCESS_TOKEN>"
122
+
123
+ let tasksApiInstance = new Asana.TasksApi()
124
+ let body = new Asana.TasksBody.constructFromObject({
125
+ data: {
126
+ name: "New Task",
127
+ approval_status: "pending",
128
+ assignee_status: "upcoming",
129
+ completed: false,
130
+ external: {
131
+ gid: "1234",
132
+ data: "A blob of information.",
133
+ },
134
+ html_notes:
135
+ "<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>",
136
+ is_rendered_as_separator: false,
137
+ liked: true,
138
+ assignee: "me",
139
+ projects: ["<YOUR_PROJECT_GID>"],
140
+ },
166
141
  });
167
- ```
168
-
169
- #### Automatic page iteration
170
-
171
- To automatically fetch a bunch of results and have the client transparently
172
- request pages under the hood, use the `fetch()` method:
173
-
174
- ```js
175
- client.tasks.getTasksForTag(tagId).then(collection => {
176
- // Fetch up to 200 tasks, using multiple pages if necessary
177
- collection.fetch(200).then(tasks => {
178
- console.log(tasks);
179
- });
142
+ let opts = {};
143
+
144
+ // POST - Create a task
145
+ tasksApiInstance.createTask(body, opts, (error, data, response) => {
146
+ if (error) {
147
+ console.error(error);
148
+ throw new Error(error);
149
+ } else {
150
+ console.log("API called successfully. Returned data: " + JSON.stringify(data, null, 2));
151
+ }
180
152
  });
181
153
  ```
182
154
 
183
- #### Streaming
184
-
185
- You can also construct a `stream` from a collection. This will transparently
186
- (and lazily) fetch the items in the collection in pages as you iterate
187
- through them.
188
-
189
- ```js
190
- client.tasks.getTasksForTag(tagId).then(collection => {
191
- collection.stream().on('data', task => {
192
- console.log(task);
193
- });
155
+ #### PUT - update a task
156
+ ```javascript
157
+ const Asana = require('asana');
158
+ const defaultClient = Asana.ApiClient.instance;
159
+
160
+ // Configure OAuth2 access token for authorization: oauth2
161
+ const oauth2 = defaultClient.authentications['oauth2'];
162
+ oauth2.accessToken = "<YOUR_PERSONAL_ACCESS_TOKEN>"
163
+
164
+ let tasksApiInstance = new Asana.TasksApi()
165
+ let task_gid = "<YOUR_TASK_GID>";
166
+ let body = new Asana.TasksTaskGidBody.constructFromObject({
167
+ data: {
168
+ name: "Updated Task",
169
+ },
170
+ });
171
+ let opts = {};
172
+
173
+ // PUT - Update a task
174
+ tasksApiInstance.updateTask(body, task_gid, opts, (error, data, response) => {
175
+ if (error) {
176
+ console.error(error);
177
+ throw new Error(error);
178
+ } else {
179
+ console.log("API called successfully. Returned data: " + JSON.stringify(data, null, 2));
180
+ }
194
181
  });
195
182
  ```
196
183
 
197
- ### Debugging
198
-
199
- To quickly debug raw requests. Set debug to true on the Asana dispatcher.
200
- ```js
201
- client.dispatcher.debug(true);
202
- ```
203
- We use the [request](https://github.com/request/request) library under the hood, and this is equivalent to setting `request.debug = true;`
204
-
205
- ### Error handling
206
-
207
- In any request against the Asana API, there a number of errors that could
208
- arise. Those are well documented in the [Asana API Documentation][api-reference], and
209
- are represented as exceptions under the namespace `Asana.errors`.
210
-
211
- ## Options
212
-
213
- To add global headers (like for our [deprecation framework](https://asana.com/developers/documentation/getting-started/deprecations)), you add them to the client.
214
-
215
- ```js
216
- asana.Client.create({"defaultHeaders": {"asana-enable": "string_ids,new_sections"}});
217
- ```
218
-
219
- ### Asana Change Warnings
220
-
221
- You will receive warning logs if performing requests that may be affected by a deprecation. The warning contains a link that explains the deprecation.
222
-
223
- If you receive one of these warnings, you should:
224
- * Read about the deprecation.
225
- * Resolve sections of your code that would be affected by the deprecation.
226
- * Add the deprecation flag to your `"asana-enable"` header.
227
-
228
- If you would rather suppress these warnings, you can do the following:
229
-
230
- ```js
231
- asana.Client.create({"logAsanaChangeWarnings": false});
184
+ #### DELETE - delete a task
185
+ ```javascript
186
+ const Asana = require('asana');
187
+ const defaultClient = Asana.ApiClient.instance;
188
+
189
+ // Configure OAuth2 access token for authorization: oauth2
190
+ const oauth2 = defaultClient.authentications['oauth2'];
191
+ oauth2.accessToken = "<YOUR_PERSONAL_ACCESS_TOKEN>"
192
+
193
+ let tasksApiInstance = new Asana.TasksApi()
194
+ let task_gid = "<YOUR_TASK_GID>";
195
+
196
+ // DELETE - Delete a task
197
+ tasksApiInstance.deleteTask(task_gid, (error, data, response) => {
198
+ if (error) {
199
+ console.error(error);
200
+ throw new Error(error);
201
+ } else {
202
+ console.log("API called successfully. Returned data: " + JSON.stringify(data, null, 2));
203
+ }
204
+ });
232
205
  ```
233
206
 
234
- ## Examples
235
-
236
- Various examples are in the repository under `examples/`, but some basic
237
- concepts are illustrated here.
238
-
239
- ### Find some incomplete tasks assigned to me that are new or marked for today in my default workspace
240
-
241
- ```js
207
+ ## Documentation for API Endpoints
208
+
209
+ All URIs are relative to *https://app.asana.com/api/1.0*
210
+
211
+ Class | Method | HTTP request | Description
212
+ ------------ | ------------- | ------------- | -------------
213
+ *Asana.AttachmentsApi* | [**createAttachmentForObject**](docs/AttachmentsApi.md#createAttachmentForObject) | **POST** /attachments | Upload an attachment
214
+ *Asana.AttachmentsApi* | [**deleteAttachment**](docs/AttachmentsApi.md#deleteAttachment) | **DELETE** /attachments/{attachment_gid} | Delete an attachment
215
+ *Asana.AttachmentsApi* | [**getAttachment**](docs/AttachmentsApi.md#getAttachment) | **GET** /attachments/{attachment_gid} | Get an attachment
216
+ *Asana.AttachmentsApi* | [**getAttachmentsForObject**](docs/AttachmentsApi.md#getAttachmentsForObject) | **GET** /attachments | Get attachments from an object
217
+ *Asana.AuditLogAPIApi* | [**getAuditLogEvents**](docs/AuditLogAPIApi.md#getAuditLogEvents) | **GET** /workspaces/{workspace_gid}/audit_log_events | Get audit log events
218
+ *Asana.BatchAPIApi* | [**createBatchRequest**](docs/BatchAPIApi.md#createBatchRequest) | **POST** /batch | Submit parallel requests
219
+ *Asana.CustomFieldSettingsApi* | [**getCustomFieldSettingsForPortfolio**](docs/CustomFieldSettingsApi.md#getCustomFieldSettingsForPortfolio) | **GET** /portfolios/{portfolio_gid}/custom_field_settings | Get a portfolio&#x27;s custom fields
220
+ *Asana.CustomFieldSettingsApi* | [**getCustomFieldSettingsForProject**](docs/CustomFieldSettingsApi.md#getCustomFieldSettingsForProject) | **GET** /projects/{project_gid}/custom_field_settings | Get a project&#x27;s custom fields
221
+ *Asana.CustomFieldsApi* | [**createCustomField**](docs/CustomFieldsApi.md#createCustomField) | **POST** /custom_fields | Create a custom field
222
+ *Asana.CustomFieldsApi* | [**createEnumOptionForCustomField**](docs/CustomFieldsApi.md#createEnumOptionForCustomField) | **POST** /custom_fields/{custom_field_gid}/enum_options | Create an enum option
223
+ *Asana.CustomFieldsApi* | [**deleteCustomField**](docs/CustomFieldsApi.md#deleteCustomField) | **DELETE** /custom_fields/{custom_field_gid} | Delete a custom field
224
+ *Asana.CustomFieldsApi* | [**getCustomField**](docs/CustomFieldsApi.md#getCustomField) | **GET** /custom_fields/{custom_field_gid} | Get a custom field
225
+ *Asana.CustomFieldsApi* | [**getCustomFieldsForWorkspace**](docs/CustomFieldsApi.md#getCustomFieldsForWorkspace) | **GET** /workspaces/{workspace_gid}/custom_fields | Get a workspace&#x27;s custom fields
226
+ *Asana.CustomFieldsApi* | [**insertEnumOptionForCustomField**](docs/CustomFieldsApi.md#insertEnumOptionForCustomField) | **POST** /custom_fields/{custom_field_gid}/enum_options/insert | Reorder a custom field&#x27;s enum
227
+ *Asana.CustomFieldsApi* | [**updateCustomField**](docs/CustomFieldsApi.md#updateCustomField) | **PUT** /custom_fields/{custom_field_gid} | Update a custom field
228
+ *Asana.CustomFieldsApi* | [**updateEnumOption**](docs/CustomFieldsApi.md#updateEnumOption) | **PUT** /enum_options/{enum_option_gid} | Update an enum option
229
+ *Asana.EventsApi* | [**getEvents**](docs/EventsApi.md#getEvents) | **GET** /events | Get events on a resource
230
+ *Asana.GoalRelationshipsApi* | [**addSupportingRelationship**](docs/GoalRelationshipsApi.md#addSupportingRelationship) | **POST** /goals/{goal_gid}/addSupportingRelationship | Add a supporting goal relationship
231
+ *Asana.GoalRelationshipsApi* | [**getGoalRelationship**](docs/GoalRelationshipsApi.md#getGoalRelationship) | **GET** /goal_relationships/{goal_relationship_gid} | Get a goal relationship
232
+ *Asana.GoalRelationshipsApi* | [**getGoalRelationships**](docs/GoalRelationshipsApi.md#getGoalRelationships) | **GET** /goal_relationships | Get goal relationships
233
+ *Asana.GoalRelationshipsApi* | [**removeSupportingRelationship**](docs/GoalRelationshipsApi.md#removeSupportingRelationship) | **POST** /goals/{goal_gid}/removeSupportingRelationship | Removes a supporting goal relationship
234
+ *Asana.GoalRelationshipsApi* | [**updateGoalRelationship**](docs/GoalRelationshipsApi.md#updateGoalRelationship) | **PUT** /goal_relationships/{goal_relationship_gid} | Update a goal relationship
235
+ *Asana.GoalsApi* | [**addFollowers**](docs/GoalsApi.md#addFollowers) | **POST** /goals/{goal_gid}/addFollowers | Add a collaborator to a goal
236
+ *Asana.GoalsApi* | [**createGoal**](docs/GoalsApi.md#createGoal) | **POST** /goals | Create a goal
237
+ *Asana.GoalsApi* | [**createGoalMetric**](docs/GoalsApi.md#createGoalMetric) | **POST** /goals/{goal_gid}/setMetric | Create a goal metric
238
+ *Asana.GoalsApi* | [**deleteGoal**](docs/GoalsApi.md#deleteGoal) | **DELETE** /goals/{goal_gid} | Delete a goal
239
+ *Asana.GoalsApi* | [**getGoal**](docs/GoalsApi.md#getGoal) | **GET** /goals/{goal_gid} | Get a goal
240
+ *Asana.GoalsApi* | [**getGoals**](docs/GoalsApi.md#getGoals) | **GET** /goals | Get goals
241
+ *Asana.GoalsApi* | [**getParentGoalsForGoal**](docs/GoalsApi.md#getParentGoalsForGoal) | **GET** /goals/{goal_gid}/parentGoals | Get parent goals from a goal
242
+ *Asana.GoalsApi* | [**removeFollowers**](docs/GoalsApi.md#removeFollowers) | **POST** /goals/{goal_gid}/removeFollowers | Remove a collaborator from a goal
243
+ *Asana.GoalsApi* | [**updateGoal**](docs/GoalsApi.md#updateGoal) | **PUT** /goals/{goal_gid} | Update a goal
244
+ *Asana.GoalsApi* | [**updateGoalMetric**](docs/GoalsApi.md#updateGoalMetric) | **POST** /goals/{goal_gid}/setMetricCurrentValue | Update a goal metric
245
+ *Asana.JobsApi* | [**getJob**](docs/JobsApi.md#getJob) | **GET** /jobs/{job_gid} | Get a job by id
246
+ *Asana.MembershipsApi* | [**createMembership**](docs/MembershipsApi.md#createMembership) | **POST** /memberships | Create a membership
247
+ *Asana.MembershipsApi* | [**deleteMembership**](docs/MembershipsApi.md#deleteMembership) | **DELETE** /memberships/{membership_gid} | Delete a membership
248
+ *Asana.MembershipsApi* | [**getMemberships**](docs/MembershipsApi.md#getMemberships) | **GET** /memberships | Get multiple memberships
249
+ *Asana.OrganizationExportsApi* | [**createOrganizationExport**](docs/OrganizationExportsApi.md#createOrganizationExport) | **POST** /organization_exports | Create an organization export request
250
+ *Asana.OrganizationExportsApi* | [**getOrganizationExport**](docs/OrganizationExportsApi.md#getOrganizationExport) | **GET** /organization_exports/{organization_export_gid} | Get details on an org export request
251
+ *Asana.PortfolioMembershipsApi* | [**getPortfolioMembership**](docs/PortfolioMembershipsApi.md#getPortfolioMembership) | **GET** /portfolio_memberships/{portfolio_membership_gid} | Get a portfolio membership
252
+ *Asana.PortfolioMembershipsApi* | [**getPortfolioMemberships**](docs/PortfolioMembershipsApi.md#getPortfolioMemberships) | **GET** /portfolio_memberships | Get multiple portfolio memberships
253
+ *Asana.PortfolioMembershipsApi* | [**getPortfolioMembershipsForPortfolio**](docs/PortfolioMembershipsApi.md#getPortfolioMembershipsForPortfolio) | **GET** /portfolios/{portfolio_gid}/portfolio_memberships | Get memberships from a portfolio
254
+ *Asana.PortfoliosApi* | [**addCustomFieldSettingForPortfolio**](docs/PortfoliosApi.md#addCustomFieldSettingForPortfolio) | **POST** /portfolios/{portfolio_gid}/addCustomFieldSetting | Add a custom field to a portfolio
255
+ *Asana.PortfoliosApi* | [**addItemForPortfolio**](docs/PortfoliosApi.md#addItemForPortfolio) | **POST** /portfolios/{portfolio_gid}/addItem | Add a portfolio item
256
+ *Asana.PortfoliosApi* | [**addMembersForPortfolio**](docs/PortfoliosApi.md#addMembersForPortfolio) | **POST** /portfolios/{portfolio_gid}/addMembers | Add users to a portfolio
257
+ *Asana.PortfoliosApi* | [**createPortfolio**](docs/PortfoliosApi.md#createPortfolio) | **POST** /portfolios | Create a portfolio
258
+ *Asana.PortfoliosApi* | [**deletePortfolio**](docs/PortfoliosApi.md#deletePortfolio) | **DELETE** /portfolios/{portfolio_gid} | Delete a portfolio
259
+ *Asana.PortfoliosApi* | [**getItemsForPortfolio**](docs/PortfoliosApi.md#getItemsForPortfolio) | **GET** /portfolios/{portfolio_gid}/items | Get portfolio items
260
+ *Asana.PortfoliosApi* | [**getPortfolio**](docs/PortfoliosApi.md#getPortfolio) | **GET** /portfolios/{portfolio_gid} | Get a portfolio
261
+ *Asana.PortfoliosApi* | [**getPortfolios**](docs/PortfoliosApi.md#getPortfolios) | **GET** /portfolios | Get multiple portfolios
262
+ *Asana.PortfoliosApi* | [**removeCustomFieldSettingForPortfolio**](docs/PortfoliosApi.md#removeCustomFieldSettingForPortfolio) | **POST** /portfolios/{portfolio_gid}/removeCustomFieldSetting | Remove a custom field from a portfolio
263
+ *Asana.PortfoliosApi* | [**removeItemForPortfolio**](docs/PortfoliosApi.md#removeItemForPortfolio) | **POST** /portfolios/{portfolio_gid}/removeItem | Remove a portfolio item
264
+ *Asana.PortfoliosApi* | [**removeMembersForPortfolio**](docs/PortfoliosApi.md#removeMembersForPortfolio) | **POST** /portfolios/{portfolio_gid}/removeMembers | Remove users from a portfolio
265
+ *Asana.PortfoliosApi* | [**updatePortfolio**](docs/PortfoliosApi.md#updatePortfolio) | **PUT** /portfolios/{portfolio_gid} | Update a portfolio
266
+ *Asana.ProjectBriefsApi* | [**createProjectBrief**](docs/ProjectBriefsApi.md#createProjectBrief) | **POST** /projects/{project_gid}/project_briefs | Create a project brief
267
+ *Asana.ProjectBriefsApi* | [**deleteProjectBrief**](docs/ProjectBriefsApi.md#deleteProjectBrief) | **DELETE** /project_briefs/{project_brief_gid} | Delete a project brief
268
+ *Asana.ProjectBriefsApi* | [**getProjectBrief**](docs/ProjectBriefsApi.md#getProjectBrief) | **GET** /project_briefs/{project_brief_gid} | Get a project brief
269
+ *Asana.ProjectBriefsApi* | [**updateProjectBrief**](docs/ProjectBriefsApi.md#updateProjectBrief) | **PUT** /project_briefs/{project_brief_gid} | Update a project brief
270
+ *Asana.ProjectMembershipsApi* | [**getProjectMembership**](docs/ProjectMembershipsApi.md#getProjectMembership) | **GET** /project_memberships/{project_membership_gid} | Get a project membership
271
+ *Asana.ProjectMembershipsApi* | [**getProjectMembershipsForProject**](docs/ProjectMembershipsApi.md#getProjectMembershipsForProject) | **GET** /projects/{project_gid}/project_memberships | Get memberships from a project
272
+ *Asana.ProjectStatusesApi* | [**createProjectStatusForProject**](docs/ProjectStatusesApi.md#createProjectStatusForProject) | **POST** /projects/{project_gid}/project_statuses | Create a project status
273
+ *Asana.ProjectStatusesApi* | [**deleteProjectStatus**](docs/ProjectStatusesApi.md#deleteProjectStatus) | **DELETE** /project_statuses/{project_status_gid} | Delete a project status
274
+ *Asana.ProjectStatusesApi* | [**getProjectStatus**](docs/ProjectStatusesApi.md#getProjectStatus) | **GET** /project_statuses/{project_status_gid} | Get a project status
275
+ *Asana.ProjectStatusesApi* | [**getProjectStatusesForProject**](docs/ProjectStatusesApi.md#getProjectStatusesForProject) | **GET** /projects/{project_gid}/project_statuses | Get statuses from a project
276
+ *Asana.ProjectTemplatesApi* | [**deleteProjectTemplate**](docs/ProjectTemplatesApi.md#deleteProjectTemplate) | **DELETE** /project_templates/{project_template_gid} | Delete a project template
277
+ *Asana.ProjectTemplatesApi* | [**getProjectTemplate**](docs/ProjectTemplatesApi.md#getProjectTemplate) | **GET** /project_templates/{project_template_gid} | Get a project template
278
+ *Asana.ProjectTemplatesApi* | [**getProjectTemplates**](docs/ProjectTemplatesApi.md#getProjectTemplates) | **GET** /project_templates | Get multiple project templates
279
+ *Asana.ProjectTemplatesApi* | [**getProjectTemplatesForTeam**](docs/ProjectTemplatesApi.md#getProjectTemplatesForTeam) | **GET** /teams/{team_gid}/project_templates | Get a team&#x27;s project templates
280
+ *Asana.ProjectTemplatesApi* | [**instantiateProject**](docs/ProjectTemplatesApi.md#instantiateProject) | **POST** /project_templates/{project_template_gid}/instantiateProject | Instantiate a project from a project template
281
+ *Asana.ProjectsApi* | [**addCustomFieldSettingForProject**](docs/ProjectsApi.md#addCustomFieldSettingForProject) | **POST** /projects/{project_gid}/addCustomFieldSetting | Add a custom field to a project
282
+ *Asana.ProjectsApi* | [**addFollowersForProject**](docs/ProjectsApi.md#addFollowersForProject) | **POST** /projects/{project_gid}/addFollowers | Add followers to a project
283
+ *Asana.ProjectsApi* | [**addMembersForProject**](docs/ProjectsApi.md#addMembersForProject) | **POST** /projects/{project_gid}/addMembers | Add users to a project
284
+ *Asana.ProjectsApi* | [**createProject**](docs/ProjectsApi.md#createProject) | **POST** /projects | Create a project
285
+ *Asana.ProjectsApi* | [**createProjectForTeam**](docs/ProjectsApi.md#createProjectForTeam) | **POST** /teams/{team_gid}/projects | Create a project in a team
286
+ *Asana.ProjectsApi* | [**createProjectForWorkspace**](docs/ProjectsApi.md#createProjectForWorkspace) | **POST** /workspaces/{workspace_gid}/projects | Create a project in a workspace
287
+ *Asana.ProjectsApi* | [**deleteProject**](docs/ProjectsApi.md#deleteProject) | **DELETE** /projects/{project_gid} | Delete a project
288
+ *Asana.ProjectsApi* | [**duplicateProject**](docs/ProjectsApi.md#duplicateProject) | **POST** /projects/{project_gid}/duplicate | Duplicate a project
289
+ *Asana.ProjectsApi* | [**getProject**](docs/ProjectsApi.md#getProject) | **GET** /projects/{project_gid} | Get a project
290
+ *Asana.ProjectsApi* | [**getProjects**](docs/ProjectsApi.md#getProjects) | **GET** /projects | Get multiple projects
291
+ *Asana.ProjectsApi* | [**getProjectsForTask**](docs/ProjectsApi.md#getProjectsForTask) | **GET** /tasks/{task_gid}/projects | Get projects a task is in
292
+ *Asana.ProjectsApi* | [**getProjectsForTeam**](docs/ProjectsApi.md#getProjectsForTeam) | **GET** /teams/{team_gid}/projects | Get a team&#x27;s projects
293
+ *Asana.ProjectsApi* | [**getProjectsForWorkspace**](docs/ProjectsApi.md#getProjectsForWorkspace) | **GET** /workspaces/{workspace_gid}/projects | Get all projects in a workspace
294
+ *Asana.ProjectsApi* | [**getTaskCountsForProject**](docs/ProjectsApi.md#getTaskCountsForProject) | **GET** /projects/{project_gid}/task_counts | Get task count of a project
295
+ *Asana.ProjectsApi* | [**projectSaveAsTemplate**](docs/ProjectsApi.md#projectSaveAsTemplate) | **POST** /projects/{project_gid}/saveAsTemplate | Create a project template from a project
296
+ *Asana.ProjectsApi* | [**removeCustomFieldSettingForProject**](docs/ProjectsApi.md#removeCustomFieldSettingForProject) | **POST** /projects/{project_gid}/removeCustomFieldSetting | Remove a custom field from a project
297
+ *Asana.ProjectsApi* | [**removeFollowersForProject**](docs/ProjectsApi.md#removeFollowersForProject) | **POST** /projects/{project_gid}/removeFollowers | Remove followers from a project
298
+ *Asana.ProjectsApi* | [**removeMembersForProject**](docs/ProjectsApi.md#removeMembersForProject) | **POST** /projects/{project_gid}/removeMembers | Remove users from a project
299
+ *Asana.ProjectsApi* | [**updateProject**](docs/ProjectsApi.md#updateProject) | **PUT** /projects/{project_gid} | Update a project
300
+ *Asana.RulesApi* | [**triggerRule**](docs/RulesApi.md#triggerRule) | **POST** /rule_triggers/{rule_trigger_gid}/run | Trigger a rule
301
+ *Asana.SectionsApi* | [**addTaskForSection**](docs/SectionsApi.md#addTaskForSection) | **POST** /sections/{section_gid}/addTask | Add task to section
302
+ *Asana.SectionsApi* | [**createSectionForProject**](docs/SectionsApi.md#createSectionForProject) | **POST** /projects/{project_gid}/sections | Create a section in a project
303
+ *Asana.SectionsApi* | [**deleteSection**](docs/SectionsApi.md#deleteSection) | **DELETE** /sections/{section_gid} | Delete a section
304
+ *Asana.SectionsApi* | [**getSection**](docs/SectionsApi.md#getSection) | **GET** /sections/{section_gid} | Get a section
305
+ *Asana.SectionsApi* | [**getSectionsForProject**](docs/SectionsApi.md#getSectionsForProject) | **GET** /projects/{project_gid}/sections | Get sections in a project
306
+ *Asana.SectionsApi* | [**insertSectionForProject**](docs/SectionsApi.md#insertSectionForProject) | **POST** /projects/{project_gid}/sections/insert | Move or Insert sections
307
+ *Asana.SectionsApi* | [**updateSection**](docs/SectionsApi.md#updateSection) | **PUT** /sections/{section_gid} | Update a section
308
+ *Asana.StatusUpdatesApi* | [**createStatusForObject**](docs/StatusUpdatesApi.md#createStatusForObject) | **POST** /status_updates | Create a status update
309
+ *Asana.StatusUpdatesApi* | [**deleteStatus**](docs/StatusUpdatesApi.md#deleteStatus) | **DELETE** /status_updates/{status_update_gid} | Delete a status update
310
+ *Asana.StatusUpdatesApi* | [**getStatus**](docs/StatusUpdatesApi.md#getStatus) | **GET** /status_updates/{status_update_gid} | Get a status update
311
+ *Asana.StatusUpdatesApi* | [**getStatusesForObject**](docs/StatusUpdatesApi.md#getStatusesForObject) | **GET** /status_updates | Get status updates from an object
312
+ *Asana.StoriesApi* | [**createStoryForTask**](docs/StoriesApi.md#createStoryForTask) | **POST** /tasks/{task_gid}/stories | Create a story on a task
313
+ *Asana.StoriesApi* | [**deleteStory**](docs/StoriesApi.md#deleteStory) | **DELETE** /stories/{story_gid} | Delete a story
314
+ *Asana.StoriesApi* | [**getStoriesForTask**](docs/StoriesApi.md#getStoriesForTask) | **GET** /tasks/{task_gid}/stories | Get stories from a task
315
+ *Asana.StoriesApi* | [**getStory**](docs/StoriesApi.md#getStory) | **GET** /stories/{story_gid} | Get a story
316
+ *Asana.StoriesApi* | [**updateStory**](docs/StoriesApi.md#updateStory) | **PUT** /stories/{story_gid} | Update a story
317
+ *Asana.TagsApi* | [**createTag**](docs/TagsApi.md#createTag) | **POST** /tags | Create a tag
318
+ *Asana.TagsApi* | [**createTagForWorkspace**](docs/TagsApi.md#createTagForWorkspace) | **POST** /workspaces/{workspace_gid}/tags | Create a tag in a workspace
319
+ *Asana.TagsApi* | [**deleteTag**](docs/TagsApi.md#deleteTag) | **DELETE** /tags/{tag_gid} | Delete a tag
320
+ *Asana.TagsApi* | [**getTag**](docs/TagsApi.md#getTag) | **GET** /tags/{tag_gid} | Get a tag
321
+ *Asana.TagsApi* | [**getTags**](docs/TagsApi.md#getTags) | **GET** /tags | Get multiple tags
322
+ *Asana.TagsApi* | [**getTagsForTask**](docs/TagsApi.md#getTagsForTask) | **GET** /tasks/{task_gid}/tags | Get a task&#x27;s tags
323
+ *Asana.TagsApi* | [**getTagsForWorkspace**](docs/TagsApi.md#getTagsForWorkspace) | **GET** /workspaces/{workspace_gid}/tags | Get tags in a workspace
324
+ *Asana.TagsApi* | [**updateTag**](docs/TagsApi.md#updateTag) | **PUT** /tags/{tag_gid} | Update a tag
325
+ *Asana.TasksApi* | [**addDependenciesForTask**](docs/TasksApi.md#addDependenciesForTask) | **POST** /tasks/{task_gid}/addDependencies | Set dependencies for a task
326
+ *Asana.TasksApi* | [**addDependentsForTask**](docs/TasksApi.md#addDependentsForTask) | **POST** /tasks/{task_gid}/addDependents | Set dependents for a task
327
+ *Asana.TasksApi* | [**addFollowersForTask**](docs/TasksApi.md#addFollowersForTask) | **POST** /tasks/{task_gid}/addFollowers | Add followers to a task
328
+ *Asana.TasksApi* | [**addProjectForTask**](docs/TasksApi.md#addProjectForTask) | **POST** /tasks/{task_gid}/addProject | Add a project to a task
329
+ *Asana.TasksApi* | [**addTagForTask**](docs/TasksApi.md#addTagForTask) | **POST** /tasks/{task_gid}/addTag | Add a tag to a task
330
+ *Asana.TasksApi* | [**createSubtaskForTask**](docs/TasksApi.md#createSubtaskForTask) | **POST** /tasks/{task_gid}/subtasks | Create a subtask
331
+ *Asana.TasksApi* | [**createTask**](docs/TasksApi.md#createTask) | **POST** /tasks | Create a task
332
+ *Asana.TasksApi* | [**deleteTask**](docs/TasksApi.md#deleteTask) | **DELETE** /tasks/{task_gid} | Delete a task
333
+ *Asana.TasksApi* | [**duplicateTask**](docs/TasksApi.md#duplicateTask) | **POST** /tasks/{task_gid}/duplicate | Duplicate a task
334
+ *Asana.TasksApi* | [**getDependenciesForTask**](docs/TasksApi.md#getDependenciesForTask) | **GET** /tasks/{task_gid}/dependencies | Get dependencies from a task
335
+ *Asana.TasksApi* | [**getDependentsForTask**](docs/TasksApi.md#getDependentsForTask) | **GET** /tasks/{task_gid}/dependents | Get dependents from a task
336
+ *Asana.TasksApi* | [**getSubtasksForTask**](docs/TasksApi.md#getSubtasksForTask) | **GET** /tasks/{task_gid}/subtasks | Get subtasks from a task
337
+ *Asana.TasksApi* | [**getTask**](docs/TasksApi.md#getTask) | **GET** /tasks/{task_gid} | Get a task
338
+ *Asana.TasksApi* | [**getTasks**](docs/TasksApi.md#getTasks) | **GET** /tasks | Get multiple tasks
339
+ *Asana.TasksApi* | [**getTasksForProject**](docs/TasksApi.md#getTasksForProject) | **GET** /projects/{project_gid}/tasks | Get tasks from a project
340
+ *Asana.TasksApi* | [**getTasksForSection**](docs/TasksApi.md#getTasksForSection) | **GET** /sections/{section_gid}/tasks | Get tasks from a section
341
+ *Asana.TasksApi* | [**getTasksForTag**](docs/TasksApi.md#getTasksForTag) | **GET** /tags/{tag_gid}/tasks | Get tasks from a tag
342
+ *Asana.TasksApi* | [**getTasksForUserTaskList**](docs/TasksApi.md#getTasksForUserTaskList) | **GET** /user_task_lists/{user_task_list_gid}/tasks | Get tasks from a user task list
343
+ *Asana.TasksApi* | [**removeDependenciesForTask**](docs/TasksApi.md#removeDependenciesForTask) | **POST** /tasks/{task_gid}/removeDependencies | Unlink dependencies from a task
344
+ *Asana.TasksApi* | [**removeDependentsForTask**](docs/TasksApi.md#removeDependentsForTask) | **POST** /tasks/{task_gid}/removeDependents | Unlink dependents from a task
345
+ *Asana.TasksApi* | [**removeFollowerForTask**](docs/TasksApi.md#removeFollowerForTask) | **POST** /tasks/{task_gid}/removeFollowers | Remove followers from a task
346
+ *Asana.TasksApi* | [**removeProjectForTask**](docs/TasksApi.md#removeProjectForTask) | **POST** /tasks/{task_gid}/removeProject | Remove a project from a task
347
+ *Asana.TasksApi* | [**removeTagForTask**](docs/TasksApi.md#removeTagForTask) | **POST** /tasks/{task_gid}/removeTag | Remove a tag from a task
348
+ *Asana.TasksApi* | [**searchTasksForWorkspace**](docs/TasksApi.md#searchTasksForWorkspace) | **GET** /workspaces/{workspace_gid}/tasks/search | Search tasks in a workspace
349
+ *Asana.TasksApi* | [**setParentForTask**](docs/TasksApi.md#setParentForTask) | **POST** /tasks/{task_gid}/setParent | Set the parent of a task
350
+ *Asana.TasksApi* | [**updateTask**](docs/TasksApi.md#updateTask) | **PUT** /tasks/{task_gid} | Update a task
351
+ *Asana.TeamMembershipsApi* | [**getTeamMembership**](docs/TeamMembershipsApi.md#getTeamMembership) | **GET** /team_memberships/{team_membership_gid} | Get a team membership
352
+ *Asana.TeamMembershipsApi* | [**getTeamMemberships**](docs/TeamMembershipsApi.md#getTeamMemberships) | **GET** /team_memberships | Get team memberships
353
+ *Asana.TeamMembershipsApi* | [**getTeamMembershipsForTeam**](docs/TeamMembershipsApi.md#getTeamMembershipsForTeam) | **GET** /teams/{team_gid}/team_memberships | Get memberships from a team
354
+ *Asana.TeamMembershipsApi* | [**getTeamMembershipsForUser**](docs/TeamMembershipsApi.md#getTeamMembershipsForUser) | **GET** /users/{user_gid}/team_memberships | Get memberships from a user
355
+ *Asana.TeamsApi* | [**addUserForTeam**](docs/TeamsApi.md#addUserForTeam) | **POST** /teams/{team_gid}/addUser | Add a user to a team
356
+ *Asana.TeamsApi* | [**createTeam**](docs/TeamsApi.md#createTeam) | **POST** /teams | Create a team
357
+ *Asana.TeamsApi* | [**getTeam**](docs/TeamsApi.md#getTeam) | **GET** /teams/{team_gid} | Get a team
358
+ *Asana.TeamsApi* | [**getTeamsForUser**](docs/TeamsApi.md#getTeamsForUser) | **GET** /users/{user_gid}/teams | Get teams for a user
359
+ *Asana.TeamsApi* | [**getTeamsForWorkspace**](docs/TeamsApi.md#getTeamsForWorkspace) | **GET** /workspaces/{workspace_gid}/teams | Get teams in a workspace
360
+ *Asana.TeamsApi* | [**removeUserForTeam**](docs/TeamsApi.md#removeUserForTeam) | **POST** /teams/{team_gid}/removeUser | Remove a user from a team
361
+ *Asana.TeamsApi* | [**updateTeam**](docs/TeamsApi.md#updateTeam) | **PUT** /teams/{team_gid} | Update a team
362
+ *Asana.TimePeriodsApi* | [**getTimePeriod**](docs/TimePeriodsApi.md#getTimePeriod) | **GET** /time_periods/{time_period_gid} | Get a time period
363
+ *Asana.TimePeriodsApi* | [**getTimePeriods**](docs/TimePeriodsApi.md#getTimePeriods) | **GET** /time_periods | Get time periods
364
+ *Asana.TimeTrackingEntriesApi* | [**createTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#createTimeTrackingEntry) | **POST** /tasks/{task_gid}/time_tracking_entries | Create a time tracking entry
365
+ *Asana.TimeTrackingEntriesApi* | [**deleteTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#deleteTimeTrackingEntry) | **DELETE** /time_tracking_entries/{time_tracking_entry_gid} | Delete a time tracking entry
366
+ *Asana.TimeTrackingEntriesApi* | [**getTimeTrackingEntriesForTask**](docs/TimeTrackingEntriesApi.md#getTimeTrackingEntriesForTask) | **GET** /tasks/{task_gid}/time_tracking_entries | Get time tracking entries for a task
367
+ *Asana.TimeTrackingEntriesApi* | [**getTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#getTimeTrackingEntry) | **GET** /time_tracking_entries/{time_tracking_entry_gid} | Get a time tracking entry
368
+ *Asana.TimeTrackingEntriesApi* | [**updateTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#updateTimeTrackingEntry) | **PUT** /time_tracking_entries/{time_tracking_entry_gid} | Update a time tracking entry
369
+ *Asana.TypeaheadApi* | [**typeaheadForWorkspace**](docs/TypeaheadApi.md#typeaheadForWorkspace) | **GET** /workspaces/{workspace_gid}/typeahead | Get objects via typeahead
370
+ *Asana.UserTaskListsApi* | [**getUserTaskList**](docs/UserTaskListsApi.md#getUserTaskList) | **GET** /user_task_lists/{user_task_list_gid} | Get a user task list
371
+ *Asana.UserTaskListsApi* | [**getUserTaskListForUser**](docs/UserTaskListsApi.md#getUserTaskListForUser) | **GET** /users/{user_gid}/user_task_list | Get a user&#x27;s task list
372
+ *Asana.UsersApi* | [**getFavoritesForUser**](docs/UsersApi.md#getFavoritesForUser) | **GET** /users/{user_gid}/favorites | Get a user&#x27;s favorites
373
+ *Asana.UsersApi* | [**getUser**](docs/UsersApi.md#getUser) | **GET** /users/{user_gid} | Get a user
374
+ *Asana.UsersApi* | [**getUsers**](docs/UsersApi.md#getUsers) | **GET** /users | Get multiple users
375
+ *Asana.UsersApi* | [**getUsersForTeam**](docs/UsersApi.md#getUsersForTeam) | **GET** /teams/{team_gid}/users | Get users in a team
376
+ *Asana.UsersApi* | [**getUsersForWorkspace**](docs/UsersApi.md#getUsersForWorkspace) | **GET** /workspaces/{workspace_gid}/users | Get users in a workspace or organization
377
+ *Asana.WebhooksApi* | [**createWebhook**](docs/WebhooksApi.md#createWebhook) | **POST** /webhooks | Establish a webhook
378
+ *Asana.WebhooksApi* | [**deleteWebhook**](docs/WebhooksApi.md#deleteWebhook) | **DELETE** /webhooks/{webhook_gid} | Delete a webhook
379
+ *Asana.WebhooksApi* | [**getWebhook**](docs/WebhooksApi.md#getWebhook) | **GET** /webhooks/{webhook_gid} | Get a webhook
380
+ *Asana.WebhooksApi* | [**getWebhooks**](docs/WebhooksApi.md#getWebhooks) | **GET** /webhooks | Get multiple webhooks
381
+ *Asana.WebhooksApi* | [**updateWebhook**](docs/WebhooksApi.md#updateWebhook) | **PUT** /webhooks/{webhook_gid} | Update a webhook
382
+ *Asana.WorkspaceMembershipsApi* | [**getWorkspaceMembership**](docs/WorkspaceMembershipsApi.md#getWorkspaceMembership) | **GET** /workspace_memberships/{workspace_membership_gid} | Get a workspace membership
383
+ *Asana.WorkspaceMembershipsApi* | [**getWorkspaceMembershipsForUser**](docs/WorkspaceMembershipsApi.md#getWorkspaceMembershipsForUser) | **GET** /users/{user_gid}/workspace_memberships | Get workspace memberships for a user
384
+ *Asana.WorkspaceMembershipsApi* | [**getWorkspaceMembershipsForWorkspace**](docs/WorkspaceMembershipsApi.md#getWorkspaceMembershipsForWorkspace) | **GET** /workspaces/{workspace_gid}/workspace_memberships | Get the workspace memberships for a workspace
385
+ *Asana.WorkspacesApi* | [**addUserForWorkspace**](docs/WorkspacesApi.md#addUserForWorkspace) | **POST** /workspaces/{workspace_gid}/addUser | Add a user to a workspace or organization
386
+ *Asana.WorkspacesApi* | [**getWorkspace**](docs/WorkspacesApi.md#getWorkspace) | **GET** /workspaces/{workspace_gid} | Get a workspace
387
+ *Asana.WorkspacesApi* | [**getWorkspaces**](docs/WorkspacesApi.md#getWorkspaces) | **GET** /workspaces | Get multiple workspaces
388
+ *Asana.WorkspacesApi* | [**removeUserForWorkspace**](docs/WorkspacesApi.md#removeUserForWorkspace) | **POST** /workspaces/{workspace_gid}/removeUser | Remove a user from a workspace or organization
389
+ *Asana.WorkspacesApi* | [**updateWorkspace**](docs/WorkspacesApi.md#updateWorkspace) | **PUT** /workspaces/{workspace_gid} | Update a workspace
390
+
391
+ ## Documentation for Models
392
+
393
+ - [Asana.AddCustomFieldSettingRequest](docs/AddCustomFieldSettingRequest.md)
394
+ - [Asana.AddFollowersRequest](docs/AddFollowersRequest.md)
395
+ - [Asana.AddMembersRequest](docs/AddMembersRequest.md)
396
+ - [Asana.AllOfProjectResponseOwner](docs/AllOfProjectResponseOwner.md)
397
+ - [Asana.AllOfProjectTemplateBaseOwner](docs/AllOfProjectTemplateBaseOwner.md)
398
+ - [Asana.AllOfProjectTemplateResponseOwner](docs/AllOfProjectTemplateResponseOwner.md)
399
+ - [Asana.AllOfStoryResponseNewDateValue](docs/AllOfStoryResponseNewDateValue.md)
400
+ - [Asana.AllOfStoryResponseOldDateValue](docs/AllOfStoryResponseOldDateValue.md)
401
+ - [Asana.AllOfUserTaskListBaseOwner](docs/AllOfUserTaskListBaseOwner.md)
402
+ - [Asana.AllOfUserTaskListBaseWorkspace](docs/AllOfUserTaskListBaseWorkspace.md)
403
+ - [Asana.AllOfUserTaskListCompactOwner](docs/AllOfUserTaskListCompactOwner.md)
404
+ - [Asana.AllOfUserTaskListCompactWorkspace](docs/AllOfUserTaskListCompactWorkspace.md)
405
+ - [Asana.AllOfUserTaskListRequestOwner](docs/AllOfUserTaskListRequestOwner.md)
406
+ - [Asana.AllOfUserTaskListRequestWorkspace](docs/AllOfUserTaskListRequestWorkspace.md)
407
+ - [Asana.AllOfUserTaskListResponseOwner](docs/AllOfUserTaskListResponseOwner.md)
408
+ - [Asana.AllOfUserTaskListResponseWorkspace](docs/AllOfUserTaskListResponseWorkspace.md)
409
+ - [Asana.AllOfWorkspaceMembershipResponseUserTaskListOwner](docs/AllOfWorkspaceMembershipResponseUserTaskListOwner.md)
410
+ - [Asana.AllOfWorkspaceMembershipResponseUserTaskListWorkspace](docs/AllOfWorkspaceMembershipResponseUserTaskListWorkspace.md)
411
+ - [Asana.AsanaNamedResource](docs/AsanaNamedResource.md)
412
+ - [Asana.AsanaNamedResourceArray](docs/AsanaNamedResourceArray.md)
413
+ - [Asana.AsanaResource](docs/AsanaResource.md)
414
+ - [Asana.AttachmentBase](docs/AttachmentBase.md)
415
+ - [Asana.AttachmentCompact](docs/AttachmentCompact.md)
416
+ - [Asana.AttachmentRequest](docs/AttachmentRequest.md)
417
+ - [Asana.AttachmentResponse](docs/AttachmentResponse.md)
418
+ - [Asana.AttachmentResponseArray](docs/AttachmentResponseArray.md)
419
+ - [Asana.AttachmentResponseData](docs/AttachmentResponseData.md)
420
+ - [Asana.AttachmentResponseParent](docs/AttachmentResponseParent.md)
421
+ - [Asana.AuditLogEvent](docs/AuditLogEvent.md)
422
+ - [Asana.AuditLogEventActor](docs/AuditLogEventActor.md)
423
+ - [Asana.AuditLogEventArray](docs/AuditLogEventArray.md)
424
+ - [Asana.AuditLogEventContext](docs/AuditLogEventContext.md)
425
+ - [Asana.AuditLogEventDetails](docs/AuditLogEventDetails.md)
426
+ - [Asana.AuditLogEventResource](docs/AuditLogEventResource.md)
427
+ - [Asana.BatchBody](docs/BatchBody.md)
428
+ - [Asana.BatchRequest](docs/BatchRequest.md)
429
+ - [Asana.BatchRequestAction](docs/BatchRequestAction.md)
430
+ - [Asana.BatchRequestActions](docs/BatchRequestActions.md)
431
+ - [Asana.BatchRequestOptions](docs/BatchRequestOptions.md)
432
+ - [Asana.BatchResponse](docs/BatchResponse.md)
433
+ - [Asana.BatchResponseArray](docs/BatchResponseArray.md)
434
+ - [Asana.CreateMembershipRequest](docs/CreateMembershipRequest.md)
435
+ - [Asana.CreateTimeTrackingEntryRequest](docs/CreateTimeTrackingEntryRequest.md)
436
+ - [Asana.CustomFieldBase](docs/CustomFieldBase.md)
437
+ - [Asana.CustomFieldBaseDateValue](docs/CustomFieldBaseDateValue.md)
438
+ - [Asana.CustomFieldBaseEnumOptions](docs/CustomFieldBaseEnumOptions.md)
439
+ - [Asana.CustomFieldBaseEnumValue](docs/CustomFieldBaseEnumValue.md)
440
+ - [Asana.CustomFieldCompact](docs/CustomFieldCompact.md)
441
+ - [Asana.CustomFieldGidEnumOptionsBody](docs/CustomFieldGidEnumOptionsBody.md)
442
+ - [Asana.CustomFieldRequest](docs/CustomFieldRequest.md)
443
+ - [Asana.CustomFieldResponse](docs/CustomFieldResponse.md)
444
+ - [Asana.CustomFieldResponseArray](docs/CustomFieldResponseArray.md)
445
+ - [Asana.CustomFieldResponseCreatedBy](docs/CustomFieldResponseCreatedBy.md)
446
+ - [Asana.CustomFieldResponseData](docs/CustomFieldResponseData.md)
447
+ - [Asana.CustomFieldResponsePeopleValue](docs/CustomFieldResponsePeopleValue.md)
448
+ - [Asana.CustomFieldSettingBase](docs/CustomFieldSettingBase.md)
449
+ - [Asana.CustomFieldSettingCompact](docs/CustomFieldSettingCompact.md)
450
+ - [Asana.CustomFieldSettingResponse](docs/CustomFieldSettingResponse.md)
451
+ - [Asana.CustomFieldSettingResponseArray](docs/CustomFieldSettingResponseArray.md)
452
+ - [Asana.CustomFieldSettingResponseCustomField](docs/CustomFieldSettingResponseCustomField.md)
453
+ - [Asana.CustomFieldSettingResponseData](docs/CustomFieldSettingResponseData.md)
454
+ - [Asana.CustomFieldSettingResponseParent](docs/CustomFieldSettingResponseParent.md)
455
+ - [Asana.CustomFieldSettingResponseProject](docs/CustomFieldSettingResponseProject.md)
456
+ - [Asana.CustomFieldsBody](docs/CustomFieldsBody.md)
457
+ - [Asana.CustomFieldsCustomFieldGidBody](docs/CustomFieldsCustomFieldGidBody.md)
458
+ - [Asana.DateVariableCompact](docs/DateVariableCompact.md)
459
+ - [Asana.DateVariableRequest](docs/DateVariableRequest.md)
460
+ - [Asana.EmptyResponse](docs/EmptyResponse.md)
461
+ - [Asana.EmptyResponseData](docs/EmptyResponseData.md)
462
+ - [Asana.EnumOption](docs/EnumOption.md)
463
+ - [Asana.EnumOptionBase](docs/EnumOptionBase.md)
464
+ - [Asana.EnumOptionData](docs/EnumOptionData.md)
465
+ - [Asana.EnumOptionInsertRequest](docs/EnumOptionInsertRequest.md)
466
+ - [Asana.EnumOptionRequest](docs/EnumOptionRequest.md)
467
+ - [Asana.EnumOptionsEnumOptionGidBody](docs/EnumOptionsEnumOptionGidBody.md)
468
+ - [Asana.EnumOptionsInsertBody](docs/EnumOptionsInsertBody.md)
469
+ - [Asana.Error](docs/Error.md)
470
+ - [Asana.ErrorResponse](docs/ErrorResponse.md)
471
+ - [Asana.ErrorResponseErrors](docs/ErrorResponseErrors.md)
472
+ - [Asana.EventResponse](docs/EventResponse.md)
473
+ - [Asana.EventResponseArray](docs/EventResponseArray.md)
474
+ - [Asana.EventResponseChange](docs/EventResponseChange.md)
475
+ - [Asana.EventResponseParent](docs/EventResponseParent.md)
476
+ - [Asana.EventResponseResource](docs/EventResponseResource.md)
477
+ - [Asana.EventResponseUser](docs/EventResponseUser.md)
478
+ - [Asana.GoalAddSubgoalRequest](docs/GoalAddSubgoalRequest.md)
479
+ - [Asana.GoalAddSupportingRelationshipRequest](docs/GoalAddSupportingRelationshipRequest.md)
480
+ - [Asana.GoalAddSupportingWorkRequest](docs/GoalAddSupportingWorkRequest.md)
481
+ - [Asana.GoalBase](docs/GoalBase.md)
482
+ - [Asana.GoalCompact](docs/GoalCompact.md)
483
+ - [Asana.GoalGidAddFollowersBody](docs/GoalGidAddFollowersBody.md)
484
+ - [Asana.GoalGidAddSupportingRelationshipBody](docs/GoalGidAddSupportingRelationshipBody.md)
485
+ - [Asana.GoalGidRemoveFollowersBody](docs/GoalGidRemoveFollowersBody.md)
486
+ - [Asana.GoalGidRemoveSupportingRelationshipBody](docs/GoalGidRemoveSupportingRelationshipBody.md)
487
+ - [Asana.GoalGidSetMetricBody](docs/GoalGidSetMetricBody.md)
488
+ - [Asana.GoalGidSetMetricCurrentValueBody](docs/GoalGidSetMetricCurrentValueBody.md)
489
+ - [Asana.GoalMembershipBase](docs/GoalMembershipBase.md)
490
+ - [Asana.GoalMembershipBaseGoal](docs/GoalMembershipBaseGoal.md)
491
+ - [Asana.GoalMembershipCompact](docs/GoalMembershipCompact.md)
492
+ - [Asana.GoalMembershipResponse](docs/GoalMembershipResponse.md)
493
+ - [Asana.GoalMetricBase](docs/GoalMetricBase.md)
494
+ - [Asana.GoalMetricCurrentValueRequest](docs/GoalMetricCurrentValueRequest.md)
495
+ - [Asana.GoalMetricRequest](docs/GoalMetricRequest.md)
496
+ - [Asana.GoalRelationshipBase](docs/GoalRelationshipBase.md)
497
+ - [Asana.GoalRelationshipBaseSupportedGoal](docs/GoalRelationshipBaseSupportedGoal.md)
498
+ - [Asana.GoalRelationshipBaseSupportingResource](docs/GoalRelationshipBaseSupportingResource.md)
499
+ - [Asana.GoalRelationshipCompact](docs/GoalRelationshipCompact.md)
500
+ - [Asana.GoalRelationshipRequest](docs/GoalRelationshipRequest.md)
501
+ - [Asana.GoalRelationshipResponse](docs/GoalRelationshipResponse.md)
502
+ - [Asana.GoalRelationshipResponseArray](docs/GoalRelationshipResponseArray.md)
503
+ - [Asana.GoalRelationshipResponseData](docs/GoalRelationshipResponseData.md)
504
+ - [Asana.GoalRelationshipsGoalRelationshipGidBody](docs/GoalRelationshipsGoalRelationshipGidBody.md)
505
+ - [Asana.GoalRemoveSubgoalRequest](docs/GoalRemoveSubgoalRequest.md)
506
+ - [Asana.GoalRemoveSupportingRelationshipRequest](docs/GoalRemoveSupportingRelationshipRequest.md)
507
+ - [Asana.GoalRequest](docs/GoalRequest.md)
508
+ - [Asana.GoalRequestBase](docs/GoalRequestBase.md)
509
+ - [Asana.GoalResponse](docs/GoalResponse.md)
510
+ - [Asana.GoalResponseArray](docs/GoalResponseArray.md)
511
+ - [Asana.GoalResponseCurrentStatusUpdate](docs/GoalResponseCurrentStatusUpdate.md)
512
+ - [Asana.GoalResponseData](docs/GoalResponseData.md)
513
+ - [Asana.GoalResponseLikes](docs/GoalResponseLikes.md)
514
+ - [Asana.GoalResponseMetric](docs/GoalResponseMetric.md)
515
+ - [Asana.GoalResponseTeam](docs/GoalResponseTeam.md)
516
+ - [Asana.GoalResponseTimePeriod](docs/GoalResponseTimePeriod.md)
517
+ - [Asana.GoalResponseWorkspace](docs/GoalResponseWorkspace.md)
518
+ - [Asana.GoalUpdateRequest](docs/GoalUpdateRequest.md)
519
+ - [Asana.GoalsBody](docs/GoalsBody.md)
520
+ - [Asana.GoalsGoalGidBody](docs/GoalsGoalGidBody.md)
521
+ - [Asana.InlineResponse412](docs/InlineResponse412.md)
522
+ - [Asana.InlineResponse412Errors](docs/InlineResponse412Errors.md)
523
+ - [Asana.JobBase](docs/JobBase.md)
524
+ - [Asana.JobBaseNewProject](docs/JobBaseNewProject.md)
525
+ - [Asana.JobBaseNewProjectTemplate](docs/JobBaseNewProjectTemplate.md)
526
+ - [Asana.JobBaseNewTask](docs/JobBaseNewTask.md)
527
+ - [Asana.JobCompact](docs/JobCompact.md)
528
+ - [Asana.JobResponse](docs/JobResponse.md)
529
+ - [Asana.JobResponseData](docs/JobResponseData.md)
530
+ - [Asana.Like](docs/Like.md)
531
+ - [Asana.MemberCompact](docs/MemberCompact.md)
532
+ - [Asana.MembershipRequest](docs/MembershipRequest.md)
533
+ - [Asana.MembershipResponse](docs/MembershipResponse.md)
534
+ - [Asana.MembershipResponseArray](docs/MembershipResponseArray.md)
535
+ - [Asana.MembershipResponseData](docs/MembershipResponseData.md)
536
+ - [Asana.MembershipsBody](docs/MembershipsBody.md)
537
+ - [Asana.ModifyDependenciesRequest](docs/ModifyDependenciesRequest.md)
538
+ - [Asana.ModifyDependentsRequest](docs/ModifyDependentsRequest.md)
539
+ - [Asana.NextPage](docs/NextPage.md)
540
+ - [Asana.OrganizationExportBase](docs/OrganizationExportBase.md)
541
+ - [Asana.OrganizationExportCompact](docs/OrganizationExportCompact.md)
542
+ - [Asana.OrganizationExportRequest](docs/OrganizationExportRequest.md)
543
+ - [Asana.OrganizationExportResponse](docs/OrganizationExportResponse.md)
544
+ - [Asana.OrganizationExportResponseData](docs/OrganizationExportResponseData.md)
545
+ - [Asana.OrganizationExportsBody](docs/OrganizationExportsBody.md)
546
+ - [Asana.PortfolioAddItemRequest](docs/PortfolioAddItemRequest.md)
547
+ - [Asana.PortfolioBase](docs/PortfolioBase.md)
548
+ - [Asana.PortfolioCompact](docs/PortfolioCompact.md)
549
+ - [Asana.PortfolioGidAddCustomFieldSettingBody](docs/PortfolioGidAddCustomFieldSettingBody.md)
550
+ - [Asana.PortfolioGidAddItemBody](docs/PortfolioGidAddItemBody.md)
551
+ - [Asana.PortfolioGidAddMembersBody](docs/PortfolioGidAddMembersBody.md)
552
+ - [Asana.PortfolioGidRemoveCustomFieldSettingBody](docs/PortfolioGidRemoveCustomFieldSettingBody.md)
553
+ - [Asana.PortfolioGidRemoveItemBody](docs/PortfolioGidRemoveItemBody.md)
554
+ - [Asana.PortfolioGidRemoveMembersBody](docs/PortfolioGidRemoveMembersBody.md)
555
+ - [Asana.PortfolioMembershipBase](docs/PortfolioMembershipBase.md)
556
+ - [Asana.PortfolioMembershipBasePortfolio](docs/PortfolioMembershipBasePortfolio.md)
557
+ - [Asana.PortfolioMembershipCompact](docs/PortfolioMembershipCompact.md)
558
+ - [Asana.PortfolioMembershipResponse](docs/PortfolioMembershipResponse.md)
559
+ - [Asana.PortfolioMembershipResponseArray](docs/PortfolioMembershipResponseArray.md)
560
+ - [Asana.PortfolioMembershipResponseData](docs/PortfolioMembershipResponseData.md)
561
+ - [Asana.PortfolioRemoveItemRequest](docs/PortfolioRemoveItemRequest.md)
562
+ - [Asana.PortfolioRequest](docs/PortfolioRequest.md)
563
+ - [Asana.PortfolioResponse](docs/PortfolioResponse.md)
564
+ - [Asana.PortfolioResponseArray](docs/PortfolioResponseArray.md)
565
+ - [Asana.PortfolioResponseCurrentStatusUpdate](docs/PortfolioResponseCurrentStatusUpdate.md)
566
+ - [Asana.PortfolioResponseCustomFieldSettings](docs/PortfolioResponseCustomFieldSettings.md)
567
+ - [Asana.PortfolioResponseCustomFields](docs/PortfolioResponseCustomFields.md)
568
+ - [Asana.PortfolioResponseData](docs/PortfolioResponseData.md)
569
+ - [Asana.PortfolioResponseWorkspace](docs/PortfolioResponseWorkspace.md)
570
+ - [Asana.PortfoliosBody](docs/PortfoliosBody.md)
571
+ - [Asana.PortfoliosPortfolioGidBody](docs/PortfoliosPortfolioGidBody.md)
572
+ - [Asana.Preview](docs/Preview.md)
573
+ - [Asana.ProjectBase](docs/ProjectBase.md)
574
+ - [Asana.ProjectBaseCurrentStatus](docs/ProjectBaseCurrentStatus.md)
575
+ - [Asana.ProjectBaseCurrentStatusUpdate](docs/ProjectBaseCurrentStatusUpdate.md)
576
+ - [Asana.ProjectBaseWorkspace](docs/ProjectBaseWorkspace.md)
577
+ - [Asana.ProjectBriefBase](docs/ProjectBriefBase.md)
578
+ - [Asana.ProjectBriefCompact](docs/ProjectBriefCompact.md)
579
+ - [Asana.ProjectBriefRequest](docs/ProjectBriefRequest.md)
580
+ - [Asana.ProjectBriefResponse](docs/ProjectBriefResponse.md)
581
+ - [Asana.ProjectBriefResponseData](docs/ProjectBriefResponseData.md)
582
+ - [Asana.ProjectBriefResponseProject](docs/ProjectBriefResponseProject.md)
583
+ - [Asana.ProjectBriefsProjectBriefGidBody](docs/ProjectBriefsProjectBriefGidBody.md)
584
+ - [Asana.ProjectCompact](docs/ProjectCompact.md)
585
+ - [Asana.ProjectDuplicateRequest](docs/ProjectDuplicateRequest.md)
586
+ - [Asana.ProjectDuplicateRequestScheduleDates](docs/ProjectDuplicateRequestScheduleDates.md)
587
+ - [Asana.ProjectGidAddCustomFieldSettingBody](docs/ProjectGidAddCustomFieldSettingBody.md)
588
+ - [Asana.ProjectGidAddFollowersBody](docs/ProjectGidAddFollowersBody.md)
589
+ - [Asana.ProjectGidAddMembersBody](docs/ProjectGidAddMembersBody.md)
590
+ - [Asana.ProjectGidDuplicateBody](docs/ProjectGidDuplicateBody.md)
591
+ - [Asana.ProjectGidProjectBriefsBody](docs/ProjectGidProjectBriefsBody.md)
592
+ - [Asana.ProjectGidProjectStatusesBody](docs/ProjectGidProjectStatusesBody.md)
593
+ - [Asana.ProjectGidRemoveCustomFieldSettingBody](docs/ProjectGidRemoveCustomFieldSettingBody.md)
594
+ - [Asana.ProjectGidRemoveFollowersBody](docs/ProjectGidRemoveFollowersBody.md)
595
+ - [Asana.ProjectGidRemoveMembersBody](docs/ProjectGidRemoveMembersBody.md)
596
+ - [Asana.ProjectGidSaveAsTemplateBody](docs/ProjectGidSaveAsTemplateBody.md)
597
+ - [Asana.ProjectGidSectionsBody](docs/ProjectGidSectionsBody.md)
598
+ - [Asana.ProjectMembershipBase](docs/ProjectMembershipBase.md)
599
+ - [Asana.ProjectMembershipCompact](docs/ProjectMembershipCompact.md)
600
+ - [Asana.ProjectMembershipResponse](docs/ProjectMembershipResponse.md)
601
+ - [Asana.ProjectMembershipResponseArray](docs/ProjectMembershipResponseArray.md)
602
+ - [Asana.ProjectMembershipResponseData](docs/ProjectMembershipResponseData.md)
603
+ - [Asana.ProjectMembershipResponseMember](docs/ProjectMembershipResponseMember.md)
604
+ - [Asana.ProjectRequest](docs/ProjectRequest.md)
605
+ - [Asana.ProjectResponse](docs/ProjectResponse.md)
606
+ - [Asana.ProjectResponseArray](docs/ProjectResponseArray.md)
607
+ - [Asana.ProjectResponseCompletedBy](docs/ProjectResponseCompletedBy.md)
608
+ - [Asana.ProjectResponseCreatedFromTemplate](docs/ProjectResponseCreatedFromTemplate.md)
609
+ - [Asana.ProjectResponseData](docs/ProjectResponseData.md)
610
+ - [Asana.ProjectResponseProjectBrief](docs/ProjectResponseProjectBrief.md)
611
+ - [Asana.ProjectResponseTeam](docs/ProjectResponseTeam.md)
612
+ - [Asana.ProjectSaveAsTemplateRequest](docs/ProjectSaveAsTemplateRequest.md)
613
+ - [Asana.ProjectSectionInsertRequest](docs/ProjectSectionInsertRequest.md)
614
+ - [Asana.ProjectStatusBase](docs/ProjectStatusBase.md)
615
+ - [Asana.ProjectStatusCompact](docs/ProjectStatusCompact.md)
616
+ - [Asana.ProjectStatusRequest](docs/ProjectStatusRequest.md)
617
+ - [Asana.ProjectStatusResponse](docs/ProjectStatusResponse.md)
618
+ - [Asana.ProjectStatusResponseArray](docs/ProjectStatusResponseArray.md)
619
+ - [Asana.ProjectStatusResponseData](docs/ProjectStatusResponseData.md)
620
+ - [Asana.ProjectTemplateBase](docs/ProjectTemplateBase.md)
621
+ - [Asana.ProjectTemplateBaseRequestedDates](docs/ProjectTemplateBaseRequestedDates.md)
622
+ - [Asana.ProjectTemplateBaseRequestedRoles](docs/ProjectTemplateBaseRequestedRoles.md)
623
+ - [Asana.ProjectTemplateBaseTeam](docs/ProjectTemplateBaseTeam.md)
624
+ - [Asana.ProjectTemplateCompact](docs/ProjectTemplateCompact.md)
625
+ - [Asana.ProjectTemplateGidInstantiateProjectBody](docs/ProjectTemplateGidInstantiateProjectBody.md)
626
+ - [Asana.ProjectTemplateInstantiateProjectRequest](docs/ProjectTemplateInstantiateProjectRequest.md)
627
+ - [Asana.ProjectTemplateInstantiateProjectRequestRequestedDates](docs/ProjectTemplateInstantiateProjectRequestRequestedDates.md)
628
+ - [Asana.ProjectTemplateInstantiateProjectRequestRequestedRoles](docs/ProjectTemplateInstantiateProjectRequestRequestedRoles.md)
629
+ - [Asana.ProjectTemplateResponse](docs/ProjectTemplateResponse.md)
630
+ - [Asana.ProjectTemplateResponseArray](docs/ProjectTemplateResponseArray.md)
631
+ - [Asana.ProjectTemplateResponseData](docs/ProjectTemplateResponseData.md)
632
+ - [Asana.ProjectsBody](docs/ProjectsBody.md)
633
+ - [Asana.ProjectsProjectGidBody](docs/ProjectsProjectGidBody.md)
634
+ - [Asana.RemoveCustomFieldSettingRequest](docs/RemoveCustomFieldSettingRequest.md)
635
+ - [Asana.RemoveFollowersRequest](docs/RemoveFollowersRequest.md)
636
+ - [Asana.RemoveMembersRequest](docs/RemoveMembersRequest.md)
637
+ - [Asana.RequestedRoleRequest](docs/RequestedRoleRequest.md)
638
+ - [Asana.RuleTriggerGidRunBody](docs/RuleTriggerGidRunBody.md)
639
+ - [Asana.RuleTriggerRequest](docs/RuleTriggerRequest.md)
640
+ - [Asana.RuleTriggerResponse](docs/RuleTriggerResponse.md)
641
+ - [Asana.RuleTriggerResponseData](docs/RuleTriggerResponseData.md)
642
+ - [Asana.SectionBase](docs/SectionBase.md)
643
+ - [Asana.SectionCompact](docs/SectionCompact.md)
644
+ - [Asana.SectionGidAddTaskBody](docs/SectionGidAddTaskBody.md)
645
+ - [Asana.SectionRequest](docs/SectionRequest.md)
646
+ - [Asana.SectionResponse](docs/SectionResponse.md)
647
+ - [Asana.SectionResponseArray](docs/SectionResponseArray.md)
648
+ - [Asana.SectionResponseData](docs/SectionResponseData.md)
649
+ - [Asana.SectionTaskInsertRequest](docs/SectionTaskInsertRequest.md)
650
+ - [Asana.SectionsInsertBody](docs/SectionsInsertBody.md)
651
+ - [Asana.SectionsSectionGidBody](docs/SectionsSectionGidBody.md)
652
+ - [Asana.StatusUpdateBase](docs/StatusUpdateBase.md)
653
+ - [Asana.StatusUpdateCompact](docs/StatusUpdateCompact.md)
654
+ - [Asana.StatusUpdateRequest](docs/StatusUpdateRequest.md)
655
+ - [Asana.StatusUpdateResponse](docs/StatusUpdateResponse.md)
656
+ - [Asana.StatusUpdateResponseArray](docs/StatusUpdateResponseArray.md)
657
+ - [Asana.StatusUpdateResponseData](docs/StatusUpdateResponseData.md)
658
+ - [Asana.StatusUpdateResponseParent](docs/StatusUpdateResponseParent.md)
659
+ - [Asana.StatusUpdatesBody](docs/StatusUpdatesBody.md)
660
+ - [Asana.StoriesStoryGidBody](docs/StoriesStoryGidBody.md)
661
+ - [Asana.StoryBase](docs/StoryBase.md)
662
+ - [Asana.StoryCompact](docs/StoryCompact.md)
663
+ - [Asana.StoryRequest](docs/StoryRequest.md)
664
+ - [Asana.StoryResponse](docs/StoryResponse.md)
665
+ - [Asana.StoryResponseArray](docs/StoryResponseArray.md)
666
+ - [Asana.StoryResponseAssignee](docs/StoryResponseAssignee.md)
667
+ - [Asana.StoryResponseCustomField](docs/StoryResponseCustomField.md)
668
+ - [Asana.StoryResponseData](docs/StoryResponseData.md)
669
+ - [Asana.StoryResponseDates](docs/StoryResponseDates.md)
670
+ - [Asana.StoryResponseOldDates](docs/StoryResponseOldDates.md)
671
+ - [Asana.StoryResponseOldEnumValue](docs/StoryResponseOldEnumValue.md)
672
+ - [Asana.StoryResponseOldSection](docs/StoryResponseOldSection.md)
673
+ - [Asana.StoryResponsePreviews](docs/StoryResponsePreviews.md)
674
+ - [Asana.StoryResponseProject](docs/StoryResponseProject.md)
675
+ - [Asana.StoryResponseStory](docs/StoryResponseStory.md)
676
+ - [Asana.StoryResponseTag](docs/StoryResponseTag.md)
677
+ - [Asana.StoryResponseTarget](docs/StoryResponseTarget.md)
678
+ - [Asana.StoryResponseTask](docs/StoryResponseTask.md)
679
+ - [Asana.TagBase](docs/TagBase.md)
680
+ - [Asana.TagCompact](docs/TagCompact.md)
681
+ - [Asana.TagRequest](docs/TagRequest.md)
682
+ - [Asana.TagResponse](docs/TagResponse.md)
683
+ - [Asana.TagResponseArray](docs/TagResponseArray.md)
684
+ - [Asana.TagResponseData](docs/TagResponseData.md)
685
+ - [Asana.TagsBody](docs/TagsBody.md)
686
+ - [Asana.TaskAddFollowersRequest](docs/TaskAddFollowersRequest.md)
687
+ - [Asana.TaskAddProjectRequest](docs/TaskAddProjectRequest.md)
688
+ - [Asana.TaskAddTagRequest](docs/TaskAddTagRequest.md)
689
+ - [Asana.TaskBase](docs/TaskBase.md)
690
+ - [Asana.TaskBaseCompletedBy](docs/TaskBaseCompletedBy.md)
691
+ - [Asana.TaskBaseDependencies](docs/TaskBaseDependencies.md)
692
+ - [Asana.TaskBaseExternal](docs/TaskBaseExternal.md)
693
+ - [Asana.TaskBaseMemberships](docs/TaskBaseMemberships.md)
694
+ - [Asana.TaskBaseSection](docs/TaskBaseSection.md)
695
+ - [Asana.TaskCompact](docs/TaskCompact.md)
696
+ - [Asana.TaskCountResponse](docs/TaskCountResponse.md)
697
+ - [Asana.TaskCountResponseData](docs/TaskCountResponseData.md)
698
+ - [Asana.TaskDuplicateRequest](docs/TaskDuplicateRequest.md)
699
+ - [Asana.TaskGidAddDependenciesBody](docs/TaskGidAddDependenciesBody.md)
700
+ - [Asana.TaskGidAddDependentsBody](docs/TaskGidAddDependentsBody.md)
701
+ - [Asana.TaskGidAddFollowersBody](docs/TaskGidAddFollowersBody.md)
702
+ - [Asana.TaskGidAddProjectBody](docs/TaskGidAddProjectBody.md)
703
+ - [Asana.TaskGidAddTagBody](docs/TaskGidAddTagBody.md)
704
+ - [Asana.TaskGidDuplicateBody](docs/TaskGidDuplicateBody.md)
705
+ - [Asana.TaskGidRemoveDependenciesBody](docs/TaskGidRemoveDependenciesBody.md)
706
+ - [Asana.TaskGidRemoveDependentsBody](docs/TaskGidRemoveDependentsBody.md)
707
+ - [Asana.TaskGidRemoveFollowersBody](docs/TaskGidRemoveFollowersBody.md)
708
+ - [Asana.TaskGidRemoveProjectBody](docs/TaskGidRemoveProjectBody.md)
709
+ - [Asana.TaskGidRemoveTagBody](docs/TaskGidRemoveTagBody.md)
710
+ - [Asana.TaskGidSetParentBody](docs/TaskGidSetParentBody.md)
711
+ - [Asana.TaskGidStoriesBody](docs/TaskGidStoriesBody.md)
712
+ - [Asana.TaskGidSubtasksBody](docs/TaskGidSubtasksBody.md)
713
+ - [Asana.TaskGidTimeTrackingEntriesBody](docs/TaskGidTimeTrackingEntriesBody.md)
714
+ - [Asana.TaskRemoveFollowersRequest](docs/TaskRemoveFollowersRequest.md)
715
+ - [Asana.TaskRemoveProjectRequest](docs/TaskRemoveProjectRequest.md)
716
+ - [Asana.TaskRemoveTagRequest](docs/TaskRemoveTagRequest.md)
717
+ - [Asana.TaskRequest](docs/TaskRequest.md)
718
+ - [Asana.TaskResponse](docs/TaskResponse.md)
719
+ - [Asana.TaskResponseArray](docs/TaskResponseArray.md)
720
+ - [Asana.TaskResponseAssigneeSection](docs/TaskResponseAssigneeSection.md)
721
+ - [Asana.TaskResponseCustomFields](docs/TaskResponseCustomFields.md)
722
+ - [Asana.TaskResponseData](docs/TaskResponseData.md)
723
+ - [Asana.TaskResponseParent](docs/TaskResponseParent.md)
724
+ - [Asana.TaskResponseTags](docs/TaskResponseTags.md)
725
+ - [Asana.TaskResponseWorkspace](docs/TaskResponseWorkspace.md)
726
+ - [Asana.TaskSetParentRequest](docs/TaskSetParentRequest.md)
727
+ - [Asana.TasksBody](docs/TasksBody.md)
728
+ - [Asana.TasksTaskGidBody](docs/TasksTaskGidBody.md)
729
+ - [Asana.TeamAddUserRequest](docs/TeamAddUserRequest.md)
730
+ - [Asana.TeamBase](docs/TeamBase.md)
731
+ - [Asana.TeamCompact](docs/TeamCompact.md)
732
+ - [Asana.TeamGidAddUserBody](docs/TeamGidAddUserBody.md)
733
+ - [Asana.TeamGidProjectsBody](docs/TeamGidProjectsBody.md)
734
+ - [Asana.TeamGidRemoveUserBody](docs/TeamGidRemoveUserBody.md)
735
+ - [Asana.TeamMembershipBase](docs/TeamMembershipBase.md)
736
+ - [Asana.TeamMembershipCompact](docs/TeamMembershipCompact.md)
737
+ - [Asana.TeamMembershipResponse](docs/TeamMembershipResponse.md)
738
+ - [Asana.TeamMembershipResponseArray](docs/TeamMembershipResponseArray.md)
739
+ - [Asana.TeamMembershipResponseData](docs/TeamMembershipResponseData.md)
740
+ - [Asana.TeamRemoveUserRequest](docs/TeamRemoveUserRequest.md)
741
+ - [Asana.TeamRequest](docs/TeamRequest.md)
742
+ - [Asana.TeamResponse](docs/TeamResponse.md)
743
+ - [Asana.TeamResponseArray](docs/TeamResponseArray.md)
744
+ - [Asana.TeamResponseData](docs/TeamResponseData.md)
745
+ - [Asana.TeamResponseOrganization](docs/TeamResponseOrganization.md)
746
+ - [Asana.TeamsBody](docs/TeamsBody.md)
747
+ - [Asana.TeamsTeamGidBody](docs/TeamsTeamGidBody.md)
748
+ - [Asana.TemplateRole](docs/TemplateRole.md)
749
+ - [Asana.TimePeriodBase](docs/TimePeriodBase.md)
750
+ - [Asana.TimePeriodCompact](docs/TimePeriodCompact.md)
751
+ - [Asana.TimePeriodResponse](docs/TimePeriodResponse.md)
752
+ - [Asana.TimePeriodResponseArray](docs/TimePeriodResponseArray.md)
753
+ - [Asana.TimePeriodResponseData](docs/TimePeriodResponseData.md)
754
+ - [Asana.TimeTrackingEntriesTimeTrackingEntryGidBody](docs/TimeTrackingEntriesTimeTrackingEntryGidBody.md)
755
+ - [Asana.TimeTrackingEntryBase](docs/TimeTrackingEntryBase.md)
756
+ - [Asana.TimeTrackingEntryBaseData](docs/TimeTrackingEntryBaseData.md)
757
+ - [Asana.TimeTrackingEntryCompact](docs/TimeTrackingEntryCompact.md)
758
+ - [Asana.TimeTrackingEntryCompactArray](docs/TimeTrackingEntryCompactArray.md)
759
+ - [Asana.UpdateTimeTrackingEntryRequest](docs/UpdateTimeTrackingEntryRequest.md)
760
+ - [Asana.UserBase](docs/UserBase.md)
761
+ - [Asana.UserBaseResponse](docs/UserBaseResponse.md)
762
+ - [Asana.UserBaseResponseData](docs/UserBaseResponseData.md)
763
+ - [Asana.UserBaseResponsePhoto](docs/UserBaseResponsePhoto.md)
764
+ - [Asana.UserCompact](docs/UserCompact.md)
765
+ - [Asana.UserRequest](docs/UserRequest.md)
766
+ - [Asana.UserResponse](docs/UserResponse.md)
767
+ - [Asana.UserResponseArray](docs/UserResponseArray.md)
768
+ - [Asana.UserResponseData](docs/UserResponseData.md)
769
+ - [Asana.UserTaskListBase](docs/UserTaskListBase.md)
770
+ - [Asana.UserTaskListCompact](docs/UserTaskListCompact.md)
771
+ - [Asana.UserTaskListRequest](docs/UserTaskListRequest.md)
772
+ - [Asana.UserTaskListResponse](docs/UserTaskListResponse.md)
773
+ - [Asana.UserTaskListResponseData](docs/UserTaskListResponseData.md)
774
+ - [Asana.WebhookCompact](docs/WebhookCompact.md)
775
+ - [Asana.WebhookCompactResource](docs/WebhookCompactResource.md)
776
+ - [Asana.WebhookFilter](docs/WebhookFilter.md)
777
+ - [Asana.WebhookRequest](docs/WebhookRequest.md)
778
+ - [Asana.WebhookRequestFilters](docs/WebhookRequestFilters.md)
779
+ - [Asana.WebhookResponse](docs/WebhookResponse.md)
780
+ - [Asana.WebhookResponseArray](docs/WebhookResponseArray.md)
781
+ - [Asana.WebhookResponseData](docs/WebhookResponseData.md)
782
+ - [Asana.WebhookUpdateRequest](docs/WebhookUpdateRequest.md)
783
+ - [Asana.WebhooksBody](docs/WebhooksBody.md)
784
+ - [Asana.WebhooksWebhookGidBody](docs/WebhooksWebhookGidBody.md)
785
+ - [Asana.WorkspaceAddUserRequest](docs/WorkspaceAddUserRequest.md)
786
+ - [Asana.WorkspaceBase](docs/WorkspaceBase.md)
787
+ - [Asana.WorkspaceCompact](docs/WorkspaceCompact.md)
788
+ - [Asana.WorkspaceGidAddUserBody](docs/WorkspaceGidAddUserBody.md)
789
+ - [Asana.WorkspaceGidProjectsBody](docs/WorkspaceGidProjectsBody.md)
790
+ - [Asana.WorkspaceGidRemoveUserBody](docs/WorkspaceGidRemoveUserBody.md)
791
+ - [Asana.WorkspaceGidTagsBody](docs/WorkspaceGidTagsBody.md)
792
+ - [Asana.WorkspaceMembershipBase](docs/WorkspaceMembershipBase.md)
793
+ - [Asana.WorkspaceMembershipCompact](docs/WorkspaceMembershipCompact.md)
794
+ - [Asana.WorkspaceMembershipRequest](docs/WorkspaceMembershipRequest.md)
795
+ - [Asana.WorkspaceMembershipResponse](docs/WorkspaceMembershipResponse.md)
796
+ - [Asana.WorkspaceMembershipResponseArray](docs/WorkspaceMembershipResponseArray.md)
797
+ - [Asana.WorkspaceMembershipResponseData](docs/WorkspaceMembershipResponseData.md)
798
+ - [Asana.WorkspaceMembershipResponseUserTaskList](docs/WorkspaceMembershipResponseUserTaskList.md)
799
+ - [Asana.WorkspaceMembershipResponseVacationDates](docs/WorkspaceMembershipResponseVacationDates.md)
800
+ - [Asana.WorkspaceRemoveUserRequest](docs/WorkspaceRemoveUserRequest.md)
801
+ - [Asana.WorkspaceRequest](docs/WorkspaceRequest.md)
802
+ - [Asana.WorkspaceResponse](docs/WorkspaceResponse.md)
803
+ - [Asana.WorkspaceResponseArray](docs/WorkspaceResponseArray.md)
804
+ - [Asana.WorkspaceResponseData](docs/WorkspaceResponseData.md)
805
+ - [Asana.WorkspacesWorkspaceGidBody](docs/WorkspacesWorkspaceGidBody.md)
806
+
807
+ ## Documentation for Authorization
808
+
809
+
810
+ ### oauth2
811
+
812
+ - **Type**: OAuth
813
+ - **Flow**: accessCode
814
+ - **Authorization URL**: https://app.asana.com/-/oauth_authorize
815
+ - **Scopes**:
816
+ - default: Provides access to all endpoints documented in our API reference. If no scopes are requested, this scope is assumed by default.
817
+ - openid: Provides access to OpenID Connect ID tokens and the OpenID Connect user info endpoint.
818
+ - email: Provides access to the user’s email through the OpenID Connect user info endpoint.
819
+ - profile: Provides access to the user’s name and profile photo through the OpenID Connect user info endpoint.
820
+
821
+ ## Documentation for Using the `callApi` method
822
+
823
+ Use this to make http calls when the endpoint does not exist in the current library version or has bugs
824
+
825
+ ```javascript
242
826
  const Asana = require('asana');
243
- const util = require('util');
244
-
245
- // Using a PAT for basic authentication. This is reasonable to get
246
- // started with, but Oauth is more secure and provides more features.
247
-
248
- var client = Asana.Client.create().useAccessToken(process.env.ASANA_PAT);
249
-
250
- client.users.me()
251
- .then(user => {
252
- const userId = user.gid;
253
- // The user's "default" workspace is the first one in the list, though
254
- // any user can have multiple workspaces so you can't always assume this
255
- // is the one you want to work with.
256
- const workspaceId = user.workspaces[0].gid;
257
- return client.tasks.getTasks({
258
- assignee: userId,
259
- workspace: workspaceId,
260
- completed_since: 'now',
261
- opt_fields: 'id,name,assignee_status,completed'
262
- });
827
+ const defaultClient = Asana.ApiClient.instance;
828
+
829
+ // Configure OAuth2 access token for authorization: oauth2
830
+ const oauth2 = defaultClient.authentications['oauth2'];
831
+ oauth2.accessToken = "<YOUR_PERSONAL_ACCESS_TOKEN>"
832
+
833
+ // GET - get a task
834
+ defaultClient.callApi(
835
+ "/tasks/{task_gid}",
836
+ "GET",
837
+ (pathParams = { task_gid: "<YOUR_TASK_GID>" }),
838
+ (queryParams = {}),
839
+ (headerParams = {}),
840
+ (formParams = {}),
841
+ (bodyParam = null),
842
+ (authNames = ["oauth2"]),
843
+ (contentTypes = []),
844
+ (accepts = ["application/json; charset=UTF-8"]),
845
+ (returnType = "Blob"), // Can be one of: "Blob", "String"
846
+ (callback = (error, data, response) => {
847
+ if (error) {
848
+ console.error(error);
849
+ throw new Error(error);
850
+ } else {
851
+ console.log("API called successfully. Returned data: " + JSON.stringify(JSON.parse(data), null, 2));
852
+ }
263
853
  })
264
- .then(response => {
265
- // There may be more pages of data, we could stream or return a promise
266
- // to request those here - for now, let's just return the first page
267
- // of items.
268
- return response.data;
854
+ );
855
+
856
+ // POST - create a task
857
+ defaultClient.callApi(
858
+ "/tasks",
859
+ "POST",
860
+ (pathParams = {}),
861
+ (queryParams = {}),
862
+ (headerParams = {}),
863
+ (formParams = {}),
864
+ (bodyParam = {
865
+ data: {
866
+ name: "New Task",
867
+ projects: ["<YOUR_PROJECT_GID>"],
868
+ },
869
+ }),
870
+ (authNames = ["oauth2"]),
871
+ (contentTypes = ["application/json; charset=UTF-8"]),
872
+ (accepts = ["application/json; charset=UTF-8"]),
873
+ (returnType = "Blob"), // Can be one of: "Blob", "String"
874
+ (callback = (error, data, response) => {
875
+ if (error) {
876
+ console.error(error);
877
+ throw new Error(error);
878
+ } else {
879
+ console.log("API called successfully. Returned data: " + JSON.stringify(JSON.parse(data), null, 2));
880
+ }
269
881
  })
270
- .filter(task => {
271
- return task.assignee_status === 'today' ||
272
- task.assignee_status === 'new';
882
+ );
883
+
884
+ // PUT - update a task
885
+ defaultClient.callApi(
886
+ "/tasks/{task_gid}",
887
+ "PUT",
888
+ (pathParams = { task_gid: "<YOUR_TASK_GID>" }),
889
+ (queryParams = {}),
890
+ (headerParams = {}),
891
+ (formParams = {}),
892
+ (bodyParam = {
893
+ data: {
894
+ name: "Updated Task",
895
+ },
896
+ }),
897
+ (authNames = ["oauth2"]),
898
+ (contentTypes = ["application/json; charset=UTF-8"]),
899
+ (accepts = ["application/json; charset=UTF-8"]),
900
+ (returnType = "Blob"), // Can be one of: "Blob", "String"
901
+ (callback = (error, data, response) => {
902
+ if (error) {
903
+ console.error(error);
904
+ throw new Error(error);
905
+ } else {
906
+ console.log("API called successfully. Returned data: " + JSON.stringify(JSON.parse(data), null, 2));
907
+ }
273
908
  })
274
- .then(list => {
275
- console.log(util.inspect(list, {
276
- colors: true,
277
- depth: null
278
- }));
909
+ );
910
+
911
+ // DELETE - delete a task
912
+ defaultClient.callApi(
913
+ "/tasks/{task_gid}",
914
+ "DELETE",
915
+ (pathParams = { task_gid: "<YOUR_TASK_GID>" }),
916
+ (queryParams = {}),
917
+ (headerParams = {}),
918
+ (formParams = {}),
919
+ (bodyParam = null),
920
+ (authNames = ["oauth2"]),
921
+ (contentTypes = []),
922
+ (accepts = ["application/json; charset=UTF-8"]),
923
+ (returnType = "Blob"), // Can be one of: "Blob", "String"
924
+ (callback = (error, data, response) => {
925
+ if (error) {
926
+ console.error(error);
927
+ throw new Error(error);
928
+ } else {
929
+ console.log("API called successfully. Returned data: " + JSON.stringify(JSON.parse(data), null, 2));
930
+ }
279
931
  })
280
- .catch(e => {
281
- console.log(e);
282
- });
932
+ );
283
933
  ```
284
934
 
285
- ## Documentation
286
-
287
- The code is thoroughly documented with JSDoc tags. The
288
- [Official Asana Documentation][asana-doc] is a great resource, since this is
289
- just a thin wrapper for the API.
290
-
291
- ## Contributing
292
-
293
- Feel free to fork and submit pull requests for the code! Please follow the
294
- existing code as an example of style, and make sure that all your code passes
295
- lint and tests.
296
-
297
- For a sanity check:
298
-
299
- ```sh
300
- git clone git@github.com:Asana/node-asana.git
301
- cd node-asana
302
- npm install
303
- npm test
304
- ```
305
-
306
- ### Code generation
307
-
308
- The specific Asana resource classes within the gen folder (`Tag`, `Workspace`, `Task`, etc.) are
309
- generated code, hence they shouldn't be modified by hand.
310
-
311
- See our [openapi spec][https://github.com/Asana/developer-docs/blob/master/defs/asana_oas.yaml] and [swagger](https://github.com/swagger-api/swagger-codegen) for details.
312
-
313
- ### Deployment
314
-
315
- **Repo Owners Only.** Take the following steps to issue a new release of the library.
316
-
317
- #### Automatic Deployment
318
-
319
- 1. Merge in the desired changes into the `master` branch and commit them.
320
- 2. Clone the repo; work on `master`.
321
- 3. Bump the package version to indicate the [semantic version](http://semver.org) change, using one of: `gulp bump-patch`, `gulp bump-minor`, or `gulp bump-major`
322
- (NOTE: If this is your first time running `gulp` please install `gulp` globally using `npm i -g gulp`)
323
- 4. Push changes to origin, including tags:
324
- `git push --tags origin master:master`
325
-
326
- #### Manual Deployment
327
-
328
- 1. Merge in the desired changes into the `master` branch and commit them.
329
- 2. Clone the repo, work on master.
330
- 3. Edit package version in `package.json`, `bower.json` and `VERSION` to indicate the [semantic version](http://semver.org/) change.
331
- 4. Commit the change
332
- 5. Tag the commit with `v` plus the same version number you set in the file.
333
- `git tag v1.2.3`
334
- 6. Push changes to origin, including tags:
335
- `git push --tags origin master:master`
336
-
337
- GitHub Actions will automatically build and deploy the tagged release.
338
-
339
- :reminder_ribbon: Make sure to edit the [new release](https://github.com/Asana/node-asana/releases) description on GitHub after it has been deployed. Please use bullet points to indicate notable changes since the last version.
340
935
 
341
936
  [release-image]: https://img.shields.io/github/release/asana/node-asana.svg
342
937
 
343
- [github-actions-url]: https://github.com/Asana/node-asana/actions
344
938
  [github-actions-image]: https://github.com/Asana/node-asana/workflows/Build/badge.svg
939
+ [github-actions-url]: https://github.com/Asana/node-asana/actions
345
940
 
346
- [npm-url]: https://www.npmjs.org/package/asana
347
941
  [npm-image]: http://img.shields.io/npm/v/asana.svg?style=flat-square
348
-
349
- [bluebird]: https://github.com/petkaantonov/bluebird
350
- [co]: https://github.com/visionmedia/co
351
- [highland]: http://highlandjs.org/
352
-
353
- [asana-docs]: https://developers.asana.com/docs
942
+ [npm-url]: https://www.npmjs.org/package/asana