// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../core/resource'; import * as FoldersAPI from './folders'; import * as MaterialsAPI from './materials/materials'; import { APIPromise } from '../../core/api-promise'; import { buildHeaders } from '../../internal/headers'; import { RequestOptions } from '../../internal/request-options'; import { path } from '../../internal/utils/path'; export class Folders extends APIResource { /** * Create a new folder * * @example * ```ts * const folder = await client.v1.folders.create({ * name: 'name', * }); * ``` */ create(body: FolderCreateParams, options?: RequestOptions): APIPromise { return this._client.post('/api/v1/folders', { body, ...options }); } /** * Get folder ID by folder name * * @example * ```ts * const response = await client.v1.folders.getByName('name'); * ``` */ getByName( name: string, query: FolderGetByNameParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get(path`/api/v1/folders/by-name/${name}`, { query, ...options }); } /** * Get folder by ID * * @example * ```ts * const folder = await client.v1.folders.retrieve('id'); * ``` */ retrieve(id: string, options?: RequestOptions): APIPromise { return this._client.get(path`/api/v1/folders/${id}`, options); } /** * Update folder * * @example * ```ts * const folder = await client.v1.folders.update('id'); * ``` */ update(id: string, body: FolderUpdateParams, options?: RequestOptions): APIPromise { return this._client.patch(path`/api/v1/folders/${id}`, { body, ...options }); } /** * Get all folders * * @example * ```ts * const folders = await client.v1.folders.list(); * ``` */ list( query: FolderListParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get('/api/v1/folders', { query, ...options }); } /** * Delete folder * * @example * ```ts * await client.v1.folders.delete('id'); * ``` */ delete(id: string, options?: RequestOptions): APIPromise { return this._client.delete(path`/api/v1/folders/${id}`, { ...options, headers: buildHeaders([{ Accept: '*/*' }, options?.headers]), }); } /** * Get folder tree structure * * @example * ```ts * const response = await client.v1.folders.getTree(); * ``` */ getTree(options?: RequestOptions): APIPromise { return this._client.get('/api/v1/folders/tree', options); } /** * Get all materials in folder * * @example * ```ts * const response = await client.v1.folders.listMaterials( * 'id', * ); * ``` */ listMaterials( id: string, query: FolderListMaterialsParams | null | undefined = {}, options?: RequestOptions, ): APIPromise { return this._client.get(path`/api/v1/folders/${id}/materials`, { query, ...options }); } /** * Move folder to new parent * * @example * ```ts * const response = await client.v1.folders.move('id', { * parentFolderId: 'parentFolderId', * }); * ``` */ move(id: string, body: FolderMoveParams, options?: RequestOptions): APIPromise { return this._client.patch(path`/api/v1/folders/${id}/move`, { body, ...options }); } } export interface FolderMetadata { /** * Folder color */ color?: string; /** * Folder icon */ icon?: string; /** * Last activity date */ lastActivity?: string; /** * Number of materials in folder */ materialCount?: number; /** * Total size of materials in folder */ totalSize?: number; } export interface FolderCreateResponse { /** * Folder ID */ _id: string; /** * Creation date */ createdAt: string; /** * Folder name */ name: string; /** * Organization ID */ organizationId: string; /** * Folder status */ status: 'active' | 'deleted'; /** * Last update date */ updatedAt: string; /** * Folder description */ description?: string; /** * Folder metadata */ metadata?: FolderMetadata; /** * Parent folder ID */ parentFolderId?: string | null; } /** * Response for getting folder ID by name */ export interface FolderGetByNameResponse { /** * Folder ID */ folderId: string; } export interface FolderRetrieveResponse { /** * Folder ID */ _id: unknown; /** * Total number of materials */ materialCount: number; /** * Folder name */ name: string; /** * Organization ID */ organizationId: string; /** * Folder status */ status: 'active' | 'deleted'; /** * Subfolders */ subfolders: Array; /** * Creation date */ createdAt?: unknown; /** * Folder description */ description?: string; /** * Folder metadata */ metadata?: FolderMetadata; /** * Parent folder ID */ parentFolderId?: string | null; /** * Last update date */ updatedAt?: unknown; } export interface FolderUpdateResponse { /** * Folder ID */ _id: string; /** * Creation date */ createdAt: string; /** * Folder name */ name: string; /** * Organization ID */ organizationId: string; /** * Folder status */ status: 'active' | 'deleted'; /** * Last update date */ updatedAt: string; /** * Folder description */ description?: string; /** * Folder metadata */ metadata?: FolderMetadata; /** * Parent folder ID */ parentFolderId?: string | null; } export type FolderListResponse = Array; export namespace FolderListResponse { export interface FolderListResponseItem { /** * Folder ID */ _id: string; /** * Creation date */ createdAt: string; /** * Folder name */ name: string; /** * Organization ID */ organizationId: string; /** * Folder status */ status: 'active' | 'deleted'; /** * Last update date */ updatedAt: string; /** * Folder description */ description?: string; /** * Folder metadata */ metadata?: FoldersAPI.FolderMetadata; /** * Parent folder ID */ parentFolderId?: string | null; } } export type FolderGetTreeResponse = Array; export namespace FolderGetTreeResponse { export interface FolderGetTreeResponseItem { /** * Folder ID */ _id: unknown; /** * Folder name */ name: string; /** * Organization ID */ organizationId: string; /** * Folder status */ status: 'active' | 'deleted'; /** * Nested subfolders */ subfolders: Array; /** * Creation date */ createdAt?: unknown; /** * Folder description */ description?: string; /** * Folder metadata */ metadata?: FoldersAPI.FolderMetadata; /** * Parent folder ID */ parentFolderId?: string | null; /** * Last update date */ updatedAt?: unknown; } } export interface FolderListMaterialsResponse { materials?: Array; page?: number; totalCount?: number; totalPages?: number; } export interface FolderMoveResponse { /** * Folder ID */ _id: string; /** * Creation date */ createdAt: string; /** * Folder name */ name: string; /** * Organization ID */ organizationId: string; /** * Folder status */ status: 'active' | 'deleted'; /** * Last update date */ updatedAt: string; /** * Folder description */ description?: string; /** * Folder metadata */ metadata?: FolderMetadata; /** * Parent folder ID */ parentFolderId?: string | null; } export interface FolderCreateParams { /** * Folder name */ name: string; /** * Folder description */ description?: string; /** * Additional metadata */ metadata?: unknown; /** * Parent folder ID */ parentFolderId?: string; } export interface FolderGetByNameParams { /** * Parent folder ID for accurate matching (optional) */ parentFolderId?: string; } export interface FolderUpdateParams { /** * New folder description */ description?: string; /** * Updated metadata */ metadata?: unknown; /** * New folder name */ name?: string; /** * New parent folder ID */ parentFolderId?: string; } export interface FolderListParams { /** * Filter by parent folder */ parentFolderId?: string; } export interface FolderListMaterialsParams { /** * Number of items per page (default: 20, max: 200) */ limit?: string; /** * Page number (default: 1) */ page?: string; /** * Search materials by name */ search?: string; } export interface FolderMoveParams { /** * New parent folder ID or null for root level */ parentFolderId: string | null; } export declare namespace Folders { export { type FolderMetadata as FolderMetadata, type FolderCreateResponse as FolderCreateResponse, type FolderGetByNameResponse as FolderGetByNameResponse, type FolderRetrieveResponse as FolderRetrieveResponse, type FolderUpdateResponse as FolderUpdateResponse, type FolderListResponse as FolderListResponse, type FolderGetTreeResponse as FolderGetTreeResponse, type FolderListMaterialsResponse as FolderListMaterialsResponse, type FolderMoveResponse as FolderMoveResponse, type FolderCreateParams as FolderCreateParams, type FolderGetByNameParams as FolderGetByNameParams, type FolderUpdateParams as FolderUpdateParams, type FolderListParams as FolderListParams, type FolderListMaterialsParams as FolderListMaterialsParams, type FolderMoveParams as FolderMoveParams, }; }