diff --git a/asana/asana-tests.ts b/asana/asana-tests.ts
index 464498dcf..050fbb36f 100644
--- a/asana/asana-tests.ts
+++ b/asana/asana-tests.ts
@@ -2,11 +2,103 @@
///
import * as asana from 'asana';
+import * as util from 'util';
let version: string = asana.VERSION;
-let n: asana.auth.BaseBrowserFlow = new asana.auth.BaseBrowserFlow(null);
+// https://github.com/Asana/node-asana#usage
+// Usage
+var client = asana.Client.create().useAccessToken('my_access_token');
+client.users.me().then(function(me) {
+ console.log(me);
+});
-import * as request from 'request';
+client = asana.Client.create({
+ clientId: 123,
+ clientSecret: 'my_client_secret',
+ redirectUri: 'my_redirect_uri'
+});
+
+client.useOauth({
+ credentials: 'my_access_token'
+});
+
+var credentials = {
+ // access_token: 'my_access_token',
+ refresh_token: 'my_refresh_token'
+};
+
+client.useOauth({
+ credentials: credentials
+});
+
+// https://github.com/Asana/node-asana#collections
+// Collections
+
+let tagId: string = null;
+client.tasks.findByTag(tagId, { limit: 5 }).then((collection: any) => {
+ console.log(collection.data);
+ // [ .. array of up to 5 task objects .. ]
+
+ client.tasks.findByTag(tagId).then((firstPage: any) => {
+ console.log(firstPage.data);
+ collection.nextPage().then((secondPage: any) => {
+ console.log(secondPage.data);
+ });
+ });
+});
+
+client.tasks.findByTag(tagId).then((collection: any) => {
+ // Fetch up to 200 tasks, using multiple pages if necessary
+ collection.fetch(200).then((tasks: any) => {
+ console.log(tasks);
+ });
+});
+
+client.tasks.findByTag(tagId).then((collection: any) => {
+ collection.stream().on('data', (task: any) => {
+ console.log(task);
+ });
+});
+
+// https://github.com/Asana/node-asana#examples
+// Examples
+
+var Asana = asana;
+
+// Using the API key for basic authentication. This is reasonable to get
+// started with, but Oauth is more secure and provides more features.
+var client = Asana.Client.create().useBasicAuth(process.env.ASANA_API_KEY);
+
+client.users.me()
+ .then((user: any) => {
+ var userId = user.id;
+ // The user's "default" workspace is the first one in the list, though
+ // any user can have multiple workspaces so you can't always assume this
+ // is the one you want to work with.
+ var workspaceId = user.workspaces[0].id;
+ return client.tasks.findAll({
+ assignee: userId,
+ workspace: workspaceId,
+ completed_since: 'now',
+ opt_fields: 'id,name,assignee_status,completed'
+ });
+ })
+ .then((response: any) => {
+ // There may be more pages of data, we could stream or return a promise
+ // to request those here - for now, let's just return the first page
+ // of items.
+ return response.data;
+ })
+ .filter((task: any) => {
+ return task.assignee_status === 'today' ||
+ task.assignee_status === 'new';
+ })
+ .then((list: any) => {
+ console.log(util.inspect(list, {
+ colors: true,
+ depth: null
+ }));
+ });
diff --git a/asana/asana.d.ts b/asana/asana.d.ts
index 1f099878b..85e202788 100644
--- a/asana/asana.d.ts
+++ b/asana/asana.d.ts
@@ -38,7 +38,7 @@ declare module "asana" {
/** Options to configure the client */
interface ClientOptions extends DispatcherOptions {
- clientId?: string;
+ clientId?: string|number;
clientSecret?: string;
redirectUri?: string;
asanaBaseUrl?: string;
@@ -323,7 +323,7 @@ declare module "asana" {
/**
* @param apiKey
*/
- new (apiKey : string): BasicAuthenticator;
+ new (apiKey: string): BasicAuthenticator;
}
interface BasicAuthenticator extends Authenticator {
@@ -334,7 +334,7 @@ declare module "asana" {
* @param request
* @return
*/
- authenticateRequest(request : BasicAuthenticatorRequest): BasicAuthenticatorRequest;
+ authenticateRequest(request: BasicAuthenticatorRequest): BasicAuthenticatorRequest;
}
interface BasicAuthenticatorRequest {
@@ -361,7 +361,7 @@ declare module "asana" {
* field.
* @constructor
*/
- new (options : OauthAuthenticatorOptions): OauthAuthenticator;
+ new (options: OauthAuthenticatorOptions): OauthAuthenticator;
}
interface OauthAuthenticatorOptions {
@@ -370,7 +370,7 @@ declare module "asana" {
}
interface Credentials {
- access_token: string;
+ access_token?: string;
refresh_token?: string;
}
@@ -382,7 +382,7 @@ declare module "asana" {
* @param request
* @return
*/
- authenticateRequest(request : OauthAuthenticatorRequest): OauthAuthenticatorRequest;
+ authenticateRequest(request: OauthAuthenticatorRequest): OauthAuthenticatorRequest;
}
interface OauthAuthenticatorRequest {
@@ -440,7 +440,7 @@ declare module "asana" {
}
interface AppOptions extends AsanaAuthorizeUrlOptions {
- clientId?: string;
+ clientId?: string|number;
clientSecret?: string;
scope?: string;
}
@@ -523,7 +523,8 @@ declare module "asana" {
error_description?: string;
}
- interface OauthError extends Error { }
+ interface OauthError extends Error {
+ }
/**
* Auto-detects the type of Oauth flow to use that's appropriate to the
@@ -549,7 +550,8 @@ declare module "asana" {
new (options: any): RedirectFlow;
}
- interface RedirectFlow extends BaseBrowserFlow { }
+ interface RedirectFlow extends BaseBrowserFlow {
+ }
var PopupFlow: PopupFlowStatic;
@@ -723,6 +725,7 @@ declare module "asana" {
* @return
*/
constructor(message: any);
+
code: number;
value: any;
}
@@ -785,7 +788,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Attachments {
+ class Attachments extends Resource {
/**
* @param dispatcher
*/
@@ -802,7 +805,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(attachment: string, params?: any, dispatchOptions?: any): any;
+ findById(attachment: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact records for all attachments on the task.
@@ -815,7 +818,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByTask(task: string, params?: any, dispatchOptions?: any): any;
+ findByTask(task: string, params?: any, dispatchOptions?: any): Promise;
}
/**
@@ -847,7 +850,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Events {
+ class Events extends Resource {
/**
* @param dispatcher
* @return
@@ -867,7 +870,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Projects {
+ class Projects extends Resource {
/**
* @param dispatcher
*/
@@ -895,7 +898,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- create(data: any, dispatchOptions?: any): any;
+ create(data: any, dispatchOptions?: any): Promise;
/**
* * If the workspace for your project _is_ an organization, you must also
@@ -911,7 +914,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- createInWorkspace(workspace: string, data: any, dispatchOptions?: any): any;
+ createInWorkspace(workspace: string, data: any, dispatchOptions?: any): Promise;
/**
* * Creates a project shared with the given team.
@@ -926,7 +929,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- createInTeam(team: string, data: any, dispatchOptions?: any): any;
+ createInTeam(team: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns the complete project record for a single project.
@@ -939,7 +942,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(project: string, params?: any, dispatchOptions?: any): any;
+ findById(project: string, params?: any, dispatchOptions?: any): Promise;
/**
* * A specific, existing project can be updated by making a PUT request on the
@@ -960,7 +963,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- update(project: string, data: any, dispatchOptions?: any): any;
+ update(project: string, data: any, dispatchOptions?: any): Promise;
/**
* * A specific, existing project can be deleted by making a DELETE request
@@ -974,7 +977,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- delete(project: string, dispatchOptions?: any): any;
+ delete(project: string, dispatchOptions?: any): Promise;
/**
* * Returns the compact project records for some filtered set of projects.
@@ -990,7 +993,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findAll(params?: any, dispatchOptions?: any): any;
+ findAll(params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact project records for all projects in the workspace.
@@ -1005,7 +1008,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByWorkspace(workspace: string, params?: any, dispatchOptions?: any): any;
+ findByWorkspace(workspace: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact project records for all projects in the team.
@@ -1020,7 +1023,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByTeam(team: string, params?: any, dispatchOptions?: any): any;
+ findByTeam(team: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns compact records for all sections in the specified project.
@@ -1033,7 +1036,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- sections(project: string, params?: any, dispatchOptions?: any): any;
+ sections(project: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact task records for all tasks within the given project,
@@ -1047,7 +1050,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- tasks(project: string, params?: any, dispatchOptions?: any): any;
+ tasks(project: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Adds the specified list of users as followers to the project. Followers are a subset of members, therefore if
@@ -1063,7 +1066,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addFollowers(project: string, data: any, dispatchOptions?: any): any;
+ addFollowers(project: string, data: any, dispatchOptions?: any): Promise;
/**
* * Removes the specified list of users from following the project, this will not affect project membership status.
@@ -1078,7 +1081,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeFollowers(project: string, data: any, dispatchOptions?: any): any;
+ removeFollowers(project: string, data: any, dispatchOptions?: any): Promise;
/**
* * Adds the specified list of users as members of the project. Returns the updated project record.
@@ -1092,7 +1095,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addMembers(project: string, data: any, dispatchOptions?: any): any;
+ addMembers(project: string, data: any, dispatchOptions?: any): Promise;
/**
* * Removes the specified list of members from the project. Returns the updated project record.
@@ -1106,7 +1109,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeMembers(project: string, data: any, dispatchOptions?: any): any;
+ removeMembers(project: string, data: any, dispatchOptions?: any): Promise;
}
/**
@@ -1120,7 +1123,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Stories {
+ class Stories extends Resource {
/**
*
* @param dispatcher
@@ -1138,7 +1141,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByTask(task: string, params?: any, dispatchOptions?: any): any;
+ findByTask(task: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the full record for a single story.
@@ -1151,7 +1154,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(story: string, params?: any, dispatchOptions?: any): any;
+ findById(story: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Adds a comment to a task. The comment will be authored by the
@@ -1169,7 +1172,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- createOnTask(task: string, data: any, dispatchOptions?: any): any;
+ createOnTask(task: string, data: any, dispatchOptions?: any): Promise;
}
/**
@@ -1183,7 +1186,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Tags {
+ class Tags extends Resource {
/**
* @param dispatcher
*/
@@ -1206,7 +1209,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- create(data: any, dispatchOptions?: any): any;
+ create(data: any, dispatchOptions?: any): Promise;
/**
* * Creates a new tag in a workspace or organization.
@@ -1226,7 +1229,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- createInWorkspace(workspace: string, data: any, dispatchOptions?: any): any;
+ createInWorkspace(workspace: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns the complete tag record for a single tag.
@@ -1239,7 +1242,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(tag: string, params?: any, dispatchOptions?: any): any;
+ findById(tag: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Updates the properties of a tag. Only the fields provided in the `data`
@@ -1259,7 +1262,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- update(tag: string, data: any, dispatchOptions?: any): any;
+ update(tag: string, data: any, dispatchOptions?: any): Promise;
/**
* * A specific, existing tag can be deleted by making a DELETE request
@@ -1273,7 +1276,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- delete(tag: string, dispatchOptions?: any): any;
+ delete(tag: string, dispatchOptions?: any): Promise;
/**
* * Returns the compact tag records for some filtered set of tags.
@@ -1289,7 +1292,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findAll(params?: any, dispatchOptions?: any): any;
+ findAll(params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact tag records for all tags in the workspace.
@@ -1302,7 +1305,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByWorkspace(workspace: string, params?: any, dispatchOptions?: any): any;
+ findByWorkspace(workspace: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact task records for all tasks with the given tag.
@@ -1316,7 +1319,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- getTasksWithTag(tag: string, params?: any, dispatchOptions?: any): any;
+ getTasksWithTag(tag: string, params?: any, dispatchOptions?: any): Promise;
}
/**
@@ -1327,7 +1330,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Tasks {
+ class Tasks extends Resource {
/**
* @param dispatcher
*/
@@ -1349,7 +1352,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- create(data: any, dispatchOptions?: any): any;
+ create(data: any, dispatchOptions?: any): Promise;
/**
* * Creating a new task is as easy as POSTing to the `/tasks` endpoint
@@ -1368,7 +1371,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- createInWorkspace(workspace: string, data: any, dispatchOptions?: any): any;
+ createInWorkspace(workspace: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns the complete task record for a single task.
@@ -1381,7 +1384,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(task: string, params?: any, dispatchOptions?: any): any;
+ findById(task: string, params?: any, dispatchOptions?: any): Promise;
/**
* * A specific, existing task can be updated by making a PUT request on the
@@ -1402,7 +1405,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- update(task: string, data: any, dispatchOptions?: any): any;
+ update(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * A specific, existing task can be deleted by making a DELETE request on the
@@ -1418,7 +1421,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- delete(task: string, dispatchOptions?: any): any;
+ delete(task: string, dispatchOptions?: any): Promise;
/**
* * Returns the compact task records for all tasks within the given project,
@@ -1432,7 +1435,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByProject(projectId: string, params?: any, dispatchOptions?: any): any;
+ findByProject(projectId: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact task records for all tasks with the given tag.
@@ -1445,7 +1448,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByTag(tag: string, params?: any, dispatchOptions?: any): any;
+ findByTag(tag: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact task records for some filtered set of tasks. Use one
@@ -1462,7 +1465,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findAll(params?: any, dispatchOptions?: any): any;
+ findAll(params?: any, dispatchOptions?: any): Promise;
/**
* * Adds each of the specified followers to the task, if they are not already
@@ -1477,7 +1480,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addFollowers(task: string, data: any, dispatchOptions?: any): any;
+ addFollowers(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Removes each of the specified followers from the task if they are
@@ -1492,7 +1495,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeFollowers(task: string, data: any, dispatchOptions?: any): any;
+ removeFollowers(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns a compact representation of all of the projects the task is in.
@@ -1505,7 +1508,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- projects(task: string, params?: any, dispatchOptions?: any): any;
+ projects(task: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Adds the task to the specified project, in the optional location
@@ -1532,7 +1535,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addProject(task: string, data: any, dispatchOptions?: any): any;
+ addProject(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Removes the task from the specified project. The task will still exist
@@ -1549,7 +1552,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeProject(task: string, data: any, dispatchOptions?: any): any;
+ removeProject(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns a compact representation of all of the tags the task has.
@@ -1562,7 +1565,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- tags(task: string, params?: any, dispatchOptions?: any): any;
+ tags(task: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Adds a tag to a task. Returns an empty data block.
@@ -1576,7 +1579,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addTag(task: string, data: any, dispatchOptions?: any): any;
+ addTag(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Removes a tag from the task. Returns an empty data block.
@@ -1590,7 +1593,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeTag(task: string, data: any, dispatchOptions?: any): any;
+ removeTag(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns a compact representation of all of the subtasks of a task.
@@ -1603,7 +1606,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- subtasks(task: string, params?: any, dispatchOptions?: any): any;
+ subtasks(task: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Creates a new subtask and adds it to the parent task. Returns the full record
@@ -1617,7 +1620,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addSubtask(task: string, data: any, dispatchOptions?: any): any;
+ addSubtask(task: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns a compact representation of all of the stories on the task.
@@ -1630,7 +1633,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- stories(task: string, params?: any, dispatchOptions?: any): any;
+ stories(task: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Adds a comment to a task. The comment will be authored by the
@@ -1648,7 +1651,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addComment(task: string, data: any, dispatchOptions?: any): any;
+ addComment(task: string, data: any, dispatchOptions?: any): Promise;
}
/**
@@ -1657,7 +1660,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Teams {
+ class Teams extends Resource {
/**
* @param dispatcher
*/
@@ -1674,7 +1677,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(team: string, params?: any, dispatchOptions?: any): any;
+ findById(team: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact records for all teams in the organization visible to
@@ -1688,7 +1691,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByOrganization(organization: string, params?: any, dispatchOptions?: any): any;
+ findByOrganization(organization: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact records for all users that are members of the team.
@@ -1701,7 +1704,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- users(team: string, params?: any, dispatchOptions?: any): any;
+ users(team: string, params?: any, dispatchOptions?: any): Promise;
/**
* * The user making this call must be a member of the team in order to add others.
@@ -1720,7 +1723,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addUser(team: string, data: any, dispatchOptions?: any): any;
+ addUser(team: string, data: any, dispatchOptions?: any): Promise;
/**
* * The user to remove can be referenced by their globally unique user ID or their email address.
@@ -1737,7 +1740,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeUser(team: string, data: any, dispatchOptions?: any): any;
+ removeUser(team: string, data: any, dispatchOptions?: any): Promise;
}
/**
@@ -1750,7 +1753,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Users {
+ class Users extends Resource {
/**
* @param dispatcher
*/
@@ -1765,7 +1768,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- me(params?: any, dispatchOptions?: any): any;
+ me(params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the full user record for the single user with the provided ID.
@@ -1780,7 +1783,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(user: string, params?: any, dispatchOptions?: any): any;
+ findById(user: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the user records for all users in the specified workspace or
@@ -1794,7 +1797,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findByWorkspace(workspace: string, params?: any, dispatchOptions?: any): any;
+ findByWorkspace(workspace: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the user records for all users in all workspaces and organizations
@@ -1808,7 +1811,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findAll(params?: any, dispatchOptions?: any): any;
+ findAll(params?: any, dispatchOptions?: any): Promise;
}
/**
@@ -1861,7 +1864,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Webhooks {
+ class Webhooks extends Resource {
/**
* @param dispatcher
*/
@@ -1894,7 +1897,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- create(resource: string, target: string, data: any, dispatchOptions?: any): any;
+ create(resource: string, target: string, data: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact representation of all webhooks your app has
@@ -1909,7 +1912,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- getAll(workspace: string, params?: any, dispatchOptions?: any): any;
+ getAll(workspace: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the full record for the given webhook.
@@ -1922,7 +1925,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- getById(webhook: string, params?: any, dispatchOptions?: any): any;
+ getById(webhook: string, params?: any, dispatchOptions?: any): Promise;
/**
* * This method permanently removes a webhook. Note that it may be possible
@@ -1935,7 +1938,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- deleteById(webhook: string, dispatchOptions?: any): any;
+ deleteById(webhook: string, dispatchOptions?: any): Promise;
}
/**
@@ -1956,7 +1959,7 @@ declare module "asana" {
* @class
* @param {Dispatcher} dispatcher The API dispatcher
*/
- class Workspaces {
+ class Workspaces extends Resource {
/**
* @param dispatcher
*/
@@ -1973,7 +1976,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findById(workspace: string, params?: any, dispatchOptions?: any): any;
+ findById(workspace: string, params?: any, dispatchOptions?: any): Promise;
/**
* * Returns the compact records for all workspaces visible to the authorized user.
@@ -1984,7 +1987,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- findAll(params?: any, dispatchOptions?: any): any;
+ findAll(params?: any, dispatchOptions?: any): Promise;
/**
* * A specific, existing workspace can be updated by making a PUT request on
@@ -2003,7 +2006,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- update(workspace: string, data: any, dispatchOptions?: any): any;
+ update(workspace: string, data: any, dispatchOptions?: any): Promise;
/**
* * Retrieves objects in the workspace based on an auto-completion/typeahead
@@ -2029,7 +2032,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- typeahead(workspace: string, params?: any, dispatchOptions?: any): any;
+ typeahead(workspace: string, params?: any, dispatchOptions?: any): Promise;
/**
* * The user can be referenced by their globally unique user ID or their email address.
@@ -2046,7 +2049,7 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- addUser(workspace: string, data: any, dispatchOptions?: any): any;
+ addUser(workspace: string, data: any, dispatchOptions?: any): Promise;
/**
* * The user making this call must be an admin in the workspace.
@@ -2063,7 +2066,128 @@ declare module "asana" {
* @param dispatchOptions?
* @return
*/
- removeUser(workspace: string, data: any, dispatchOptions?: any): any;
+ removeUser(workspace: string, data: any, dispatchOptions?: any): Promise;
+ }
+
+ interface ResourceStatic {
+ /**
+ * @param dispatcher
+ */
+ new (dispatcher: Dispatcher): Resource;
+
+ /**
+ * @type {number} Default number of items to get per page.
+ */
+ DEFAULT_PAGE_LIMIT: number;
+
+ /**
+ * Helper method that dispatches a GET request to the API, where the expected
+ * result is a collection.
+ * @param {Dispatcher} dispatcher
+ * @param {String} path The path of the API
+ * @param {Object} [query] The query params
+ * @param {Object} [dispatchOptions] Options for handling the request and
+ * response. See `Dispatcher.dispatch`.
+ * @return {Promise} The Collection response for the request
+ * @param dispatcher
+ * @param path
+ * @param query?
+ * @param dispatchOptions?
+ */
+ getCollection(dispatcher: any, path: string, query?: any, dispatchOptions?: any): Promise;
+
+ /**
+ * Helper method for any request Promise from the Dispatcher, unwraps the `data`
+ * value from the payload.
+ * @param {Promise} promise A promise returned from a `Dispatcher` request.
+ * @return {Promise} The `data` portion of the response payload.
+ * @param promise
+ * @return
+ */
+ unwrap(promise: any): Promise;
+ }
+
+ var Resource: ResourceStatic;
+
+ /**
+ * Base class for a resource accessible via the API. Uses a `Dispatcher` to
+ * access the resources.
+ * @param {Dispatcher} dispatcher
+ * @constructor
+ */
+ interface Resource {
+ /**
+ * Dispatches a GET request to the API, where the expected result is a
+ * single resource.
+ * @param {String} path The path of the API
+ * @param {Object} [query] The query params
+ * @param {Object} [dispatchOptions] Options for handling the request and
+ * response. See `Dispatcher.dispatch`.
+ * @return {Promise} The response for the request
+ * @param path
+ * @param query?
+ * @param dispatchOptions?
+ * @return
+ */
+ dispatchGet(path: string, query?: any, dispatchOptions?: any): Promise;
+
+ /**
+ * Dispatches a GET request to the API, where the expected result is a
+ * collection.
+ * @param {String} path The path of the API
+ * @param {Object} [query] The query params
+ * @param {Object} [dispatchOptions] Options for handling the request and
+ * response. See `Dispatcher.dispatch`.
+ * @return {Promise} The response for the request
+ * @param path
+ * @param query?
+ * @param dispatchOptions?
+ * @return
+ */
+ dispatchGetCollection(path: string, query?: any, dispatchOptions?: any): Promise;
+
+ /**
+ * Dispatches a POST request to the API, where the expected response is a
+ * single resource.
+ * @param {String} path The path of the API
+ * @param {Object} [query] The query params
+ * @param {Object} [dispatchOptions] Options for handling the request and
+ * response. See `Dispatcher.dispatch`.
+ * @return {Promise} The response for the request
+ * @param path
+ * @param query?
+ * @param dispatchOptions?
+ * @return
+ */
+ dispatchPost(path: string, query?: any, dispatchOptions?: any): Promise;
+
+ /**
+ * Dispatches a POST request to the API, where the expected response is a
+ * single resource.
+ * @param {String} path The path of the API
+ * @param {Object} [query] The query params
+ * @param {Object} [dispatchOptions] Options for handling the request and
+ * response. See `Dispatcher.dispatch`.
+ * @return {Promise} The response for the request
+ * @param path
+ * @param query?
+ * @param dispatchOptions?
+ * @return
+ */
+ dispatchPut(path: string, query?: any, dispatchOptions?: any): Promise;
+
+ /**
+ * Dispatches a DELETE request to the API. The expected response is an
+ * empty resource.
+ * @param {String} path The path of the API
+ * @param {Object} [dispatchOptions] Options for handling the request and
+ * response. See `Dispatcher.dispatch`.
+ * @return {Promise} The response for the request
+ * @param path
+ * @param dispatchOptions?
+ * @return
+ */
+ dispatchDelete(path: string, dispatchOptions?: any): Promise;
}
}