@workast/sdk 3.1.0 → 3.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/request.ts","../src/resources/attachments.ts","../src/resources/calendar.ts","../src/resources/fields.ts","../src/resources/lists.ts","../src/resources/meetings.ts","../src/resources/notes.ts","../src/resources/notifications.ts","../src/resources/reactions.ts","../src/resources/searches.ts","../src/resources/tags.ts","../src/resources/tasks.ts","../src/resources/tokens.ts","../src/resources/users.ts","../src/resources/workflows.ts","../src/client.ts"],"sourcesContent":["export class ApiError extends Error {\n readonly status: number;\n readonly body: unknown;\n\n constructor(message: string, status: number, body?: unknown) {\n super(message);\n this.name = 'ApiError';\n this.status = status;\n this.body = body;\n }\n}\n\nexport class AuthenticationError extends ApiError {\n constructor(message: string, status = 401, body?: unknown) {\n super(message, status, body);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class PermissionError extends ApiError {\n constructor(message: string, status = 403, body?: unknown) {\n super(message, status, body);\n this.name = 'PermissionError';\n }\n}\n\nexport class NotFoundError extends ApiError {\n constructor(message: string, status = 404, body?: unknown) {\n super(message, status, body);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends ApiError {\n constructor(message: string, status = 400, body?: unknown) {\n super(message, status, body);\n this.name = 'ValidationError';\n }\n}\n\nexport function errorFromResponse(status: number, body: unknown): ApiError {\n const message = messageFromBody(body) ?? `Request failed with status ${status}`;\n switch (status) {\n case 400:\n return new ValidationError(message, status, body);\n case 401:\n return new AuthenticationError(message, status, body);\n case 403:\n return new PermissionError(message, status, body);\n case 404:\n return new NotFoundError(message, status, body);\n default:\n return new ApiError(message, status, body);\n }\n}\n\nfunction messageFromBody(body: unknown): string | undefined {\n if (!body || typeof body !== 'object') {\n return undefined;\n }\n const { error, message } = body as { error?: unknown; message?: unknown };\n if (typeof error === 'string') {\n return typeof message === 'string' ? message : error;\n }\n if (error && typeof error === 'object') {\n const nested = error as { message?: unknown };\n if (typeof nested.message === 'string') {\n return nested.message;\n }\n }\n if (typeof message === 'string') {\n return message;\n }\n return undefined;\n}\n","import { errorFromResponse } from './errors.js';\n\nexport interface RequestOptions {\n headers?: Record<string, string>;\n query?: URLSearchParams;\n}\n\nexport interface RequestContext {\n baseUrl: string;\n headers: Record<string, string>;\n fetch: typeof fetch;\n resolveAuth(): Promise<string>;\n}\n\nexport function withoutAuthorization(\n headers: Record<string, string> = {},\n): Record<string, string> {\n const next: Record<string, string> = {};\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() !== 'authorization') {\n next[key] = value;\n }\n }\n return next;\n}\n\nexport async function request<T>(\n ctx: RequestContext,\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions,\n): Promise<T> {\n const token = await ctx.resolveAuth();\n const headers: Record<string, string> = {\n ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}),\n ...ctx.headers,\n ...withoutAuthorization(options?.headers),\n Authorization: `Bearer ${token}`,\n };\n\n let url = `${ctx.baseUrl.replace(/\\/$/, '')}${path}`;\n const qs = options?.query?.toString();\n if (qs) {\n url += `?${qs}`;\n }\n\n const response = await ctx.fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n let errorBody: unknown;\n try {\n errorBody = await response.json();\n } catch {\n errorBody = undefined;\n }\n throw errorFromResponse(response.status, errorBody);\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n const text = await response.text();\n if (!text) {\n return undefined as T;\n }\n\n return JSON.parse(text) as T;\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type { AttachmentFileUrl, AttachmentFileUrlQuery } from '../types/generated.js';\n\nexport class Attachments {\n constructor(private readonly client: Workast) {}\n\n /**\n * Get a signed URL to download an attachment file.\n * Requires `file:find`.\n *\n * @example\n * const attachment = await workast.attachments.retrieveFileUrl('attachment-id');\n */\n retrieveFileUrl(\n attachmentId: string,\n query?: AttachmentFileUrlQuery,\n options?: RequestOptions,\n ): Promise<AttachmentFileUrl> {\n const params = new URLSearchParams(options?.query);\n if (query?.download != null) {\n params.set('download', String(query.download));\n }\n return this.client.request(\n 'GET',\n `/attachment/${encodeURIComponent(attachmentId)}/file`,\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type { CalendarEventSearchQuery, CalendarEvents } from '../types/generated.js';\n\nclass CalendarEventsResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List user calendar events.\n * Requires `calendar:find`.\n *\n * @example\n * const results = await workast.calendar.events.list({ from: '2025-10-29', to: '2025-11-05' });\n */\n list(query?: CalendarEventSearchQuery, options?: RequestOptions): Promise<CalendarEvents> {\n const params = new URLSearchParams(options?.query);\n if (query?.from) {\n params.set('from', query.from);\n }\n if (query?.to) {\n params.set('to', query.to);\n }\n if (query?.tzid) {\n params.set('tzid', query.tzid);\n }\n if (query?.attendees) {\n for (const value of query.attendees) {\n params.append('attendees', value);\n }\n }\n return this.client.request(\n 'GET',\n '/calendar/events',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n}\n\nexport class CalendarResource {\n readonly events: CalendarEventsResource;\n\n constructor(client: Workast) {\n this.events = new CalendarEventsResource(client);\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n CustomFieldCreate,\n CustomFieldPatch,\n CustomFieldSearchQuery,\n CustomField,\n} from '../types/generated.js';\n\nexport class Fields {\n constructor(private readonly client: Workast) {}\n\n /**\n * List custom fields in the team.\n * Requires one of: `field:find` (least privilege) or `field:manage`.\n *\n * @example\n * const fields = await workast.fields.list({ listId: 'list-id' });\n */\n list(query?: CustomFieldSearchQuery, options?: RequestOptions): Promise<CustomField[]> {\n const params = new URLSearchParams(options?.query);\n if (query?.listId) {\n params.set('listId', query.listId);\n }\n return this.client.request(\n 'GET',\n '/field',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Create a custom field.\n * Requires `field:manage`.\n *\n * @example\n * const field = await workast.fields.create({ name: 'Priority', type: 'text' });\n */\n create(body: CustomFieldCreate, options?: RequestOptions): Promise<CustomField> {\n return this.client.request('POST', '/field', body, options);\n }\n\n /**\n * Update a custom field.\n * Requires `field:manage`.\n *\n * @example\n * const field = await workast.fields.update('field-id', { name: 'Priority' });\n */\n update(fieldId: string, body: CustomFieldPatch, options?: RequestOptions): Promise<CustomField> {\n return this.client.request(\n 'PUT',\n `/field/${encodeURIComponent(fieldId)}`,\n body,\n options,\n );\n }\n\n /**\n * Remove a custom field.\n * Requires `field:manage`.\n *\n * @example\n * await workast.fields.del('field-id');\n */\n del(fieldId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/field/${encodeURIComponent(fieldId)}`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n ImportTemplate,\n List,\n ListCreate,\n ListEnumerate,\n ListParticipants,\n ListPatch,\n ListSearchQuery,\n SubListCreate,\n SubListPatch,\n SubListSearchQuery,\n SubList,\n User,\n} from '../types/generated.js';\n\nclass ListSublists {\n constructor(private readonly client: Workast) {}\n\n /**\n * List unique sublist names across lists.\n * Requires one of: `list:find` (least privilege) or `list:manage`.\n *\n * @example\n * const names = await workast.lists.sublists.list({ types: ['group'] });\n */\n list(query?: SubListSearchQuery, options?: RequestOptions): Promise<string[]> {\n const params = new URLSearchParams(options?.query);\n if (query?.onlyUserLists != null) {\n params.set('onlyUserLists', String(query.onlyUserLists));\n }\n if (query?.types) {\n for (const value of query.types) {\n params.append('types', value);\n }\n }\n return this.client.request(\n 'GET',\n '/list/sublists',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Create a sublist in a list.\n * Requires one of: `list:create` (least privilege) or `list:manage`.\n *\n * @example\n * const sublist = await workast.lists.sublists.create('list-id', { name: 'To-do' });\n */\n create(listId: string, body: SubListCreate, options?: RequestOptions): Promise<SubList> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/sublist`,\n body,\n options,\n );\n }\n\n /**\n * Update a sublist.\n * Requires one of: `list:update` (least privilege) or `list:manage`.\n *\n * @example\n * await workast.lists.sublists.update('list-id', 'sublist-id', { name: 'Done' });\n */\n update(\n listId: string,\n subListId: string,\n body: SubListPatch,\n options?: RequestOptions,\n ): Promise<void> {\n return this.client.request(\n 'PATCH',\n `/list/${encodeURIComponent(listId)}/sublist/${encodeURIComponent(subListId)}`,\n body,\n options,\n );\n }\n\n /**\n * Remove a sublist.\n * Requires one of: `list:update` (least privilege) or `list:manage`.\n *\n * @example\n * await workast.lists.sublists.del('list-id', 'sublist-id');\n */\n del(listId: string, subListId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/list/${encodeURIComponent(listId)}/sublist/${encodeURIComponent(subListId)}`,\n undefined,\n options,\n );\n }\n}\n\nclass ListParticipantsResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List participants on a list.\n * Requires one of: `list:participant:find` (least privilege) or `list:manage`.\n *\n * @example\n * const users = await workast.lists.participants.list('list-id');\n */\n list(listId: string, options?: RequestOptions): Promise<User[]> {\n return this.client.request(\n 'GET',\n `/list/${encodeURIComponent(listId)}/participant`,\n undefined,\n options,\n );\n }\n\n /**\n * Add participants to a list.\n * Requires one of: `list:participant:manage` (least privilege) or `list:manage`.\n *\n * @example\n * await workast.lists.participants.add('list-id', { users: ['user-id'] });\n */\n add(listId: string, body: ListParticipants, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/participant`,\n body,\n options,\n );\n }\n\n /**\n * Remove participants from a list.\n * Requires one of: `list:participant:manage` (least privilege) or `list:manage`.\n *\n * @example\n * await workast.lists.participants.del('list-id', { users: ['user-id'] });\n */\n del(listId: string, body: ListParticipants, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/list/${encodeURIComponent(listId)}/participant`,\n body,\n options,\n );\n }\n}\n\nclass ListFields {\n constructor(private readonly client: Workast) {}\n\n /**\n * Enable a custom field on a list.\n * Requires `field:manage`.\n *\n * @example\n * await workast.lists.fields.enable('list-id', 'field-id');\n */\n enable(listId: string, fieldId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/field/${encodeURIComponent(fieldId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * Disable a custom field on a list.\n * Requires `field:manage`.\n *\n * @example\n * await workast.lists.fields.disable('list-id', 'field-id');\n */\n disable(listId: string, fieldId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/list/${encodeURIComponent(listId)}/field/${encodeURIComponent(fieldId)}`,\n undefined,\n options,\n );\n }\n}\n\nexport class Lists {\n readonly sublists: ListSublists;\n readonly participants: ListParticipantsResource;\n readonly fields: ListFields;\n\n constructor(private readonly client: Workast) {\n this.sublists = new ListSublists(client);\n this.participants = new ListParticipantsResource(client);\n this.fields = new ListFields(client);\n }\n\n /**\n * Create a list.\n * Requires one of: `list:create` (least privilege) or `list:manage`.\n *\n * @example\n * const list = await workast.lists.create({ name: 'Engineering' });\n */\n create(body: ListCreate, options?: RequestOptions): Promise<List> {\n return this.client.request('POST', '/list', body, options);\n }\n\n /**\n * Get a list by ID.\n * Requires one of: `list:find` (least privilege) or `list:manage`.\n *\n * @example\n * const list = await workast.lists.retrieve('list-id');\n */\n retrieve(listId: string, options?: RequestOptions): Promise<List> {\n return this.client.request('GET', `/list/${encodeURIComponent(listId)}`, undefined, options);\n }\n\n /**\n * Update a list.\n * Requires one of: `list:update` (least privilege) or `list:manage`.\n *\n * @example\n * await workast.lists.update('list-id', { name: 'Engineering' });\n */\n update(listId: string, body: ListPatch, options?: RequestOptions): Promise<void> {\n return this.client.request('PATCH', `/list/${encodeURIComponent(listId)}`, body, options);\n }\n\n /**\n * Search lists.\n * Requires one of: `list:find` (least privilege) or `list:manage`.\n *\n * @example\n * const lists = await workast.lists.list({ type: 'group', limit: 10 });\n */\n list(query?: ListSearchQuery, options?: RequestOptions): Promise<ListEnumerate[]> {\n const params = new URLSearchParams(options?.query);\n if (query?.onlyUserLists != null) {\n params.set('onlyUserLists', String(query.onlyUserLists));\n }\n if (query?.statusIs) {\n params.set('statusIs', query.statusIs);\n }\n if (query?.includeTemplates != null) {\n params.set('includeTemplates', String(query.includeTemplates));\n }\n if (query?.type) {\n params.set('type', query.type);\n }\n if (query?.channelId) {\n params.set('channelId', query.channelId);\n }\n if (query?.participants) {\n for (const value of query.participants) {\n params.append('participants', value);\n }\n }\n if (query?.name) {\n params.set('name', query.name);\n }\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n if (query?.sort) {\n params.set('sort', query.sort);\n }\n return this.client.request(\n 'GET',\n '/list',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Get the personal list.\n * Requires one of: `list:find` (least privilege) or `list:manage`.\n *\n * @example\n * const list = await workast.lists.retrievePersonal();\n */\n retrievePersonal(options?: RequestOptions): Promise<List> {\n return this.client.request('GET', '/list/personal', undefined, options);\n }\n\n /**\n * Archive a list.\n * Requires `list:manage`.\n *\n * @example\n * await workast.lists.archive('list-id');\n */\n archive(listId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/archive`,\n undefined,\n options,\n );\n }\n\n /**\n * Unarchive a list.\n * Requires `list:manage`.\n *\n * @example\n * await workast.lists.unarchive('list-id');\n */\n unarchive(listId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/unarchive`,\n undefined,\n options,\n );\n }\n\n /**\n * Join a list.\n * Requires `list:join`.\n *\n * @example\n * await workast.lists.join('list-id');\n */\n join(listId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/participant/join`,\n undefined,\n options,\n );\n }\n\n /**\n * Request access to a private list.\n * Requires `list:join`.\n *\n * @example\n * await workast.lists.requestAccess('list-id');\n */\n requestAccess(listId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/participant/request`,\n undefined,\n options,\n );\n }\n\n /**\n * Import a template into a list.\n * Requires one of: `task:create` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.lists.importTemplate('list-id', 'template-id', { updateDueDates: 30 });\n */\n importTemplate(\n listId: string,\n templateId: string,\n body: ImportTemplate,\n options?: RequestOptions,\n ): Promise<void> {\n return this.client.request(\n 'POST',\n `/list/${encodeURIComponent(listId)}/import/${encodeURIComponent(templateId)}`,\n body,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n Meeting,\n MeetingCreate,\n MeetingDetail,\n MeetingNotetakerEnable,\n MeetingPatch,\n MeetingRecordingResource,\n MeetingSearchQuery,\n Meetings,\n} from '../types/generated.js';\n\nexport class MeetingsResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List meetings.\n * Requires one of: `meeting:find` (least privilege) or `meeting:manage`.\n *\n * @example\n * const results = await workast.meetings.list({ timeMin: '2026-01-01T00:00:00Z', maxResults: 15 });\n */\n list(query?: MeetingSearchQuery, options?: RequestOptions): Promise<Meetings> {\n const params = new URLSearchParams(options?.query);\n if (query?.timeMin) {\n params.set('timeMin', query.timeMin);\n }\n if (query?.timeMax) {\n params.set('timeMax', query.timeMax);\n }\n if (query?.maxResults != null) {\n params.set('maxResults', String(query.maxResults));\n }\n if (query?.pageToken) {\n params.set('pageToken', query.pageToken);\n }\n if (query?.attendees) {\n for (const value of query.attendees) {\n params.append('attendees', value);\n }\n }\n return this.client.request(\n 'GET',\n '/meeting',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Create a meeting from a calendar event, or create a new calendar event.\n * Requires `meeting:manage`.\n *\n * @example\n * const meeting = await workast.meetings.createFromEvent({\n * listId: 'list-id',\n * summary: 'Standup',\n * eventId: 'evt-1',\n * });\n */\n createFromEvent(body: MeetingCreate, options?: RequestOptions): Promise<Meeting> {\n return this.client.request('POST', '/meeting', body, options);\n }\n\n /**\n * Get a meeting by ID.\n * Requires one of: `meeting:find` (least privilege) or `meeting:manage`.\n *\n * @example\n * const meeting = await workast.meetings.retrieve('meeting-id');\n */\n retrieve(meetingId: string, options?: RequestOptions): Promise<MeetingDetail> {\n return this.client.request('GET', `/meeting/${encodeURIComponent(meetingId)}`, undefined, options);\n }\n\n /**\n * Update meeting notes.\n * Requires `meeting:manage`.\n *\n * @example\n * const meeting = await workast.meetings.update('meeting-id', { notes: 'Ship v3' });\n */\n update(meetingId: string, body: MeetingPatch, options?: RequestOptions): Promise<MeetingDetail> {\n return this.client.request('PATCH', `/meeting/${encodeURIComponent(meetingId)}`, body, options);\n }\n\n /**\n * Get meeting recording assets and transcript.\n * Requires one of: `meeting:find` (least privilege) or `meeting:manage`.\n *\n * @example\n * const recording = await workast.meetings.retrieveRecording('meeting-id');\n */\n retrieveRecording(meetingId: string, options?: RequestOptions): Promise<MeetingRecordingResource> {\n return this.client.request(\n 'GET',\n `/meeting/${encodeURIComponent(meetingId)}/recording`,\n undefined,\n options,\n );\n }\n\n /**\n * Enable the notetaker for a meeting.\n * Requires `meeting:manage`.\n *\n * @example\n * const meeting = await workast.meetings.enableNotetaker('meeting-id', {\n * joinUrl: 'https://meet.example.com/abc',\n * });\n */\n enableNotetaker(\n meetingId: string,\n body?: MeetingNotetakerEnable,\n options?: RequestOptions,\n ): Promise<Meeting> {\n return this.client.request(\n 'POST',\n `/meeting/${encodeURIComponent(meetingId)}/notetaker`,\n body,\n options,\n );\n }\n\n /**\n * Disable or remove the notetaker from a meeting.\n * Requires `meeting:manage`.\n *\n * @example\n * const meeting = await workast.meetings.disableNotetaker('meeting-id');\n */\n disableNotetaker(meetingId: string, options?: RequestOptions): Promise<Meeting> {\n return this.client.request(\n 'DELETE',\n `/meeting/${encodeURIComponent(meetingId)}/notetaker`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type { Note, NoteDetail, NotePatch, NoteSearchQuery, Notes } from '../types/generated.js';\n\nexport class NotesResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List notes.\n * Requires one of: `note:find` (least privilege) or `note:manage`.\n *\n * @example\n * const results = await workast.notes.list({ title: 'Spec', limit: 10 });\n */\n list(query?: NoteSearchQuery, options?: RequestOptions): Promise<Notes> {\n const params = new URLSearchParams(options?.query);\n if (query?.showDeleted != null) {\n params.set('showDeleted', String(query.showDeleted));\n }\n if (query?.lists) {\n for (const value of query.lists) {\n params.append('lists', value);\n }\n }\n if (query?.title) {\n params.set('title', query.title);\n }\n if (query?.owners) {\n for (const value of query.owners) {\n params.append('owners', value);\n }\n }\n if (query?.sort) {\n params.set('sort', query.sort);\n }\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n return this.client.request(\n 'GET',\n '/note',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Get a note by ID.\n * Requires one of: `note:find` (least privilege) or `note:manage`.\n *\n * @example\n * const note = await workast.notes.retrieve('note-id');\n */\n retrieve(noteId: string, options?: RequestOptions): Promise<NoteDetail> {\n return this.client.request('GET', `/note/${encodeURIComponent(noteId)}`, undefined, options);\n }\n\n /**\n * Update a note.\n * Requires one of: `note:update` (least privilege) or `note:manage`.\n *\n * @example\n * const note = await workast.notes.update('note-id', { title: 'Spec', version: 1, body: '<p>Hello</p>' });\n */\n update(noteId: string, body: NotePatch, options?: RequestOptions): Promise<Note> {\n return this.client.request('PATCH', `/note/${encodeURIComponent(noteId)}`, body, options);\n }\n\n /**\n * Delete a note.\n * Requires `note:manage`.\n *\n * @example\n * await workast.notes.del('note-id');\n */\n del(noteId: string, options?: RequestOptions): Promise<void> {\n return this.client.request('DELETE', `/note/${encodeURIComponent(noteId)}`, undefined, options);\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n NotificationSearchQuery,\n Notifications,\n} from '../types/generated.js';\n\nexport class NotificationsResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List notifications for the logged-in user.\n * Requires one of: `notification:find` (least privilege) or `notification:manage`.\n *\n * @example\n * const results = await workast.notifications.list({ read: false, limit: 10 });\n */\n list(query?: NotificationSearchQuery, options?: RequestOptions): Promise<Notifications> {\n const params = new URLSearchParams(options?.query);\n if (query?.read != null) {\n params.set('read', String(query.read));\n }\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n if (query?.sort) {\n params.set('sort', query.sort);\n }\n return this.client.request(\n 'GET',\n '/notification',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Mark a notification as read.\n * Requires `notification:manage`.\n *\n * @example\n * await workast.notifications.markRead('notification-id');\n */\n markRead(notificationId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/notification/${encodeURIComponent(notificationId)}/read`,\n undefined,\n options,\n );\n }\n\n /**\n * Mark a notification as unread.\n * Requires `notification:manage`.\n *\n * @example\n * await workast.notifications.markUnread('notification-id');\n */\n markUnread(notificationId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/notification/${encodeURIComponent(notificationId)}/unread`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type { ReactionCreate, ReactionReadOnly } from '../types/generated.js';\n\nexport class Reactions {\n constructor(private readonly client: Workast) {}\n\n /**\n * Add a reaction to an activity.\n * Requires one of: `activity:react` (least privilege) or `task:manage`.\n *\n * @example\n * const reaction = await workast.reactions.add('activity-id', { emoji: ':+1:' });\n */\n add(\n activityId: string,\n body: ReactionCreate,\n options?: RequestOptions,\n ): Promise<ReactionReadOnly> {\n return this.client.request(\n 'POST',\n `/activity/${encodeURIComponent(activityId)}/reaction`,\n body,\n options,\n );\n }\n\n /**\n * Remove a reaction from an activity.\n * Requires one of: `activity:react` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.reactions.del('activity-id', 'reaction-id');\n */\n del(activityId: string, reactionId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/activity/${encodeURIComponent(activityId)}/reaction/${encodeURIComponent(reactionId)}`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n Search,\n SearchCreate,\n SearchDetail,\n SearchFindQuery,\n FindHomeSearchesQuery,\n SearchPatch,\n SearchReminderSet,\n SearchRetrieveQuery,\n SearchShare,\n Searches,\n} from '../types/generated.js';\n\nexport class SearchesResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List searches for the logged-in user.\n * Requires one of: `search:find` (least privilege) or `search:manage`.\n *\n * @example\n * const results = await workast.searches.list({ limit: 10 });\n */\n list(query?: SearchFindQuery, options?: RequestOptions): Promise<Searches> {\n const params = new URLSearchParams(options?.query);\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n if (query?.sort) {\n params.set('sort', query.sort);\n }\n return this.client.request(\n 'GET',\n '/search',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Create a search.\n * Requires `search:manage`.\n *\n * @example\n * const search = await workast.searches.create({\n * name: 'My tasks',\n * payload: { predicates: [{ type: 'status', attribute: 'status', comparison: 'eq', value: 'pending' }] },\n * });\n */\n create(body: SearchCreate, options?: RequestOptions): Promise<Search> {\n return this.client.request('POST', '/search', body, options);\n }\n\n /**\n * Get a search by ID.\n * Requires one of: `search:find` (least privilege) or `search:manage`.\n *\n * @example\n * const search = await workast.searches.retrieve('search-id');\n */\n retrieve(\n searchId: string,\n query?: SearchRetrieveQuery,\n options?: RequestOptions,\n ): Promise<SearchDetail> {\n const params = new URLSearchParams(options?.query);\n if (query?.getTasks != null) {\n params.set('getTasks', String(query.getTasks));\n }\n if (query?.expand) {\n for (const value of query.expand) {\n params.append('expand', value);\n }\n }\n return this.client.request(\n 'GET',\n `/search/${encodeURIComponent(searchId)}`,\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Update a search.\n * Requires `search:manage`.\n *\n * @example\n * const search = await workast.searches.update('search-id', { name: 'Updated' });\n */\n update(searchId: string, body: SearchPatch, options?: RequestOptions): Promise<Search> {\n return this.client.request(\n 'PATCH',\n `/search/${encodeURIComponent(searchId)}`,\n body,\n options,\n );\n }\n\n /**\n * Delete a search.\n * Requires `search:manage`.\n *\n * @example\n * await workast.searches.del('search-id');\n */\n del(searchId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/search/${encodeURIComponent(searchId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * List searches pinned on the home screen.\n * Requires one of: `home:search:find` (least privilege) or `home:search:manage`.\n *\n * @example\n * const results = await workast.searches.listHome({ limit: 10 });\n */\n listHome(query?: FindHomeSearchesQuery, options?: RequestOptions): Promise<Searches> {\n const params = new URLSearchParams(options?.query);\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n return this.client.request(\n 'GET',\n '/search/home',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Add a search to the home screen.\n * Requires `home:search:manage`.\n *\n * @example\n * await workast.searches.addHome('search-id');\n */\n addHome(searchId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/search/${encodeURIComponent(searchId)}/home`,\n undefined,\n options,\n );\n }\n\n /**\n * Remove a search from the home screen.\n * Requires `home:search:manage`.\n *\n * @example\n * await workast.searches.removeHome('search-id');\n */\n removeHome(searchId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/search/${encodeURIComponent(searchId)}/home`,\n undefined,\n options,\n );\n }\n\n /**\n * Share a search with users.\n * Requires `search:manage`.\n *\n * @example\n * await workast.searches.share('search-id', { users: ['user-id'] });\n */\n share(searchId: string, body: SearchShare, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/search/${encodeURIComponent(searchId)}/user`,\n body,\n options,\n );\n }\n\n /**\n * Unshare a search from users.\n * Requires `search:manage`.\n *\n * @example\n * await workast.searches.unshare('search-id', { users: ['user-id'] });\n */\n unshare(searchId: string, body: SearchShare, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/search/${encodeURIComponent(searchId)}/user`,\n body,\n options,\n );\n }\n\n /**\n * Set a reminder on a search.\n * Requires `search:manage`.\n *\n * @example\n * await workast.searches.setReminder('search-id', {\n * repeat: { freq: 'weekly', byhour: 9, byminute: 0 },\n * });\n */\n setReminder(searchId: string, body: SearchReminderSet, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'PUT',\n `/search/${encodeURIComponent(searchId)}/reminder`,\n body,\n options,\n );\n }\n\n /**\n * Delete a reminder from a search.\n * Requires `search:manage`.\n *\n * @example\n * await workast.searches.delReminder('search-id');\n */\n delReminder(searchId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/search/${encodeURIComponent(searchId)}/reminder`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type { Tag, TagCreate, TagPatch, TagSearchQuery } from '../types/generated.js';\n\nexport class Tags {\n constructor(private readonly client: Workast) {}\n\n /**\n * List tags in the team.\n * Requires one of: `tag:find` (least privilege) or `tag:manage`.\n *\n * @example\n * const tags = await workast.tags.list({ listId: 'list-id' });\n */\n list(query?: TagSearchQuery, options?: RequestOptions): Promise<Tag[]> {\n const params = new URLSearchParams(options?.query);\n if (query?.listId) {\n params.set('listId', query.listId);\n }\n if (query?.name) {\n params.set('name', query.name);\n }\n return this.client.request(\n 'GET',\n '/tag',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Create a tag.\n * Requires `tag:manage`.\n *\n * @example\n * const tag = await workast.tags.create({ name: 'Priority', color: '#ff0000' });\n */\n create(body: TagCreate, options?: RequestOptions): Promise<Tag> {\n return this.client.request('POST', '/tag', body, options);\n }\n\n /**\n * Update a tag.\n * Requires `tag:manage`.\n *\n * @example\n * const tag = await workast.tags.update('tag-id', { name: 'Priority' });\n */\n update(tagId: string, body: TagPatch, options?: RequestOptions): Promise<Tag> {\n return this.client.request(\n 'PATCH',\n `/tag/${encodeURIComponent(tagId)}`,\n body,\n options,\n );\n }\n\n /**\n * Delete a tag.\n * Requires `tag:manage`.\n *\n * @example\n * await workast.tags.del('tag-id');\n */\n del(tagId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/tag/${encodeURIComponent(tagId)}`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n ActivityBody,\n Attachment,\n CommentActivity,\n ConvertToSubtask,\n HomeTasks,\n NewAttachment,\n SearchResults,\n SubtaskCreate,\n Task,\n TaskActivities,\n TaskActivityBody,\n TaskActivitySearchQuery,\n TaskAssignment,\n TaskBulkCreate,\n TaskBulkUpdate,\n TaskBulkUpdateResult,\n TaskCreate,\n TaskFollow,\n TaskMove,\n TaskPatch,\n TaskSearch,\n TaskTag,\n} from '../types/generated.js';\n\nclass TaskSubtasks {\n constructor(private readonly client: Workast) {}\n\n /**\n * Create a subtask on a task.\n * Requires one of: `task:create` (least privilege) or `task:manage`.\n *\n * @example\n * const subtask = await workast.tasks.subtasks.create('task-id', { text: 'Write tests' });\n */\n create(taskId: string, body: SubtaskCreate, options?: RequestOptions): Promise<Task> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/subtask`, body, options);\n }\n}\n\nclass TaskDependencies {\n constructor(private readonly client: Workast) {}\n\n /**\n * Add a dependency to a task.\n * Requires one of: `task:manage:dependency` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.dependencies.add('task-id', 'dependency-id');\n */\n add(taskId: string, dependencyId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/task/${encodeURIComponent(taskId)}/dependency/${encodeURIComponent(dependencyId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * Remove a dependency from a task.\n * Requires one of: `task:manage:dependency` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.dependencies.del('task-id', 'dependency-id');\n */\n del(taskId: string, dependencyId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/task/${encodeURIComponent(taskId)}/dependency/${encodeURIComponent(dependencyId)}`,\n undefined,\n options,\n );\n }\n}\n\nclass TaskAttachments {\n constructor(private readonly client: Workast) {}\n\n /**\n * Create an attachment on a task.\n * Requires one of: `task:manage:attachment` (least privilege) or `task:manage`.\n *\n * @example\n * const attachment = await workast.tasks.attachments.create('task-id', { author: 'user-id' });\n */\n create(taskId: string, body: NewAttachment, options?: RequestOptions): Promise<Attachment> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/attachment`, body, options);\n }\n\n /**\n * Update a task attachment.\n * Requires one of: `task:manage:attachment` (least privilege) or `task:manage`.\n *\n * @example\n * const attachment = await workast.tasks.attachments.update('task-id', 'attachment-id', { date: '2026-01-01' });\n */\n update(\n taskId: string,\n attachmentId: string,\n body: NewAttachment,\n options?: RequestOptions,\n ): Promise<Attachment> {\n return this.client.request(\n 'PATCH',\n `/task/${encodeURIComponent(taskId)}/attachment/${encodeURIComponent(attachmentId)}`,\n body,\n options,\n );\n }\n\n /**\n * Delete a task attachment.\n * Requires one of: `task:manage:attachment` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.attachments.del('task-id', 'attachment-id');\n */\n del(taskId: string, attachmentId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/task/${encodeURIComponent(taskId)}/attachment/${encodeURIComponent(attachmentId)}`,\n undefined,\n options,\n );\n }\n}\n\nclass TaskActivitiesResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List activities on a task.\n * Requires one of: `task:activity:find` (least privilege) or `task:manage`.\n *\n * @example\n * const results = await workast.tasks.activities.list('task-id', { type: ['comment'], limit: 10 });\n */\n list(\n taskId: string,\n query?: TaskActivitySearchQuery,\n options?: RequestOptions,\n ): Promise<TaskActivities> {\n const params = new URLSearchParams(options?.query);\n if (query?.type) {\n for (const value of query.type) {\n params.append('type', value);\n }\n }\n if (query?.actorTypes) {\n for (const value of query.actorTypes) {\n params.append('actorTypes', value);\n }\n }\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n if (query?.sort) {\n params.set('sort', query.sort);\n }\n return this.client.request(\n 'GET',\n `/task/${encodeURIComponent(taskId)}/activity`,\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Create a comment activity on a task.\n * Requires one of: `task:manage:activity` (least privilege) or `task:manage`.\n *\n * @example\n * const activity = await workast.tasks.activities.create('task-id', { type: 'comment', value: 'Looks good' });\n */\n create(taskId: string, body: TaskActivityBody, options?: RequestOptions): Promise<CommentActivity> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/activity`, body, options);\n }\n\n /**\n * Update a task activity.\n * Requires one of: `task:manage:activity` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.activities.update('task-id', 'activity-id', { value: 'Updated comment' });\n */\n update(\n taskId: string,\n activityId: string,\n body: ActivityBody,\n options?: RequestOptions,\n ): Promise<void> {\n return this.client.request(\n 'PATCH',\n `/task/${encodeURIComponent(taskId)}/activity/${encodeURIComponent(activityId)}`,\n body,\n options,\n );\n }\n\n /**\n * Delete a task activity.\n * Requires one of: `task:manage:activity` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.activities.del('task-id', 'activity-id');\n */\n del(taskId: string, activityId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/task/${encodeURIComponent(taskId)}/activity/${encodeURIComponent(activityId)}`,\n undefined,\n options,\n );\n }\n}\n\nexport class Tasks {\n readonly subtasks: TaskSubtasks;\n readonly dependencies: TaskDependencies;\n readonly attachments: TaskAttachments;\n readonly activities: TaskActivitiesResource;\n\n constructor(private readonly client: Workast) {\n this.subtasks = new TaskSubtasks(client);\n this.dependencies = new TaskDependencies(client);\n this.attachments = new TaskAttachments(client);\n this.activities = new TaskActivitiesResource(client);\n }\n\n /**\n * Create a task in a list.\n * Requires one of: `task:create` (least privilege) or `task:manage`.\n *\n * @example\n * const task = await workast.tasks.create('list-id', { text: 'Ship v3' });\n */\n create(listId: string, body: TaskCreate, options?: RequestOptions): Promise<Task> {\n return this.client.request('POST', `/list/${encodeURIComponent(listId)}/task`, body, options);\n }\n\n /**\n * Create a task in the personal list.\n * Requires one of: `task:create` (least privilege) or `task:manage`.\n *\n * @example\n * const task = await workast.tasks.createPersonal({ text: 'Ship v3' });\n */\n createPersonal(body: TaskCreate, options?: RequestOptions): Promise<Task> {\n return this.client.request('POST', '/list/personal/task', body, options);\n }\n\n /**\n * Get a task by ID.\n * Requires one of: `task:find` (least privilege) or `task:manage`.\n *\n * @example\n * const task = await workast.tasks.retrieve('task-id');\n */\n retrieve(taskId: string, options?: RequestOptions): Promise<Task> {\n return this.client.request('GET', `/task/${encodeURIComponent(taskId)}`, undefined, options);\n }\n\n /**\n * Get a task by short ID.\n * Requires one of: `task:find` (least privilege) or `task:manage`.\n *\n * @example\n * const task = await workast.tasks.retrieveByShortId('t4k1');\n */\n retrieveByShortId(shortId: string, options?: RequestOptions): Promise<Task> {\n return this.client.request('GET', `/task/shortid/${encodeURIComponent(shortId)}`, undefined, options);\n }\n\n /**\n * Update a task.\n * Requires `task:manage`.\n *\n * @example\n * await workast.tasks.update('task-id', { text: 'Ship v3' });\n */\n update(taskId: string, body: TaskPatch, options?: RequestOptions): Promise<void> {\n return this.client.request('PATCH', `/task/${encodeURIComponent(taskId)}`, body, options);\n }\n\n /**\n * Delete a task.\n * Requires one of: `task:manage:remove` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.del('task-id');\n */\n del(taskId: string, options?: RequestOptions): Promise<void> {\n return this.client.request('DELETE', `/task/${encodeURIComponent(taskId)}`, undefined, options);\n }\n\n /**\n * Search tasks.\n * Requires one of: `task:find` (least privilege) or `task:manage`.\n *\n * @example\n * const results = await workast.tasks.list({\n * predicates: [{ type: 'status', attribute: 'status', comparison: 'eq', value: 'pending' }],\n * });\n */\n list(body: TaskSearch, options?: RequestOptions): Promise<SearchResults> {\n return this.client.request('POST', '/task/search', body, options);\n }\n\n /**\n * Complete a task.\n * Requires one of: `task:manage:status` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.complete('task-id');\n */\n complete(taskId: string, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/done`, undefined, options);\n }\n\n /**\n * Uncomplete a task.\n * Requires one of: `task:manage:status` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.uncomplete('task-id');\n */\n uncomplete(taskId: string, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/undone`, undefined, options);\n }\n\n /**\n * Assign users to a task.\n * Requires one of: `task:manage:assignee` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.assign('task-id', { users: ['user-id'] });\n */\n assign(taskId: string, body: TaskAssignment, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/assigned`, body, options);\n }\n\n /**\n * Unassign users from a task.\n * Requires one of: `task:manage:assignee` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.unassign('task-id', { users: ['user-id'] });\n */\n unassign(taskId: string, body: TaskAssignment, options?: RequestOptions): Promise<void> {\n return this.client.request('DELETE', `/task/${encodeURIComponent(taskId)}/assigned`, body, options);\n }\n\n /**\n * Add followers to a task.\n * Requires `user:task:follow`.\n *\n * @example\n * await workast.tasks.follow('task-id', { users: ['user-id'] });\n */\n follow(taskId: string, body: TaskFollow, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/follow`, body, options);\n }\n\n /**\n * Remove followers from a task.\n * Requires `user:task:follow`.\n *\n * @example\n * await workast.tasks.unfollow('task-id', { users: ['user-id'] });\n */\n unfollow(taskId: string, body: TaskFollow, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/unfollow`, body, options);\n }\n\n /**\n * Move tasks to another list.\n * Requires one of: `task:manage:move` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.move('list-id', { tasks: ['task-id'], target: 'other-list-id' });\n */\n move(listId: string, body: TaskMove, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/list/${encodeURIComponent(listId)}/move`, body, options);\n }\n\n /**\n * Create many tasks in a list.\n * Requires one of: `task:create` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.createMany('list-id', [{ text: 'One' }, { text: 'Two' }]);\n */\n createMany(listId: string, body: TaskBulkCreate[], options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/list/${encodeURIComponent(listId)}/task/bulk`, body, options);\n }\n\n /**\n * Update many tasks.\n * Requires `task:manage`.\n *\n * @example\n * const result = await workast.tasks.updateMany({ tasks: ['task-id'], status: 'done' });\n */\n updateMany(body: TaskBulkUpdate, options?: RequestOptions): Promise<TaskBulkUpdateResult> {\n return this.client.request('PUT', '/task', body, options);\n }\n\n /**\n * List home (favourite) tasks.\n * Requires one of: `home:task:find` (least privilege) or `home:task:manage`.\n *\n * @example\n * const home = await workast.tasks.listHome();\n */\n listHome(options?: RequestOptions): Promise<HomeTasks> {\n return this.client.request('GET', '/task/home', undefined, options);\n }\n\n /**\n * Add a task to the home screen.\n * Requires `home:task:manage`.\n *\n * @example\n * await workast.tasks.addHome('task-id');\n */\n addHome(taskId: string, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/home`, undefined, options);\n }\n\n /**\n * Remove a task from the home screen.\n * Requires `home:task:manage`.\n *\n * @example\n * await workast.tasks.removeHome('task-id');\n */\n removeHome(taskId: string, options?: RequestOptions): Promise<void> {\n return this.client.request('DELETE', `/task/${encodeURIComponent(taskId)}/home`, undefined, options);\n }\n\n /**\n * Add tags to a task.\n * Requires one of: `task:manage:tag` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.addTag('task-id', { tags: ['tag-id'] });\n */\n addTag(taskId: string, body: TaskTag, options?: RequestOptions): Promise<void> {\n return this.client.request('POST', `/task/${encodeURIComponent(taskId)}/tag`, body, options);\n }\n\n /**\n * Remove tags from a task.\n * Requires one of: `task:manage:tag` (least privilege) or `task:manage`.\n *\n * @example\n * await workast.tasks.removeTag('task-id', { tags: ['tag-id'] });\n */\n removeTag(taskId: string, body: TaskTag, options?: RequestOptions): Promise<void> {\n return this.client.request('DELETE', `/task/${encodeURIComponent(taskId)}/tag`, body, options);\n }\n\n /**\n * Convert a task into a subtask of another task.\n * Requires `task:manage`.\n *\n * @example\n * await workast.tasks.convertToSubtask('task-id', { parentTaskId: 'parent-id' });\n */\n convertToSubtask(taskId: string, body: ConvertToSubtask, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'POST',\n `/task/${encodeURIComponent(taskId)}/convert-to-subtask`,\n body,\n options,\n );\n }\n\n /**\n * Convert a subtask into a standalone task.\n * Requires `task:manage`.\n *\n * @example\n * const task = await workast.tasks.convertToTask('task-id');\n */\n convertToTask(taskId: string, options?: RequestOptions): Promise<Task> {\n return this.client.request(\n 'POST',\n `/task/${encodeURIComponent(taskId)}/convert-to-task`,\n undefined,\n options,\n );\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type { TokenDetails } from '../types/generated.js';\n\nexport class Tokens {\n constructor(private readonly client: Workast) {}\n\n /**\n * Get the token details.\n * Requires any authenticated token (no specific scope).\n *\n * @example\n * const token = await workast.tokens.retrieve();\n */\n retrieve(options?: RequestOptions): Promise<TokenDetails> {\n return this.client.request('GET', '/me', undefined, options);\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n UserByEmailQuery,\n UserDetail,\n UserDetailWithTeam,\n UserInvite,\n UserResource,\n UserSearchQuery,\n} from '../types/generated.js';\n\nfunction appendValues(\n params: URLSearchParams,\n key: string,\n value: string | string[] | undefined,\n): void {\n if (value == null) {\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) {\n params.append(key, item);\n }\n return;\n }\n params.set(key, value);\n}\n\nexport class Users {\n constructor(private readonly client: Workast) {}\n\n /**\n * Get the logged-in user.\n * Requires any authenticated token (no specific scope).\n *\n * @example\n * const me = await workast.users.me();\n */\n me(options?: RequestOptions): Promise<UserResource> {\n return this.client.request('GET', '/user/me', undefined, options);\n }\n\n /**\n * List users in the team.\n * Requires one of: `user:find` (least privilege) or `user:manage`.\n *\n * @example\n * const users = await workast.users.list({ name: 'Ada', limit: 10 });\n */\n list(query?: UserSearchQuery, options?: RequestOptions): Promise<UserDetail[]> {\n const params = new URLSearchParams(options?.query);\n if (query?.name) {\n params.set('name', query.name);\n }\n if (query?.email) {\n params.set('email', query.email);\n }\n appendValues(params, 'slackUserId', query?.slackUserId);\n appendValues(params, 'webexUserId', query?.webexUserId);\n if (query?.random != null) {\n params.set('random', String(query.random));\n }\n appendValues(params, 'status', query?.status);\n appendValues(params, 'role', query?.role);\n if (query?.sort) {\n params.set('sort', query.sort);\n }\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.offset != null) {\n params.set('offset', String(query.offset));\n }\n return this.client.request(\n 'GET',\n '/user',\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Get a user by ID.\n * Requires one of: `user:find` (least privilege) or `user:manage`.\n *\n * @example\n * const user = await workast.users.retrieve('user-id');\n */\n retrieve(userId: string, options?: RequestOptions): Promise<UserDetail> {\n return this.client.request('GET', `/user/${encodeURIComponent(userId)}`, undefined, options);\n }\n\n /**\n * Get a user by email.\n * Requires one of: `user:find` (least privilege) or `user:manage`.\n *\n * @example\n * const user = await workast.users.retrieveByEmail('ada@example.com');\n */\n retrieveByEmail(\n email: string,\n query?: UserByEmailQuery,\n options?: RequestOptions,\n ): Promise<UserDetailWithTeam> {\n const params = new URLSearchParams(options?.query);\n if (query?.platform) {\n params.set('platform', query.platform);\n }\n return this.client.request(\n 'GET',\n `/user/email/${encodeURIComponent(email)}`,\n undefined,\n params.toString() ? { ...options, query: params } : options,\n );\n }\n\n /**\n * Invite a user to the team.\n * Requires one of: `user:invite` (least privilege) or `user:manage`.\n *\n * @example\n * const user = await workast.users.invite({ name: 'Ada', email: 'ada@example.com', role: 'member' });\n */\n invite(body: UserInvite, options?: RequestOptions): Promise<UserDetail> {\n return this.client.request('POST', '/user/invite', body, options);\n }\n}\n","import type { Workast } from '../client.js';\nimport type { RequestOptions } from '../request.js';\nimport type {\n Workflow,\n WorkflowCreate,\n WorkflowDetail,\n WorkflowPatch,\n WorkflowSearchQuery,\n Workflows,\n} from '../types/generated.js';\n\nfunction pagingOptions(query?: WorkflowSearchQuery, options?: RequestOptions): RequestOptions | undefined {\n const params = new URLSearchParams(options?.query);\n if (query?.limit != null) {\n params.set('limit', String(query.limit));\n }\n if (query?.skip != null) {\n params.set('skip', String(query.skip));\n }\n return params.toString() ? { ...options, query: params } : options;\n}\n\nexport class WorkflowsResource {\n constructor(private readonly client: Workast) {}\n\n /**\n * List workflows created by the logged-in user.\n * Requires one of: `workflow:find` (least privilege) or `workflow:manage`.\n *\n * @example\n * const results = await workast.workflows.list({ limit: 10, skip: 0 });\n */\n list(query?: WorkflowSearchQuery, options?: RequestOptions): Promise<Workflows> {\n return this.client.request('GET', '/workflow', undefined, pagingOptions(query, options));\n }\n\n /**\n * Create a workflow.\n * Requires `workflow:manage`.\n *\n * @example\n * const workflow = await workast.workflows.create({\n * type: 'event',\n * trigger: 'task_created',\n * prompt: 'Ship v3',\n * lists: ['list-id'],\n * });\n */\n create(body: WorkflowCreate, options?: RequestOptions): Promise<Workflow> {\n return this.client.request('POST', '/workflow', body, options);\n }\n\n /**\n * Get a workflow by ID.\n * Requires one of: `workflow:find` (least privilege) or `workflow:manage`.\n *\n * @example\n * const workflow = await workast.workflows.retrieve('workflow-id');\n */\n retrieve(workflowId: string, options?: RequestOptions): Promise<WorkflowDetail> {\n return this.client.request(\n 'GET',\n `/workflow/${encodeURIComponent(workflowId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * Update a workflow.\n * Requires `workflow:manage`.\n *\n * @example\n * await workast.workflows.update('workflow-id', { prompt: 'Ship v3' });\n */\n update(workflowId: string, body: WorkflowPatch, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'PATCH',\n `/workflow/${encodeURIComponent(workflowId)}`,\n body,\n options,\n );\n }\n\n /**\n * Delete a workflow.\n * Requires `workflow:manage`.\n *\n * @example\n * await workast.workflows.del('workflow-id');\n */\n del(workflowId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'DELETE',\n `/workflow/${encodeURIComponent(workflowId)}`,\n undefined,\n options,\n );\n }\n\n /**\n * Activate a workflow.\n * Requires `workflow:manage`.\n *\n * @example\n * await workast.workflows.activate('workflow-id');\n */\n activate(workflowId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'PATCH',\n `/workflow/${encodeURIComponent(workflowId)}/activate`,\n undefined,\n options,\n );\n }\n\n /**\n * Deactivate a workflow.\n * Requires `workflow:manage`.\n *\n * @example\n * await workast.workflows.deactivate('workflow-id');\n */\n deactivate(workflowId: string, options?: RequestOptions): Promise<void> {\n return this.client.request(\n 'PATCH',\n `/workflow/${encodeURIComponent(workflowId)}/deactivate`,\n undefined,\n options,\n );\n }\n}\n","import { request, withoutAuthorization, type RequestOptions } from './request.js';\nimport { Attachments } from './resources/attachments.js';\nimport { CalendarResource } from './resources/calendar.js';\nimport { Fields } from './resources/fields.js';\nimport { Lists } from './resources/lists.js';\nimport { MeetingsResource } from './resources/meetings.js';\nimport { NotesResource } from './resources/notes.js';\nimport { NotificationsResource } from './resources/notifications.js';\nimport { Reactions } from './resources/reactions.js';\nimport { SearchesResource } from './resources/searches.js';\nimport { Tags } from './resources/tags.js';\nimport { Tasks } from './resources/tasks.js';\nimport { Tokens } from './resources/tokens.js';\nimport { Users } from './resources/users.js';\nimport { WorkflowsResource } from './resources/workflows.js';\n\nconst DEFAULT_BASE_URL = 'https://api.workast.com';\n\ntype WorkastConfig = {\n baseUrl?: string;\n headers?: Record<string, string>;\n fetch?: typeof fetch;\n};\n\nexport type WorkastAuth =\n | { apiKey: string }\n | { token: string }\n | { getToken: () => string | Promise<string> };\n\nexport type WorkastOptions = WorkastAuth & WorkastConfig;\n\nexport class Workast {\n readonly attachments: Attachments;\n readonly calendar: CalendarResource;\n readonly fields: Fields;\n readonly lists: Lists;\n readonly meetings: MeetingsResource;\n readonly notes: NotesResource;\n readonly notifications: NotificationsResource;\n readonly reactions: Reactions;\n readonly searches: SearchesResource;\n readonly tags: Tags;\n readonly tasks: Tasks;\n readonly tokens: Tokens;\n readonly users: Users;\n readonly workflows: WorkflowsResource;\n\n private readonly apiKey?: string;\n private readonly token?: string;\n private readonly getTokenFn?: () => string | Promise<string>;\n private readonly baseUrl: string;\n private readonly fetchFn: typeof fetch;\n private headers: Record<string, string>;\n\n constructor(options: string | WorkastOptions) {\n const opts: WorkastOptions = typeof options === 'string' ? { apiKey: options } : options;\n const passedApiKey = typeof options === 'string' || 'apiKey' in opts;\n\n if (typeof window !== 'undefined' && passedApiKey) {\n throw new Error('apiKey cannot be used in a browser. Use token or getToken instead.');\n }\n\n if ('getToken' in opts) {\n this.getTokenFn = opts.getToken;\n } else if ('token' in opts) {\n this.token = opts.token;\n } else if ('apiKey' in opts) {\n this.apiKey = opts.apiKey;\n } else {\n throw new Error('Missing authentication. Provide apiKey, token, or getToken.');\n }\n\n this.baseUrl = opts.baseUrl ?? DEFAULT_BASE_URL;\n this.fetchFn = opts.fetch ?? globalThis.fetch.bind(globalThis);\n this.headers = withoutAuthorization(opts.headers);\n this.attachments = new Attachments(this);\n this.calendar = new CalendarResource(this);\n this.fields = new Fields(this);\n this.lists = new Lists(this);\n this.meetings = new MeetingsResource(this);\n this.notes = new NotesResource(this);\n this.notifications = new NotificationsResource(this);\n this.reactions = new Reactions(this);\n this.searches = new SearchesResource(this);\n this.tags = new Tags(this);\n this.tasks = new Tasks(this);\n this.tokens = new Tokens(this);\n this.users = new Users(this);\n this.workflows = new WorkflowsResource(this);\n }\n\n withHeaders(headers: Record<string, string>): Workast {\n return new Workast({\n ...this.authOptions(),\n baseUrl: this.baseUrl,\n fetch: this.fetchFn,\n headers: { ...this.headers, ...withoutAuthorization(headers) },\n });\n }\n\n setHeaders(headers: Record<string, string>): void {\n this.headers = { ...this.headers, ...withoutAuthorization(headers) };\n }\n\n request<T>(method: string, path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return request(this.context(), method, path, body, options);\n }\n\n private context() {\n return {\n baseUrl: this.baseUrl,\n headers: this.headers,\n fetch: this.fetchFn,\n resolveAuth: () => this.resolveAuth(),\n };\n }\n\n private authOptions(): WorkastAuth {\n if (this.getTokenFn) {\n return { getToken: this.getTokenFn };\n }\n if (this.token) {\n return { token: this.token };\n }\n if (this.apiKey) {\n return { apiKey: this.apiKey };\n }\n throw new Error('Missing authentication. Provide apiKey, token, or getToken.');\n }\n\n private async resolveAuth(): Promise<string> {\n const auth = this.authOptions();\n if ('getToken' in auth) {\n return auth.getToken();\n }\n if ('token' in auth) {\n return auth.token;\n }\n return auth.apiKey;\n }\n}\n"],"mappings":"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","names":[]}