/** * Asana Managed API * * A comprehensive Managed API wrapper for Asana REST API v1.0 * Provides type-safe, hierarchical access to all Asana API endpoints * * Usage with Connector: * ```typescript * import { createAsanaApi } from '@rbaileysr/asana-managed-api'; * import AsanaApiConnection from '../api/asana'; * * const Asana = createAsanaApi(AsanaApiConnection); * const workspace = await Asana.Workspace.getWorkspace({ workspaceGid: '123' }); * ``` * * Usage with OAuth Token: * ```typescript * import { createAsanaApi } from '@rbaileysr/asana-managed-api'; * * // OAuth token stored in Record Storage at key 'asana-oauth-token' * const Asana = createAsanaApi('asana-oauth-token'); * const workspace = await Asana.Workspace.getWorkspace({ workspaceGid: '123' }); * ``` */ import { WorkspaceGroup } from './groups/Workspace'; import { UserGroup } from './groups/User'; import { ProjectGroup } from './groups/Project'; import { TaskGroup } from './groups/Task'; import { StoryGroup } from './groups/Story'; import { TagGroup } from './groups/Tag'; import { SectionGroup } from './groups/Section'; import { AttachmentGroup } from './groups/Attachment'; import { CustomFieldGroup } from './groups/CustomField'; import { TeamGroup } from './groups/Team'; import { WebhookGroup } from './groups/Webhook'; import { EventGroup } from './groups/Event'; /** * Type for API connection that provides fetch method * Use structural type for maximum compatibility */ export interface AsanaApiConnection { fetch: (path: string, options?: { method?: string; headers?: Record | Headers | Array<[string, string]>; body?: string | FormData | Blob | ArrayBuffer | URLSearchParams | null; }) => Promise<{ ok: boolean; status: number; statusText: string; json(): Promise; headers: { get(name: string): string | null; }; }>; connectionId?: string; } /** * Main Asana API class * Provides hierarchical access to all Asana API groups */ declare class AsanaApi { readonly Workspace: WorkspaceGroup; readonly User: UserGroup; readonly Project: ProjectGroup; readonly Task: TaskGroup; readonly Story: StoryGroup; readonly Tag: TagGroup; readonly Section: SectionGroup; readonly Attachment: AttachmentGroup; readonly CustomField: CustomFieldGroup; readonly Team: TeamGroup; readonly Webhook: WebhookGroup; readonly Event: EventGroup; /** * Access to the underlying API connection for advanced use cases */ readonly fetch: AsanaApiConnection['fetch']; readonly connectionId?: string; constructor(apiConnection: AsanaApiConnection); } /** * Create an Asana API instance with the provided API connection (Connector-based) * * @param apiConnection - The API connection from scripts/api/asana * @returns An Asana API instance with all resource groups * * @example * ```typescript * import { createAsanaApi } from '@rbaileysr/asana-managed-api'; * import AsanaApiConnection from '../api/asana'; * * const Asana = createAsanaApi(AsanaApiConnection); * const workspace = await Asana.Workspace.getWorkspace({ workspaceGid: '123' }); * ``` */ export declare function createAsanaApi(apiConnection: AsanaApiConnection): AsanaApi; /** * Create an Asana API instance with OAuth token from Record Storage * * @param storageKey - The Record Storage key containing the OAuth token * @returns An Asana API instance with all resource groups * * @example * ```typescript * import { createAsanaApi } from '@rbaileysr/asana-managed-api'; * * // OAuth token stored in Record Storage at key 'asana-oauth-token' * // Note: Asana base URL is hardcoded to https://app.asana.com * const Asana = createAsanaApi('asana-oauth-token'); * const workspace = await Asana.Workspace.getWorkspace({ workspaceGid: '123' }); * ``` */ export declare function createAsanaApi(storageKey: string): AsanaApi; export * from './types'; //# sourceMappingURL=index.d.ts.map