@hellopivot/sdk 0.0.1
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/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/index.d.mts +1664 -0
- package/dist/index.mjs +829 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/retry.ts","../src/client-core.ts","../src/generated/resources.ts","../src/client.ts","../src/pagination.ts","../src/webhooks.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Base error class for all Pivot SDK errors.\n */\nexport class PivotError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'PivotError';\n }\n}\n\n/**\n * Error thrown when the API returns an error response.\n */\nexport class PivotAPIError extends PivotError {\n public readonly status: number;\n public readonly statusText: string;\n public readonly body: unknown;\n public readonly headers: Record<string, string>;\n\n constructor(\n status: number,\n statusText: string,\n body: unknown,\n headers: Record<string, string>\n ) {\n const message =\n typeof body === 'object' && body !== null && 'message' in body\n ? String((body as any).message)\n : `API error: ${status} ${statusText}`;\n\n super(message);\n this.name = 'PivotAPIError';\n this.status = status;\n this.statusText = statusText;\n this.body = body;\n this.headers = headers;\n }\n}\n\n/**\n * Error thrown when the request times out.\n */\nexport class PivotTimeoutError extends PivotError {\n constructor(timeoutMs: number) {\n super(`Request timed out after ${timeoutMs}ms`);\n this.name = 'PivotTimeoutError';\n }\n}\n\n/**\n * Error thrown when all retry attempts are exhausted.\n */\nexport class PivotRetryError extends PivotError {\n public readonly lastError: Error;\n public readonly attempts: number;\n\n constructor(lastError: Error, attempts: number) {\n super(\n `All ${attempts} retry attempts failed. Last error: ${lastError.message}`\n );\n this.name = 'PivotRetryError';\n this.lastError = lastError;\n this.attempts = attempts;\n }\n}\n\n/**\n * Error thrown when the API key is missing.\n */\nexport class PivotAuthenticationError extends PivotError {\n constructor() {\n super(\n 'API key is required. Pass it via the `apiKey` option or set the PIVOT_API_KEY environment variable.'\n );\n this.name = 'PivotAuthenticationError';\n }\n}\n","import { PivotAPIError, PivotRetryError } from './errors.js';\n\nexport interface RetryConfig {\n /** Maximum number of retry attempts (default: 3) */\n maxRetries: number;\n\n /** Initial delay in milliseconds before the first retry (default: 500) */\n initialDelayMs: number;\n\n /** Maximum delay in milliseconds between retries (default: 30000) */\n maxDelayMs: number;\n\n /** Multiplier for exponential backoff (default: 2) */\n backoffMultiplier: number;\n\n /** Jitter factor (0-1) to add randomness to retry delays (default: 0.25) */\n jitterFactor: number;\n\n /** HTTP status codes that should trigger a retry */\n retryableStatusCodes: number[];\n}\n\nexport const DEFAULT_RETRY_CONFIG: RetryConfig = {\n maxRetries: 3,\n initialDelayMs: 500,\n maxDelayMs: 30_000,\n backoffMultiplier: 2,\n jitterFactor: 0.25,\n retryableStatusCodes: [408, 409, 429, 500, 502, 503, 504],\n};\n\n/**\n * Calculate the delay for a given retry attempt using exponential backoff with jitter.\n */\nexport function calculateDelay(attempt: number, config: RetryConfig): number {\n const baseDelay =\n config.initialDelayMs * Math.pow(config.backoffMultiplier, attempt);\n const cappedDelay = Math.min(baseDelay, config.maxDelayMs);\n\n // Add jitter: random value between -jitter and +jitter of the delay\n const jitter = cappedDelay * config.jitterFactor * (2 * Math.random() - 1);\n return Math.max(0, Math.round(cappedDelay + jitter));\n}\n\n/**\n * Determine if an error is retryable.\n */\nexport function isRetryable(error: unknown, config: RetryConfig): boolean {\n // Network errors (fetch failures) are always retryable\n if (error instanceof TypeError) return true;\n\n // API errors with retryable status codes\n if (error instanceof PivotAPIError) {\n return config.retryableStatusCodes.includes(error.status);\n }\n\n return false;\n}\n\n/**\n * Sleep for a given number of milliseconds.\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Execute a function with retry logic using exponential backoff.\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config: RetryConfig\n): Promise<T> {\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= config.maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error));\n\n const retryable = isRetryable(error, config);\n\n // Check if we should retry\n if (attempt < config.maxRetries && retryable) {\n // Check for Retry-After header\n let delayMs = calculateDelay(attempt, config);\n\n if (error instanceof PivotAPIError) {\n const retryAfter = error.headers['retry-after'];\n if (retryAfter) {\n const retryAfterMs = Number(retryAfter) * 1000;\n if (!isNaN(retryAfterMs) && retryAfterMs > 0) {\n delayMs = Math.min(retryAfterMs, config.maxDelayMs);\n }\n }\n }\n\n await sleep(delayMs);\n continue;\n }\n\n // Not retryable — throw immediately\n if (!retryable) {\n throw lastError;\n }\n\n // Retryable but out of retries — break to throw PivotRetryError\n break;\n }\n }\n\n throw new PivotRetryError(\n lastError ?? new Error('Unknown error'),\n config.maxRetries + 1\n );\n}\n","import {\n PivotAPIError,\n PivotAuthenticationError,\n PivotTimeoutError,\n} from './errors.js';\nimport { type RetryConfig, DEFAULT_RETRY_CONFIG, withRetry } from './retry.js';\n\n/**\n * Configuration options for the Pivot SDK client.\n */\nexport interface PivotClientOptions {\n /**\n * Your Pivot API key.\n * Falls back to the `PIVOT_API_KEY` environment variable if not provided.\n */\n apiKey?: string;\n\n /**\n * Base URL for the Pivot API.\n * @default 'https://api.pivot.app'\n */\n baseUrl?: string;\n\n /**\n * Request timeout in milliseconds.\n * @default 30000\n */\n timeoutMs?: number;\n\n /**\n * Retry configuration. Set to `false` to disable retries.\n */\n retry?: Partial<RetryConfig> | false;\n\n /**\n * Custom fetch implementation. Useful for testing or environments\n * where global fetch is not available.\n */\n fetch?: typeof globalThis.fetch;\n\n /**\n * Additional default headers to include with every request.\n */\n defaultHeaders?: Record<string, string>;\n}\n\nexport interface RequestOptions {\n body?: unknown;\n query?: Record<string, unknown>;\n headers?: Record<string, string>;\n timeoutMs?: number;\n signal?: AbortSignal;\n}\n\n/**\n * Core HTTP client for the Pivot SDK.\n * Handles authentication, retries, timeouts, and request/response processing.\n */\nexport class PivotClientCore {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly timeoutMs: number;\n private readonly retryConfig: RetryConfig | false;\n private readonly fetchFn: typeof globalThis.fetch;\n private readonly defaultHeaders: Record<string, string>;\n\n constructor(options: PivotClientOptions = {}) {\n // Resolve API key\n this.apiKey =\n options.apiKey ??\n (typeof process !== 'undefined'\n ? process.env?.['PIVOT_API_KEY'] ?? ''\n : '');\n\n if (!this.apiKey) {\n throw new PivotAuthenticationError();\n }\n\n this.baseUrl = (options.baseUrl ?? 'https://api.pivot.app').replace(\n /\\/$/,\n ''\n );\n this.timeoutMs = options.timeoutMs ?? 30_000;\n this.fetchFn = options.fetch ?? globalThis.fetch;\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...options.defaultHeaders,\n };\n\n // Configure retry\n if (options.retry === false) {\n this.retryConfig = false;\n } else {\n this.retryConfig = {\n ...DEFAULT_RETRY_CONFIG,\n ...options.retry,\n };\n }\n }\n\n /**\n * Make an authenticated HTTP request to the Pivot API.\n */\n async request<T>(\n method: string,\n path: string,\n options: RequestOptions = {}\n ): Promise<T> {\n const doRequest = async (): Promise<T> => {\n // Build URL with query parameters\n const url = new URL(`${this.baseUrl}${path}`);\n if (options.query) {\n for (const [key, value] of Object.entries(options.query)) {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n for (const v of value) {\n url.searchParams.append(key, String(v));\n }\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n }\n }\n\n // Build headers\n const headers: Record<string, string> = {\n ...this.defaultHeaders,\n Authorization: `Bearer ${this.apiKey}`,\n ...options.headers,\n };\n\n // Build request init\n const init: RequestInit = {\n method,\n headers,\n };\n\n if (options.body !== undefined && method !== 'GET') {\n init.body = JSON.stringify(options.body);\n }\n\n // Timeout handling\n const timeoutMs = options.timeoutMs ?? this.timeoutMs;\n const controller = new AbortController();\n let didTimeout = false;\n const timeoutId = setTimeout(() => {\n didTimeout = true;\n controller.abort();\n }, timeoutMs);\n\n // Link external signal if provided\n const onAbort = () => controller.abort();\n if (options.signal) {\n if (options.signal.aborted) {\n controller.abort();\n } else {\n options.signal.addEventListener('abort', onAbort, { once: true });\n }\n }\n\n init.signal = controller.signal;\n\n let response: Response;\n try {\n response = await this.fetchFn(url.toString(), init);\n } catch (error: any) {\n clearTimeout(timeoutId);\n if (error?.name === 'AbortError' && didTimeout) {\n throw new PivotTimeoutError(timeoutMs);\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n if (options.signal) {\n options.signal.removeEventListener('abort', onAbort);\n }\n }\n\n // Parse response headers\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n // Handle error responses\n if (!response.ok) {\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = await response.text().catch(() => null);\n }\n throw new PivotAPIError(\n response.status,\n response.statusText,\n body,\n responseHeaders\n );\n }\n\n // Parse response body\n const contentType = response.headers.get('content-type');\n if (contentType?.includes('application/json')) {\n return (await response.json()) as T;\n }\n\n return (await response.text()) as unknown as T;\n };\n\n // Apply retry logic\n if (this.retryConfig) {\n return withRetry(doRequest, this.retryConfig);\n }\n\n return doRequest();\n }\n}\n","// Auto-generated by libs/pivot-sdk/scripts/codegen.ts\n// Do not edit manually. Re-run `pnpm nx codegen pivot-sdk` to regenerate.\n\nimport type { PivotClientCore } from '../client-core.js';\nimport type * as Types from './types.js';\n\nexport class BlocksResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * Delete a block response attachment\n * \n * Deletes a file attached to a block response.\n */\n async deleteBlockResponseAttachment(attachmentId: string): Promise<Types.DeleteBlockResponseAttachmentResponse> {\n return this.client.request<Types.DeleteBlockResponseAttachmentResponse>('DELETE', `/v1/blocks/responses/attachments/${attachmentId}`);\n }\n\n /**\n * Delete a block response\n * \n * Deletes a response from a block.\n */\n async deleteResponseForBlock(responseId: string): Promise<Types.DeleteResponseForBlockResponse> {\n return this.client.request<Types.DeleteResponseForBlockResponse>('DELETE', `/v1/blocks/responses/${responseId}`);\n }\n\n /**\n * Update block response\n * \n * Updates an existing block response.\n */\n async updateResponseForBlock(responseId: string, body: Types.UpdateResponseForBlockContent): Promise<Types.UpdateResponseForBlockResponse> {\n return this.client.request<Types.UpdateResponseForBlockResponse>('PATCH', `/v1/blocks/responses/${responseId}`, { body });\n }\n\n /**\n * Create an attachment for a block response\n * \n * Adds a file to a block response.\n */\n async createBlockResponseAttachment(responseId: string, body: Types.CreateBlockResponseAttachmentContent): Promise<Types.CreateBlockResponseAttachmentResponse> {\n return this.client.request<Types.CreateBlockResponseAttachmentResponse>('POST', `/v1/blocks/responses/${responseId}/attachments`, { body });\n }\n\n /**\n * Send block response\n * \n * Sends or marks the response as submitted.\n */\n async sendResponseForBlock(responseId: string): Promise<Types.SendResponseForBlockResponse> {\n return this.client.request<Types.SendResponseForBlockResponse>('POST', `/v1/blocks/responses/${responseId}/send`);\n }\n\n /**\n * Get block\n * \n * Returns a block by ID.\n */\n async getBlockById(blockId: string): Promise<Types.GetBlockByIdResponse> {\n return this.client.request<Types.GetBlockByIdResponse>('GET', `/v1/blocks/${blockId}`);\n }\n\n /**\n * List block responses\n * \n * Returns responses for a block.\n */\n async getBlockResponsesByBlockId(blockId: string): Promise<Types.GetBlockResponsesByBlockIdResponse> {\n return this.client.request<Types.GetBlockResponsesByBlockIdResponse>('GET', `/v1/blocks/${blockId}/responses`);\n }\n\n /**\n * Create block response\n * \n * Creates a new response for a block.\n */\n async createResponseForBlock(blockId: string, body: Types.CreateResponseForBlockContent): Promise<Types.CreateResponseForBlockResponse> {\n return this.client.request<Types.CreateResponseForBlockResponse>('POST', `/v1/blocks/${blockId}/responses`, { body });\n }\n\n}\n\nexport class GroupsResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * List groups\n * \n * Returns groups in the organization.\n */\n async getGroupsByOrganizationId(organizationId: string, offset: number): Promise<Types.GetGroupsByOrganizationIdResponse> {\n return this.client.request<Types.GetGroupsByOrganizationIdResponse>('GET', `/v1/organizations/${organizationId}/groups/${offset}`);\n }\n\n /**\n * List group members\n * \n * Returns users in the specified group.\n */\n async getGroupMembersByGroupId(organizationId: string, groupId: string): Promise<Types.GetGroupMembersByGroupIdResponse> {\n return this.client.request<Types.GetGroupMembersByGroupIdResponse>('GET', `/v1/organizations/${organizationId}/${groupId}/members`);\n }\n\n /**\n * Add group members\n * \n * Adds users to the specified group.\n */\n async createGroupMembersByGroupId(organizationId: string, groupId: string, body: Types.CreateGroupMembersByGroupIdContent): Promise<Types.CreateGroupMembersByGroupIdResponse> {\n return this.client.request<Types.CreateGroupMembersByGroupIdResponse>('POST', `/v1/organizations/${organizationId}/${groupId}/members`, { body });\n }\n\n /**\n * Remove group members\n * \n * Removes users from a group.\n */\n async deleteGroupMembersByGroupId(organizationId: string, groupId: string, query?: { userIds?: string[] }): Promise<Types.DeleteGroupMembersByGroupIdResponse> {\n return this.client.request<Types.DeleteGroupMembersByGroupIdResponse>('DELETE', `/v1/organizations/${organizationId}/${groupId}/members`, { query });\n }\n\n}\n\nexport class InvitesResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * Revoke invite by ID\n * \n * Revokes an invitation by its unique ID and email address.\n */\n async revokeInviteById(organizationId: string, inviteId: string, email: string): Promise<Types.RevokeInviteByIdResponse> {\n return this.client.request<Types.RevokeInviteByIdResponse>('DELETE', `/v1/organizations/${organizationId}/invites/${inviteId}/${email}`);\n }\n\n}\n\nexport class LabelsResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * Delete label\n * \n * Deletes a label.\n */\n async deleteLabel(labelId: string): Promise<Types.DeleteLabelResponse> {\n return this.client.request<Types.DeleteLabelResponse>('DELETE', `/v1/labels/${labelId}`);\n }\n\n /**\n * Update label\n * \n * Updates an existing label.\n */\n async updateLabel(labelId: string, body: Types.UpdateLabelContent): Promise<Types.UpdateLabelResponse> {\n return this.client.request<Types.UpdateLabelResponse>('PATCH', `/v1/labels/${labelId}`, { body });\n }\n\n /**\n * List organization labels\n * \n * Returns labels in the organization.\n */\n async getLabelsByOrganizationId(organizationId: string): Promise<Types.GetLabelsByOrganizationIdResponse> {\n return this.client.request<Types.GetLabelsByOrganizationIdResponse>('GET', `/v1/organizations/${organizationId}/labels`);\n }\n\n /**\n * Create label\n * \n * Creates a new label in the organization.\n */\n async createLabel(organizationId: string, body: Types.CreateLabelContent): Promise<Types.CreateLabelResponse> {\n return this.client.request<Types.CreateLabelResponse>('POST', `/v1/organizations/${organizationId}/labels`, { body });\n }\n\n /**\n * Update space labels\n * \n * Adds labels to a space without removing existing labels. To remove labels, use the DELETE endpoint.\n */\n async updateSpaceLabels(spaceId: string, body: Types.UpdateSpaceLabelsContent): Promise<Types.UpdateSpaceLabelsResponse> {\n return this.client.request<Types.UpdateSpaceLabelsResponse>('PATCH', `/v1/spaces/${spaceId}/labels`, { body });\n }\n\n /**\n * Remove label from space\n * \n * Removes a single label from a space.\n */\n async removeLabelFromSpace(spaceId: string, labelId: string): Promise<Types.RemoveLabelFromSpaceResponse> {\n return this.client.request<Types.RemoveLabelFromSpaceResponse>('DELETE', `/v1/spaces/${spaceId}/labels/${labelId}`);\n }\n\n}\n\nexport class RoomsResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * Get room\n * \n * Returns a room by ID.\n */\n async getRoomById(roomId: string): Promise<Types.GetRoomByIdResponse> {\n return this.client.request<Types.GetRoomByIdResponse>('GET', `/v1/rooms/${roomId}`);\n }\n\n /**\n * Invite to room\n * \n * Invites users to a room by email.\n */\n async inviteToRoomByEmails(roomId: string, body: Types.InviteToRoomByEmailsContent): Promise<Types.InviteToRoomByEmailsResponse> {\n return this.client.request<Types.InviteToRoomByEmailsResponse>('POST', `/v1/rooms/${roomId}/invites`, { body });\n }\n\n /**\n * Revoke room invite\n * \n * Revokes an invitation to a room by email address.\n */\n async revokeRoomInvite(roomId: string, email: string): Promise<Types.RevokeRoomInviteResponse> {\n return this.client.request<Types.RevokeRoomInviteResponse>('DELETE', `/v1/rooms/${roomId}/invites/${email}`);\n }\n\n /**\n * Add room members\n * \n * Adds users to a room with a role.\n */\n async createRoomMembersByRoomId(roomId: string, body: Types.CreateRoomMembersByRoomIdContent): Promise<Types.CreateRoomMembersByRoomIdResponse> {\n return this.client.request<Types.CreateRoomMembersByRoomIdResponse>('POST', `/v1/rooms/${roomId}/members`, { body });\n }\n\n /**\n * List room messages (Deprecated)\n * \n * Deprecated: Use GET /v2/rooms/{room_id}/messages instead. Returns messages in a room by offset.\n * @deprecated\n */\n async getMessagesByRoomId(roomId: string, offset: number): Promise<Types.GetMessagesByRoomIdResponse> {\n return this.client.request<Types.GetMessagesByRoomIdResponse>('GET', `/v1/rooms/${roomId}/messages/${offset}`);\n }\n\n /**\n * List message replies (Deprecated)\n * \n * Deprecated: Use GET /v2/rooms/{room_id}/threads/{parent_id}/messages instead. Returns replies under a parent message.\n * @deprecated\n */\n async getMessagesByParentId(roomId: string, parentId: string, query?: { offset?: number; fullTree?: boolean }): Promise<Types.GetMessagesByParentIdResponse> {\n return this.client.request<Types.GetMessagesByParentIdResponse>('GET', `/v1/rooms/${roomId}/messages/${parentId}/children`, { query });\n }\n\n /**\n * List room recordings\n * \n * Returns recordings for a room, including transcripts and other assets.\n */\n async getRoomRecordingsByRoomId(roomId: string, query?: { cursorCreatedAt?: string; cursorId?: string; limit?: number }): Promise<Types.GetRoomRecordingsByRoomIdResponse> {\n return this.client.request<Types.GetRoomRecordingsByRoomIdResponse>('GET', `/v1/rooms/${roomId}/recordings`, { query });\n }\n\n /**\n * Get room recording\n * \n * Returns a specific room recording by ID, including transcripts and other assets.\n */\n async getRoomRecordingById(roomId: string, recordingId: string, query: { createdAt: string }): Promise<Types.GetRoomRecordingByIdResponse> {\n return this.client.request<Types.GetRoomRecordingByIdResponse>('GET', `/v1/rooms/${roomId}/recordings/${recordingId}`, { query });\n }\n\n /**\n * Get active participants in a room and their messages stats\n * \n * Returns active users in a room and their message stats.\n */\n async getRoomActiveParticipants(roomId: string): Promise<Types.GetRoomActiveParticipantsResponse> {\n return this.client.request<Types.GetRoomActiveParticipantsResponse>('GET', `/v1/rooms/${roomId}/users`);\n }\n\n /**\n * List room messages\n * \n * Returns messages in a room using cursor-based pagination (newest first). For partition navigation, backfill strategy, and examples, see https://pivot.app/docs/developers/rest-api/message-retrieval.\n */\n async getRoomMessages(roomId: string, query?: { cursorSentAt?: string; cursorMessageId?: string; limit?: number }): Promise<Types.GetRoomMessagesResponse> {\n return this.client.request<Types.GetRoomMessagesResponse>('GET', `/v2/rooms/${roomId}/messages`, { query });\n }\n\n /**\n * Get message by ID\n * \n * Retrieves a single message by ID.\n\nThe `sent_at` parameter is currently optional but will become required in a future release. For thread messages, `thread_parent_message_id` will also become required. Clients should start passing these parameters now to ensure continued functionality after the migration.\n */\n async getMessageById(roomId: string, messageId: string, query?: { sentAt?: string; threadParentMessageId?: string }): Promise<Types.GetMessageByIdResponse> {\n return this.client.request<Types.GetMessageByIdResponse>('GET', `/v2/rooms/${roomId}/messages/${messageId}`, { query });\n }\n\n /**\n * List thread messages\n * \n * Returns messages in a thread using cursor-based pagination (oldest first). For guidance and examples, see https://pivot.app/docs/developers/rest-api/message-retrieval.\n */\n async getThreadMessages(roomId: string, parentId: string, query?: { cursorSentAt?: string; cursorMessageId?: string; limit?: number }): Promise<Types.GetThreadMessagesResponse> {\n return this.client.request<Types.GetThreadMessagesResponse>('GET', `/v2/rooms/${roomId}/threads/${parentId}/messages`, { query });\n }\n\n}\n\nexport class SpacesResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * Create space\n * \n * Creates a new space in the organization.\n */\n async createSpace(organizationId: string, body: Types.CreateSpaceContent): Promise<Types.CreateSpaceResponse> {\n return this.client.request<Types.CreateSpaceResponse>('POST', `/v1/organizations/${organizationId}/spaces`, { body });\n }\n\n /**\n * List spaces\n * \n * Returns spaces in the organization. Filter by status using 'active', 'archived', 'hidden', or 'deleted'. If no status is provided, defaults to returning only active spaces. Sort results using sort_by: 'created_at_asc' (default), 'created_at_desc', 'last_activity_asc', or 'last_activity_desc'.\n */\n async getSpacesByOrganizationId(organizationId: string, offset: number, query?: { status?: 'active' | 'archived' | 'hidden' | 'deleted'; sortBy?: 'created_at_asc' | 'created_at_desc' | 'last_activity_asc' | 'last_activity_desc' }): Promise<Types.GetSpacesByOrganizationIdResponse> {\n return this.client.request<Types.GetSpacesByOrganizationIdResponse>('GET', `/v1/organizations/${organizationId}/spaces/${offset}`, { query });\n }\n\n /**\n * Update space\n * \n * Updates space settings or metadata.\n */\n async updateSpace(organizationId: string, spaceId: string, body: Types.UpdateSpaceContent): Promise<Types.UpdateSpaceResponse> {\n return this.client.request<Types.UpdateSpaceResponse>('PATCH', `/v1/organizations/${organizationId}/spaces/${spaceId}`, { body });\n }\n\n /**\n * List assignment blocks\n * \n * Returns all assignment blocks in the space.\n */\n async getAssignmentBlocksBySpaceId(organizationId: string, spaceId: string): Promise<Types.GetAssignmentBlocksBySpaceIdResponse> {\n return this.client.request<Types.GetAssignmentBlocksBySpaceIdResponse>('GET', `/v1/organizations/${organizationId}/spaces/${spaceId}/assignments`);\n }\n\n /**\n * Copy space\n * \n * Creates a copy of an existing space with a new name.\n */\n async copySpace(organizationId: string, spaceId: string, body: Types.CopySpaceContent): Promise<Types.CopySpaceResponse> {\n return this.client.request<Types.CopySpaceResponse>('POST', `/v1/organizations/${organizationId}/spaces/${spaceId}/copy`, { body });\n }\n\n /**\n * Add group to space\n * \n * Grants a group access to a space.\n */\n async addGroupToSpace(organizationId: string, spaceId: string, body: Types.AddGroupToSpaceContent): Promise<Types.AddGroupToSpaceResponse> {\n return this.client.request<Types.AddGroupToSpaceResponse>('POST', `/v1/organizations/${organizationId}/spaces/${spaceId}/groups`, { body });\n }\n\n /**\n * Hide space\n * \n * Hides a space from view.\n */\n async hideSpace(organizationId: string, spaceId: string): Promise<Types.HideSpaceResponse> {\n return this.client.request<Types.HideSpaceResponse>('PATCH', `/v1/organizations/${organizationId}/spaces/${spaceId}/hide`);\n }\n\n /**\n * Invite to space\n * \n * Invite users by email. Existing users are added directly.\n */\n async inviteToSpaceByEmails(organizationId: string, spaceId: string, body: Types.InviteToSpaceByEmailsContent): Promise<Types.InviteToSpaceByEmailsResponse> {\n return this.client.request<Types.InviteToSpaceByEmailsResponse>('POST', `/v1/organizations/${organizationId}/spaces/${spaceId}/invites`, { body });\n }\n\n /**\n * Revoke space invite\n * \n * Revokes an invitation to a space by email address.\n */\n async revokeSpaceInvite(organizationId: string, spaceId: string, email: string): Promise<Types.RevokeSpaceInviteResponse> {\n return this.client.request<Types.RevokeSpaceInviteResponse>('DELETE', `/v1/organizations/${organizationId}/spaces/${spaceId}/invites/${email}`);\n }\n\n /**\n * Add space members\n * \n * Adds users to a space.\n */\n async createSpaceMembersBySpaceId(organizationId: string, spaceId: string, body: Types.CreateSpaceMembersBySpaceIdContent): Promise<Types.CreateSpaceMembersBySpaceIdResponse> {\n return this.client.request<Types.CreateSpaceMembersBySpaceIdResponse>('POST', `/v1/organizations/${organizationId}/spaces/${spaceId}/members`, { body });\n }\n\n /**\n * Remove space member\n * \n * Removes a user from a space.\n */\n async deleteSpaceMember(organizationId: string, spaceId: string, memberId: string): Promise<Types.DeleteSpaceMemberResponse> {\n return this.client.request<Types.DeleteSpaceMemberResponse>('DELETE', `/v1/organizations/${organizationId}/spaces/${spaceId}/members/${memberId}`);\n }\n\n /**\n * Update space member\n * \n * Updates a member’s role or title in a space.\n */\n async updateSpaceMember(organizationId: string, spaceId: string, memberId: string, body: Types.UpdateSpaceMemberContent): Promise<Types.UpdateSpaceMemberResponse> {\n return this.client.request<Types.UpdateSpaceMemberResponse>('PATCH', `/v1/organizations/${organizationId}/spaces/${spaceId}/members/${memberId}`, { body });\n }\n\n /**\n * List space members\n * \n * Returns members of a space.\n */\n async getSpaceMembers(organizationId: string, spaceId: string, offset: number): Promise<Types.GetSpaceMembersResponse> {\n return this.client.request<Types.GetSpaceMembersResponse>('GET', `/v1/organizations/${organizationId}/spaces/${spaceId}/members/${offset}`);\n }\n\n /**\n * List space roles\n * \n * Returns roles available in a space.\n */\n async getSpaceRoles(organizationId: string, spaceId: string): Promise<Types.GetSpaceRolesResponse> {\n return this.client.request<Types.GetSpaceRolesResponse>('GET', `/v1/organizations/${organizationId}/spaces/${spaceId}/roles`);\n }\n\n /**\n * Create space role\n * \n * Creates a custom role in a space.\n */\n async createSpaceRole(organizationId: string, spaceId: string, body: Types.CreateSpaceRoleContent): Promise<Types.CreateSpaceRoleResponse> {\n return this.client.request<Types.CreateSpaceRoleResponse>('POST', `/v1/organizations/${organizationId}/spaces/${spaceId}/roles`, { body });\n }\n\n /**\n * List room blocks\n * \n * Returns all room blocks in the space.\n */\n async getRoomBlocksBySpaceId(organizationId: string, spaceId: string): Promise<Types.GetRoomBlocksBySpaceIdResponse> {\n return this.client.request<Types.GetRoomBlocksBySpaceIdResponse>('GET', `/v1/organizations/${organizationId}/spaces/${spaceId}/rooms`);\n }\n\n}\n\nexport class UsersResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * Get user context\n * \n * Returns user info, memberships, and groups.\n */\n async getUserContextByOrganizationId(organizationId: string, identifier: string): Promise<Types.GetUserContextByOrganizationIdResponse> {\n return this.client.request<Types.GetUserContextByOrganizationIdResponse>('GET', `/v1/organizations/${organizationId}/users/${identifier}`);\n }\n\n /**\n * Delete user\n * \n * Deletes a user if their email is verified by the org and not verified by any others. This is permanent and affects all orgs.\n */\n async deleteUser(organizationId: string, identifier: string): Promise<Types.DeleteUserResponse> {\n return this.client.request<Types.DeleteUserResponse>('DELETE', `/v1/organizations/${organizationId}/users/${identifier}`);\n }\n\n /**\n * Delete or remove user\n * \n * Deletes the user if verified by the org; otherwise removes org memberships.\n */\n async deleteVerifiedUserOrRemoveFromOrg(organizationId: string, userId: string): Promise<Types.DeleteVerifiedUserOrRemoveFromOrgResponse> {\n return this.client.request<Types.DeleteVerifiedUserOrRemoveFromOrgResponse>('DELETE', `/v1/organizations/${organizationId}/users/${userId}/membership`);\n }\n\n}\n\nexport class WebhooksResource {\n constructor(private client: PivotClientCore) {}\n\n /**\n * List webhooks\n * \n * Returns all webhooks for the organization.\n */\n async getWebhooksByOrganizationId(organizationId: string): Promise<Types.GetWebhooksByOrganizationIdResponse> {\n return this.client.request<Types.GetWebhooksByOrganizationIdResponse>('GET', `/v1/organizations/${organizationId}/webhooks`);\n }\n\n /**\n * Create webhook\n * \n * Creates a new webhook for the organization. Returns the webhook secret which must be stored securely.\n */\n async createWebhook(organizationId: string, body: Types.CreateWebhookContent): Promise<Types.CreateWebhookResponse> {\n return this.client.request<Types.CreateWebhookResponse>('POST', `/v1/organizations/${organizationId}/webhooks`, { body });\n }\n\n /**\n * Delete webhook\n * \n * Deletes a webhook.\n */\n async deleteWebhook(organizationId: string, webhookId: string): Promise<Types.DeleteWebhookResponse> {\n return this.client.request<Types.DeleteWebhookResponse>('DELETE', `/v1/organizations/${organizationId}/webhooks/${webhookId}`);\n }\n\n /**\n * Update webhook\n * \n * Updates an existing webhook. If subscriptions are provided, they replace all existing subscriptions.\n */\n async updateWebhook(organizationId: string, webhookId: string, body: Types.UpdateWebhookContent): Promise<Types.UpdateWebhookResponse> {\n return this.client.request<Types.UpdateWebhookResponse>('PATCH', `/v1/organizations/${organizationId}/webhooks/${webhookId}`, { body });\n }\n\n /**\n * Get webhook logs\n * \n * Returns delivery logs for a webhook. Logs are retained for 30 days.\n */\n async getWebhookLogs(organizationId: string, webhookId: string, query?: { beforeTime?: string; limit?: number }): Promise<Types.GetWebhookLogsResponse> {\n return this.client.request<Types.GetWebhookLogsResponse>('GET', `/v1/organizations/${organizationId}/webhooks/${webhookId}/logs`, { query });\n }\n\n}\n","import { PivotClientCore, type PivotClientOptions } from './client-core.js';\nimport {\n BlocksResource,\n GroupsResource,\n InvitesResource,\n LabelsResource,\n RoomsResource,\n SpacesResource,\n UsersResource,\n WebhooksResource,\n} from './generated/resources.js';\n\n/**\n * The official Pivot SDK client for JavaScript and TypeScript.\n *\n * @example\n * ```typescript\n * import Pivot from '@hellopivot/sdk';\n *\n * const pivot = new Pivot({ apiKey: 'your-api-key' });\n *\n * // List spaces\n * const spaces = await pivot.spaces.getSpacesByOrganizationId(orgId, 0);\n *\n * // Get a block\n * const block = await pivot.blocks.getBlockById(blockId);\n * ```\n */\nexport class Pivot {\n private readonly core: PivotClientCore;\n\n /** Block operations (pages, assignments, forms, etc.) */\n public readonly blocks: BlocksResource;\n\n /** Group operations */\n public readonly groups: GroupsResource;\n\n /** Invite operations */\n public readonly invites: InvitesResource;\n\n /** Label operations */\n public readonly labels: LabelsResource;\n\n /** Room operations (chat, messages, recordings) */\n public readonly rooms: RoomsResource;\n\n /** Space operations */\n public readonly spaces: SpacesResource;\n\n /** User operations */\n public readonly users: UsersResource;\n\n /** Webhook operations */\n public readonly webhooks: WebhooksResource;\n\n constructor(options?: PivotClientOptions) {\n this.core = new PivotClientCore(options);\n\n this.blocks = new BlocksResource(this.core);\n this.groups = new GroupsResource(this.core);\n this.invites = new InvitesResource(this.core);\n this.labels = new LabelsResource(this.core);\n this.rooms = new RoomsResource(this.core);\n this.spaces = new SpacesResource(this.core);\n this.users = new UsersResource(this.core);\n this.webhooks = new WebhooksResource(this.core);\n }\n}\n","/**\n * Pagination utilities for the Pivot SDK.\n *\n * Supports both offset-based and cursor-based pagination patterns\n * used by the Pivot API.\n */\n\n/**\n * Options for auto-paginating through offset-based results.\n */\nexport interface OffsetPaginationOptions {\n /** Starting offset (default: 0) */\n startOffset?: number;\n\n /** Maximum total items to fetch (default: Infinity) */\n maxItems?: number;\n}\n\n/**\n * Options for auto-paginating through cursor-based results.\n */\nexport interface CursorPaginationOptions {\n /** Maximum total items to fetch (default: Infinity) */\n maxItems?: number;\n\n /** Maximum number of pages to fetch (default: Infinity) */\n maxPages?: number;\n}\n\n/**\n * Result from offset-based pagination containing the items and next offset.\n */\nexport interface OffsetPage<T> {\n items: T[];\n nextOffset?: number;\n}\n\n/**\n * Result from cursor-based pagination containing the items and next cursor.\n */\nexport interface CursorPage<T> {\n items: T[];\n hasMore: boolean;\n nextCursor?: Record<string, string | undefined>;\n}\n\n/**\n * Auto-paginate through all pages of an offset-based endpoint.\n *\n * @example\n * ```typescript\n * const allSpaces = await autoPageOffset(\n * (offset) => client.spaces.getSpacesByOrganizationId(orgId, offset),\n * (response) => ({\n * items: response.spaces ?? [],\n * nextOffset: response.nextOffset,\n * }),\n * );\n * ```\n */\nexport async function autoPageOffset<TResponse, TItem>(\n fetchPage: (offset: number) => Promise<TResponse>,\n extractPage: (response: TResponse) => OffsetPage<TItem>,\n options: OffsetPaginationOptions = {}\n): Promise<TItem[]> {\n const { startOffset = 0, maxItems = Infinity } = options;\n const allItems: TItem[] = [];\n let currentOffset = startOffset;\n\n while (allItems.length < maxItems) {\n const response = await fetchPage(currentOffset);\n const page = extractPage(response);\n\n allItems.push(...page.items);\n\n const nextOffset = page.nextOffset;\n if (page.items.length === 0 || nextOffset == null) {\n break;\n }\n if (nextOffset <= currentOffset) {\n throw new Error(\n `Offset pagination did not advance (current=${currentOffset}, next=${nextOffset}).`\n );\n }\n currentOffset = nextOffset;\n }\n\n return allItems.slice(0, maxItems);\n}\n\n/**\n * Auto-paginate through all pages of a cursor-based endpoint.\n *\n * @example\n * ```typescript\n * const allMessages = await autoPageCursor(\n * (cursor) => client.rooms.getRoomMessages(roomId, cursor),\n * (response) => ({\n * items: response.messages ?? [],\n * hasMore: response.shardHasMore ?? false,\n * nextCursor: {\n * cursorSentAt: response.nextCursorSentAt,\n * cursorMessageId: response.nextCursorMessageId,\n * },\n * }),\n * );\n * ```\n */\nexport async function autoPageCursor<TResponse, TItem>(\n fetchPage: (\n cursor?: Record<string, string | undefined>\n ) => Promise<TResponse>,\n extractPage: (response: TResponse) => CursorPage<TItem>,\n options: CursorPaginationOptions = {}\n): Promise<TItem[]> {\n const { maxItems = Infinity, maxPages = Infinity } = options;\n const allItems: TItem[] = [];\n let cursor: Record<string, string | undefined> | undefined;\n let pageCount = 0;\n\n while (allItems.length < maxItems && pageCount < maxPages) {\n const response = await fetchPage(cursor);\n const page = extractPage(response);\n\n allItems.push(...page.items);\n pageCount++;\n\n if (!page.hasMore || page.items.length === 0) {\n break;\n }\n if (!page.nextCursor) {\n throw new Error(\n 'Cursor pagination indicated more pages but no nextCursor was returned.'\n );\n }\n cursor = page.nextCursor;\n }\n\n return allItems.slice(0, maxItems);\n}\n","/**\n * Webhook utilities for the Pivot SDK.\n *\n * Provides signature verification and typed event parsing for\n * Pivot webhook deliveries.\n *\n * Types are generated from proto/rest/rest/common/v1/webhook_payloads.proto\n * — the single source of truth shared with the Go backend.\n */\n\nimport { createHmac, timingSafeEqual } from 'node:crypto';\nimport type { WebhookEvent } from './generated/webhook-types.js';\n\n// Re-export all generated webhook types for convenience\nexport type {\n WebhookEventSubject,\n WebhookEventType,\n WebhookEvent,\n MessageSentEvent,\n MessageDeletedEvent,\n MessageEditedEvent,\n RoomRecordingTranscriptPublishedEvent,\n MessageSentData,\n MessageDeletedData,\n MessageEditedData,\n RoomRecordingTranscriptPublishedData,\n} from './generated/webhook-types.js';\n\n// ---------------------------------------------------------------------------\n// Webhook headers\n// ---------------------------------------------------------------------------\n\n/**\n * Security headers included with every Pivot webhook delivery.\n */\nexport interface WebhookHeaders {\n /** HMAC-SHA256 signature of the payload (`sha256=<hex>`). */\n 'x-pivot-signature': string;\n /** The event type (e.g. `message_sent`). */\n 'x-pivot-event': string;\n /** Unique delivery identifier (use for idempotency). */\n 'x-pivot-delivery': string;\n /** The ID of the webhook that triggered the delivery. */\n 'x-pivot-webhook-id': string;\n}\n\n// ---------------------------------------------------------------------------\n// Signature verification\n// ---------------------------------------------------------------------------\n\n/**\n * Verify the HMAC-SHA256 signature of a Pivot webhook payload.\n *\n * Uses constant-time comparison to prevent timing attacks.\n *\n * @param payload - The raw request body as a string.\n * @param signature - The value of the `X-Pivot-Signature` header.\n * @param secret - Your webhook secret (returned when you created the webhook).\n * @returns `true` if the signature is valid, `false` otherwise.\n *\n * @example\n * ```typescript\n * import { verifyWebhookSignature } from '@hellopivot/sdk';\n *\n * app.post('/webhook', (req, res) => {\n * const isValid = verifyWebhookSignature(\n * req.body, // raw body string\n * req.headers['x-pivot-signature'],\n * process.env.WEBHOOK_SECRET,\n * );\n *\n * if (!isValid) {\n * return res.status(401).send('Invalid signature');\n * }\n *\n * // Process the event...\n * res.status(200).send('OK');\n * });\n * ```\n */\nexport function verifyWebhookSignature(\n payload: string,\n signature: string,\n secret: string\n): boolean {\n if (!payload || !signature || !secret) {\n return false;\n }\n\n const expectedSignature =\n 'sha256=' + createHmac('sha256', secret).update(payload).digest('hex');\n\n // Both buffers must be the same length for timingSafeEqual\n const sigBuffer = Buffer.from(signature);\n const expectedBuffer = Buffer.from(expectedSignature);\n\n if (sigBuffer.length !== expectedBuffer.length) {\n return false;\n }\n\n return timingSafeEqual(sigBuffer, expectedBuffer);\n}\n\n/**\n * Construct the expected HMAC-SHA256 signature for a given payload and secret.\n *\n * Useful for testing or debugging webhook integrations.\n *\n * @param payload - The request body as a string.\n * @param secret - Your webhook secret.\n * @returns The signature string in the format `sha256=<hex>`.\n */\nexport function constructWebhookSignature(\n payload: string,\n secret: string\n): string {\n return 'sha256=' + createHmac('sha256', secret).update(payload).digest('hex');\n}\n\n/**\n * Parse and verify a webhook event in one step.\n *\n * This is a convenience method that verifies the signature and then\n * parses the payload into a typed `WebhookEvent`.\n *\n * @param payload - The raw request body as a string.\n * @param signature - The value of the `X-Pivot-Signature` header.\n * @param secret - Your webhook secret.\n * @returns The parsed and typed webhook event.\n * @throws {Error} If the signature is invalid or the payload cannot be parsed.\n *\n * @example\n * ```typescript\n * import { parseWebhookEvent } from '@hellopivot/sdk';\n *\n * app.post('/webhook', (req, res) => {\n * try {\n * const event = parseWebhookEvent(\n * req.body,\n * req.headers['x-pivot-signature'],\n * process.env.WEBHOOK_SECRET,\n * );\n *\n * switch (event.eventType) {\n * case 'message_sent':\n * console.log('New message:', event.data.messageId);\n * break;\n * case 'message_deleted':\n * console.log('Deleted:', event.data.messageId);\n * break;\n * }\n *\n * res.status(200).send('OK');\n * } catch (err) {\n * res.status(401).send('Invalid webhook');\n * }\n * });\n * ```\n */\nexport function parseWebhookEvent(\n payload: string,\n signature: string,\n secret: string\n): WebhookEvent {\n if (!verifyWebhookSignature(payload, signature, secret)) {\n throw new Error(\n 'Invalid webhook signature. Ensure you are using the correct secret.'\n );\n }\n\n const event = JSON.parse(payload) as WebhookEvent;\n\n // Basic structural validation\n if (!event.eventType || !event.organizationId || !event.subject) {\n throw new Error('Invalid webhook payload: missing required fields.');\n }\n\n return event;\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hellopivot/sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Official Pivot SDK for JavaScript and TypeScript",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=18"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"pivot",
|
|
25
|
+
"sdk",
|
|
26
|
+
"api",
|
|
27
|
+
"typescript",
|
|
28
|
+
"javascript"
|
|
29
|
+
],
|
|
30
|
+
"author": {
|
|
31
|
+
"name": "Pivot Technologies Holdings Inc.",
|
|
32
|
+
"email": "team@pivot.app",
|
|
33
|
+
"url": "https://pivot.app"
|
|
34
|
+
},
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/hellopivot/pivot.git",
|
|
39
|
+
"directory": "libs/pivot-sdk"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://pivot.app/docs/developers/sdks/javascript-typescript",
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/hellopivot/pivot/issues"
|
|
44
|
+
}
|
|
45
|
+
}
|