@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.
- package/dist/{chunk-LR7MGXLV.js → chunk-77N6V6HL.js} +135 -5
- package/dist/chunk-77N6V6HL.js.map +1 -0
- package/dist/index.cjs +134 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +370 -6
- package/dist/index.d.ts +370 -6
- package/dist/index.js +1 -1
- package/dist/mock.cjs +134 -4
- package/dist/mock.cjs.map +1 -1
- package/dist/mock.d.cts +1 -1
- package/dist/mock.d.ts +1 -1
- package/dist/mock.js +1 -1
- package/dist/mock.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-LR7MGXLV.js.map +0 -1
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 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 *\n * @example\n * const results = await workast.searches.list({ home: true, 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 if (query?.home != null) {\n params.set('home', String(query.home));\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 *\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 *\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 *\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 *\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 * Add a search to the home screen.\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 * Get a task by ID.\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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":[]}
|