@rezamirzapour/pod-sdk 1.0.7 → 1.0.9
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/README.md +115 -25
- package/dist/index.d.mts +307 -17
- package/dist/index.d.ts +307 -17
- package/dist/index.js +332 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +332 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/crypto.ts","../src/services/sso/index.ts","../src/services/customPost/crud.ts","../src/services/customPost/index.ts","../src/services/podspace/uploadDownload.ts","../src/services/podspace/files.ts","../src/services/podspace/folders.ts","../src/services/podspace/resumable.ts","../src/services/podspace/links.ts","../src/services/podspace/shares.ts","../src/services/podspace/trash.ts","../src/services/podspace/tags.ts","../src/services/podspace/bookmarks.ts","../src/services/podspace/metadata.ts","../src/services/podspace/userGroups.ts","../src/services/podspace/workspaces.ts","../src/services/podspace/me.ts","../src/services/podspace/index.ts","../src/services/podform/index.ts","../src/services/notification/index.ts","../src/services/social/index.ts","../src/services/cms/formatter.ts","../src/services/cms/product.ts","../src/services/cms/tags.ts","../src/services/cms/index.ts","../src/services/iums/index.ts","../src/constants.ts","../src/client.ts"],"names":["createNextHttp"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Cryptographic and encoding utilities for POD Platform services.\n * Uses standard Web Crypto API (supported natively in Node.js 18+, Browsers, and Edge).\n */\n\nexport function encodeBase64(str: string): string {\n if (typeof btoa === 'function') {\n return btoa(str);\n }\n return Buffer.from(str).toString('base64');\n}\n\nexport async function createRsaSignature(\n value: string,\n privateKeyPem: string,\n encoding: 'base64' | 'hex' = 'base64'\n): Promise<string> {\n const pemHeader = '-----BEGIN PRIVATE KEY-----';\n const pemFooter = '-----END PRIVATE KEY-----';\n const pemContents = privateKeyPem\n .replace(pemHeader, '')\n .replace(pemFooter, '')\n .replace(/\\s+/g, '');\n\n const binaryString = typeof atob === 'function' ? atob(pemContents) : Buffer.from(pemContents, 'base64').toString('binary');\n const binaryDer = Uint8Array.from(binaryString, (c) => c.charCodeAt(0));\n\n const cryptoKey = await crypto.subtle.importKey(\n 'pkcs8',\n binaryDer.buffer,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256',\n },\n false,\n ['sign']\n );\n\n const encoder = new TextEncoder();\n const data = encoder.encode(value);\n const signature = await crypto.subtle.sign('RSASSA-PKCS1-v1_5', cryptoKey, data);\n const rawBytes = new Uint8Array(signature);\n\n if (encoding === 'base64') {\n if (typeof btoa === 'function') {\n return btoa(String.fromCharCode(...rawBytes));\n }\n return Buffer.from(rawBytes).toString('base64');\n }\n\n return Array.from(rawBytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nexport async function generatePodSignatureHeader(keyId: string, privateKeyPem?: string): Promise<string> {\n if (!privateKeyPem) return '';\n const sign = await createRsaSignature('host: accounts.pod.ir', privateKeyPem, 'base64');\n return `Signature keyId=${keyId}, signature=${sign}, headers=host`;\n}\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport { encodeBase64, generatePodSignatureHeader } from '../../utils/crypto';\nimport type {\n HandshakeResponse,\n TokenResponse,\n VerifyResponse,\n SsoUserProfile,\n SendOtpOptions,\n} from './types';\nimport type { PodResponse } from '../../types';\n\nexport interface SsoServiceOptions {\n baseUrl: string;\n clientId: string;\n clientSecret?: string;\n apiToken?: string;\n privateKeyPem?: string;\n websiteUrl?: string;\n revalidate?: number | string;\n}\n\nexport class SsoService {\n private http: NextHttp;\n private clientId: string;\n private clientSecret: string;\n private apiToken: string;\n private privateKeyPem: string;\n private websiteUrl: string;\n private revalidate: number;\n\n constructor(options: SsoServiceOptions) {\n this.clientId = options.clientId || '';\n this.clientSecret = options.clientSecret || '';\n this.apiToken = options.apiToken || '';\n this.privateKeyPem = options.privateKeyPem || '';\n this.websiteUrl = options.websiteUrl || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-SSO',\n });\n }\n\n /**\n * Performs handshake with POD SSO to obtain a keyId for OTP signing.\n */\n public async handshake(deviceUid: string, ip: string): Promise<PodResponse<HandshakeResponse>> {\n const params = {\n device_type: 'Desktop',\n algorithm: 'rsa-sha256',\n device_uid: deviceUid,\n device_client_ip: ip,\n };\n\n try {\n const result = await this.http.post<HandshakeResponse>(\n `/oauth2/clients/handshake/${this.clientId}`,\n undefined,\n {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: `Bearer ${this.apiToken}`,\n },\n }\n );\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Sends an OTP SMS to the specified phone number.\n */\n public async sendOtpCode(\n keyId: string,\n phoneNumber: string,\n options?: SendOtpOptions\n ): Promise<{ hasError: boolean; authorization?: string; identity?: string; result?: any; message?: string }> {\n try {\n const authorization = await generatePodSignatureHeader(keyId, this.privateKeyPem);\n const params = {\n identityType: options?.identityType || 'phone_number',\n response_type: options?.response_type || 'code',\n referrerType: options?.referrerType || 'username',\n linkDeliveryType: options?.linkDeliveryType || 'SMS',\n scope: options?.scope || 'phone profile',\n redirect_uri: options?.redirect_uri || `${this.websiteUrl}/login`,\n };\n\n const result = await this.http.post(`/oauth2/otp/authorize/${phoneNumber}`, undefined, {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: authorization,\n },\n });\n\n return {\n hasError: false,\n authorization,\n identity: phoneNumber,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n };\n }\n }\n\n /**\n * Verifies an OTP code received by SMS.\n */\n public async verifyOtpCode(\n authorization: string,\n phoneNumber: string,\n code: string,\n redirectUri?: string\n ): Promise<PodResponse<VerifyResponse>> {\n const params = {\n otp: code,\n redirect_uri: redirectUri || `${this.websiteUrl}/login`,\n };\n\n try {\n const result = await this.http.post<VerifyResponse>(\n `/oauth2/otp/verify/${phoneNumber}`,\n undefined,\n {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: authorization,\n },\n }\n );\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.data?.error || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Exchanges authorization code for access & refresh tokens.\n */\n public async generateToken(code: string, redirectUri?: string): Promise<PodResponse<TokenResponse>> {\n const clientSignature = encodeBase64(`${this.clientId}:${this.clientSecret}`);\n const params = {\n grant_type: 'authorization_code',\n code,\n redirect_uri: redirectUri || `${this.websiteUrl}/login`,\n };\n\n try {\n const result = await this.http.post<TokenResponse>('/oauth2/token', undefined, {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: `Basic ${clientSignature}`,\n },\n });\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Refreshes an expired access token using a refresh token.\n */\n public async refreshToken(refreshToken: string): Promise<PodResponse<TokenResponse>> {\n const clientSignature = encodeBase64(`${this.clientId}:${this.clientSecret}`);\n const params = {\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n };\n\n try {\n const result = await this.http.post<TokenResponse>('/oauth2/token', undefined, {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n Authorization: `Basic ${clientSignature}`,\n },\n });\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Fetches user profile from SSO using the access token.\n */\n public async getUserProfile(accessToken: string): Promise<PodResponse<SsoUserProfile>> {\n try {\n const result = await this.http.get<SsoUserProfile>('/users', {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n next: this.revalidate ? { revalidate: this.revalidate } : undefined,\n });\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.message,\n errorCode: err.status,\n };\n }\n }\n}\n\nexport * from './types';\n","import type { CustomPostService } from './index';\nimport type {\n CustomPostCrudConfig,\n Metadata,\n SearchTimelineByMetadataParam,\n SearchTimelineResponse,\n GetCustomPostResponse,\n AddCustomPostResponse,\n} from './types';\nimport type { RequestOptions } from '@rezamirzapour/http';\n\n/**\n * Generic Type-Safe CRUD Repository built on top of POD CustomPost service.\n * Allows managing any arbitrary business entity (Articles, Products, Courses, etc.)\n * with full typing and metadata binding.\n */\nexport class CustomPostCrudService<DataType> {\n constructor(\n private readonly service: CustomPostService,\n private readonly config: CustomPostCrudConfig\n ) {}\n\n protected buildMetadata(data: DataType): Metadata<DataType> {\n return {\n objectInfo: {\n type: this.config.type,\n detailedType: this.config.detailedType,\n },\n data,\n };\n }\n\n /**\n * Searches and retrieves all entities matching the query.\n */\n public async getAll(\n params?: SearchTimelineByMetadataParam<Metadata<DataType>>,\n options?: RequestOptions\n ): Promise<SearchTimelineResponse<Metadata<DataType>>> {\n return this.service.searchTimelineByMetadata<Metadata<DataType>>(\n params || {},\n options\n );\n }\n\n /**\n * Retrieves a single entity by its numerical ID.\n */\n public async getById(\n id: number,\n options?: RequestOptions\n ): Promise<GetCustomPostResponse<Metadata<DataType>>> {\n return this.service.getCustomPost<Metadata<DataType>>(\n { id, offset: 0, size: 1 },\n options\n );\n }\n\n /**\n * Creates a new entity.\n */\n public async create(\n data: DataType,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n return this.service.addCustomPost<Metadata<DataType>>(\n {\n name: this.config.name,\n content: this.config.content || ' ',\n metadata: this.buildMetadata(data),\n },\n options\n );\n }\n\n /**\n * Creates multiple entities in batch.\n */\n public async createMultiple(\n dataList: DataType[],\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>[]> {\n const items = dataList.map((data) => ({\n name: this.config.name,\n content: this.config.content || ' ',\n metadata: this.buildMetadata(data),\n }));\n return this.service.addCustomPostList<Metadata<DataType>>(items, options);\n }\n\n /**\n * Updates an existing entity by entityId.\n */\n public async update(\n entityId: number,\n data: DataType,\n enable: boolean = true,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n return this.service.updateCustomPost<Metadata<DataType>>(\n {\n entityId,\n name: this.config.name,\n content: this.config.content || ' ',\n metadata: this.buildMetadata(data),\n enable,\n },\n options\n );\n }\n\n /**\n * Creates a post and automatically updates it by binding the generated entityId into the record data.\n */\n public async createAndBindEntityId(\n data: DataType,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n const createResponse = await this.create(data, options);\n if (!createResponse.hasError && createResponse.result?.entityId) {\n return this.update(\n createResponse.result.entityId,\n {\n ...data,\n entityId: createResponse.result.entityId,\n },\n true,\n options\n );\n }\n return createResponse;\n }\n\n /**\n * Archives (disables) an entity without deleting its history.\n */\n public async archive(\n entityId: number,\n data: DataType,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n return this.update(entityId, data, false, options);\n }\n\n /**\n * Deletes an entity permanently.\n */\n public async delete(entityId: number, options?: RequestOptions): Promise<AddCustomPostResponse> {\n return this.service.deleteCustomPost(entityId, options);\n }\n}\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport { CustomPostCrudService } from './crud';\nimport type {\n SearchTimelineByMetadataParam,\n SearchTimelineResponse,\n GetCustomPostParams,\n GetCustomPostResponse,\n AddCustomPostParams,\n UpdateCustomPostParams,\n AddCustomPostResponse,\n CustomPostCrudConfig,\n} from './types';\n\nexport interface CustomPostServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n}\n\nexport class CustomPostService {\n private http: NextHttp;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: CustomPostServiceOptions) {\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-CustomPost',\n headers: {\n _token_: this.apiToken,\n },\n });\n }\n\n private safeParseJson(value: any): any {\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n return value;\n }\n\n /**\n * Searches timeline entries by structured metadata query, returning typed items.\n */\n public async searchTimelineByMetadata<T extends object = any>(\n params: SearchTimelineByMetadataParam<T>,\n options?: RequestOptions\n ): Promise<SearchTimelineResponse<T>> {\n const rawParams = {\n ...params,\n ...(params.metadata ? { metadata: typeof params.metadata === 'object' ? JSON.stringify(params.metadata) : params.metadata } : {}),\n ...(params.metaQuery ? { metaQuery: typeof params.metaQuery === 'object' ? JSON.stringify(params.metaQuery) : params.metaQuery } : {}),\n };\n\n const response = await this.http.get<SearchTimelineResponse<any>>(\n '/srv/core/nzh/biz/searchTimelineByMetadata',\n {\n ...options,\n params: rawParams,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n }\n );\n\n if (response?.result && Array.isArray(response.result)) {\n response.result = response.result.map((el: any) => {\n if (el?.item?.metadata) {\n el.item.metadata = this.safeParseJson(el.item.metadata);\n }\n return el;\n });\n }\n\n return response as SearchTimelineResponse<T>;\n }\n\n /**\n * Retrieves custom posts list or a single post by entityId/id with typed metadata.\n */\n public async getCustomPost<T = any>(\n params: GetCustomPostParams,\n options?: RequestOptions\n ): Promise<GetCustomPostResponse<T>> {\n const response = await this.http.get<GetCustomPostResponse<any>>(\n '/srv/core/nzh/biz/customPostList',\n {\n ...options,\n params,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n }\n );\n\n if (response?.result && Array.isArray(response.result)) {\n response.result = response.result.map((el: any) => {\n if (el?.metadata) {\n el.metadata = this.safeParseJson(el.metadata);\n }\n return el;\n });\n }\n\n return response as GetCustomPostResponse<T>;\n }\n\n /**\n * Creates a new custom post with strongly typed metadata.\n */\n public async addCustomPost<T = any>(\n params: AddCustomPostParams<T>,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<T>> {\n const payload = {\n ...params,\n metadata: typeof params.metadata === 'object' ? JSON.stringify(params.metadata) : params.metadata,\n content: params.content || ' ',\n };\n\n const response = await this.http.post<AddCustomPostResponse<any>>(\n '/srv/core/nzh/biz/addCustomPost',\n new URLSearchParams(payload as any),\n {\n ...options,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n _token_: this.apiToken,\n ...(options?.headers as any),\n },\n }\n );\n\n if (response?.result?.metadata) {\n response.result.metadata = this.safeParseJson(response.result.metadata);\n }\n\n return response as AddCustomPostResponse<T>;\n }\n\n /**\n * Creates multiple custom posts in bulk.\n */\n public async addCustomPostList<T = any>(\n items: AddCustomPostParams<T>[],\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<T>[]> {\n const promises = items.map((item) => this.addCustomPost<T>(item, options));\n return Promise.all(promises);\n }\n\n /**\n * Updates an existing custom post by its entityId with typed metadata.\n */\n public async updateCustomPost<T = any>(\n params: UpdateCustomPostParams<T>,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<T>> {\n const payload = {\n ...params,\n ...(params.metadata ? { metadata: typeof params.metadata === 'object' ? JSON.stringify(params.metadata) : params.metadata } : {}),\n ...(params.entityId ? { entityId: params.entityId.toString() } : {}),\n };\n\n const response = await this.http.post<AddCustomPostResponse<any>>(\n '/srv/core/nzh/biz/updateCustomPost',\n new URLSearchParams(payload as any),\n {\n ...options,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n _token_: this.apiToken,\n ...(options?.headers as any),\n },\n }\n );\n\n if (response?.result?.metadata) {\n response.result.metadata = this.safeParseJson(response.result.metadata);\n }\n\n return response as AddCustomPostResponse<T>;\n }\n\n /**\n * Deletes a custom post by entityId.\n */\n public async deleteCustomPost(entityId: number, options?: RequestOptions): Promise<AddCustomPostResponse> {\n return this.http.post<AddCustomPostResponse>(\n '/srv/core/nzh/biz/deleteCustomPost',\n undefined,\n {\n ...options,\n params: { entityId },\n }\n );\n }\n\n /**\n * Factory method to create a high-level Generic CRUD repository for any entity type.\n */\n public createCrud<DataType>(config: CustomPostCrudConfig): CustomPostCrudService<DataType> {\n return new CustomPostCrudService<DataType>(this, config);\n }\n}\n\nexport * from './types';\nexport * from './crud';\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFile,\n PodspaceUploadResponse,\n PodspaceRestResponse,\n UploadFileParams,\n UploadMultipleFilesParams,\n UploadImageBase64Params,\n ReplaceFileParams,\n DownloadFileParams,\n DownloadImageParams,\n DownloadThumbnailParams,\n DownloadZipParams,\n GetUploadLinkParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceUploadDownloadServiceOptions {\n http: NextHttp;\n baseUrl: string;\n revalidate?: number;\n}\n\nexport class PodspaceUploadDownloadService {\n private http: NextHttp;\n private baseUrl: string;\n private revalidate: number;\n\n constructor(options: PodspaceUploadDownloadServiceOptions) {\n this.http = options.http;\n this.baseUrl = options.baseUrl;\n this.revalidate = options.revalidate || 0;\n }\n\n /**\n * Upload a single file via FormData to POD Podspace storage.\n * Swagger: POST /api/files\n */\n public async uploadFile(\n formData: FormData,\n paramsOrPath: string | UploadFileParams = '/',\n isPublic: boolean = true,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceUploadResponse> {\n const queryParams: Record<string, any> =\n typeof paramsOrPath === 'string'\n ? { path: paramsOrPath, isPublic }\n : { path: '/', isPublic: true, ...paramsOrPath };\n\n if (Array.isArray(queryParams.tags)) {\n queryParams.tags = queryParams.tags.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n if (Array.isArray(queryParams.zoneNames)) {\n queryParams.zoneNames = queryParams.zoneNames.join(',');\n }\n\n return this.http.post<PodspaceUploadResponse>('/api/files', formData, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Upload multiple files simultaneously using FormData.\n * Swagger: POST /api/files/multiple\n */\n public async uploadMultipleFiles(\n formData: FormData,\n params: UploadMultipleFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.tags)) {\n queryParams.tags = queryParams.tags.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n if (Array.isArray(queryParams.zoneNames)) {\n queryParams.zoneNames = queryParams.zoneNames.join(',');\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFile[]>>('/api/files/multiple', formData, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Upload an image formatted as Base64 string.\n * Swagger: POST /api/images/base64\n */\n public async uploadImageBase64(\n params: UploadImageBase64Params,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n const { filename, file, ...rest } = params;\n const queryParams: Record<string, any> = {\n filename,\n file,\n ...rest,\n };\n if (Array.isArray(queryParams.tags)) {\n queryParams.tags = queryParams.tags.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFile>>('/api/images/base64', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Replace the content of an existing file.\n * Swagger: PUT /api/files/{hash}\n */\n public async replaceFile(\n hash: string,\n formData: FormData,\n params: ReplaceFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.put<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}`, formData, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Upload a file into an existing reserved link hash.\n * Swagger: POST /api/files/{hash}\n */\n public async uploadByLink(\n hash: string,\n formData: FormData,\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}`, formData, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Downloads raw file data.\n * Swagger: GET /api/files/{hash}\n */\n public async downloadFile(\n hash: string,\n params: DownloadFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/files/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Downloads processed image with optional resize, crop, or format conversion.\n * Swagger: GET /api/v2/images/{hash}\n */\n public async downloadImage(\n hash: string,\n params: DownloadImageParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/v2/images/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Downloads file thumbnail.\n * Swagger: GET /api/files/{hash}/thumbnail\n */\n public async downloadThumbnail(\n hash: string,\n params: DownloadThumbnailParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/files/${hash}/thumbnail`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Downloads multiple files and folders compressed into a single zip file.\n * Swagger: GET /api/files\n */\n public async downloadFilesAsZip(\n params: DownloadZipParams,\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n const entityHashes = Array.isArray(params.entityHashes)\n ? params.entityHashes.join(',')\n : params.entityHashes;\n\n return this.http.get<Blob>('/api/files', {\n params: {\n entityHashes,\n customName: params.customName,\n password: params.password,\n },\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Obtains a pre-signed upload link.\n * Swagger: GET /api/files/link\n */\n public async getUploadLink(\n params: GetUploadLinkParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ link: string; hash?: string }>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) {\n queryParams.zoneNames = queryParams.zoneNames.join(',');\n }\n if (Array.isArray(queryParams.fileTypeLimits)) {\n queryParams.fileTypeLimits = queryParams.fileTypeLimits.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.get<PodspaceRestResponse<{ link: string; hash?: string }>>('/api/files/link', {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Builds the direct URL to view or download a file.\n */\n public getFileUrl(hash: string, isPublic: boolean = true): string {\n return `${this.baseUrl}/api/files/${hash}?isPublic=${isPublic}`;\n }\n\n /**\n * Builds URL to view/download an image with optional dimensions/crops.\n */\n public getImageUrl(hash: string, params: DownloadImageParams = {}): string {\n const search = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined && v !== null) {\n search.append(k, String(v));\n }\n }\n const qs = search.toString();\n return `${this.baseUrl}/api/v2/images/${hash}${qs ? '?' + qs : ''}`;\n }\n\n /**\n * Builds URL for a file thumbnail.\n */\n public getThumbnailUrl(hash: string, params: DownloadThumbnailParams = {}): string {\n const search = new URLSearchParams();\n if (params.password) search.append('password', params.password);\n if (params.cachePolicy) search.append('cachePolicy', params.cachePolicy);\n if (params.accessLevel) search.append('accessLevel', params.accessLevel);\n const qs = search.toString();\n return `${this.baseUrl}/api/files/${hash}/thumbnail${qs ? '?' + qs : ''}`;\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFile,\n SpaceEntity,\n SpaceFolder,\n FileVersion,\n ApiPageList,\n PodspaceRestResponse,\n SearchFilesParams,\n CachePolicy,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceFilesServiceOptions {\n http: NextHttp;\n revalidate?: number;\n}\n\nexport class PodspaceFilesService {\n private http: NextHttp;\n private revalidate: number;\n\n constructor(options: PodspaceFilesServiceOptions) {\n this.http = options.http;\n this.revalidate = options.revalidate || 0;\n }\n\n /**\n * Retrieves full detail of a file or folder by its hash.\n * Swagger: GET /api/files/{hash}/detail\n */\n public async getFileDetail(\n hash: string,\n params: {\n password?: string;\n breadcrumb?: boolean;\n shareHash?: string;\n nativeMetadata?: boolean;\n includeSizeAndCount?: boolean;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.get<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}/detail`, {\n params,\n headers: options.headers,\n signal: options.signal,\n next: {\n revalidate: options.revalidate !== undefined ? (options.revalidate === false ? 0 : options.revalidate) : this.revalidate,\n },\n });\n }\n\n /**\n * Retrieves file details using its storage path.\n * Swagger: GET /api/files/details\n */\n public async getFileDetailByPath(\n path: string,\n params: { parentHash?: string; password?: string; entityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.get<PodspaceRestResponse<SpaceFile>>('/api/files/details', {\n params: { path, ...params },\n headers: options.headers,\n signal: options.signal,\n next: {\n revalidate: options.revalidate !== undefined ? (options.revalidate === false ? 0 : options.revalidate) : this.revalidate,\n },\n });\n }\n\n /**\n * Checks if an entity with given name exists in the folder.\n * Swagger: GET /api/files/{hash}/exist\n */\n public async checkEntityExist(\n hash: string,\n fileName: string,\n params: { uniqueName?: boolean; type?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.get<PodspaceRestResponse<boolean>>(`/api/files/${hash}/exist`, {\n params: { fileName, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Renames a file or folder.\n * Swagger: PUT /api/files/{hash}/rename\n */\n public async renameEntity(\n hash: string,\n newName: string,\n uniqueName?: boolean,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/files/${hash}/rename`, {}, {\n params: { newName, uniqueName },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Moves a file or folder to a new destination folder.\n * Swagger: PUT /api/files/{hash}/move\n */\n public async moveEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/files/${hash}/move`, {}, {\n params: { destFolderHash, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Copies a file or folder to a specified destination folder.\n * Swagger: PUT /api/files/{hash}/copy\n */\n public async copyEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean; copyType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/files/${hash}/copy`, {}, {\n params: { destFolderHash, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Moves a file or folder to the trash.\n * Swagger: DELETE /api/files/{hash}\n */\n public async trashEntity(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/files/${hash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Updates file attributes (e.g. streamable flag).\n * Swagger: PATCH /api/files/{hash}\n */\n public async updateFile(\n hash: string,\n params: { streamable?: boolean },\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.patch<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}`, {}, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Searches across user files content and folder names.\n * Swagger: GET /api/files/search\n */\n public async searchFiles(\n params: SearchFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<ApiPageList<SpaceEntity>>> {\n return this.http.get<PodspaceRestResponse<ApiPageList<SpaceEntity>>>('/api/files/search', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of recently accessed/uploaded files.\n * Swagger: GET /api/v2/files/recent\n */\n public async getRecentFiles(\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFile[]>>('/api/v2/files/recent', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves versions history of a file.\n * Swagger: GET /api/files/v2/{hash}/versions\n */\n public async getFileVersions(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<FileVersion[]>> {\n return this.http.get<PodspaceRestResponse<FileVersion[]>>(`/api/files/v2/${hash}/versions`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Rolls back a file to its previous version.\n * Swagger: PATCH /api/files/versions/{hash}\n */\n public async rollbackFileVersion(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.patch<PodspaceRestResponse<SpaceFile>>(`/api/files/versions/${hash}`, {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves native metadata of a file.\n * Swagger: GET /api/v2/files/{hash}/native/metadata\n */\n public async getFileNativeMetadata(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/v2/files/${hash}/native/metadata`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Converts supported document file to PDF.\n * Swagger: GET /api/files/{hash}/convert\n */\n public async convertFileToPdf(\n hash: string,\n convertType: string = 'pdf',\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/files/${hash}/convert`, {\n params: { convertType },\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Retrieves breadcrumb path for a file or folder.\n * Swagger: GET /api/files/{hash}/breadcrumb\n */\n public async getFileBreadcrumb(\n hash: string,\n params: { shareHash?: string; password?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder[]>>(`/api/files/${hash}/breadcrumb`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Compresses multiple files and folders into a zip archive on the cloud.\n * Swagger: POST /api/files/compress\n */\n public async compressToZip(\n params: {\n name: string;\n fileHashes?: string[];\n folderHashes?: string[];\n destFolderHash?: string;\n zoneNames?: string[];\n },\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.fileHashes)) queryParams.fileHashes = queryParams.fileHashes.join(',');\n if (Array.isArray(queryParams.folderHashes)) queryParams.folderHashes = queryParams.folderHashes.join(',');\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n\n return this.http.post<PodspaceRestResponse<SpaceFile>>('/api/files/compress', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Extracts a zip archive to a destination folder.\n * Swagger: PUT /api/files/{hash}/extract\n */\n public async extractZip(\n hash: string,\n params: { destFolderHash?: string; zoneNames?: string[]; uniqueName?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n\n return this.http.put<PodspaceRestResponse<any>>(`/api/files/${hash}/extract`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets or updates the cache policy for a file.\n * Swagger: PUT /api/files/{hash}/cachePolicy\n */\n public async setCachePolicy(\n hash: string,\n cachePolicy: CachePolicy,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.put<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}/cachePolicy`, {}, {\n params: { cachePolicy },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves recent actions and activities done on a file or folder.\n * Swagger: GET /api/files/{hash}/activities\n */\n public async getFileActivities(\n hash: string,\n params: { start?: number; size?: number; order?: string; isDesc?: boolean; pagination?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/files/${hash}/activities`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves specific activity log by type.\n * Swagger: GET /api/files/{hash}/activities/{activity}\n */\n public async getSpecificActivities(\n hash: string,\n activity: string,\n params: { start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/files/${hash}/activities/${activity}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves count of specific activities done on file/folder.\n * Swagger: GET /api/files/{hash}/activities/{activity}/count\n */\n public async getActivitiesCount(\n hash: string,\n activity: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<number>> {\n return this.http.get<PodspaceRestResponse<number>>(`/api/files/${hash}/activities/${activity}/count`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFolder,\n ApiPageList,\n PodspaceRestResponse,\n CreateFolderParams,\n GetFolderChildrenParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceFoldersServiceOptions {\n http: NextHttp;\n revalidate?: number;\n}\n\nexport class PodspaceFoldersService {\n private http: NextHttp;\n private revalidate: number;\n\n constructor(options: PodspaceFoldersServiceOptions) {\n this.http = options.http;\n this.revalidate = options.revalidate || 0;\n }\n\n /**\n * Creates a new folder.\n * Swagger: POST /api/folders\n */\n public async createFolder(\n params: CreateFolderParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n if (Array.isArray(queryParams.tags)) queryParams.tags = queryParams.tags.join(',');\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFolder>>('/api/folders', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Creates nested directories inside a parent folder.\n * Swagger: POST /api/folders/{hash}/directories\n */\n public async createDirectories(\n hash: string,\n directories: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n const dirParam = Array.isArray(directories) ? directories.join(',') : directories;\n\n return this.http.post<PodspaceRestResponse<SpaceFolder[]>>(`/api/folders/${hash}/directories`, {}, {\n params: { directories: dirParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves subfolders and files inside a specified folder.\n * Swagger: GET /api/folders/{hash}/children\n */\n public async getFolderChildren(\n hash: string,\n params: GetFolderChildrenParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<ApiPageList>> {\n return this.http.get<PodspaceRestResponse<ApiPageList>>(`/api/folders/${hash}/children`, {\n params,\n headers: options.headers,\n signal: options.signal,\n next: {\n revalidate: options.revalidate !== undefined ? (options.revalidate === false ? 0 : options.revalidate) : this.revalidate,\n },\n });\n }\n\n /**\n * Retrieves recent folders accessed or created by user.\n * Swagger: GET /api/v2/folders/recent\n */\n public async getRecentFolders(\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder[]>>('/api/v2/folders/recent', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Checks if user has enough space and permission to upload a file into the folder.\n * Swagger: GET /api/folders/{hash}/check/upload\n */\n public async checkFolderUploadAccess(\n hash: string,\n size: number,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.get<PodspaceRestResponse<boolean>>(`/api/folders/${hash}/check/upload`, {\n params: { size },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves folder actions summary for a specific date.\n * Swagger: GET /api/folders/{folderHash}/actions\n */\n public async getFolderActions(\n folderHash: string,\n date: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/folders/${folderHash}/actions`, {\n params: { date },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFile,\n PodspaceRestResponse,\n FinalizeResumableParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceResumableServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceResumableService {\n private http: NextHttp;\n\n constructor(options: PodspaceResumableServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Initiates a resumable upload session.\n * Swagger: POST /api/files/resumable\n */\n public async create(\n headers: Record<string, string> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ id: string; location?: string }>> {\n return this.http.post<PodspaceRestResponse<{ id: string; location?: string }>>('/api/files/resumable', {}, {\n headers: { ...headers, ...options.headers },\n signal: options.signal,\n });\n }\n\n /**\n * Uploads a binary chunk to a resumable upload session.\n * Swagger: PATCH /api/files/resumable/{id}\n */\n public async append(\n id: string,\n chunk: Blob | Buffer | Uint8Array,\n offset: number,\n options: PodspaceRequestOptions = {}\n ): Promise<any> {\n return this.http.patch(`/api/files/resumable/${id}`, chunk, {\n headers: {\n 'Upload-Offset': String(offset),\n 'Content-Type': 'application/offset+octet-stream',\n ...options.headers,\n },\n signal: options.signal,\n });\n }\n\n /**\n * Checks current uploaded byte offset for a resumable session.\n * Swagger: HEAD /api/files/resumable/{id}\n */\n public async getStatus(\n id: string,\n options: PodspaceRequestOptions = {}\n ): Promise<number> {\n const res = await this.http.head(`/api/files/resumable/${id}`, {\n headers: options.headers,\n signal: options.signal,\n });\n const offset = res?.headers?.get ? res.headers.get('upload-offset') : (res as any)?.headers?.['upload-offset'];\n return offset ? parseInt(offset, 10) : 0;\n }\n\n /**\n * Finalizes resumable upload and creates the file entity in the user's storage.\n * Swagger: POST /api/files/resumable/{id}/finalize\n */\n public async finalizeUpload(\n id: string,\n params: FinalizeResumableParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.tags)) queryParams.tags = queryParams.tags.join(',');\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/files/resumable/${id}/finalize`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n PodspaceRestResponse,\n ApiPageList,\n CreateLinkParams,\n UpdateLinkParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceLinksServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceLinksService {\n private http: NextHttp;\n\n constructor(options: PodspaceLinksServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Generates a download or integration public link for a file.\n * Swagger: GET /api/links/files/{hash}\n */\n public async createLink(\n hash: string,\n params: CreateLinkParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ link: string; [key: string]: any }>> {\n return this.http.get<PodspaceRestResponse<{ link: string; [key: string]: any }>>(`/api/links/files/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of links created by current user.\n * Swagger: GET /api/links\n */\n public async getUserLinks(\n params: {\n linkType: string;\n folderHash?: string;\n typeLimits?: string;\n oneTimeUse?: boolean;\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n },\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<ApiPageList>> {\n return this.http.get<PodspaceRestResponse<ApiPageList>>('/api/links', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves details of a specific link.\n * Swagger: GET /api/links/{link}/detail\n */\n public async getLinkDetail(\n link: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/links/${link}/detail`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Updates settings and permissions of a link.\n * Swagger: PATCH /api/links/{link}\n */\n public async updateLink(\n link: string,\n params: UpdateLinkParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.fileTypeLimits)) {\n queryParams.fileTypeLimits = queryParams.fileTypeLimits.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.patch<PodspaceRestResponse<any>>(`/api/links/${link}`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Revokes an existing link.\n * Swagger: DELETE /api/links/{link}\n */\n public async revokeLink(\n link: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/links/${link}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Downloads a file using its public shared link.\n * Swagger: GET /api/links/{hash}\n */\n public async downloadFileByLink(\n hash: string,\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/links/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n Share,\n PodspaceRestResponse,\n ShareEntityParams,\n MakePublicParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceSharesServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceSharesService {\n private http: NextHttp;\n\n constructor(options: PodspaceSharesServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Shares a file or folder with a user by their identity (username/ssoId).\n * Swagger: POST /api/files/{hash}/shares/users/{identity}\n */\n public async shareWithUser(\n hash: string,\n identity: string | number,\n params: ShareEntityParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.access)) queryParams.access = queryParams.access.join(',');\n\n return this.http.post<PodspaceRestResponse<Share>>(`/api/files/${hash}/shares/users/${identity}`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes share for a specific user identity.\n * Swagger: DELETE /api/files/{hash}/shares/users/{identity}\n */\n public async removeShareWithUser(\n hash: string,\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/files/${hash}/shares/users/${identity}`, {\n params: { identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Makes a file or folder public with optional password and expiration.\n * Swagger: POST /api/files/{hash}/public\n */\n public async makePublic(\n hash: string,\n params: MakePublicParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.access)) queryParams.access = queryParams.access.join(',');\n\n return this.http.post<PodspaceRestResponse<Share>>(`/api/files/${hash}/public`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of files and folders shared with current user.\n * Swagger: GET /api/shares\n */\n public async getSharedWithMe(\n params: {\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n identity?: string;\n identityType?: string;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share[]>> {\n return this.http.get<PodspaceRestResponse<Share[]>>('/api/shares', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves details of a share by its share hash.\n * Swagger: GET /api/shares/{shareHash}\n */\n public async getShareDetail(\n shareHash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share>> {\n return this.http.get<PodspaceRestResponse<Share>>(`/api/shares/${shareHash}`, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Revokes a share by its share hash.\n * Swagger: DELETE /api/shares/{shareHash}\n */\n public async revokeShare(\n shareHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/shares/${shareHash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves shares list of a specific file or folder.\n * Swagger: GET /api/files/{hash}/shares\n */\n public async getFileShares(\n hash: string,\n params: { person?: string; identityType?: string; start?: number; size?: number; pageList?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share[]>> {\n return this.http.get<PodspaceRestResponse<Share[]>>(`/api/files/${hash}/shares`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets or removes password for a share using the share hash.\n * Swagger: PUT /api/shares/{hash}/password\n */\n public async setSharePassword(\n shareHash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>(`/api/shares/${shareHash}/password`, {}, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets or removes password for a share using the entity hash.\n * Swagger: PUT /api/files/{hash}/shares/password\n */\n public async setEntityPassword(\n entityHash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>(`/api/files/${entityHash}/shares/password`, {}, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceEntity,\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceTrashServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceTrashService {\n private http: NextHttp;\n\n constructor(options: PodspaceTrashServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves list of trashed files and folders.\n * Swagger: GET /api/trashes\n */\n public async getTrashList(\n params: {\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n filterAttribute?: string;\n filterValue?: string;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.http.get<PodspaceRestResponse<SpaceEntity[]>>('/api/trashes', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Restores a single file or folder from the trash.\n * Swagger: PUT /api/trashes/{hash}/restore\n */\n public async restore(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/trashes/${hash}/restore`, {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Restores all entities from trash.\n * Swagger: POST /api/trashes/restore\n */\n public async restoreAll(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>('/api/trashes/restore', {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Permanently deletes a single file or folder from the trash.\n * Swagger: DELETE /api/trashes/{hash}\n */\n public async deletePermanently(\n hash: string,\n force?: boolean,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/trashes/${hash}`, {\n params: { force },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Permanently empties all files and folders from the trash.\n * Swagger: DELETE /api/trashes\n */\n public async emptyTrash(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/trashes', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets auto clean-up period for trash in days.\n * Swagger: POST /api/trashes/periods/{period}\n */\n public async setAutoCleanUpPeriod(\n period: number | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>(`/api/trashes/periods/${period}`, {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceEntity,\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceTagsServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceTagsService {\n private http: NextHttp;\n\n constructor(options: PodspaceTagsServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Adds tags to a file or folder.\n * Swagger: POST /api/tags\n */\n public async addTags(\n hash: string,\n tags: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n const tagsParam = Array.isArray(tags) ? tags.join(',') : tags;\n\n return this.http.post<PodspaceRestResponse<boolean>>('/api/tags', {}, {\n params: { hash, tags: tagsParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes tags from a file or folder.\n * Swagger: DELETE /api/tags\n */\n public async deleteTags(\n hash: string,\n tags: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n const tagsParam = Array.isArray(tags) ? tags.join(',') : tags;\n\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/tags', {\n params: { hash, tags: tagsParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves tags of a file or folder.\n * Swagger: GET /api/tags/entities/{hash}\n */\n public async getEntityTags(\n hash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string[]>> {\n return this.http.get<PodspaceRestResponse<string[]>>(`/api/tags/entities/${hash}`, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Searches for existing tags with autocomplete.\n * Swagger: GET /api/tags/search/{tagName}\n */\n public async searchTags(\n tagName: string,\n params: { start?: number; size?: number; order?: string; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string[]>> {\n return this.http.get<PodspaceRestResponse<string[]>>(`/api/tags/search/${tagName}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of files/folders that contain a specific tag.\n * Swagger: GET /api/tags/{tagName}\n */\n public async getEntitiesByTag(\n tagName: string,\n params: { start?: number; size?: number; order?: string; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.http.get<PodspaceRestResponse<SpaceEntity[]>>(`/api/tags/${tagName}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceEntity,\n PodspaceRestResponse,\n GetBookmarksParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceBookmarksServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceBookmarksService {\n private http: NextHttp;\n\n constructor(options: PodspaceBookmarksServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves list of bookmarked files and folders.\n * Swagger: GET /api/bookmarks\n */\n public async getBookmarks(\n params: {\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n filterAttribute?: string;\n filterValue?: string;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.http.get<PodspaceRestResponse<SpaceEntity[]>>('/api/bookmarks', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds a file or folder to bookmarks.\n * Swagger: POST /api/bookmarks\n */\n public async addBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>('/api/bookmarks', {}, {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes a file or folder from bookmarks.\n * Swagger: DELETE /api/bookmarks\n */\n public async removeBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/bookmarks', {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceMetadataServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceMetadataService {\n private http: NextHttp;\n\n constructor(options: PodspaceMetadataServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves metadata key-value dictionary for a file.\n * Swagger: GET /api/files/{hash}/metadata\n */\n public async getMetadata(\n hash: string,\n keys?: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Record<string, any>>> {\n const keysParam = Array.isArray(keys) ? keys.join(',') : keys;\n return this.http.get<PodspaceRestResponse<Record<string, any>>>(`/api/files/${hash}/metadata`, {\n params: { keys: keysParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds or updates metadata dictionary for a file.\n * Swagger: PUT /api/files/{hash}/metadata\n */\n public async setMetadata(\n hash: string,\n metadata: Record<string, any>,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>(`/api/files/${hash}/metadata`, metadata, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes specific metadata keys from a file.\n * Swagger: DELETE /api/files/{hash}/metadata\n */\n public async deleteMetadata(\n hash: string,\n keys: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n const keysParam = Array.isArray(keys) ? keys.join(',') : keys;\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/files/${hash}/metadata`, {\n params: { keys: keysParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Searches metadata across files with specified parent.\n * Swagger: POST /api/files/metadata/search\n */\n public async searchMetadata(\n queryBody: Record<string, any>,\n params: { parentHash?: string; start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.post<PodspaceRestResponse<any>>('/api/files/metadata/search', queryBody, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves description of a file or folder.\n * Swagger: GET /api/files/description\n */\n public async getDescription(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string>> {\n return this.http.get<PodspaceRestResponse<string>>('/api/files/description', {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds or updates description of a file or folder.\n * Swagger: PUT /api/files/description\n */\n public async setDescription(\n hash: string,\n description: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>('/api/files/description', {}, {\n params: { hash, description },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes description of a file or folder.\n * Swagger: DELETE /api/files/description\n */\n public async deleteDescription(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/files/description', {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n UserGroup,\n SpaceFile,\n PodspaceUser,\n PodspaceRestResponse,\n CreateUserGroupParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceUserGroupsServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceUserGroupsService {\n private http: NextHttp;\n\n constructor(options: PodspaceUserGroupsServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Creates a new user group for team collaboration.\n * Swagger: POST /api/usergroups\n */\n public async createUserGroup(\n params: CreateUserGroupParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserGroup>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n if (typeof queryParams.metadata === 'object') queryParams.metadata = JSON.stringify(queryParams.metadata);\n\n return this.http.post<PodspaceRestResponse<UserGroup>>('/api/usergroups', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user group info by hash.\n * Swagger: GET /api/usergroups/{userGroupHash}\n */\n public async getUserGroup(\n userGroupHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserGroup>> {\n return this.http.get<PodspaceRestResponse<UserGroup>>(`/api/usergroups/${userGroupHash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes a user group.\n * Swagger: DELETE /api/usergroups/{userGroupHash}\n */\n public async deleteUserGroup(\n userGroupHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/usergroups/${userGroupHash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of users in a user group.\n * Swagger: GET /api/usergroups/{userGroupHash}/users\n */\n public async getUserGroupUsers(\n userGroupHash: string,\n params: { start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<PodspaceUser[]>> {\n return this.http.get<PodspaceRestResponse<PodspaceUser[]>>(`/api/usergroups/${userGroupHash}/users`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds a user to the user group.\n * Swagger: POST /api/usergroups/{userGroupHash}/users\n */\n public async addUserToGroup(\n userGroupHash: string,\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>(`/api/usergroups/${userGroupHash}/users`, {}, {\n params: { identity, identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes a user from the user group.\n * Swagger: DELETE /api/usergroups/{userGroupHash}/users\n */\n public async removeUserFromGroup(\n userGroupHash: string,\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/usergroups/${userGroupHash}/users`, {\n params: { identity, identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of files belonging to user group.\n * Swagger: GET /api/usergroups/{usergroupHash}/files\n */\n public async getUserGroupFiles(\n userGroupHash: string,\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFile[]>>(`/api/usergroups/${userGroupHash}/files`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Uploads a file directly into a user group.\n * Swagger: POST /api/usergroups/{userGroupHash}/files\n */\n public async uploadToUserGroup(\n userGroupHash: string,\n formData: FormData,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/usergroups/${userGroupHash}/files`, formData, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Uploads an image directly into a user group.\n * Swagger: POST /api/usergroups/{userGroupHash}/images\n */\n public async uploadImageToUserGroup(\n userGroupHash: string,\n formData: FormData,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/usergroups/${userGroupHash}/images`, formData, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves storage usage report for a user group.\n * Swagger: GET /api/usergroups/{userGroupHash}/usage\n */\n public async getUserGroupUsage(\n userGroupHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/usergroups/${userGroupHash}/usage`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n Workspace,\n WorkspaceMember,\n PodspaceRestResponse,\n CreateWorkspaceParams,\n UpdateWorkspaceParams,\n AccessLevel,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceWorkspacesServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceWorkspacesService {\n private http: NextHttp;\n\n constructor(options: PodspaceWorkspacesServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Creates a new collaborative Workspace.\n * Swagger: POST /api/workspaces\n */\n public async createWorkspace(\n params: CreateWorkspaceParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Workspace>> {\n return this.http.post<PodspaceRestResponse<Workspace>>('/api/workspaces', {}, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves workspace details by its identity/username.\n * Swagger: GET /api/workspaces/{identity}\n */\n public async getWorkspace(\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Workspace>> {\n return this.http.get<PodspaceRestResponse<Workspace>>(`/api/workspaces/${identity}`, {\n params: { identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Updates workspace information.\n * Swagger: PATCH /api/workspaces/{identity}\n */\n public async updateWorkspace(\n identity: string | number,\n params: UpdateWorkspaceParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Workspace>> {\n return this.http.patch<PodspaceRestResponse<Workspace>>(`/api/workspaces/${identity}`, {}, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves members list of a workspace.\n * Swagger: GET /api/workspaces/{identity}/members\n */\n public async getWorkspaceMembers(\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<WorkspaceMember[]>> {\n return this.http.get<PodspaceRestResponse<WorkspaceMember[]>>(`/api/workspaces/${identity}/members`, {\n params: { identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds or updates a member's access level in a workspace.\n * Swagger: PUT /api/workspaces/{identity}/members/{userIdentity}\n */\n public async updateWorkspaceMember(\n identity: string | number,\n userIdentity: string | number,\n accessLevel: AccessLevel,\n params: { identityType?: string; userIdentityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<WorkspaceMember>> {\n return this.http.put<PodspaceRestResponse<WorkspaceMember>>(`/api/workspaces/${identity}/members/${userIdentity}`, {}, {\n params: { accessLevel, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes a member from a workspace.\n * Swagger: DELETE /api/workspaces/{identity}/members/{userIdentity}\n */\n public async removeWorkspaceMember(\n identity: string | number,\n userIdentity: string | number,\n params: { identityType?: string; userIdentityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/workspaces/${identity}/members/${userIdentity}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n PodspaceUser,\n SpaceFolder,\n UserUsageReport,\n UserPlan,\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceMeServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceMeService {\n private http: NextHttp;\n\n constructor(options: PodspaceMeServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves profile information of current authenticated user.\n * Swagger: GET /api/me\n */\n public async getUser(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<PodspaceUser>> {\n return this.http.get<PodspaceRestResponse<PodspaceUser>>('/api/me', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves workspaces accessible to the user.\n * Swagger: GET /api/me/workspaces\n */\n public async getUserWorkspaces(\n params: { start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any[]>> {\n return this.http.get<PodspaceRestResponse<any[]>>('/api/me/workspaces', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user account status on PodSpace.\n * Swagger: GET /api/me/status\n */\n public async getUserStatus(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>('/api/me/status', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user OAuth scopes.\n * Swagger: GET /api/me/scope\n */\n public async getUserScope(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string[]>> {\n return this.http.get<PodspaceRestResponse<string[]>>('/api/me/scope', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves storage usage report for current user.\n * Swagger: GET /api/me/reports/usage\n */\n public async getUserUsageReport(\n majorType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserUsageReport>> {\n return this.http.get<PodspaceRestResponse<UserUsageReport>>('/api/me/reports/usage', {\n params: { majorType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user storage plans and quota limits.\n * Swagger: GET /api/me/plans\n */\n public async getUserPlans(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserPlan[]>> {\n return this.http.get<PodspaceRestResponse<UserPlan[]>>('/api/me/plans', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves or creates the user's personal root folder.\n * Swagger: GET /api/me/folder\n */\n public async getPersonalFolder(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder>>('/api/me/folder', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves or creates the user's dedicated chat attachments folder.\n * Swagger: GET /api/me/folders/chat\n */\n public async getOrCreateChatFolder(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder>>('/api/me/folders/chat', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves the user's avatar image binary or URL.\n * Swagger: GET /api/me/avatar\n */\n public async getUserAvatar(\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>('/api/me/avatar', {\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n}\r\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport { PodspaceUploadDownloadService } from './uploadDownload';\nimport { PodspaceFilesService } from './files';\nimport { PodspaceFoldersService } from './folders';\nimport { PodspaceResumableService } from './resumable';\nimport { PodspaceLinksService } from './links';\nimport { PodspaceSharesService } from './shares';\nimport { PodspaceTrashService } from './trash';\nimport { PodspaceTagsService } from './tags';\nimport { PodspaceBookmarksService } from './bookmarks';\nimport { PodspaceMetadataService } from './metadata';\nimport { PodspaceUserGroupsService } from './userGroups';\nimport { PodspaceWorkspacesService } from './workspaces';\nimport { PodspaceMeService } from './me';\nimport type {\n SpaceFile,\n SpaceFolder,\n SpaceEntity,\n PodspaceUploadResponse,\n PodspaceRestResponse,\n UploadFileParams,\n UploadMultipleFilesParams,\n UploadImageBase64Params,\n ReplaceFileParams,\n DownloadFileParams,\n DownloadImageParams,\n DownloadThumbnailParams,\n DownloadZipParams,\n GetUploadLinkParams,\n CreateFolderParams,\n GetFolderChildrenParams,\n SearchFilesParams,\n ShareEntityParams,\n MakePublicParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n http?: NextHttp;\n}\n\n/**\n * Unified, enterprise PodSpace Cloud Storage Service client.\n * Implements official PodSpace Swagger API (public-apis v4.13.1).\n */\nexport class PodspaceService {\n private http: NextHttp;\n private apiToken: string;\n private baseUrl: string;\n private revalidate: number;\n\n /** Upload & Download sub-service */\n public readonly uploadDownload: PodspaceUploadDownloadService;\n /** Files management sub-service */\n public readonly files: PodspaceFilesService;\n /** Folders management sub-service */\n public readonly folders: PodspaceFoldersService;\n /** Resumable upload sub-service */\n public readonly resumable: PodspaceResumableService;\n /** Links & Public Access sub-service */\n public readonly links: PodspaceLinksService;\n /** Shares & Permissions sub-service */\n public readonly shares: PodspaceSharesService;\n /** Trash & Permanent Delete sub-service */\n public readonly trash: PodspaceTrashService;\n /** Tags sub-service */\n public readonly tags: PodspaceTagsService;\n /** Bookmarks sub-service */\n public readonly bookmarks: PodspaceBookmarksService;\n /** Metadata & Descriptions sub-service */\n public readonly metadata: PodspaceMetadataService;\n /** Team User Groups sub-service */\n public readonly userGroups: PodspaceUserGroupsService;\n /** Workspaces sub-service */\n public readonly workspaces: PodspaceWorkspacesService;\n /** User Account & Quota sub-service */\n public readonly me: PodspaceMeService;\n\n constructor(options: PodspaceServiceOptions) {\n this.baseUrl = options.baseUrl;\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n const authHeader = this.apiToken\n ? this.apiToken.startsWith('Bearer ')\n ? this.apiToken\n : `Bearer ${this.apiToken}`\n : '';\n\n this.http =\n options.http ||\n createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-Podspace',\n headers: {\n ...(authHeader ? { Authorization: authHeader, _token_: this.apiToken } : {}),\n },\n });\n\n this.uploadDownload = new PodspaceUploadDownloadService({\n http: this.http,\n baseUrl: this.baseUrl,\n revalidate: this.revalidate,\n });\n\n this.files = new PodspaceFilesService({\n http: this.http,\n revalidate: this.revalidate,\n });\n\n this.folders = new PodspaceFoldersService({\n http: this.http,\n revalidate: this.revalidate,\n });\n\n this.resumable = new PodspaceResumableService({\n http: this.http,\n });\n\n this.links = new PodspaceLinksService({\n http: this.http,\n });\n\n this.shares = new PodspaceSharesService({\n http: this.http,\n });\n\n this.trash = new PodspaceTrashService({\n http: this.http,\n });\n\n this.tags = new PodspaceTagsService({\n http: this.http,\n });\n\n this.bookmarks = new PodspaceBookmarksService({\n http: this.http,\n });\n\n this.metadata = new PodspaceMetadataService({\n http: this.http,\n });\n\n this.userGroups = new PodspaceUserGroupsService({\n http: this.http,\n });\n\n this.workspaces = new PodspaceWorkspacesService({\n http: this.http,\n });\n\n this.me = new PodspaceMeService({\n http: this.http,\n });\n }\n\n // =========================================================================\n // TOP-LEVEL CONVENIENCE DELEGATES\n // =========================================================================\n\n /**\n * Uploads a single file (via FormData) to POD Podspace storage.\n * Maintains 100% backward compatibility with `uploadFile(formData, path, isPublic)`.\n * Swagger: POST /api/files\n */\n public async uploadFile(\n formData: FormData,\n paramsOrPath: string | UploadFileParams = '/',\n isPublic: boolean = true,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceUploadResponse> {\n return this.uploadDownload.uploadFile(formData, paramsOrPath, isPublic, options);\n }\n\n /**\n * Uploads multiple files simultaneously.\n * Swagger: POST /api/files/multiple\n */\n public async uploadMultipleFiles(\n formData: FormData,\n params: UploadMultipleFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.uploadDownload.uploadMultipleFiles(formData, params, options);\n }\n\n /**\n * Uploads an image from a base64 string.\n * Swagger: POST /api/images/base64\n */\n public async uploadImageBase64(\n params: UploadImageBase64Params,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.uploadDownload.uploadImageBase64(params, options);\n }\n\n /**\n * Replaces the content of an existing file.\n * Swagger: PUT /api/files/{hash}\n */\n public async replaceFile(\n hash: string,\n formData: FormData,\n params: ReplaceFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.uploadDownload.replaceFile(hash, formData, params, options);\n }\n\n /**\n * Downloads raw file data.\n * Swagger: GET /api/files/{hash}\n */\n public async downloadFile(\n hash: string,\n params: DownloadFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadFile(hash, params, options);\n }\n\n /**\n * Downloads processed image (with resize, crop, format options).\n * Swagger: GET /api/v2/images/{hash}\n */\n public async downloadImage(\n hash: string,\n params: DownloadImageParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadImage(hash, params, options);\n }\n\n /**\n * Downloads file thumbnail.\n * Swagger: GET /api/files/{hash}/thumbnail\n */\n public async downloadThumbnail(\n hash: string,\n params: DownloadThumbnailParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadThumbnail(hash, params, options);\n }\n\n /**\n * Downloads multiple files and folders compressed into a zip file.\n * Swagger: GET /api/files\n */\n public async downloadFilesAsZip(\n params: DownloadZipParams,\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadFilesAsZip(params, options);\n }\n\n /**\n * Obtains a pre-signed upload link.\n * Swagger: GET /api/files/link\n */\n public async getUploadLink(\n params: GetUploadLinkParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ link: string; hash?: string }>> {\n return this.uploadDownload.getUploadLink(params, options);\n }\n\n /**\n * Builds direct view or download URL for a file.\n */\n public getFileUrl(hash: string, isPublic: boolean = true): string {\n return this.uploadDownload.getFileUrl(hash, isPublic);\n }\n\n /**\n * Builds direct view URL for an image with crop/dimensions.\n */\n public getImageUrl(hash: string, params: DownloadImageParams = {}): string {\n return this.uploadDownload.getImageUrl(hash, params);\n }\n\n /**\n * Builds thumbnail URL for a file.\n */\n public getThumbnailUrl(hash: string, params: DownloadThumbnailParams = {}): string {\n return this.uploadDownload.getThumbnailUrl(hash, params);\n }\n\n // Folders delegates\n /**\n * Creates a new folder.\n * Swagger: POST /api/folders\n */\n public async createFolder(\n params: CreateFolderParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n return this.folders.createFolder(params, options);\n }\n\n /**\n * Creates nested directories in a parent folder.\n * Swagger: POST /api/folders/{hash}/directories\n */\n public async createDirectories(\n hash: string,\n directories: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n return this.folders.createDirectories(hash, directories, options);\n }\n\n /**\n * Retrieves subfolders and files inside a folder.\n * Swagger: GET /api/folders/{hash}/children\n */\n public async getFolderChildren(\n hash: string,\n params: GetFolderChildrenParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.folders.getFolderChildren(hash, params, options);\n }\n\n // Files delegates\n /**\n * Retrieves details of a file or folder.\n * Swagger: GET /api/files/{hash}/detail\n */\n public async getFileDetail(\n hash: string,\n params: { password?: string; breadcrumb?: boolean; shareHash?: string; nativeMetadata?: boolean; includeSizeAndCount?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.files.getFileDetail(hash, params, options);\n }\n\n /**\n * Retrieves file details using its storage path.\n * Swagger: GET /api/files/details\n */\n public async getFileDetailByPath(\n path: string,\n params: { parentHash?: string; password?: string; entityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.files.getFileDetailByPath(path, params, options);\n }\n\n /**\n * Checks if a file or folder exists.\n * Swagger: GET /api/files/{hash}/exist\n */\n public async checkEntityExist(\n hash: string,\n fileName: string,\n params: { uniqueName?: boolean; type?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.files.checkEntityExist(hash, fileName, params, options);\n }\n\n /**\n * Renames a file or folder.\n * Swagger: PUT /api/files/{hash}/rename\n */\n public async renameEntity(\n hash: string,\n newName: string,\n uniqueName?: boolean,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.files.renameEntity(hash, newName, uniqueName, options);\n }\n\n /**\n * Moves a file or folder.\n * Swagger: PUT /api/files/{hash}/move\n */\n public async moveEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.files.moveEntity(hash, destFolderHash, params, options);\n }\n\n /**\n * Copies a file or folder.\n * Swagger: PUT /api/files/{hash}/copy\n */\n public async copyEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean; copyType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.files.copyEntity(hash, destFolderHash, params, options);\n }\n\n /**\n * Moves a file or folder to trash.\n * Swagger: DELETE /api/files/{hash}\n */\n public async trashEntity(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.files.trashEntity(hash, options);\n }\n\n /**\n * Alias for `trashEntity`.\n */\n public async deleteFile(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.trashEntity(hash, options);\n }\n\n /**\n * Searches files content and folders.\n * Swagger: GET /api/files/search\n */\n public async searchFiles(\n params: SearchFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.files.searchFiles(params, options);\n }\n\n /**\n * Retrieves recent files.\n * Swagger: GET /api/v2/files/recent\n */\n public async getRecentFiles(\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.files.getRecentFiles(params, options);\n }\n\n // Sharing & Links delegates\n /**\n * Creates a download or integration public link for a file.\n * Swagger: GET /api/links/files/{hash}\n */\n public async createLink(\n hash: string,\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.links.createLink(hash, params, options);\n }\n\n /**\n * Shares a file or folder with another user.\n * Swagger: POST /api/files/{hash}/shares/users/{identity}\n */\n public async shareWithUser(\n hash: string,\n identity: string | number,\n params: ShareEntityParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.shares.shareWithUser(hash, identity, params, options);\n }\n\n /**\n * Makes a file or folder publicly accessible.\n * Swagger: POST /api/files/{hash}/public\n */\n public async makePublic(\n hash: string,\n params: MakePublicParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.shares.makePublic(hash, params, options);\n }\n\n // Bookmarks delegates\n /**\n * Retrieves bookmarked entities.\n * Swagger: GET /api/bookmarks\n */\n public async getBookmarks(\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.bookmarks.getBookmarks(params, options);\n }\n\n /**\n * Bookmarks a file or folder.\n * Swagger: POST /api/bookmarks\n */\n public async addBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.bookmarks.addBookmark(hash, options);\n }\n\n /**\n * Removes bookmark from a file or folder.\n * Swagger: DELETE /api/bookmarks\n */\n public async removeBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.bookmarks.removeBookmark(hash, options);\n }\n}\n\nexport * from './types';\nexport * from './uploadDownload';\nexport * from './files';\nexport * from './folders';\nexport * from './resumable';\nexport * from './links';\nexport * from './shares';\nexport * from './trash';\nexport * from './tags';\nexport * from './bookmarks';\nexport * from './metadata';\nexport * from './userGroups';\nexport * from './workspaces';\nexport * from './me';\r\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport type { PodFormResponse, PodFormItem } from './types';\n\nexport interface PodFormServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n}\n\nexport class PodFormService {\n private http: NextHttp;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: PodFormServiceOptions) {\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-PodForm',\n headers: {\n token: this.apiToken,\n accept: '*/*',\n },\n });\n }\n\n /**\n * Submits responses/answers to a POD Form.\n */\n public async sendForm<T extends Record<string, any>>(\n formId: number,\n data: T\n ): Promise<PodFormResponse> {\n const payload = new URLSearchParams({\n ...data,\n userResponseTimeMilliSeconds: '230000',\n });\n\n return this.http.post<PodFormResponse>(`/responses/${formId}`, payload, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n });\n }\n\n /**\n * Retrieves a form and its questions by ID.\n */\n public async getPodformById(\n id: number,\n options?: RequestOptions\n ): Promise<PodFormResponse<PodFormItem>> {\n return this.http.get<PodFormResponse<PodFormItem>>(`/responses/all/${id}`, {\n ...options,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n });\n }\n}\n\nexport * from './types';\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport type { SendSmsParams, SendSmsResponse } from './types';\n\nexport interface NotificationServiceOptions {\n baseUrl?: string;\n apiToken: string;\n}\n\nexport class NotificationService {\n private http: NextHttp;\n private apiToken: string;\n\n constructor(options: NotificationServiceOptions) {\n this.apiToken = options.apiToken || '';\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl || 'https://api.pod.ir/srv/notification',\n serviceName: 'POD-Notification',\n headers: {\n apiToken: this.apiToken,\n },\n });\n }\n\n /**\n * Sends an SMS notification to one or multiple mobile numbers.\n */\n public async sendSms(params: SendSmsParams): Promise<SendSmsResponse> {\n const payload = {\n content: {\n content: params.content,\n mobileNumbers: params.mobileNumbers,\n receiverType: 'MOBILE',\n },\n };\n\n return this.http.post<SendSmsResponse>('/service/sms', payload);\n }\n}\n\nexport * from './types';\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport type {\n GetCommentListParams,\n AddCommentParams,\n LikeCommentParams,\n LikePostParams,\n SocialResponse,\n CommentItem,\n} from './types';\n\nexport interface SocialServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n}\n\nexport class SocialService {\n private http: NextHttp;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: SocialServiceOptions) {\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-Social',\n headers: {\n _token_: this.apiToken,\n _token_issuer_: '1',\n },\n });\n }\n\n /**\n * Retrieves comments for a specific post or subject ID.\n */\n public async getCommentList(\n params: GetCommentListParams,\n options?: RequestOptions\n ): Promise<SocialResponse<CommentItem[]>> {\n return this.http.get<SocialResponse<CommentItem[]>>('/srv/core/nzh/commentList', {\n ...options,\n params,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n });\n }\n\n /**\n * Adds a new comment to a subject.\n */\n public async addComment(params: AddCommentParams): Promise<SocialResponse> {\n return this.http.get<SocialResponse>('/srv/core/nzh/comment', {\n params,\n });\n }\n\n /**\n * Likes or dislikes a comment.\n */\n public async likeComment(params: LikeCommentParams): Promise<SocialResponse> {\n return this.http.get<SocialResponse>('/srv/core/nzh/likeComment', {\n params,\n });\n }\n\n /**\n * Likes or dislikes a post.\n */\n public async likePost(params: LikePostParams): Promise<SocialResponse> {\n return this.http.get<SocialResponse>('/srv/core/nzh/like', {\n params,\n });\n }\n}\n\nexport * from './types';\n","import type {\n FormattedSubject,\n FormattedProductSubject,\n FormattedGetContentResponse,\n FormattedGetProductResponse,\n MetaContent,\n} from './types';\n\nexport class CmsDataFormatter {\n private podspaceUrl: string;\n\n constructor(podspaceUrl: string = 'https://podspace.pod.ir') {\n this.podspaceUrl = podspaceUrl;\n }\n\n public generateImage(hash?: string, defaultSrc: string = ''): string {\n return hash ? `${this.podspaceUrl}/api/images/${hash}?dl=1` : defaultSrc;\n }\n\n public formatItem<TSubject = any>(\n item: any,\n normalizer?: (item: TSubject) => Record<string, any>\n ): any {\n if (typeof item === 'number' || !item || typeof item !== 'object') {\n return item;\n }\n\n const newItem: any = {\n ...JSON.parse(JSON.stringify(item)),\n formatted: {},\n __normalized: {},\n };\n\n const formatted: Record<string | number, any> = {};\n const fieldList: MetaContent[] = Array.isArray(item?.metadata?.content)\n ? item.metadata.content\n : Array.isArray(item?.metadata?.product)\n ? item.metadata.product\n : [];\n\n fieldList.forEach((detail: MetaContent) => {\n switch (detail.type) {\n case 'IMAGE_TYPE': {\n formatted[detail.code] = Array.isArray(detail.value)\n ? detail.value.map((v: string) => this.generateImage(v))\n : this.generateImage(detail.value as string);\n break;\n }\n default:\n formatted[detail.code] = detail.value !== undefined ? detail.value : '';\n }\n });\n\n if (Array.isArray(item?.metadata?.content_related)) {\n item.metadata.content_related.forEach((detail: any) => {\n if (detail?.uniqueId && Array.isArray(detail.values)) {\n formatted[detail.uniqueId] = detail.values.map((val: any) =>\n this.formatItem(val)\n );\n }\n });\n }\n\n if (Array.isArray(item?.metadata?.product_related)) {\n item.metadata.product_related.forEach((detail: any) => {\n if (detail?.uniqueId && Array.isArray(detail.values)) {\n formatted[detail.uniqueId] = detail.values.map((val: any) =>\n this.formatItem(val)\n );\n }\n });\n }\n\n newItem.formatted = formatted;\n if (typeof normalizer === 'function') {\n newItem.__normalized = normalizer(newItem);\n }\n\n return newItem;\n }\n\n public formatContentItem(\n item: any,\n normalizer?: (item: FormattedSubject) => Record<string, any>\n ): any {\n return this.formatItem<FormattedSubject>(item, normalizer);\n }\n\n public formatProductItem(\n item: any,\n normalizer?: (item: FormattedProductSubject) => Record<string, any>\n ): any {\n return this.formatItem<FormattedProductSubject>(item, normalizer);\n }\n\n public formatGetContentResponse<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n response: any,\n normalizer?: (item: FormattedSubject) => Record<string, any>\n ): FormattedGetContentResponse<T, P> {\n if (response && Array.isArray(response.result)) {\n const result = response.result.map((item: any) =>\n this.formatContentItem(item, normalizer)\n );\n return {\n ...response,\n result,\n };\n }\n return response || {};\n }\n\n public formatGetProductResponse<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n response: any,\n normalizer?: (item: FormattedProductSubject) => Record<string, any>\n ): FormattedGetProductResponse<T, P> {\n if (response && Array.isArray(response.result)) {\n const result = response.result.map((item: any) =>\n this.formatProductItem(item, normalizer)\n );\n return {\n ...response,\n result,\n };\n }\n return response || {};\n }\n}\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport { CmsDataFormatter } from './formatter';\nimport type {\n GetProductParams,\n GetProductByEntityIdParams,\n GetProductResponse,\n FormattedGetProductResponse,\n FormattedProductSubject,\n AddProductParams,\n EditProductParams,\n BatchPublishProductParams,\n BatchUnpublishProductParams,\n ArchiveProductParams,\n TimelineSearchBody,\n TimelineResponse,\n CmsRequestOptions,\n} from './types';\n\nexport interface CmsProductServiceOptions {\n baseUrl?: string;\n clientId: string;\n apiToken?: string;\n podspaceUrl?: string;\n revalidate?: number | string;\n http?: NextHttp;\n formatter?: CmsDataFormatter;\n}\n\nexport class CmsProductService {\n private http: NextHttp;\n private formatter: CmsDataFormatter;\n private clientId: string;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: CmsProductServiceOptions) {\n this.clientId = options.clientId || '';\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.formatter =\n options.formatter ||\n new CmsDataFormatter(options.podspaceUrl || 'https://podspace.pod.ir');\n\n this.http =\n options.http ||\n createNextHttp({\n baseUrl: options.baseUrl || 'https://api.pod.ir/srv/cms-server',\n serviceName: 'POD-CMS-PRODUCT',\n });\n }\n\n private get commonHeaders(): Record<string, string> {\n return {\n 'Client-Id': this.clientId,\n 'Content-Type': 'application/json',\n };\n }\n\n private get managingHeaders(): Record<string, string> {\n return {\n ...this.commonHeaders,\n 'Access-Token': this.apiToken,\n };\n }\n\n /**\n * Retrieves enabled published products from CMS, formatted with generic metadata type T and optional normalized type P.\n * Swagger: GET /api/core/products/enable\n */\n public async getProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>('/api/core/products/enable', {\n params: transferParams,\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves all products using Provider credentials (Access-Token).\n * Swagger: GET /api/core/products\n */\n public async getAllProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>('/api/core/products', {\n params: transferParams,\n headers: {\n ...this.managingHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves products for management view.\n * Swagger: GET /api/core/products/manage\n */\n public async getManageProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>('/api/core/products/manage', {\n params: transferParams,\n headers: {\n ...this.managingHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves products by ProductType unique identifier.\n * Swagger: GET /api/core/products/{productTypeUniqueId}\n */\n public async getProductsByType<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n productTypeUniqueId: string,\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>(\n `/api/core/products/${productTypeUniqueId}`,\n {\n params: transferParams,\n headers: {\n ...this.managingHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves a single published product by entityId.\n * Swagger: GET /api/core/products/enable/{entityId} OR /api/core/products/{productTypeUniqueId}/enable/{entityId}\n */\n public async getProductByEntityId<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductByEntityIdParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/enable/${params.entityId}`\n : `/api/core/products/enable/${params.entityId}`;\n\n try {\n const res = await this.http.get<GetProductResponse>(url, {\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves a single product by uniqueId.\n * Swagger: GET /api/core/products/{productUniqueId}/byProductUniqueId/enable\n */\n public async getProductByUniqueId<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n productUniqueId: string,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n try {\n const res = await this.http.get<GetProductResponse>(\n `/api/core/products/${productUniqueId}/byProductUniqueId/enable`,\n {\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves products matching a barcode.\n * Swagger: GET /api/core/products/barcode/enable\n */\n public async getProductByBarcode<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n barcode: string,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n try {\n const res = await this.http.get<GetProductResponse>(\n '/api/core/products/barcode/enable',\n {\n params: { barcode },\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Searches published products by keyword.\n * Swagger: GET /api/core/products/enable/search\n */\n public async searchProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: {\n query?: string;\n name?: string;\n offset?: number;\n size?: number;\n [key: string]: any;\n } = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n try {\n const res = await this.http.get<GetProductResponse>(\n '/api/core/products/enable/search',\n {\n params,\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Creates and publishes a new product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/add-publish\n */\n public async addProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/add-publish`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Creates a draft/unpublished product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}\n */\n public async createProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Edits and publishes an existing product by entityId.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/{entityId}/edit-publish\n */\n public async editProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n entityId: number | string,\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/${entityId}/edit-publish`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Updates an existing product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/{entityId}\n */\n public async updateProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n entityId: number | string,\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/${entityId}`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Partially updates an existing product.\n * Swagger: PATCH /api/core/products/{productTypeUniqueId}/{entityId}\n */\n public async patchProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n entityId: number | string,\n params: EditProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.patch<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/${entityId}`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Publishes an existing product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/publish/{entityId}\n */\n public async publishProduct(\n productTypeUniqueId: string,\n entityId: number | string\n ): Promise<any> {\n return this.http.post(\n `/api/core/products/${productTypeUniqueId}/publish/${entityId}`,\n {},\n {\n headers: this.managingHeaders,\n }\n );\n }\n\n /**\n * Unpublishes an existing product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/unpublish/{entityId}\n */\n public async unpublishProduct(\n productTypeUniqueId: string,\n entityId: number | string\n ): Promise<any> {\n return this.http.post(\n `/api/core/products/${productTypeUniqueId}/unpublish/${entityId}`,\n {},\n {\n headers: this.managingHeaders,\n }\n );\n }\n\n /**\n * Batch publishes products.\n * Swagger: PUT /api/core/products/{productTypeUniqueId}/publish OR /api/core/products/publish\n */\n public async batchPublish(params: BatchPublishProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/publish`\n : '/api/core/products/publish';\n\n return this.http.put(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Batch unpublishes products.\n * Swagger: PUT /api/core/products/{productTypeUniqueId}/unpublish OR /api/core/products/unpublish\n */\n public async batchUnpublish(params: BatchUnpublishProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/unpublish`\n : '/api/core/products/unpublish';\n\n return this.http.put(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Archives products.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/archive OR /api/core/products/archive\n */\n public async archiveProduct(params: ArchiveProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/archive`\n : '/api/core/products/archive';\n\n return this.http.post(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Unarchives products.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/unarchive OR /api/core/products/unarchive\n */\n public async unarchiveProduct(params: ArchiveProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/unarchive`\n : '/api/core/products/unarchive';\n\n return this.http.post(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Gets list of archived products.\n * Swagger: GET /api/core/products/archive OR /api/core/products/{productTypeUniqueId}/archive\n */\n public async getArchivedProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: {\n productTypeUniqueId?: string;\n offset?: number;\n size?: number;\n [key: string]: any;\n } = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const { productTypeUniqueId, ...rest } = params;\n const url = productTypeUniqueId\n ? `/api/core/products/${productTypeUniqueId}/archive`\n : '/api/core/products/archive';\n\n try {\n const res = await this.http.get<GetProductResponse>(url, {\n params: rest,\n headers: this.managingHeaders,\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Performs advanced AI timeline search on products.\n * Swagger: GET /api/core/products/ai/timeline-search/enable\n */\n public async timelineSearch(query?: TimelineSearchBody): Promise<TimelineResponse> {\n const params: Record<string, any> = {};\n if (query?.advance) {\n params.advance = JSON.stringify(query.advance);\n params.newVersion = true;\n }\n if (query?.offset) {\n params.offset = query.offset;\n }\n if (query?.size) {\n params.size = query.size;\n }\n\n return this.http.get<TimelineResponse>(\n '/api/core/products/ai/timeline-search/enable',\n {\n params,\n headers: this.commonHeaders,\n }\n );\n }\n}\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\r\nimport type {\r\n TagCategoryListParams,\r\n CreateTagCategoryParams,\r\n UpdateTagCategoryParams,\r\n GetTagCategoriesResponse,\r\n GetTagTreeParams,\r\n CreateTagTreeItemParams,\r\n UpdateTagTreeItemParams,\r\n TagTreeAncestorsParams,\r\n GetTagTreeResponse,\r\n CmsRequestOptions,\r\n} from './types';\r\n\r\nexport interface CmsTagServiceOptions {\r\n baseUrl?: string;\r\n clientId: string;\r\n apiToken?: string;\r\n revalidate?: number | string;\r\n http?: NextHttp;\r\n}\r\n\r\nexport class CmsTagService {\r\n private http: NextHttp;\r\n private clientId: string;\r\n private apiToken: string;\r\n private revalidate: number;\r\n\r\n constructor(options: CmsTagServiceOptions) {\r\n this.clientId = options.clientId || '';\r\n this.apiToken = options.apiToken || '';\r\n this.revalidate = Number(options.revalidate) || 0;\r\n\r\n this.http =\r\n options.http ||\r\n createNextHttp({\r\n baseUrl: options.baseUrl || 'https://api.pod.ir/srv/cms-server',\r\n serviceName: 'POD-CMS-TAGS',\r\n });\r\n }\r\n\r\n private get commonHeaders(): Record<string, string> {\r\n return {\r\n 'Client-Id': this.clientId,\r\n 'Content-Type': 'application/json',\r\n };\r\n }\r\n\r\n private get managingHeaders(): Record<string, string> {\r\n return {\r\n ...this.commonHeaders,\r\n 'Access-Token': this.apiToken,\r\n };\r\n }\r\n\r\n // =========================================================================\r\n // 1. TAG CATEGORY MANAGEMENT (Swagger: /api/core/tags/category)\r\n // =========================================================================\r\n\r\n /**\r\n * Retrieves list of tag categories.\r\n * Swagger: GET /api/core/tags/category\r\n */\r\n public async getTagCategories(\r\n params: TagCategoryListParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagCategoriesResponse> {\r\n try {\r\n return await this.http.get<GetTagCategoriesResponse>('/api/core/tags/category', {\r\n params,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagCategoriesResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new tag category.\r\n * Swagger: POST /api/core/tags/category\r\n */\r\n public async createTagCategory(\r\n params: CreateTagCategoryParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.post(\r\n '/api/core/tags/category',\r\n {},\r\n {\r\n params: {\r\n name: params.name,\r\n desc: params.desc,\r\n },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves single tag category by ID.\r\n * Swagger: GET /api/core/tags/category/{id}\r\n */\r\n public async getTagCategory(\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.get(`/api/core/tags/category/${id}`, {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Updates an existing tag category.\r\n * Swagger: PUT /api/core/tags/category/{id}\r\n */\r\n public async updateTagCategory(\r\n id: number | string,\r\n params: UpdateTagCategoryParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/category/${id}`,\r\n {},\r\n {\r\n params: {\r\n name: params.name,\r\n desc: params.desc,\r\n enable: params.enable,\r\n },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Publishes a tag category.\r\n * Swagger: PUT /api/core/tags/category/{id}/publish\r\n */\r\n public async publishTagCategory(\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/category/${id}/publish`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Unpublishes a tag category.\r\n * Swagger: PUT /api/core/tags/category/{id}/unpublish\r\n */\r\n public async unpublishTagCategory(\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/category/${id}/unpublish`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // 2. TAG TREE & HIERARCHY (Swagger: /api/core/tags/{categoryId}/tree/...)\r\n // =========================================================================\r\n\r\n /**\r\n * Retrieves enabled published tag tree for category (defaults to 'root').\r\n * End user call (without requiring Access-Token).\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/enable\r\n */\r\n public async getTagTree(\r\n categoryId: string | number = 'root',\r\n params: GetTagTreeParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/enable`,\r\n {\r\n params,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves tag tree for category with management credentials.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/manage\r\n */\r\n public async getManageTagTree(\r\n categoryId: string | number,\r\n params: GetTagTreeParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/manage`,\r\n {\r\n params,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new tag tree node for category.\r\n * Swagger: POST /api/core/tags/{categoryId}/tree\r\n */\r\n public async createTagTreeItem(\r\n categoryId: string | number,\r\n params: CreateTagTreeItemParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n const { relatedContentIds, ...rest } = params;\r\n const queryParams: Record<string, any> = { ...rest };\r\n if (Array.isArray(relatedContentIds)) {\r\n queryParams['relatedContentIds[]'] = relatedContentIds;\r\n }\r\n\r\n return this.http.post(\r\n `/api/core/tags/${categoryId}/tree`,\r\n {},\r\n {\r\n params: queryParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Shows a single enabled tag tree item for end users.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/{id}/enable\r\n */\r\n public async getTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.get(`/api/core/tags/${categoryId}/tree/${id}/enable`, {\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Shows a single tag tree item for manager (with token).\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/{id}/manage\r\n */\r\n public async getManageTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.get(`/api/core/tags/${categoryId}/tree/${id}/manage`, {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Updates an existing tag tree node.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/{id}\r\n */\r\n public async updateTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n params: UpdateTagTreeItemParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n const { relatedContentIds, ...rest } = params;\r\n const queryParams: Record<string, any> = { ...rest };\r\n if (Array.isArray(relatedContentIds)) {\r\n queryParams['relatedContentIds[]'] = relatedContentIds;\r\n }\r\n\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/${id}`,\r\n {},\r\n {\r\n params: queryParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Publishes a tag tree item.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/publish/{id}\r\n */\r\n public async publishTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/publish/${id}`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Unpublishes a tag tree item.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/unpublish/{id}\r\n */\r\n public async unpublishTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/unpublish/${id}`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates the parent of a tag tree item.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/parent/{id}\r\n */\r\n public async updateTagTreeParent(\r\n categoryId: string | number,\r\n id: number | string,\r\n parentId?: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/parent/${id}`,\r\n {},\r\n {\r\n params: {\r\n parentId: parentId !== undefined ? String(parentId) : '',\r\n },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves tag tree ancestors for end user.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/parent/{id}/enable\r\n */\r\n public async getTagTreeAncestors(\r\n categoryId: string | number,\r\n id: number | string,\r\n params: TagTreeAncestorsParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/parent/${id}/enable`,\r\n {\r\n params,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves tag tree ancestors for manager (with token).\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/parent/{id}/manage\r\n */\r\n public async getManageTagTreeAncestors(\r\n categoryId: string | number,\r\n id: number | string,\r\n params: TagTreeAncestorsParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/parent/${id}/manage`,\r\n {\r\n params,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Updates tag tree code for category.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/code/{id}\r\n */\r\n public async updateTagTreeCode(\r\n categoryId: string | number,\r\n id: number | string,\r\n code: string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/code/${id}`,\r\n {},\r\n {\r\n params: { code },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\r\nimport { CmsDataFormatter } from './formatter';\r\nimport { CmsProductService } from './product';\r\nimport { CmsTagService } from './tags';\r\nimport type {\r\n GetContentParams,\r\n GetCategoriesParams,\r\n GetContentByEntityIdParams,\r\n GetContentResponse,\r\n GetCategoryResponse,\r\n FormattedGetContentResponse,\r\n FormattedSubject,\r\n AddContentParams,\r\n EditContentParams,\r\n BatchPublishParams,\r\n BatchUnpublishParams,\r\n ArchiveParams,\r\n GetCommentsParams,\r\n GetReactionsParams,\r\n TimelineSearchBody,\r\n TimelineResponse,\r\n CmsRequestOptions,\r\n GetProductParams,\r\n GetProductByEntityIdParams,\r\n FormattedGetProductResponse,\r\n FormattedProductSubject,\r\n AddProductParams,\r\n} from './types';\r\n\r\nexport interface CmsServiceOptions {\r\n baseUrl: string;\r\n clientId: string;\r\n apiToken?: string;\r\n podspaceUrl?: string;\r\n revalidate?: number | string;\r\n}\r\n\r\nexport class CmsService {\r\n private http: NextHttp;\r\n private formatter: CmsDataFormatter;\r\n private clientId: string;\r\n private apiToken: string;\r\n private revalidate: number;\r\n\r\n /**\r\n * Dedicated CMS Product sub-service.\r\n * Swagger: tag=product\r\n */\r\n public readonly products: CmsProductService;\r\n\r\n /**\r\n * Dedicated CMS Tags & Tag Categories sub-service.\r\n * Swagger: tag=tags\r\n */\r\n public readonly tags: CmsTagService;\r\n\r\n constructor(options: CmsServiceOptions) {\r\n this.clientId = options.clientId || '';\r\n this.apiToken = options.apiToken || '';\r\n this.revalidate = Number(options.revalidate) || 0;\r\n this.formatter = new CmsDataFormatter(options.podspaceUrl || 'https://podspace.pod.ir');\r\n\r\n this.http = createNextHttp({\r\n baseUrl: options.baseUrl,\r\n serviceName: 'POD-CMS',\r\n });\r\n\r\n this.products = new CmsProductService({\r\n http: this.http,\r\n formatter: this.formatter,\r\n clientId: this.clientId,\r\n apiToken: this.apiToken,\r\n revalidate: this.revalidate,\r\n });\r\n\r\n this.tags = new CmsTagService({\r\n http: this.http,\r\n clientId: this.clientId,\r\n apiToken: this.apiToken,\r\n revalidate: this.revalidate,\r\n });\r\n }\r\n\r\n private get commonHeaders(): Record<string, string> {\r\n return {\r\n 'Client-Id': this.clientId,\r\n 'Content-Type': 'application/json',\r\n };\r\n }\r\n\r\n private get managingHeaders(): Record<string, string> {\r\n return {\r\n ...this.commonHeaders,\r\n 'Access-Token': this.apiToken,\r\n };\r\n }\r\n\r\n // =========================================================================\r\n // CONTENT METHODS (Swagger: tag=content)\r\n // =========================================================================\r\n\r\n /**\r\n * Retrieves enabled published content from CMS, formatted with generic metadata type T and optional normalized type P.\r\n * Swagger: GET /api/core/contents/enable\r\n */\r\n public async getContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents/enable', {\r\n params: transferParams,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves all contents using managing credentials (Access-Token).\r\n * Swagger: GET /api/core/contents\r\n */\r\n public async getAllContents<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents', {\r\n params: transferParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves current user/client contents.\r\n * Swagger: GET /api/core/contents/my\r\n */\r\n public async getMyContents<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents/my', {\r\n params: transferParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves contents by ContentType unique identifier.\r\n * Swagger: GET /api/core/contents/{contentTypeUniqueId}\r\n */\r\n public async getContentsByType<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentTypeUniqueId: string,\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(\r\n `/api/core/contents/${contentTypeUniqueId}`,\r\n {\r\n params: transferParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves unpublished content (enable: false).\r\n */\r\n public async getUnpublishedContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n return this.getAllContents<T, P>({ ...params, enable: false }, options);\r\n }\r\n\r\n /**\r\n * Retrieves single content by entityId and optional contentTypeUniqueId.\r\n * Swagger: GET /api/core/contents/enable/{entityId} OR /api/core/contents/{contentTypeUniqueId}/enable/{entityId}\r\n */\r\n public async getContentByEntityId<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentByEntityIdParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/enable/${params.entityId}`\r\n : `/api/core/contents/enable/${params.entityId}`;\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(url, {\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves content by unique identifier.\r\n * Swagger: GET /api/core/contents/{contentUniqueId}/byContentUniqueId/enable\r\n */\r\n public async getContentByUniqueId<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentUniqueId: string,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n try {\r\n const res = await this.http.get<GetContentResponse>(\r\n `/api/core/contents/${contentUniqueId}/byContentUniqueId/enable`,\r\n {\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Searches published contents by keyword.\r\n * Swagger: GET /api/core/contents/search\r\n */\r\n public async searchContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: { query?: string; name?: string; offset?: number; size?: number; [key: string]: any } = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents/search', {\r\n params,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Adds and publishes new content to CMS.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/add-publish\r\n */\r\n public async addContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/add-publish`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Creates a new draft/unpublished content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}\r\n */\r\n public async createContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Edits and publishes existing content by entityId.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/{entityId}/edit-publish\r\n */\r\n public async editContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/${entityId}/edit-publish`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Updates existing content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/{entityId}\r\n */\r\n public async updateContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/${entityId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Partially updates existing content.\r\n * Swagger: PATCH /api/core/contents/{contentTypeUniqueId}/{entityId}\r\n */\r\n public async patchContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: EditContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.patch<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/${entityId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Publishes existing content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/publish/{entityId}\r\n */\r\n public async publishContent(\r\n contentTypeUniqueId: string,\r\n entityId: number | string\r\n ): Promise<any> {\r\n return this.http.post(\r\n `/api/core/contents/${contentTypeUniqueId}/publish/${entityId}`,\r\n {},\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Unpublishes existing content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/unpublish/{entityId}\r\n */\r\n public async unpublishContent(\r\n contentTypeUniqueId: string,\r\n entityId: number | string\r\n ): Promise<any> {\r\n return this.http.post(\r\n `/api/core/contents/${contentTypeUniqueId}/unpublish/${entityId}`,\r\n {},\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Batch publishes content items.\r\n * Swagger: PUT /api/core/contents/{contentTypeUniqueId}/publish OR /api/core/contents/publish\r\n */\r\n public async batchPublish(params: BatchPublishParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/publish`\r\n : '/api/core/contents/publish';\r\n\r\n return this.http.put(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Batch unpublishes content items.\r\n * Swagger: PUT /api/core/contents/{contentTypeUniqueId}/unpublish OR /api/core/contents/unpublish\r\n */\r\n public async batchUnpublish(params: BatchUnpublishParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/unpublish`\r\n : '/api/core/contents/unpublish';\r\n\r\n return this.http.put(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Archives content items.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/archive\r\n */\r\n public async archiveContent(params: ArchiveParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/archive`\r\n : '/api/core/contents/archive';\r\n\r\n return this.http.post(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Unarchives content items.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/unarchive\r\n */\r\n public async unarchiveContent(params: ArchiveParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/unarchive`\r\n : '/api/core/contents/unarchive';\r\n\r\n return this.http.post(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves list of archived contents.\r\n * Swagger: GET /api/core/contents/archive OR /api/core/contents/{contentTypeUniqueId}/archive\r\n */\r\n public async getArchivedContents<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: { contentTypeUniqueId?: string; offset?: number; size?: number; [key: string]: any } = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const { contentTypeUniqueId, ...rest } = params;\r\n const url = contentTypeUniqueId\r\n ? `/api/core/contents/${contentTypeUniqueId}/archive`\r\n : '/api/core/contents/archive';\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(url, {\r\n params: rest,\r\n headers: this.managingHeaders,\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves drafts.\r\n * Swagger: GET /api/core/contents/draft OR /api/core/contents/{contentTypeUniqueId}/draft\r\n */\r\n public async getDrafts<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: { contentTypeUniqueId?: string; offset?: number; size?: number; [key: string]: any } = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const { contentTypeUniqueId, ...rest } = params;\r\n const url = contentTypeUniqueId\r\n ? `/api/core/contents/${contentTypeUniqueId}/draft`\r\n : '/api/core/contents/draft';\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(url, {\r\n params: rest,\r\n headers: this.managingHeaders,\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a draft.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/draft\r\n */\r\n public async createDraft<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/draft`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Gets a specific draft by entityId.\r\n * Swagger: GET /api/core/contents/{contentTypeUniqueId}/draft/{entityId}\r\n */\r\n public async getDraftById<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentTypeUniqueId: string,\r\n entityId: number | string,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n try {\r\n const res = await this.http.get<GetContentResponse>(\r\n `/api/core/contents/${contentTypeUniqueId}/draft/${entityId}`,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Updates a draft.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/draft/{entityId}\r\n */\r\n public async updateDraft<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentTypeUniqueId: string,\r\n entityId: number | string,\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${contentTypeUniqueId}/draft/${entityId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Undrafts content by entityId.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/undraft/{entityId}\r\n */\r\n public async undraftContent(\r\n contentTypeUniqueId: string,\r\n entityId: number | string\r\n ): Promise<any> {\r\n return this.http.post(\r\n `/api/core/contents/${contentTypeUniqueId}/undraft/${entityId}`,\r\n {},\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves comments on content.\r\n * Swagger: GET /api/core/contents/{contentTypeUniqueId}/comments/{entityId}\r\n */\r\n public async getComments(\r\n contentTypeUniqueId: string,\r\n entityId: number | string,\r\n params: GetCommentsParams = {}\r\n ): Promise<any> {\r\n return this.http.get(\r\n `/api/core/contents/${contentTypeUniqueId}/comments/${entityId}`,\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves list of likes for content.\r\n * Swagger: GET /api/core/contents/{contentUniqueId}/like/{entityId}\r\n */\r\n public async getLikes(\r\n contentUniqueId: string,\r\n entityId: number | string,\r\n params: GetReactionsParams = {}\r\n ): Promise<any> {\r\n return this.http.get(\r\n `/api/core/contents/${contentUniqueId}/like/${entityId}`,\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves list of dislikes for content.\r\n * Swagger: GET /api/core/contents/{contentUniqueId}/dislike/{entityId}\r\n */\r\n public async getDislikes(\r\n contentUniqueId: string,\r\n entityId: number | string,\r\n params: GetReactionsParams = {}\r\n ): Promise<any> {\r\n return this.http.get(\r\n `/api/core/contents/${contentUniqueId}/dislike/${entityId}`,\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves tag/category tree.\r\n * Backward-compatible delegate pointing to `cms.tags.getTagTree('root', params, options)`.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/enable\r\n */\r\n public async getCategories(\r\n params: GetCategoriesParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetCategoryResponse> {\r\n return this.tags.getTagTree('root', params, options);\r\n }\r\n\r\n /**\r\n * Retrieves details of a content type structure.\r\n * Swagger: GET /api/core/content-types/{contentTypeUniqueId}\r\n */\r\n public async getContentTypeDetail(contentTypeUniqueId: string): Promise<any> {\r\n try {\r\n return await this.http.get(`/api/core/content-types/${contentTypeUniqueId}`, {\r\n headers: this.managingHeaders,\r\n });\r\n } catch {\r\n return {};\r\n }\r\n }\r\n\r\n /**\r\n * Performs advanced AI timeline search on content.\r\n * Swagger: GET /api/core/contents/ai/timeline-search/enable\r\n */\r\n public async timelineSearch(query?: TimelineSearchBody): Promise<TimelineResponse> {\r\n const params: Record<string, any> = {};\r\n if (query?.advance) {\r\n params.advance = JSON.stringify(query.advance);\r\n params.newVersion = true;\r\n }\r\n if (query?.offset) {\r\n params.offset = query.offset;\r\n }\r\n if (query?.size) {\r\n params.size = query.size;\r\n }\r\n\r\n return this.http.get<TimelineResponse>(\r\n '/api/core/contents/ai/timeline-search/enable',\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // CONVENIENCE DELEGATES FOR PRODUCTS\r\n // =========================================================================\r\n\r\n /**\r\n * Delegate to `cms.products.getProducts(...)`.\r\n */\r\n public async getProducts<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetProductParams = {},\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.getProducts<T, P>(params, options);\r\n }\r\n\r\n /**\r\n * Delegate to `cms.products.getProductByEntityId(...)`.\r\n */\r\n public async getProductByEntityId<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetProductByEntityIdParams,\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.getProductByEntityId<T, P>(params, options);\r\n }\r\n\r\n /**\r\n * Delegate to `cms.products.addProduct(...)`.\r\n */\r\n public async addProduct<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddProductParams,\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.addProduct<T, P>(params, options);\r\n }\r\n\r\n /**\r\n * Delegate to `cms.products.editProduct(...)`.\r\n */\r\n public async editProduct<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: AddProductParams,\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.editProduct<T, P>(entityId, params, options);\r\n }\r\n}\r\n\r\nexport * from './types';\r\nexport * from './formatter';\r\nexport * from './product';\r\nexport * from './tags';\r\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport type {\n GetInfOfGraduatedByGraduateDateResponse,\n GetSessionClassInCurrentDayResponse,\n} from './types';\n\nexport interface IumsServiceOptions {\n baseUrl?: string;\n clientId: string;\n revalidate?: number | string;\n}\n\nexport class IumsService {\n private http: NextHttp;\n private baseUrl: string;\n private clientId: string;\n private revalidate: number;\n\n constructor(options: IumsServiceOptions) {\n this.clientId = options.clientId || '';\n this.revalidate = Number(options.revalidate) || 0;\n this.baseUrl = options.baseUrl || 'https://indra.khatam.ac.ir/srv';\n\n this.http = createNextHttp({\n baseUrl: this.baseUrl,\n serviceName: 'POD-IUMS',\n headers: {\n 'Client-Id': this.clientId,\n },\n });\n }\n\n private generateIumsDataPayload(method: string, parameters: (number | string)[] = [], service: string = 'ExternalFacade'): string {\n const paramsString = parameters.length > 0\n ? '[' + parameters.map((v) => `\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"${v}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"`) + ']'\n : null;\n\n return `{\"type\":3,\"content\":\"{\\\\\\\"peerName\\\\\\\":\\\\\\\"khatam_eng_hq\\\\\\\",\\\\\\\"receivers\\\\\\\":[],\\\\\\\"collapseId\\\\\\\":null,\\\\\\\"groupId\\\\\\\":null,\\\\\\\"index\\\\\\\":null,\\\\\\\"messageId\\\\\\\":\\\\\\\"8657270951\\\\\\\",\\\\\\\"ttl\\\\\\\":60000,\\\\\\\"content\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"requestHeader\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\"trackerId\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"token\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"id_token\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"pod_token\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"ssoToken\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"requesterPostId\\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\\"userIds\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"ssoIds\\\\\\\\\\\\\\\":null},\\\\\\\\\\\\\\\"messageType\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"INVOKE_SERVICE\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"processData\\\\\\\\\\\\\\\":[],\\\\\\\\\\\\\\\"content\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"service\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"${service}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"serviceMethod\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"${method}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"parameters\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":${paramsString ?? 'null'},\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"returnedVarType\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"returnedVarJson\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"genericType\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":null}\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"engineName\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"peerId\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"asyncTracker\\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\\"trackerId\\\\\\\\\\\\\\\":null}\\\\\\\"}\\\",\\\"trackerId\\\":null}`;\n }\n\n private formatIumsResponse(response: { content?: string }): any {\n const content = response?.content;\n if (!content) return response;\n\n try {\n let data = JSON.parse(content);\n if (data?.content) {\n data = JSON.parse(data.content);\n }\n if (data?.returnedVarJson) {\n return JSON.parse(data.returnedVarJson);\n }\n return data;\n } catch {\n return response;\n }\n }\n\n private async request<T = any>(\n serviceMethod: string,\n params: (string | number)[] = [],\n options?: RequestOptions\n ): Promise<T> {\n const dataPayload = this.generateIumsDataPayload(serviceMethod, params);\n\n // If baseUrl already ends with '/srv', don't append '/srv' again\n const endpoint = this.baseUrl.replace(/\\/+$/, '').endsWith('/srv') ? '' : '/srv';\n\n const response = await this.http.get<{ content?: string }>(endpoint, {\n ...options,\n params: { data: dataPayload },\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n });\n\n return this.formatIumsResponse(response) as T;\n }\n\n public async getInfOfGraduatedByGraduateDate(\n startDate: string = '20240521',\n endDate: string = '20250621',\n options?: RequestOptions\n ): Promise<GetInfOfGraduatedByGraduateDateResponse> {\n return this.request<GetInfOfGraduatedByGraduateDateResponse>(\n 'getInfOfGraduatedByGraduateDate3',\n [startDate, endDate],\n options\n );\n }\n\n public async getSessionClassInCurrentDay(options?: RequestOptions): Promise<GetSessionClassInCurrentDayResponse> {\n return this.request<GetSessionClassInCurrentDayResponse>(\n 'getSessionCalssInCurrentDay',\n [],\n options\n );\n }\n\n public async getDetailsOfTermExam(options?: RequestOptions): Promise<any> {\n return this.request('getDetailsOfTermExam', [], options);\n }\n\n public async getStudentInformationByNumber(\n studentNumber: string | number,\n options?: RequestOptions\n ): Promise<any> {\n return this.request('getStudentInformationByNumber', [Number(studentNumber)], options);\n }\n\n public async getStudentInformationByNationalCode(\n nationalCode: string | number,\n options?: RequestOptions\n ): Promise<any> {\n return this.request('getStudentInformationByNationalCode', [Number(nationalCode)], options);\n }\n}\n\nexport * from './types';\n","import type { PodUrlsConfig } from './types';\n\n/**\n * Official POD Platform Production URLs.\n */\nexport const DEFAULT_POD_URLS: Required<PodUrlsConfig> = {\n accounts: 'https://accounts.pod.ir',\n apiPod: 'https://api.pod.ir',\n apiPodSandbox: 'https://api.sandpod.ir',\n cms: 'https://api.pod.ir/srv/cms-server',\n iums: 'https://indra.khatam.ac.ir/srv',\n notification: 'https://api.pod.ir/srv/notification',\n podreport: 'https://reporting.pod.ir',\n podspace: 'https://podspace.pod.ir',\n podform: 'https://podform.pod.ir',\n sandboxCms: 'http://api.sandpod.ir/srv/cms-sandbox',\n sandboxCmsClient: 'https://api.sandpod.ir/srv/cms-sandbox',\n sandboxPodspace: 'http://podspace.sandpod.ir',\n sandboxStream: 'https://sandbox-offline-stream.sandpod.ir',\n stream: 'https://sandbox-offline-stream.sandpod.ir',\n website: '',\n};\n\n/**\n * Official POD Platform Sandbox URLs for development and testing.\n */\nexport const SANDBOX_POD_URLS: Required<PodUrlsConfig> = {\n accounts: 'https://accounts.pod.ir',\n apiPod: 'https://api.sandpod.ir',\n apiPodSandbox: 'https://api.sandpod.ir',\n cms: 'https://api.sandpod.ir/srv/cms-sandbox',\n iums: 'https://indra.khatam.ac.ir/srv',\n notification: 'https://api.pod.ir/srv/notification',\n podreport: 'https://reporting.pod.ir',\n podspace: 'http://podspace.sandpod.ir',\n podform: 'https://podform.pod.ir',\n sandboxCms: 'http://api.sandpod.ir/srv/cms-sandbox',\n sandboxCmsClient: 'https://api.sandpod.ir/srv/cms-sandbox',\n sandboxPodspace: 'http://podspace.sandpod.ir',\n sandboxStream: 'https://sandbox-offline-stream.sandpod.ir',\n stream: 'https://sandbox-offline-stream.sandpod.ir',\n website: '',\n};\n\n/**\n * Safely extracts environment variable from `process.env` when running in Node.js or Next.js.\n */\nfunction getEnv(key: string): string | undefined {\n if (typeof process !== 'undefined' && process?.env && process.env[key]) {\n const val = process.env[key]?.trim();\n if (val && val.length > 0) {\n return val;\n }\n }\n return undefined;\n}\n\n/**\n * Resolves full POD URL configuration with the following priority:\n * 1. Explicit user overrides in `config.urls`\n * 2. Next.js / Node environment variables (`process.env.NEXT_PUBLIC_*`)\n * 3. Default production / sandbox URLs\n *\n * Supported Environment Variables:\n * - `NEXT_PUBLIC_ACCOUNTS_URL`\n * - `NEXT_PUBLIC_API_POD_URL`\n * - `NEXT_PUBLIC_API_POD_SANDBOX_URL`\n * - `NEXT_PUBLIC_CMS_URL`\n * - `NEXT_PUBLIC_IUMS_URL`\n * - `NEXT_PUBLIC_NOTIFICATION_URL`\n * - `NEXT_PUBLIC_PODREPORT_URL`\n * - `NEXT_PUBLIC_PODSPACE_URL`\n * - `NEXT_PUBLIC_SANDBOX_CMS_URL`\n * - `NEXT_PUBLIC_SANDBOX_CMS_CLIENT_URL`\n * - `NEXT_PUBLIC_SANDBOX_PODSPACE_URL`\n * - `NEXT_PUBLIC_SANDBOX_STREAM_URL`\n * - `NEXT_PUBLIC_PODFORM_URL`\n * - `NEXT_PUBLIC_WEBSITE_URL`\n */\nexport function resolvePodUrls(\n urls?: PodUrlsConfig,\n sandbox: boolean = false\n): Required<PodUrlsConfig> {\n const defaults = sandbox ? SANDBOX_POD_URLS : DEFAULT_POD_URLS;\n\n return {\n accounts:\n urls?.accounts ||\n getEnv('NEXT_PUBLIC_ACCOUNTS_URL') ||\n defaults.accounts,\n\n apiPod:\n urls?.apiPod ||\n (sandbox\n ? getEnv('NEXT_PUBLIC_API_POD_SANDBOX_URL') || defaults.apiPod\n : getEnv('NEXT_PUBLIC_API_POD_URL') || defaults.apiPod),\n\n apiPodSandbox:\n urls?.apiPodSandbox ||\n getEnv('NEXT_PUBLIC_API_POD_SANDBOX_URL') ||\n defaults.apiPodSandbox,\n\n cms:\n urls?.cms ||\n (sandbox\n ? getEnv('NEXT_PUBLIC_SANDBOX_CMS_CLIENT_URL') ||\n getEnv('NEXT_PUBLIC_SANDBOX_CMS_URL') ||\n defaults.cms\n : getEnv('NEXT_PUBLIC_CMS_URL') || defaults.cms),\n\n iums:\n urls?.iums ||\n getEnv('NEXT_PUBLIC_IUMS_URL') ||\n defaults.iums,\n\n notification:\n urls?.notification ||\n getEnv('NEXT_PUBLIC_NOTIFICATION_URL') ||\n defaults.notification,\n\n podreport:\n urls?.podreport ||\n getEnv('NEXT_PUBLIC_PODREPORT_URL') ||\n defaults.podreport,\n\n podspace:\n urls?.podspace ||\n (sandbox\n ? getEnv('NEXT_PUBLIC_SANDBOX_PODSPACE_URL') || defaults.podspace\n : getEnv('NEXT_PUBLIC_PODSPACE_URL') || defaults.podspace),\n\n podform:\n urls?.podform ||\n getEnv('NEXT_PUBLIC_PODFORM_URL') ||\n defaults.podform,\n\n sandboxCms:\n urls?.sandboxCms ||\n getEnv('NEXT_PUBLIC_SANDBOX_CMS_URL') ||\n defaults.sandboxCms,\n\n sandboxCmsClient:\n urls?.sandboxCmsClient ||\n getEnv('NEXT_PUBLIC_SANDBOX_CMS_CLIENT_URL') ||\n defaults.sandboxCmsClient,\n\n sandboxPodspace:\n urls?.sandboxPodspace ||\n getEnv('NEXT_PUBLIC_SANDBOX_PODSPACE_URL') ||\n defaults.sandboxPodspace,\n\n sandboxStream:\n urls?.sandboxStream ||\n urls?.stream ||\n getEnv('NEXT_PUBLIC_SANDBOX_STREAM_URL') ||\n defaults.sandboxStream,\n\n stream:\n urls?.stream ||\n urls?.sandboxStream ||\n getEnv('NEXT_PUBLIC_SANDBOX_STREAM_URL') ||\n defaults.stream,\n\n website:\n urls?.website ||\n getEnv('NEXT_PUBLIC_WEBSITE_URL') ||\n defaults.website,\n };\n}\r\n","import { SsoService } from './services/sso';\nimport { CustomPostService, CustomPostCrudService } from './services/customPost';\nimport { PodspaceService } from './services/podspace';\nimport { PodFormService } from './services/podform';\nimport { NotificationService } from './services/notification';\nimport { SocialService } from './services/social';\nimport { CmsService, CmsProductService, CmsTagService } from './services/cms';\nimport { IumsService } from './services/iums';\nimport { resolvePodUrls } from './constants';\nimport type { PodSdkConfig, PodUrlsConfig } from './types';\nimport type { CustomPostCrudConfig } from './services/customPost/types';\n\nexport class PodSdk {\n public readonly sso: SsoService;\n public readonly customPost: CustomPostService;\n public readonly podspace: PodspaceService;\n public readonly podform: PodFormService;\n public readonly notification: NotificationService;\n public readonly social: SocialService;\n public readonly cms: CmsService;\n public readonly product: CmsProductService;\n public readonly tags: CmsTagService;\n public readonly iums: IumsService;\n public readonly urls: Required<PodUrlsConfig>;\n\n constructor(config: PodSdkConfig = {}) {\n const urls = resolvePodUrls(config.urls, config.sandbox);\n this.urls = urls;\n\n const apiToken = config.apiToken || '';\n const clientId = config.clientId || '';\n const clientSecret = config.clientSecret || '';\n const privateKeyPem = config.privateKeyPem || '';\n const revalidate = config.revalidate;\n\n // 1. SSO\n this.sso = new SsoService({\n baseUrl: urls.accounts!,\n clientId,\n clientSecret,\n apiToken,\n privateKeyPem,\n websiteUrl: urls.website,\n revalidate,\n });\n\n // 2. CustomPost\n this.customPost = new CustomPostService({\n baseUrl: urls.apiPod!,\n apiToken,\n revalidate,\n });\n\n // 3. Podspace\n this.podspace = new PodspaceService({\n baseUrl: urls.podspace,\n apiToken,\n revalidate,\n });\n\n // 4. PodForm\n this.podform = new PodFormService({\n baseUrl: urls.podform!,\n apiToken,\n revalidate,\n });\n\n // 5. Notification (SMS)\n this.notification = new NotificationService({\n baseUrl: urls.notification!,\n apiToken,\n });\n\n // 6. Social\n this.social = new SocialService({\n baseUrl: urls.apiPod!,\n apiToken,\n revalidate,\n });\n\n // 7. CMS, Product & Tags\n this.cms = new CmsService({\n baseUrl: urls.cms || urls.apiPod!,\n apiToken,\n clientId,\n podspaceUrl: urls.podspace,\n revalidate,\n });\n this.product = this.cms.products;\n this.tags = this.cms.tags;\n\n // 8. IUMS\n this.iums = new IumsService({\n baseUrl: urls.iums!,\n clientId,\n revalidate,\n });\n }\n\n /**\n * Helper shortcut to instantiate a Generic CRUD repository for any entity type on POD CustomPost.\n */\n public createCrud<DataType>(config: CustomPostCrudConfig): CustomPostCrudService<DataType> {\n return this.customPost.createCrud<DataType>(config);\n }\n}\n\n/**\n * Factory function to create a new POD SDK instance.\n */\nexport function createPodSdk(config: PodSdkConfig): PodSdk {\n return new PodSdk(config);\n}\n\nexport default PodSdk;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/crypto.ts","../src/services/sso/index.ts","../src/services/captcha/index.ts","../src/services/customPost/crud.ts","../src/services/customPost/index.ts","../src/services/podspace/uploadDownload.ts","../src/services/podspace/files.ts","../src/services/podspace/folders.ts","../src/services/podspace/resumable.ts","../src/services/podspace/links.ts","../src/services/podspace/shares.ts","../src/services/podspace/trash.ts","../src/services/podspace/tags.ts","../src/services/podspace/bookmarks.ts","../src/services/podspace/metadata.ts","../src/services/podspace/userGroups.ts","../src/services/podspace/workspaces.ts","../src/services/podspace/me.ts","../src/services/podspace/index.ts","../src/services/podform/index.ts","../src/services/notification/index.ts","../src/services/social/index.ts","../src/services/cms/formatter.ts","../src/services/cms/product.ts","../src/services/cms/tags.ts","../src/services/cms/index.ts","../src/services/iums/index.ts","../src/constants.ts","../src/client.ts"],"names":["createNextHttp"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Cryptographic and encoding utilities for POD Platform services.\n * Uses standard Web Crypto API (supported natively in Node.js 18+, Browsers, and Edge).\n */\n\nexport function encodeBase64(str: string): string {\n if (typeof btoa === 'function') {\n return btoa(str);\n }\n return Buffer.from(str).toString('base64');\n}\n\nexport async function createRsaSignature(\n value: string,\n privateKeyPem: string,\n encoding: 'base64' | 'hex' = 'base64'\n): Promise<string> {\n const pemHeader = '-----BEGIN PRIVATE KEY-----';\n const pemFooter = '-----END PRIVATE KEY-----';\n const pemContents = privateKeyPem\n .replace(pemHeader, '')\n .replace(pemFooter, '')\n .replace(/\\s+/g, '');\n\n const binaryString = typeof atob === 'function' ? atob(pemContents) : Buffer.from(pemContents, 'base64').toString('binary');\n const binaryDer = Uint8Array.from(binaryString, (c) => c.charCodeAt(0));\n\n const cryptoKey = await crypto.subtle.importKey(\n 'pkcs8',\n binaryDer.buffer,\n {\n name: 'RSASSA-PKCS1-v1_5',\n hash: 'SHA-256',\n },\n false,\n ['sign']\n );\n\n const encoder = new TextEncoder();\n const data = encoder.encode(value);\n const signature = await crypto.subtle.sign('RSASSA-PKCS1-v1_5', cryptoKey, data);\n const rawBytes = new Uint8Array(signature);\n\n if (encoding === 'base64') {\n if (typeof btoa === 'function') {\n return btoa(String.fromCharCode(...rawBytes));\n }\n return Buffer.from(rawBytes).toString('base64');\n }\n\n return Array.from(rawBytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nexport async function generatePodSignatureHeader(keyId: string, privateKeyPem?: string): Promise<string> {\n if (!privateKeyPem) return '';\n const sign = await createRsaSignature('host: accounts.pod.ir', privateKeyPem, 'base64');\n return `Signature keyId=${keyId}, signature=${sign}, headers=host`;\n}\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport { encodeBase64, generatePodSignatureHeader } from '../../utils/crypto';\nimport type {\n HandshakeResponse,\n TokenResponse,\n VerifyResponse,\n SsoUserProfile,\n SendOtpOptions,\n} from './types';\nimport type { PodResponse } from '../../types';\n\nexport interface SsoServiceOptions {\n baseUrl: string;\n clientId: string;\n clientSecret?: string;\n apiToken?: string;\n privateKeyPem?: string;\n websiteUrl?: string;\n revalidate?: number | string;\n}\n\nexport class SsoService {\n private http: NextHttp;\n private clientId: string;\n private clientSecret: string;\n private apiToken: string;\n private privateKeyPem: string;\n private websiteUrl: string;\n private revalidate: number;\n\n constructor(options: SsoServiceOptions) {\n this.clientId = options.clientId || '';\n this.clientSecret = options.clientSecret || '';\n this.apiToken = options.apiToken || '';\n this.privateKeyPem = options.privateKeyPem || '';\n this.websiteUrl = options.websiteUrl || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-SSO',\n });\n }\n\n /**\n * Performs handshake with POD SSO to obtain a keyId for OTP signing.\n */\n public async handshake(deviceUid: string, ip: string): Promise<PodResponse<HandshakeResponse>> {\n const params = {\n device_type: 'Desktop',\n algorithm: 'rsa-sha256',\n device_uid: deviceUid,\n device_client_ip: ip,\n };\n\n try {\n const result = await this.http.post<HandshakeResponse>(\n `/oauth2/clients/handshake/${this.clientId}`,\n undefined,\n {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: `Bearer ${this.apiToken}`,\n },\n }\n );\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Sends an OTP SMS to the specified phone number.\n */\n public async sendOtpCode(\n keyId: string,\n phoneNumber: string,\n options?: SendOtpOptions\n ): Promise<{ hasError: boolean; authorization?: string; identity?: string; result?: any; message?: string }> {\n try {\n const authorization = await generatePodSignatureHeader(keyId, this.privateKeyPem);\n const params = {\n identityType: options?.identityType || 'phone_number',\n response_type: options?.response_type || 'code',\n referrerType: options?.referrerType || 'username',\n linkDeliveryType: options?.linkDeliveryType || 'SMS',\n scope: options?.scope || 'phone profile',\n redirect_uri: options?.redirect_uri || `${this.websiteUrl}/login`,\n };\n\n const result = await this.http.post(`/oauth2/otp/authorize/${phoneNumber}`, undefined, {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: authorization,\n },\n });\n\n return {\n hasError: false,\n authorization,\n identity: phoneNumber,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n };\n }\n }\n\n /**\n * Verifies an OTP code received by SMS.\n */\n public async verifyOtpCode(\n authorization: string,\n phoneNumber: string,\n code: string,\n redirectUri?: string\n ): Promise<PodResponse<VerifyResponse>> {\n const params = {\n otp: code,\n redirect_uri: redirectUri || `${this.websiteUrl}/login`,\n };\n\n try {\n const result = await this.http.post<VerifyResponse>(\n `/oauth2/otp/verify/${phoneNumber}`,\n undefined,\n {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: authorization,\n },\n }\n );\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.data?.error || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Exchanges authorization code for access & refresh tokens.\n */\n public async generateToken(code: string, redirectUri?: string): Promise<PodResponse<TokenResponse>> {\n const clientSignature = encodeBase64(`${this.clientId}:${this.clientSecret}`);\n const params = {\n grant_type: 'authorization_code',\n code,\n redirect_uri: redirectUri || `${this.websiteUrl}/login`,\n };\n\n try {\n const result = await this.http.post<TokenResponse>('/oauth2/token', undefined, {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n Authorization: `Basic ${clientSignature}`,\n },\n });\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Refreshes an expired access token using a refresh token.\n */\n public async refreshToken(refreshToken: string): Promise<PodResponse<TokenResponse>> {\n const clientSignature = encodeBase64(`${this.clientId}:${this.clientSecret}`);\n const params = {\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n };\n\n try {\n const result = await this.http.post<TokenResponse>('/oauth2/token', undefined, {\n params,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n Authorization: `Basic ${clientSignature}`,\n },\n });\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.error_description || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Fetches user profile from SSO using the access token.\n */\n public async getUserProfile(accessToken: string): Promise<PodResponse<SsoUserProfile>> {\n try {\n const result = await this.http.get<SsoUserProfile>('/users', {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n next: this.revalidate ? { revalidate: this.revalidate } : undefined,\n });\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.message,\n errorCode: err.status,\n };\n }\n }\n}\n\nexport * from './types';\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport type {\n GenerateCaptchaOptions,\n GenerateCaptchaResponse,\n CheckCaptchaOptions,\n CheckCaptchaResponse,\n} from './types';\nimport type { PodResponse } from '../../types';\n\nexport interface CaptchaServiceOptions {\n baseUrl: string;\n clientId: string;\n accessToken: string;\n}\n\nexport class CaptchaService {\n private http: NextHttp;\n private clientId: string;\n private accessToken: string;\n\n constructor(options: CaptchaServiceOptions) {\n this.clientId = options.clientId;\n this.accessToken = options.accessToken;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-CAPTCHA',\n });\n }\n\n /**\n * Get a new captcha image\n */\n public async get(\n options?: GenerateCaptchaOptions\n ): Promise<PodResponse<GenerateCaptchaResponse>> {\n const params: Record<string, any> = {};\n if (options?.width) params.width = options.width;\n if (options?.height) params.height = options.height;\n if (options?.length) params.length = options.length;\n if (options?.type) params.type = options.type;\n if (options?.format) params.format = options.format;\n if (options?.noise !== undefined) params.noise = options.noise;\n if (options?.bgColor) params.bgColor = options.bgColor;\n if (options?.fontColor) params.fontColor = options.fontColor;\n if (options?.fontSize) params.fontSize = options.fontSize;\n\n try {\n const result = await this.http.post<GenerateCaptchaResponse>(\n '/api/core/captchas/generate',\n undefined,\n {\n params,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'Client-Id': this.clientId,\n 'Access-Token': this.accessToken,\n },\n }\n );\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.message || err.message,\n errorCode: err.status,\n };\n }\n }\n\n /**\n * Check if the entered captcha value is valid\n */\n public async check(\n captchaId: string,\n options: CheckCaptchaOptions\n ): Promise<PodResponse<CheckCaptchaResponse>> {\n try {\n const result = await this.http.post<CheckCaptchaResponse>(\n `/api/core/captchas/check/${captchaId}`,\n {\n captchaValue: options.captchaValue,\n },\n {\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'Client-Id': this.clientId,\n 'Access-Token': this.accessToken,\n },\n }\n );\n\n return {\n hasError: false,\n result,\n };\n } catch (err: any) {\n return {\n hasError: true,\n message: err.data?.message || err.message,\n errorCode: err.status,\n };\n }\n }\n}\n\nexport * from './types';\n","import type { CustomPostService } from './index';\nimport type {\n CustomPostCrudConfig,\n Metadata,\n SearchTimelineByMetadataParam,\n SearchTimelineResponse,\n GetCustomPostResponse,\n AddCustomPostResponse,\n} from './types';\nimport type { RequestOptions } from '@rezamirzapour/http';\n\n/**\n * Generic Type-Safe CRUD Repository built on top of POD CustomPost service.\n * Allows managing any arbitrary business entity (Articles, Products, Courses, etc.)\n * with full typing and metadata binding.\n */\nexport class CustomPostCrudService<DataType> {\n constructor(\n private readonly service: CustomPostService,\n private readonly config: CustomPostCrudConfig\n ) {}\n\n protected buildMetadata(data: DataType): Metadata<DataType> {\n return {\n objectInfo: {\n type: this.config.type,\n detailedType: this.config.detailedType,\n },\n data,\n };\n }\n\n /**\n * Searches and retrieves all entities matching the query.\n */\n public async getAll(\n params?: SearchTimelineByMetadataParam<Metadata<DataType>>,\n options?: RequestOptions\n ): Promise<SearchTimelineResponse<Metadata<DataType>>> {\n return this.service.searchTimelineByMetadata<Metadata<DataType>>(\n params || {},\n options\n );\n }\n\n /**\n * Retrieves a single entity by its numerical ID.\n */\n public async getById(\n id: number,\n options?: RequestOptions\n ): Promise<GetCustomPostResponse<Metadata<DataType>>> {\n return this.service.getCustomPost<Metadata<DataType>>(\n { id, offset: 0, size: 1 },\n options\n );\n }\n\n /**\n * Creates a new entity.\n */\n public async create(\n data: DataType,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n return this.service.addCustomPost<Metadata<DataType>>(\n {\n name: this.config.name,\n content: this.config.content || ' ',\n metadata: this.buildMetadata(data),\n },\n options\n );\n }\n\n /**\n * Creates multiple entities in batch.\n */\n public async createMultiple(\n dataList: DataType[],\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>[]> {\n const items = dataList.map((data) => ({\n name: this.config.name,\n content: this.config.content || ' ',\n metadata: this.buildMetadata(data),\n }));\n return this.service.addCustomPostList<Metadata<DataType>>(items, options);\n }\n\n /**\n * Updates an existing entity by entityId.\n */\n public async update(\n entityId: number,\n data: DataType,\n enable: boolean = true,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n return this.service.updateCustomPost<Metadata<DataType>>(\n {\n entityId,\n name: this.config.name,\n content: this.config.content || ' ',\n metadata: this.buildMetadata(data),\n enable,\n },\n options\n );\n }\n\n /**\n * Creates a post and automatically updates it by binding the generated entityId into the record data.\n */\n public async createAndBindEntityId(\n data: DataType,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n const createResponse = await this.create(data, options);\n if (!createResponse.hasError && createResponse.result?.entityId) {\n return this.update(\n createResponse.result.entityId,\n {\n ...data,\n entityId: createResponse.result.entityId,\n },\n true,\n options\n );\n }\n return createResponse;\n }\n\n /**\n * Archives (disables) an entity without deleting its history.\n */\n public async archive(\n entityId: number,\n data: DataType,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<Metadata<DataType>>> {\n return this.update(entityId, data, false, options);\n }\n\n /**\n * Deletes an entity permanently.\n */\n public async delete(entityId: number, options?: RequestOptions): Promise<AddCustomPostResponse> {\n return this.service.deleteCustomPost(entityId, options);\n }\n}\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport { CustomPostCrudService } from './crud';\nimport type {\n SearchTimelineByMetadataParam,\n SearchTimelineResponse,\n GetCustomPostParams,\n GetCustomPostResponse,\n AddCustomPostParams,\n UpdateCustomPostParams,\n AddCustomPostResponse,\n CustomPostCrudConfig,\n} from './types';\n\nexport interface CustomPostServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n}\n\nexport class CustomPostService {\n private http: NextHttp;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: CustomPostServiceOptions) {\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-CustomPost',\n headers: {\n _token_: this.apiToken,\n },\n });\n }\n\n private safeParseJson(value: any): any {\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n return value;\n }\n\n /**\n * Searches timeline entries by structured metadata query, returning typed items.\n */\n public async searchTimelineByMetadata<T extends object = any>(\n params: SearchTimelineByMetadataParam<T>,\n options?: RequestOptions\n ): Promise<SearchTimelineResponse<T>> {\n const rawParams = {\n ...params,\n ...(params.metadata ? { metadata: typeof params.metadata === 'object' ? JSON.stringify(params.metadata) : params.metadata } : {}),\n ...(params.metaQuery ? { metaQuery: typeof params.metaQuery === 'object' ? JSON.stringify(params.metaQuery) : params.metaQuery } : {}),\n };\n\n const response = await this.http.get<SearchTimelineResponse<any>>(\n '/srv/core/nzh/biz/searchTimelineByMetadata',\n {\n ...options,\n params: rawParams,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n }\n );\n\n if (response?.result && Array.isArray(response.result)) {\n response.result = response.result.map((el: any) => {\n if (el?.item?.metadata) {\n el.item.metadata = this.safeParseJson(el.item.metadata);\n }\n return el;\n });\n }\n\n return response as SearchTimelineResponse<T>;\n }\n\n /**\n * Retrieves custom posts list or a single post by entityId/id with typed metadata.\n */\n public async getCustomPost<T = any>(\n params: GetCustomPostParams,\n options?: RequestOptions\n ): Promise<GetCustomPostResponse<T>> {\n const response = await this.http.get<GetCustomPostResponse<any>>(\n '/srv/core/nzh/biz/customPostList',\n {\n ...options,\n params,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n }\n );\n\n if (response?.result && Array.isArray(response.result)) {\n response.result = response.result.map((el: any) => {\n if (el?.metadata) {\n el.metadata = this.safeParseJson(el.metadata);\n }\n return el;\n });\n }\n\n return response as GetCustomPostResponse<T>;\n }\n\n /**\n * Creates a new custom post with strongly typed metadata.\n */\n public async addCustomPost<T = any>(\n params: AddCustomPostParams<T>,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<T>> {\n const payload = {\n ...params,\n metadata: typeof params.metadata === 'object' ? JSON.stringify(params.metadata) : params.metadata,\n content: params.content || ' ',\n };\n\n const response = await this.http.post<AddCustomPostResponse<any>>(\n '/srv/core/nzh/biz/addCustomPost',\n new URLSearchParams(payload as any),\n {\n ...options,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n _token_: this.apiToken,\n ...(options?.headers as any),\n },\n }\n );\n\n if (response?.result?.metadata) {\n response.result.metadata = this.safeParseJson(response.result.metadata);\n }\n\n return response as AddCustomPostResponse<T>;\n }\n\n /**\n * Creates multiple custom posts in bulk.\n */\n public async addCustomPostList<T = any>(\n items: AddCustomPostParams<T>[],\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<T>[]> {\n const promises = items.map((item) => this.addCustomPost<T>(item, options));\n return Promise.all(promises);\n }\n\n /**\n * Updates an existing custom post by its entityId with typed metadata.\n */\n public async updateCustomPost<T = any>(\n params: UpdateCustomPostParams<T>,\n options?: RequestOptions\n ): Promise<AddCustomPostResponse<T>> {\n const payload = {\n ...params,\n ...(params.metadata ? { metadata: typeof params.metadata === 'object' ? JSON.stringify(params.metadata) : params.metadata } : {}),\n ...(params.entityId ? { entityId: params.entityId.toString() } : {}),\n };\n\n const response = await this.http.post<AddCustomPostResponse<any>>(\n '/srv/core/nzh/biz/updateCustomPost',\n new URLSearchParams(payload as any),\n {\n ...options,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n _token_: this.apiToken,\n ...(options?.headers as any),\n },\n }\n );\n\n if (response?.result?.metadata) {\n response.result.metadata = this.safeParseJson(response.result.metadata);\n }\n\n return response as AddCustomPostResponse<T>;\n }\n\n /**\n * Deletes a custom post by entityId.\n */\n public async deleteCustomPost(entityId: number, options?: RequestOptions): Promise<AddCustomPostResponse> {\n return this.http.post<AddCustomPostResponse>(\n '/srv/core/nzh/biz/deleteCustomPost',\n undefined,\n {\n ...options,\n params: { entityId },\n }\n );\n }\n\n /**\n * Factory method to create a high-level Generic CRUD repository for any entity type.\n */\n public createCrud<DataType>(config: CustomPostCrudConfig): CustomPostCrudService<DataType> {\n return new CustomPostCrudService<DataType>(this, config);\n }\n}\n\nexport * from './types';\nexport * from './crud';\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFile,\n PodspaceUploadResponse,\n PodspaceRestResponse,\n UploadFileParams,\n UploadMultipleFilesParams,\n UploadImageBase64Params,\n ReplaceFileParams,\n DownloadFileParams,\n DownloadImageParams,\n DownloadThumbnailParams,\n DownloadZipParams,\n GetUploadLinkParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceUploadDownloadServiceOptions {\n http: NextHttp;\n baseUrl: string;\n revalidate?: number;\n}\n\nexport class PodspaceUploadDownloadService {\n private http: NextHttp;\n private baseUrl: string;\n private revalidate: number;\n\n constructor(options: PodspaceUploadDownloadServiceOptions) {\n this.http = options.http;\n this.baseUrl = options.baseUrl;\n this.revalidate = options.revalidate || 0;\n }\n\n /**\n * Upload a single file via FormData to POD Podspace storage.\n * Swagger: POST /api/files\n */\n public async uploadFile(\n formData: FormData,\n paramsOrPath: string | UploadFileParams = '/',\n isPublic: boolean = true,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceUploadResponse> {\n const queryParams: Record<string, any> =\n typeof paramsOrPath === 'string'\n ? { path: paramsOrPath, isPublic }\n : { path: '/', isPublic: true, ...paramsOrPath };\n\n if (Array.isArray(queryParams.tags)) {\n queryParams.tags = queryParams.tags.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n if (Array.isArray(queryParams.zoneNames)) {\n queryParams.zoneNames = queryParams.zoneNames.join(',');\n }\n\n return this.http.post<PodspaceUploadResponse>('/api/files', formData, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Upload multiple files simultaneously using FormData.\n * Swagger: POST /api/files/multiple\n */\n public async uploadMultipleFiles(\n formData: FormData,\n params: UploadMultipleFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.tags)) {\n queryParams.tags = queryParams.tags.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n if (Array.isArray(queryParams.zoneNames)) {\n queryParams.zoneNames = queryParams.zoneNames.join(',');\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFile[]>>('/api/files/multiple', formData, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Upload an image formatted as Base64 string.\n * Swagger: POST /api/images/base64\n */\n public async uploadImageBase64(\n params: UploadImageBase64Params,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n const { filename, file, ...rest } = params;\n const queryParams: Record<string, any> = {\n filename,\n file,\n ...rest,\n };\n if (Array.isArray(queryParams.tags)) {\n queryParams.tags = queryParams.tags.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFile>>('/api/images/base64', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Replace the content of an existing file.\n * Swagger: PUT /api/files/{hash}\n */\n public async replaceFile(\n hash: string,\n formData: FormData,\n params: ReplaceFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.put<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}`, formData, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Upload a file into an existing reserved link hash.\n * Swagger: POST /api/files/{hash}\n */\n public async uploadByLink(\n hash: string,\n formData: FormData,\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}`, formData, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Downloads raw file data.\n * Swagger: GET /api/files/{hash}\n */\n public async downloadFile(\n hash: string,\n params: DownloadFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/files/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Downloads processed image with optional resize, crop, or format conversion.\n * Swagger: GET /api/v2/images/{hash}\n */\n public async downloadImage(\n hash: string,\n params: DownloadImageParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/v2/images/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Downloads file thumbnail.\n * Swagger: GET /api/files/{hash}/thumbnail\n */\n public async downloadThumbnail(\n hash: string,\n params: DownloadThumbnailParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/files/${hash}/thumbnail`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Downloads multiple files and folders compressed into a single zip file.\n * Swagger: GET /api/files\n */\n public async downloadFilesAsZip(\n params: DownloadZipParams,\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n const entityHashes = Array.isArray(params.entityHashes)\n ? params.entityHashes.join(',')\n : params.entityHashes;\n\n return this.http.get<Blob>('/api/files', {\n params: {\n entityHashes,\n customName: params.customName,\n password: params.password,\n },\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Obtains a pre-signed upload link.\n * Swagger: GET /api/files/link\n */\n public async getUploadLink(\n params: GetUploadLinkParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ link: string; hash?: string }>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) {\n queryParams.zoneNames = queryParams.zoneNames.join(',');\n }\n if (Array.isArray(queryParams.fileTypeLimits)) {\n queryParams.fileTypeLimits = queryParams.fileTypeLimits.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.get<PodspaceRestResponse<{ link: string; hash?: string }>>('/api/files/link', {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Builds the direct URL to view or download a file.\n */\n public getFileUrl(hash: string, isPublic: boolean = true): string {\n return `${this.baseUrl}/api/files/${hash}?isPublic=${isPublic}`;\n }\n\n /**\n * Builds URL to view/download an image with optional dimensions/crops.\n */\n public getImageUrl(hash: string, params: DownloadImageParams = {}): string {\n const search = new URLSearchParams();\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined && v !== null) {\n search.append(k, String(v));\n }\n }\n const qs = search.toString();\n return `${this.baseUrl}/api/v2/images/${hash}${qs ? '?' + qs : ''}`;\n }\n\n /**\n * Builds URL for a file thumbnail.\n */\n public getThumbnailUrl(hash: string, params: DownloadThumbnailParams = {}): string {\n const search = new URLSearchParams();\n if (params.password) search.append('password', params.password);\n if (params.cachePolicy) search.append('cachePolicy', params.cachePolicy);\n if (params.accessLevel) search.append('accessLevel', params.accessLevel);\n const qs = search.toString();\n return `${this.baseUrl}/api/files/${hash}/thumbnail${qs ? '?' + qs : ''}`;\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFile,\n SpaceEntity,\n SpaceFolder,\n FileVersion,\n ApiPageList,\n PodspaceRestResponse,\n SearchFilesParams,\n CachePolicy,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceFilesServiceOptions {\n http: NextHttp;\n revalidate?: number;\n}\n\nexport class PodspaceFilesService {\n private http: NextHttp;\n private revalidate: number;\n\n constructor(options: PodspaceFilesServiceOptions) {\n this.http = options.http;\n this.revalidate = options.revalidate || 0;\n }\n\n /**\n * Retrieves full detail of a file or folder by its hash.\n * Swagger: GET /api/files/{hash}/detail\n */\n public async getFileDetail(\n hash: string,\n params: {\n password?: string;\n breadcrumb?: boolean;\n shareHash?: string;\n nativeMetadata?: boolean;\n includeSizeAndCount?: boolean;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.get<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}/detail`, {\n params,\n headers: options.headers,\n signal: options.signal,\n next: {\n revalidate: options.revalidate !== undefined ? (options.revalidate === false ? 0 : options.revalidate) : this.revalidate,\n },\n });\n }\n\n /**\n * Retrieves file details using its storage path.\n * Swagger: GET /api/files/details\n */\n public async getFileDetailByPath(\n path: string,\n params: { parentHash?: string; password?: string; entityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.get<PodspaceRestResponse<SpaceFile>>('/api/files/details', {\n params: { path, ...params },\n headers: options.headers,\n signal: options.signal,\n next: {\n revalidate: options.revalidate !== undefined ? (options.revalidate === false ? 0 : options.revalidate) : this.revalidate,\n },\n });\n }\n\n /**\n * Checks if an entity with given name exists in the folder.\n * Swagger: GET /api/files/{hash}/exist\n */\n public async checkEntityExist(\n hash: string,\n fileName: string,\n params: { uniqueName?: boolean; type?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.get<PodspaceRestResponse<boolean>>(`/api/files/${hash}/exist`, {\n params: { fileName, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Renames a file or folder.\n * Swagger: PUT /api/files/{hash}/rename\n */\n public async renameEntity(\n hash: string,\n newName: string,\n uniqueName?: boolean,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/files/${hash}/rename`, {}, {\n params: { newName, uniqueName },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Moves a file or folder to a new destination folder.\n * Swagger: PUT /api/files/{hash}/move\n */\n public async moveEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/files/${hash}/move`, {}, {\n params: { destFolderHash, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Copies a file or folder to a specified destination folder.\n * Swagger: PUT /api/files/{hash}/copy\n */\n public async copyEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean; copyType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/files/${hash}/copy`, {}, {\n params: { destFolderHash, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Moves a file or folder to the trash.\n * Swagger: DELETE /api/files/{hash}\n */\n public async trashEntity(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/files/${hash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Updates file attributes (e.g. streamable flag).\n * Swagger: PATCH /api/files/{hash}\n */\n public async updateFile(\n hash: string,\n params: { streamable?: boolean },\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.patch<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}`, {}, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Searches across user files content and folder names.\n * Swagger: GET /api/files/search\n */\n public async searchFiles(\n params: SearchFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<ApiPageList<SpaceEntity>>> {\n return this.http.get<PodspaceRestResponse<ApiPageList<SpaceEntity>>>('/api/files/search', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of recently accessed/uploaded files.\n * Swagger: GET /api/v2/files/recent\n */\n public async getRecentFiles(\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFile[]>>('/api/v2/files/recent', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves versions history of a file.\n * Swagger: GET /api/files/v2/{hash}/versions\n */\n public async getFileVersions(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<FileVersion[]>> {\n return this.http.get<PodspaceRestResponse<FileVersion[]>>(`/api/files/v2/${hash}/versions`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Rolls back a file to its previous version.\n * Swagger: PATCH /api/files/versions/{hash}\n */\n public async rollbackFileVersion(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.patch<PodspaceRestResponse<SpaceFile>>(`/api/files/versions/${hash}`, {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves native metadata of a file.\n * Swagger: GET /api/v2/files/{hash}/native/metadata\n */\n public async getFileNativeMetadata(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/v2/files/${hash}/native/metadata`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Converts supported document file to PDF.\n * Swagger: GET /api/files/{hash}/convert\n */\n public async convertFileToPdf(\n hash: string,\n convertType: string = 'pdf',\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/files/${hash}/convert`, {\n params: { convertType },\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n\n /**\n * Retrieves breadcrumb path for a file or folder.\n * Swagger: GET /api/files/{hash}/breadcrumb\n */\n public async getFileBreadcrumb(\n hash: string,\n params: { shareHash?: string; password?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder[]>>(`/api/files/${hash}/breadcrumb`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Compresses multiple files and folders into a zip archive on the cloud.\n * Swagger: POST /api/files/compress\n */\n public async compressToZip(\n params: {\n name: string;\n fileHashes?: string[];\n folderHashes?: string[];\n destFolderHash?: string;\n zoneNames?: string[];\n },\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.fileHashes)) queryParams.fileHashes = queryParams.fileHashes.join(',');\n if (Array.isArray(queryParams.folderHashes)) queryParams.folderHashes = queryParams.folderHashes.join(',');\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n\n return this.http.post<PodspaceRestResponse<SpaceFile>>('/api/files/compress', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Extracts a zip archive to a destination folder.\n * Swagger: PUT /api/files/{hash}/extract\n */\n public async extractZip(\n hash: string,\n params: { destFolderHash?: string; zoneNames?: string[]; uniqueName?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n\n return this.http.put<PodspaceRestResponse<any>>(`/api/files/${hash}/extract`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets or updates the cache policy for a file.\n * Swagger: PUT /api/files/{hash}/cachePolicy\n */\n public async setCachePolicy(\n hash: string,\n cachePolicy: CachePolicy,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.put<PodspaceRestResponse<SpaceFile>>(`/api/files/${hash}/cachePolicy`, {}, {\n params: { cachePolicy },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves recent actions and activities done on a file or folder.\n * Swagger: GET /api/files/{hash}/activities\n */\n public async getFileActivities(\n hash: string,\n params: { start?: number; size?: number; order?: string; isDesc?: boolean; pagination?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/files/${hash}/activities`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves specific activity log by type.\n * Swagger: GET /api/files/{hash}/activities/{activity}\n */\n public async getSpecificActivities(\n hash: string,\n activity: string,\n params: { start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/files/${hash}/activities/${activity}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves count of specific activities done on file/folder.\n * Swagger: GET /api/files/{hash}/activities/{activity}/count\n */\n public async getActivitiesCount(\n hash: string,\n activity: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<number>> {\n return this.http.get<PodspaceRestResponse<number>>(`/api/files/${hash}/activities/${activity}/count`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFolder,\n ApiPageList,\n PodspaceRestResponse,\n CreateFolderParams,\n GetFolderChildrenParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceFoldersServiceOptions {\n http: NextHttp;\n revalidate?: number;\n}\n\nexport class PodspaceFoldersService {\n private http: NextHttp;\n private revalidate: number;\n\n constructor(options: PodspaceFoldersServiceOptions) {\n this.http = options.http;\n this.revalidate = options.revalidate || 0;\n }\n\n /**\n * Creates a new folder.\n * Swagger: POST /api/folders\n */\n public async createFolder(\n params: CreateFolderParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n if (Array.isArray(queryParams.tags)) queryParams.tags = queryParams.tags.join(',');\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFolder>>('/api/folders', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Creates nested directories inside a parent folder.\n * Swagger: POST /api/folders/{hash}/directories\n */\n public async createDirectories(\n hash: string,\n directories: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n const dirParam = Array.isArray(directories) ? directories.join(',') : directories;\n\n return this.http.post<PodspaceRestResponse<SpaceFolder[]>>(`/api/folders/${hash}/directories`, {}, {\n params: { directories: dirParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves subfolders and files inside a specified folder.\n * Swagger: GET /api/folders/{hash}/children\n */\n public async getFolderChildren(\n hash: string,\n params: GetFolderChildrenParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<ApiPageList>> {\n return this.http.get<PodspaceRestResponse<ApiPageList>>(`/api/folders/${hash}/children`, {\n params,\n headers: options.headers,\n signal: options.signal,\n next: {\n revalidate: options.revalidate !== undefined ? (options.revalidate === false ? 0 : options.revalidate) : this.revalidate,\n },\n });\n }\n\n /**\n * Retrieves recent folders accessed or created by user.\n * Swagger: GET /api/v2/folders/recent\n */\n public async getRecentFolders(\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder[]>>('/api/v2/folders/recent', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Checks if user has enough space and permission to upload a file into the folder.\n * Swagger: GET /api/folders/{hash}/check/upload\n */\n public async checkFolderUploadAccess(\n hash: string,\n size: number,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.get<PodspaceRestResponse<boolean>>(`/api/folders/${hash}/check/upload`, {\n params: { size },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves folder actions summary for a specific date.\n * Swagger: GET /api/folders/{folderHash}/actions\n */\n public async getFolderActions(\n folderHash: string,\n date: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/folders/${folderHash}/actions`, {\n params: { date },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceFile,\n PodspaceRestResponse,\n FinalizeResumableParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceResumableServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceResumableService {\n private http: NextHttp;\n\n constructor(options: PodspaceResumableServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Initiates a resumable upload session.\n * Swagger: POST /api/files/resumable\n */\n public async create(\n headers: Record<string, string> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ id: string; location?: string }>> {\n return this.http.post<PodspaceRestResponse<{ id: string; location?: string }>>('/api/files/resumable', {}, {\n headers: { ...headers, ...options.headers },\n signal: options.signal,\n });\n }\n\n /**\n * Uploads a binary chunk to a resumable upload session.\n * Swagger: PATCH /api/files/resumable/{id}\n */\n public async append(\n id: string,\n chunk: Blob | Buffer | Uint8Array,\n offset: number,\n options: PodspaceRequestOptions = {}\n ): Promise<any> {\n return this.http.patch(`/api/files/resumable/${id}`, chunk, {\n headers: {\n 'Upload-Offset': String(offset),\n 'Content-Type': 'application/offset+octet-stream',\n ...options.headers,\n },\n signal: options.signal,\n });\n }\n\n /**\n * Checks current uploaded byte offset for a resumable session.\n * Swagger: HEAD /api/files/resumable/{id}\n */\n public async getStatus(\n id: string,\n options: PodspaceRequestOptions = {}\n ): Promise<number> {\n const res = await this.http.head(`/api/files/resumable/${id}`, {\n headers: options.headers,\n signal: options.signal,\n });\n const offset = res?.headers?.get ? res.headers.get('upload-offset') : (res as any)?.headers?.['upload-offset'];\n return offset ? parseInt(offset, 10) : 0;\n }\n\n /**\n * Finalizes resumable upload and creates the file entity in the user's storage.\n * Swagger: POST /api/files/resumable/{id}/finalize\n */\n public async finalizeUpload(\n id: string,\n params: FinalizeResumableParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.tags)) queryParams.tags = queryParams.tags.join(',');\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/files/resumable/${id}/finalize`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n PodspaceRestResponse,\n ApiPageList,\n CreateLinkParams,\n UpdateLinkParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceLinksServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceLinksService {\n private http: NextHttp;\n\n constructor(options: PodspaceLinksServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Generates a download or integration public link for a file.\n * Swagger: GET /api/links/files/{hash}\n */\n public async createLink(\n hash: string,\n params: CreateLinkParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ link: string; [key: string]: any }>> {\n return this.http.get<PodspaceRestResponse<{ link: string; [key: string]: any }>>(`/api/links/files/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of links created by current user.\n * Swagger: GET /api/links\n */\n public async getUserLinks(\n params: {\n linkType: string;\n folderHash?: string;\n typeLimits?: string;\n oneTimeUse?: boolean;\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n },\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<ApiPageList>> {\n return this.http.get<PodspaceRestResponse<ApiPageList>>('/api/links', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves details of a specific link.\n * Swagger: GET /api/links/{link}/detail\n */\n public async getLinkDetail(\n link: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/links/${link}/detail`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Updates settings and permissions of a link.\n * Swagger: PATCH /api/links/{link}\n */\n public async updateLink(\n link: string,\n params: UpdateLinkParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.fileTypeLimits)) {\n queryParams.fileTypeLimits = queryParams.fileTypeLimits.join(',');\n }\n if (typeof queryParams.userMetadata === 'object') {\n queryParams.userMetadata = JSON.stringify(queryParams.userMetadata);\n }\n\n return this.http.patch<PodspaceRestResponse<any>>(`/api/links/${link}`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Revokes an existing link.\n * Swagger: DELETE /api/links/{link}\n */\n public async revokeLink(\n link: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/links/${link}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Downloads a file using its public shared link.\n * Swagger: GET /api/links/{hash}\n */\n public async downloadFileByLink(\n hash: string,\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>(`/api/links/${hash}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n Share,\n PodspaceRestResponse,\n ShareEntityParams,\n MakePublicParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceSharesServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceSharesService {\n private http: NextHttp;\n\n constructor(options: PodspaceSharesServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Shares a file or folder with a user by their identity (username/ssoId).\n * Swagger: POST /api/files/{hash}/shares/users/{identity}\n */\n public async shareWithUser(\n hash: string,\n identity: string | number,\n params: ShareEntityParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.access)) queryParams.access = queryParams.access.join(',');\n\n return this.http.post<PodspaceRestResponse<Share>>(`/api/files/${hash}/shares/users/${identity}`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes share for a specific user identity.\n * Swagger: DELETE /api/files/{hash}/shares/users/{identity}\n */\n public async removeShareWithUser(\n hash: string,\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/files/${hash}/shares/users/${identity}`, {\n params: { identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Makes a file or folder public with optional password and expiration.\n * Swagger: POST /api/files/{hash}/public\n */\n public async makePublic(\n hash: string,\n params: MakePublicParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.access)) queryParams.access = queryParams.access.join(',');\n\n return this.http.post<PodspaceRestResponse<Share>>(`/api/files/${hash}/public`, {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of files and folders shared with current user.\n * Swagger: GET /api/shares\n */\n public async getSharedWithMe(\n params: {\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n identity?: string;\n identityType?: string;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share[]>> {\n return this.http.get<PodspaceRestResponse<Share[]>>('/api/shares', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves details of a share by its share hash.\n * Swagger: GET /api/shares/{shareHash}\n */\n public async getShareDetail(\n shareHash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share>> {\n return this.http.get<PodspaceRestResponse<Share>>(`/api/shares/${shareHash}`, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Revokes a share by its share hash.\n * Swagger: DELETE /api/shares/{shareHash}\n */\n public async revokeShare(\n shareHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/shares/${shareHash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves shares list of a specific file or folder.\n * Swagger: GET /api/files/{hash}/shares\n */\n public async getFileShares(\n hash: string,\n params: { person?: string; identityType?: string; start?: number; size?: number; pageList?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Share[]>> {\n return this.http.get<PodspaceRestResponse<Share[]>>(`/api/files/${hash}/shares`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets or removes password for a share using the share hash.\n * Swagger: PUT /api/shares/{hash}/password\n */\n public async setSharePassword(\n shareHash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>(`/api/shares/${shareHash}/password`, {}, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets or removes password for a share using the entity hash.\n * Swagger: PUT /api/files/{hash}/shares/password\n */\n public async setEntityPassword(\n entityHash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>(`/api/files/${entityHash}/shares/password`, {}, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceEntity,\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceTrashServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceTrashService {\n private http: NextHttp;\n\n constructor(options: PodspaceTrashServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves list of trashed files and folders.\n * Swagger: GET /api/trashes\n */\n public async getTrashList(\n params: {\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n filterAttribute?: string;\n filterValue?: string;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.http.get<PodspaceRestResponse<SpaceEntity[]>>('/api/trashes', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Restores a single file or folder from the trash.\n * Swagger: PUT /api/trashes/{hash}/restore\n */\n public async restore(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.http.put<PodspaceRestResponse<SpaceEntity>>(`/api/trashes/${hash}/restore`, {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Restores all entities from trash.\n * Swagger: POST /api/trashes/restore\n */\n public async restoreAll(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>('/api/trashes/restore', {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Permanently deletes a single file or folder from the trash.\n * Swagger: DELETE /api/trashes/{hash}\n */\n public async deletePermanently(\n hash: string,\n force?: boolean,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/trashes/${hash}`, {\n params: { force },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Permanently empties all files and folders from the trash.\n * Swagger: DELETE /api/trashes\n */\n public async emptyTrash(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/trashes', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Sets auto clean-up period for trash in days.\n * Swagger: POST /api/trashes/periods/{period}\n */\n public async setAutoCleanUpPeriod(\n period: number | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>(`/api/trashes/periods/${period}`, {}, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceEntity,\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceTagsServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceTagsService {\n private http: NextHttp;\n\n constructor(options: PodspaceTagsServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Adds tags to a file or folder.\n * Swagger: POST /api/tags\n */\n public async addTags(\n hash: string,\n tags: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n const tagsParam = Array.isArray(tags) ? tags.join(',') : tags;\n\n return this.http.post<PodspaceRestResponse<boolean>>('/api/tags', {}, {\n params: { hash, tags: tagsParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes tags from a file or folder.\n * Swagger: DELETE /api/tags\n */\n public async deleteTags(\n hash: string,\n tags: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n const tagsParam = Array.isArray(tags) ? tags.join(',') : tags;\n\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/tags', {\n params: { hash, tags: tagsParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves tags of a file or folder.\n * Swagger: GET /api/tags/entities/{hash}\n */\n public async getEntityTags(\n hash: string,\n password?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string[]>> {\n return this.http.get<PodspaceRestResponse<string[]>>(`/api/tags/entities/${hash}`, {\n params: { password },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Searches for existing tags with autocomplete.\n * Swagger: GET /api/tags/search/{tagName}\n */\n public async searchTags(\n tagName: string,\n params: { start?: number; size?: number; order?: string; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string[]>> {\n return this.http.get<PodspaceRestResponse<string[]>>(`/api/tags/search/${tagName}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of files/folders that contain a specific tag.\n * Swagger: GET /api/tags/{tagName}\n */\n public async getEntitiesByTag(\n tagName: string,\n params: { start?: number; size?: number; order?: string; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.http.get<PodspaceRestResponse<SpaceEntity[]>>(`/api/tags/${tagName}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n SpaceEntity,\n PodspaceRestResponse,\n GetBookmarksParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceBookmarksServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceBookmarksService {\n private http: NextHttp;\n\n constructor(options: PodspaceBookmarksServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves list of bookmarked files and folders.\n * Swagger: GET /api/bookmarks\n */\n public async getBookmarks(\n params: {\n start?: number;\n size?: number;\n order?: string;\n isDesc?: boolean;\n filterAttribute?: string;\n filterValue?: string;\n } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.http.get<PodspaceRestResponse<SpaceEntity[]>>('/api/bookmarks', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds a file or folder to bookmarks.\n * Swagger: POST /api/bookmarks\n */\n public async addBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>('/api/bookmarks', {}, {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes a file or folder from bookmarks.\n * Swagger: DELETE /api/bookmarks\n */\n public async removeBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/bookmarks', {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceMetadataServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceMetadataService {\n private http: NextHttp;\n\n constructor(options: PodspaceMetadataServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves metadata key-value dictionary for a file.\n * Swagger: GET /api/files/{hash}/metadata\n */\n public async getMetadata(\n hash: string,\n keys?: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Record<string, any>>> {\n const keysParam = Array.isArray(keys) ? keys.join(',') : keys;\n return this.http.get<PodspaceRestResponse<Record<string, any>>>(`/api/files/${hash}/metadata`, {\n params: { keys: keysParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds or updates metadata dictionary for a file.\n * Swagger: PUT /api/files/{hash}/metadata\n */\n public async setMetadata(\n hash: string,\n metadata: Record<string, any>,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>(`/api/files/${hash}/metadata`, metadata, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes specific metadata keys from a file.\n * Swagger: DELETE /api/files/{hash}/metadata\n */\n public async deleteMetadata(\n hash: string,\n keys: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n const keysParam = Array.isArray(keys) ? keys.join(',') : keys;\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/files/${hash}/metadata`, {\n params: { keys: keysParam },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Searches metadata across files with specified parent.\n * Swagger: POST /api/files/metadata/search\n */\n public async searchMetadata(\n queryBody: Record<string, any>,\n params: { parentHash?: string; start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.post<PodspaceRestResponse<any>>('/api/files/metadata/search', queryBody, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves description of a file or folder.\n * Swagger: GET /api/files/description\n */\n public async getDescription(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string>> {\n return this.http.get<PodspaceRestResponse<string>>('/api/files/description', {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds or updates description of a file or folder.\n * Swagger: PUT /api/files/description\n */\n public async setDescription(\n hash: string,\n description: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.put<PodspaceRestResponse<boolean>>('/api/files/description', {}, {\n params: { hash, description },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes description of a file or folder.\n * Swagger: DELETE /api/files/description\n */\n public async deleteDescription(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>('/api/files/description', {\n params: { hash },\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n UserGroup,\n SpaceFile,\n PodspaceUser,\n PodspaceRestResponse,\n CreateUserGroupParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceUserGroupsServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceUserGroupsService {\n private http: NextHttp;\n\n constructor(options: PodspaceUserGroupsServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Creates a new user group for team collaboration.\n * Swagger: POST /api/usergroups\n */\n public async createUserGroup(\n params: CreateUserGroupParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserGroup>> {\n const queryParams: Record<string, any> = { ...params };\n if (Array.isArray(queryParams.zoneNames)) queryParams.zoneNames = queryParams.zoneNames.join(',');\n if (typeof queryParams.metadata === 'object') queryParams.metadata = JSON.stringify(queryParams.metadata);\n\n return this.http.post<PodspaceRestResponse<UserGroup>>('/api/usergroups', {}, {\n params: queryParams,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user group info by hash.\n * Swagger: GET /api/usergroups/{userGroupHash}\n */\n public async getUserGroup(\n userGroupHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserGroup>> {\n return this.http.get<PodspaceRestResponse<UserGroup>>(`/api/usergroups/${userGroupHash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Deletes a user group.\n * Swagger: DELETE /api/usergroups/{userGroupHash}\n */\n public async deleteUserGroup(\n userGroupHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/usergroups/${userGroupHash}`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of users in a user group.\n * Swagger: GET /api/usergroups/{userGroupHash}/users\n */\n public async getUserGroupUsers(\n userGroupHash: string,\n params: { start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<PodspaceUser[]>> {\n return this.http.get<PodspaceRestResponse<PodspaceUser[]>>(`/api/usergroups/${userGroupHash}/users`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds a user to the user group.\n * Swagger: POST /api/usergroups/{userGroupHash}/users\n */\n public async addUserToGroup(\n userGroupHash: string,\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.post<PodspaceRestResponse<boolean>>(`/api/usergroups/${userGroupHash}/users`, {}, {\n params: { identity, identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes a user from the user group.\n * Swagger: DELETE /api/usergroups/{userGroupHash}/users\n */\n public async removeUserFromGroup(\n userGroupHash: string,\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/usergroups/${userGroupHash}/users`, {\n params: { identity, identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves list of files belonging to user group.\n * Swagger: GET /api/usergroups/{usergroupHash}/files\n */\n public async getUserGroupFiles(\n userGroupHash: string,\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.http.get<PodspaceRestResponse<SpaceFile[]>>(`/api/usergroups/${userGroupHash}/files`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Uploads a file directly into a user group.\n * Swagger: POST /api/usergroups/{userGroupHash}/files\n */\n public async uploadToUserGroup(\n userGroupHash: string,\n formData: FormData,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/usergroups/${userGroupHash}/files`, formData, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Uploads an image directly into a user group.\n * Swagger: POST /api/usergroups/{userGroupHash}/images\n */\n public async uploadImageToUserGroup(\n userGroupHash: string,\n formData: FormData,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.http.post<PodspaceRestResponse<SpaceFile>>(`/api/usergroups/${userGroupHash}/images`, formData, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves storage usage report for a user group.\n * Swagger: GET /api/usergroups/{userGroupHash}/usage\n */\n public async getUserGroupUsage(\n userGroupHash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>(`/api/usergroups/${userGroupHash}/usage`, {\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n Workspace,\n WorkspaceMember,\n PodspaceRestResponse,\n CreateWorkspaceParams,\n UpdateWorkspaceParams,\n AccessLevel,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceWorkspacesServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceWorkspacesService {\n private http: NextHttp;\n\n constructor(options: PodspaceWorkspacesServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Creates a new collaborative Workspace.\n * Swagger: POST /api/workspaces\n */\n public async createWorkspace(\n params: CreateWorkspaceParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Workspace>> {\n return this.http.post<PodspaceRestResponse<Workspace>>('/api/workspaces', {}, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves workspace details by its identity/username.\n * Swagger: GET /api/workspaces/{identity}\n */\n public async getWorkspace(\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Workspace>> {\n return this.http.get<PodspaceRestResponse<Workspace>>(`/api/workspaces/${identity}`, {\n params: { identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Updates workspace information.\n * Swagger: PATCH /api/workspaces/{identity}\n */\n public async updateWorkspace(\n identity: string | number,\n params: UpdateWorkspaceParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<Workspace>> {\n return this.http.patch<PodspaceRestResponse<Workspace>>(`/api/workspaces/${identity}`, {}, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves members list of a workspace.\n * Swagger: GET /api/workspaces/{identity}/members\n */\n public async getWorkspaceMembers(\n identity: string | number,\n identityType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<WorkspaceMember[]>> {\n return this.http.get<PodspaceRestResponse<WorkspaceMember[]>>(`/api/workspaces/${identity}/members`, {\n params: { identityType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Adds or updates a member's access level in a workspace.\n * Swagger: PUT /api/workspaces/{identity}/members/{userIdentity}\n */\n public async updateWorkspaceMember(\n identity: string | number,\n userIdentity: string | number,\n accessLevel: AccessLevel,\n params: { identityType?: string; userIdentityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<WorkspaceMember>> {\n return this.http.put<PodspaceRestResponse<WorkspaceMember>>(`/api/workspaces/${identity}/members/${userIdentity}`, {}, {\n params: { accessLevel, ...params },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Removes a member from a workspace.\n * Swagger: DELETE /api/workspaces/{identity}/members/{userIdentity}\n */\n public async removeWorkspaceMember(\n identity: string | number,\n userIdentity: string | number,\n params: { identityType?: string; userIdentityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.http.delete<PodspaceRestResponse<boolean>>(`/api/workspaces/${identity}/members/${userIdentity}`, {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n}\r\n","import { NextHttp } from '@rezamirzapour/http';\nimport type {\n PodspaceUser,\n SpaceFolder,\n UserUsageReport,\n UserPlan,\n PodspaceRestResponse,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceMeServiceOptions {\n http: NextHttp;\n}\n\nexport class PodspaceMeService {\n private http: NextHttp;\n\n constructor(options: PodspaceMeServiceOptions) {\n this.http = options.http;\n }\n\n /**\n * Retrieves profile information of current authenticated user.\n * Swagger: GET /api/me\n */\n public async getUser(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<PodspaceUser>> {\n return this.http.get<PodspaceRestResponse<PodspaceUser>>('/api/me', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves workspaces accessible to the user.\n * Swagger: GET /api/me/workspaces\n */\n public async getUserWorkspaces(\n params: { start?: number; size?: number; isDesc?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any[]>> {\n return this.http.get<PodspaceRestResponse<any[]>>('/api/me/workspaces', {\n params,\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user account status on PodSpace.\n * Swagger: GET /api/me/status\n */\n public async getUserStatus(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.http.get<PodspaceRestResponse<any>>('/api/me/status', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user OAuth scopes.\n * Swagger: GET /api/me/scope\n */\n public async getUserScope(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<string[]>> {\n return this.http.get<PodspaceRestResponse<string[]>>('/api/me/scope', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves storage usage report for current user.\n * Swagger: GET /api/me/reports/usage\n */\n public async getUserUsageReport(\n majorType?: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserUsageReport>> {\n return this.http.get<PodspaceRestResponse<UserUsageReport>>('/api/me/reports/usage', {\n params: { majorType },\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves user storage plans and quota limits.\n * Swagger: GET /api/me/plans\n */\n public async getUserPlans(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<UserPlan[]>> {\n return this.http.get<PodspaceRestResponse<UserPlan[]>>('/api/me/plans', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves or creates the user's personal root folder.\n * Swagger: GET /api/me/folder\n */\n public async getPersonalFolder(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder>>('/api/me/folder', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves or creates the user's dedicated chat attachments folder.\n * Swagger: GET /api/me/folders/chat\n */\n public async getOrCreateChatFolder(\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n return this.http.get<PodspaceRestResponse<SpaceFolder>>('/api/me/folders/chat', {\n headers: options.headers,\n signal: options.signal,\n });\n }\n\n /**\n * Retrieves the user's avatar image binary or URL.\n * Swagger: GET /api/me/avatar\n */\n public async getUserAvatar(\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.http.get<Blob>('/api/me/avatar', {\n headers: options.headers,\n signal: options.signal,\n responseType: 'blob',\n });\n }\n}\r\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport { PodspaceUploadDownloadService } from './uploadDownload';\nimport { PodspaceFilesService } from './files';\nimport { PodspaceFoldersService } from './folders';\nimport { PodspaceResumableService } from './resumable';\nimport { PodspaceLinksService } from './links';\nimport { PodspaceSharesService } from './shares';\nimport { PodspaceTrashService } from './trash';\nimport { PodspaceTagsService } from './tags';\nimport { PodspaceBookmarksService } from './bookmarks';\nimport { PodspaceMetadataService } from './metadata';\nimport { PodspaceUserGroupsService } from './userGroups';\nimport { PodspaceWorkspacesService } from './workspaces';\nimport { PodspaceMeService } from './me';\nimport type {\n SpaceFile,\n SpaceFolder,\n SpaceEntity,\n PodspaceUploadResponse,\n PodspaceRestResponse,\n UploadFileParams,\n UploadMultipleFilesParams,\n UploadImageBase64Params,\n ReplaceFileParams,\n DownloadFileParams,\n DownloadImageParams,\n DownloadThumbnailParams,\n DownloadZipParams,\n GetUploadLinkParams,\n CreateFolderParams,\n GetFolderChildrenParams,\n SearchFilesParams,\n ShareEntityParams,\n MakePublicParams,\n PodspaceRequestOptions,\n} from './types';\n\nexport interface PodspaceServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n http?: NextHttp;\n}\n\n/**\n * Unified, enterprise PodSpace Cloud Storage Service client.\n * Implements official PodSpace Swagger API (public-apis v4.13.1).\n */\nexport class PodspaceService {\n private http: NextHttp;\n private apiToken: string;\n private baseUrl: string;\n private revalidate: number;\n\n /** Upload & Download sub-service */\n public readonly uploadDownload: PodspaceUploadDownloadService;\n /** Files management sub-service */\n public readonly files: PodspaceFilesService;\n /** Folders management sub-service */\n public readonly folders: PodspaceFoldersService;\n /** Resumable upload sub-service */\n public readonly resumable: PodspaceResumableService;\n /** Links & Public Access sub-service */\n public readonly links: PodspaceLinksService;\n /** Shares & Permissions sub-service */\n public readonly shares: PodspaceSharesService;\n /** Trash & Permanent Delete sub-service */\n public readonly trash: PodspaceTrashService;\n /** Tags sub-service */\n public readonly tags: PodspaceTagsService;\n /** Bookmarks sub-service */\n public readonly bookmarks: PodspaceBookmarksService;\n /** Metadata & Descriptions sub-service */\n public readonly metadata: PodspaceMetadataService;\n /** Team User Groups sub-service */\n public readonly userGroups: PodspaceUserGroupsService;\n /** Workspaces sub-service */\n public readonly workspaces: PodspaceWorkspacesService;\n /** User Account & Quota sub-service */\n public readonly me: PodspaceMeService;\n\n constructor(options: PodspaceServiceOptions) {\n this.baseUrl = options.baseUrl;\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n const authHeader = this.apiToken\n ? this.apiToken.startsWith('Bearer ')\n ? this.apiToken\n : `Bearer ${this.apiToken}`\n : '';\n\n this.http =\n options.http ||\n createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-Podspace',\n headers: {\n ...(authHeader ? { Authorization: authHeader, _token_: this.apiToken } : {}),\n },\n });\n\n this.uploadDownload = new PodspaceUploadDownloadService({\n http: this.http,\n baseUrl: this.baseUrl,\n revalidate: this.revalidate,\n });\n\n this.files = new PodspaceFilesService({\n http: this.http,\n revalidate: this.revalidate,\n });\n\n this.folders = new PodspaceFoldersService({\n http: this.http,\n revalidate: this.revalidate,\n });\n\n this.resumable = new PodspaceResumableService({\n http: this.http,\n });\n\n this.links = new PodspaceLinksService({\n http: this.http,\n });\n\n this.shares = new PodspaceSharesService({\n http: this.http,\n });\n\n this.trash = new PodspaceTrashService({\n http: this.http,\n });\n\n this.tags = new PodspaceTagsService({\n http: this.http,\n });\n\n this.bookmarks = new PodspaceBookmarksService({\n http: this.http,\n });\n\n this.metadata = new PodspaceMetadataService({\n http: this.http,\n });\n\n this.userGroups = new PodspaceUserGroupsService({\n http: this.http,\n });\n\n this.workspaces = new PodspaceWorkspacesService({\n http: this.http,\n });\n\n this.me = new PodspaceMeService({\n http: this.http,\n });\n }\n\n // =========================================================================\n // TOP-LEVEL CONVENIENCE DELEGATES\n // =========================================================================\n\n /**\n * Uploads a single file (via FormData) to POD Podspace storage.\n * Maintains 100% backward compatibility with `uploadFile(formData, path, isPublic)`.\n * Swagger: POST /api/files\n */\n public async uploadFile(\n formData: FormData,\n paramsOrPath: string | UploadFileParams = '/',\n isPublic: boolean = true,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceUploadResponse> {\n return this.uploadDownload.uploadFile(formData, paramsOrPath, isPublic, options);\n }\n\n /**\n * Uploads multiple files simultaneously.\n * Swagger: POST /api/files/multiple\n */\n public async uploadMultipleFiles(\n formData: FormData,\n params: UploadMultipleFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.uploadDownload.uploadMultipleFiles(formData, params, options);\n }\n\n /**\n * Uploads an image from a base64 string.\n * Swagger: POST /api/images/base64\n */\n public async uploadImageBase64(\n params: UploadImageBase64Params,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.uploadDownload.uploadImageBase64(params, options);\n }\n\n /**\n * Replaces the content of an existing file.\n * Swagger: PUT /api/files/{hash}\n */\n public async replaceFile(\n hash: string,\n formData: FormData,\n params: ReplaceFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.uploadDownload.replaceFile(hash, formData, params, options);\n }\n\n /**\n * Downloads raw file data.\n * Swagger: GET /api/files/{hash}\n */\n public async downloadFile(\n hash: string,\n params: DownloadFileParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadFile(hash, params, options);\n }\n\n /**\n * Downloads processed image (with resize, crop, format options).\n * Swagger: GET /api/v2/images/{hash}\n */\n public async downloadImage(\n hash: string,\n params: DownloadImageParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadImage(hash, params, options);\n }\n\n /**\n * Downloads file thumbnail.\n * Swagger: GET /api/files/{hash}/thumbnail\n */\n public async downloadThumbnail(\n hash: string,\n params: DownloadThumbnailParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadThumbnail(hash, params, options);\n }\n\n /**\n * Downloads multiple files and folders compressed into a zip file.\n * Swagger: GET /api/files\n */\n public async downloadFilesAsZip(\n params: DownloadZipParams,\n options: PodspaceRequestOptions = {}\n ): Promise<Blob> {\n return this.uploadDownload.downloadFilesAsZip(params, options);\n }\n\n /**\n * Obtains a pre-signed upload link.\n * Swagger: GET /api/files/link\n */\n public async getUploadLink(\n params: GetUploadLinkParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<{ link: string; hash?: string }>> {\n return this.uploadDownload.getUploadLink(params, options);\n }\n\n /**\n * Builds direct view or download URL for a file.\n */\n public getFileUrl(hash: string, isPublic: boolean = true): string {\n return this.uploadDownload.getFileUrl(hash, isPublic);\n }\n\n /**\n * Builds direct view URL for an image with crop/dimensions.\n */\n public getImageUrl(hash: string, params: DownloadImageParams = {}): string {\n return this.uploadDownload.getImageUrl(hash, params);\n }\n\n /**\n * Builds thumbnail URL for a file.\n */\n public getThumbnailUrl(hash: string, params: DownloadThumbnailParams = {}): string {\n return this.uploadDownload.getThumbnailUrl(hash, params);\n }\n\n // Folders delegates\n /**\n * Creates a new folder.\n * Swagger: POST /api/folders\n */\n public async createFolder(\n params: CreateFolderParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder>> {\n return this.folders.createFolder(params, options);\n }\n\n /**\n * Creates nested directories in a parent folder.\n * Swagger: POST /api/folders/{hash}/directories\n */\n public async createDirectories(\n hash: string,\n directories: string[] | string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFolder[]>> {\n return this.folders.createDirectories(hash, directories, options);\n }\n\n /**\n * Retrieves subfolders and files inside a folder.\n * Swagger: GET /api/folders/{hash}/children\n */\n public async getFolderChildren(\n hash: string,\n params: GetFolderChildrenParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.folders.getFolderChildren(hash, params, options);\n }\n\n // Files delegates\n /**\n * Retrieves details of a file or folder.\n * Swagger: GET /api/files/{hash}/detail\n */\n public async getFileDetail(\n hash: string,\n params: { password?: string; breadcrumb?: boolean; shareHash?: string; nativeMetadata?: boolean; includeSizeAndCount?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.files.getFileDetail(hash, params, options);\n }\n\n /**\n * Retrieves file details using its storage path.\n * Swagger: GET /api/files/details\n */\n public async getFileDetailByPath(\n path: string,\n params: { parentHash?: string; password?: string; entityType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile>> {\n return this.files.getFileDetailByPath(path, params, options);\n }\n\n /**\n * Checks if a file or folder exists.\n * Swagger: GET /api/files/{hash}/exist\n */\n public async checkEntityExist(\n hash: string,\n fileName: string,\n params: { uniqueName?: boolean; type?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.files.checkEntityExist(hash, fileName, params, options);\n }\n\n /**\n * Renames a file or folder.\n * Swagger: PUT /api/files/{hash}/rename\n */\n public async renameEntity(\n hash: string,\n newName: string,\n uniqueName?: boolean,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.files.renameEntity(hash, newName, uniqueName, options);\n }\n\n /**\n * Moves a file or folder.\n * Swagger: PUT /api/files/{hash}/move\n */\n public async moveEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.files.moveEntity(hash, destFolderHash, params, options);\n }\n\n /**\n * Copies a file or folder.\n * Swagger: PUT /api/files/{hash}/copy\n */\n public async copyEntity(\n hash: string,\n destFolderHash: string,\n params: { policy?: string; uniqueName?: boolean; copyType?: string } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity>> {\n return this.files.copyEntity(hash, destFolderHash, params, options);\n }\n\n /**\n * Moves a file or folder to trash.\n * Swagger: DELETE /api/files/{hash}\n */\n public async trashEntity(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.files.trashEntity(hash, options);\n }\n\n /**\n * Alias for `trashEntity`.\n */\n public async deleteFile(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.trashEntity(hash, options);\n }\n\n /**\n * Searches files content and folders.\n * Swagger: GET /api/files/search\n */\n public async searchFiles(\n params: SearchFilesParams = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.files.searchFiles(params, options);\n }\n\n /**\n * Retrieves recent files.\n * Swagger: GET /api/v2/files/recent\n */\n public async getRecentFiles(\n params: { start?: number; size?: number } = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceFile[]>> {\n return this.files.getRecentFiles(params, options);\n }\n\n // Sharing & Links delegates\n /**\n * Creates a download or integration public link for a file.\n * Swagger: GET /api/links/files/{hash}\n */\n public async createLink(\n hash: string,\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.links.createLink(hash, params, options);\n }\n\n /**\n * Shares a file or folder with another user.\n * Swagger: POST /api/files/{hash}/shares/users/{identity}\n */\n public async shareWithUser(\n hash: string,\n identity: string | number,\n params: ShareEntityParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.shares.shareWithUser(hash, identity, params, options);\n }\n\n /**\n * Makes a file or folder publicly accessible.\n * Swagger: POST /api/files/{hash}/public\n */\n public async makePublic(\n hash: string,\n params: MakePublicParams,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<any>> {\n return this.shares.makePublic(hash, params, options);\n }\n\n // Bookmarks delegates\n /**\n * Retrieves bookmarked entities.\n * Swagger: GET /api/bookmarks\n */\n public async getBookmarks(\n params: Record<string, any> = {},\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<SpaceEntity[]>> {\n return this.bookmarks.getBookmarks(params, options);\n }\n\n /**\n * Bookmarks a file or folder.\n * Swagger: POST /api/bookmarks\n */\n public async addBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.bookmarks.addBookmark(hash, options);\n }\n\n /**\n * Removes bookmark from a file or folder.\n * Swagger: DELETE /api/bookmarks\n */\n public async removeBookmark(\n hash: string,\n options: PodspaceRequestOptions = {}\n ): Promise<PodspaceRestResponse<boolean>> {\n return this.bookmarks.removeBookmark(hash, options);\n }\n}\n\nexport * from './types';\nexport * from './uploadDownload';\nexport * from './files';\nexport * from './folders';\nexport * from './resumable';\nexport * from './links';\nexport * from './shares';\nexport * from './trash';\nexport * from './tags';\nexport * from './bookmarks';\nexport * from './metadata';\nexport * from './userGroups';\nexport * from './workspaces';\nexport * from './me';\r\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport type {\n PodFormCreationDto,\n PodFormDownloadLinkParams,\n PodFormExportParams,\n PodFormFolderDto,\n PodFormGetParams,\n PodFormId,\n PodFormItem,\n PodFormListParams,\n PodFormOtpParams,\n PodFormPaymentListParams,\n PodFormPreviewParams,\n PodFormRequestOptions,\n PodFormResponse,\n PodFormResponseCreationDto,\n PodFormResponseInitiationDto,\n PodFormResponseListParams,\n PodFormSettingsUpdateDto,\n PodFormTemplateDto,\n PodFormUpdateDto,\n PodFormField,\n PodFormJson,\n} from './types';\n\nexport interface PodFormServiceOptions {\n /** API base URL, e.g. `https://podformapi.pod.ir`. */\n baseUrl: string;\n /** POD SSO token sent as the `token` header. */\n apiToken?: string;\n revalidate?: number | string;\n http?: NextHttp;\n}\n\n/**\n * Typed client for the official PodForm API (Swagger OAS 3, v2.0.5).\n *\n * The API authenticates with the `token` header. All methods keep the raw\n * PodForm response envelope so callers can inspect `hasError` and metadata.\n */\nexport class PodFormService {\n private readonly http: NextHttp;\n private readonly revalidate: number;\n\n constructor(options: PodFormServiceOptions) {\n this.revalidate = Number(options.revalidate) || 0;\n this.http =\n options.http ||\n createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-PodForm',\n headers: {\n ...(options.apiToken ? { token: options.apiToken } : {}),\n accept: '*/*',\n },\n });\n }\n\n private requestOptions(\n options: PodFormRequestOptions = {},\n headers: Record<string, string> = {}\n ): PodFormRequestOptions {\n const next = this.revalidate\n ? { revalidate: this.revalidate, ...(options.next || {}) }\n : options.next;\n\n return {\n ...options,\n headers: { ...headers, ...(options.headers as Record<string, string> | undefined) },\n ...(next ? { next } : {}),\n };\n }\n\n private languageHeaders(language = 'fa'): Record<string, string> {\n return { 'Accept-Language': language, 'Content-Type': 'application/json' };\n }\n\n /** Retrieves a form by its numeric ID. Swagger: GET `/forms/{formId}`. */\n public async getForm(\n formId: PodFormId,\n params: PodFormGetParams = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse<PodFormItem>> {\n return this.http.get<PodFormResponse<PodFormItem>>(`/forms/${formId}`, this.requestOptions({\n ...options,\n params: { ...(options.params || {}), lockForEdit: params.lockForEdit ?? false },\n }, { 'Content-Type': 'application/json' }));\n }\n\n /** Backward-compatible alias for `getForm`. */\n public async getPodformById(\n id: PodFormId,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse<PodFormItem>> {\n return this.getForm(id, { lockForEdit: false }, options);\n }\n\n /** Lists forms with the filters supported by Swagger. */\n public async getForms(\n params: PodFormListParams = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse<PodFormItem[]>> {\n return this.http.get<PodFormResponse<PodFormItem[]>>('/forms/all', this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Creates a form. Swagger: POST `/forms`. */\n public async createForm(\n data: PodFormCreationDto,\n language = 'fa',\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse<PodFormItem>> {\n return this.http.post<PodFormResponse<PodFormItem>>('/forms', data, this.requestOptions(options, this.languageHeaders(language)));\n }\n\n /** Updates a form. Swagger: PATCH `/forms/{formId}`. */\n public async updateForm(\n formId: PodFormId,\n data: PodFormUpdateDto,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse<PodFormItem>> {\n return this.http.patch<PodFormResponse<PodFormItem>>(`/forms/${formId}`, data, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Deletes a form (or moves it to trash). */\n public async deleteForm(\n formId: PodFormId,\n params: { removeFromTrash?: boolean } = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.delete<PodFormResponse>(`/forms/${formId}`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Gets form settings. Swagger: GET `/forms/{formId}/settings`. */\n public async getFormSettings(\n formId: PodFormId,\n lockForEdit = false,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/forms/${formId}/settings`, this.requestOptions({\n ...options,\n params: { ...(options.params || {}), lockForEdit },\n }, { 'Content-Type': 'application/json' }));\n }\n\n /** Updates form settings. */\n public async updateFormSettings(\n formId: PodFormId,\n data: PodFormSettingsUpdateDto,\n params: { allowClearCache?: boolean } = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.patch<PodFormResponse>(`/forms/${formId}/settings`, data, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Adds a field to a form. */\n public async addField(\n formId: PodFormId,\n field: PodFormField,\n language = 'fa',\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.post<PodFormResponse>(`/forms/${formId}/fields`, field, this.requestOptions(options, this.languageHeaders(language)));\n }\n\n /** Adds multiple fields to a form. */\n public async addFields(\n formId: PodFormId,\n fields: PodFormField[],\n language = 'fa',\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.post<PodFormResponse>(`/forms/${formId}/fields/batch`, fields, this.requestOptions(options, this.languageHeaders(language)));\n }\n\n /** Updates one or more fields. */\n public async updateFields(\n formId: PodFormId,\n fields: PodFormJson[],\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.patch<PodFormResponse>(`/forms/${formId}/fields`, fields, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Deletes selected fields from a form. */\n public async deleteFields(\n formId: PodFormId,\n fieldIds: Array<number | string>,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.delete<PodFormResponse>(`/forms/${formId}/fields`, this.requestOptions({\n ...options,\n params: { ...(options.params || {}), fieldIds },\n }, { 'Content-Type': 'application/json' }));\n }\n\n /** Gets a form preview by ID. */\n public async getFormPreview(\n formId: PodFormId,\n params: PodFormPreviewParams = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/forms/${formId}/preview`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Gets a public form preview by hash. */\n public async getFormPreviewByHash(\n formHash: string,\n params: Omit<PodFormPreviewParams, 'responseId'> = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/forms/${formHash}/previewByHash`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Generates the captcha associated with a public form. */\n public async generateCaptcha(\n formHash: string,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/forms/${formHash}/generateCaptcha`, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Saves a response using the Swagger JSON contract. */\n public async saveResponse(\n formHash: string,\n data: PodFormResponseCreationDto,\n params: Record<string, any> = {},\n language = 'fa',\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.post<PodFormResponse>(`/responses/${formHash}`, data, this.requestOptions({ ...options, params }, this.languageHeaders(language)));\n }\n\n /**\n * Backward-compatible response helper. The form identifier can be numeric\n * or a hash; the payload is now sent as JSON per the official API.\n */\n public async sendForm<T extends Record<string, any>>(\n formHash: PodFormId,\n data: T,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n const payload = { ...data } as PodFormResponseCreationDto;\n if (payload.userResponseTimeMilliSeconds === undefined) {\n payload.userResponseTimeMilliSeconds = 230000;\n }\n return this.saveResponse(String(formHash), payload, {}, 'fa', options);\n }\n\n /** Initiates a response before collecting field values. */\n public async initiateResponse(\n formId: PodFormId,\n data: PodFormResponseInitiationDto,\n language = 'fa',\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.post<PodFormResponse>(`/responses/${formId}/initiate`, data, this.requestOptions(options, this.languageHeaders(language)));\n }\n\n /** Retrieves responses for a form with filtering and pagination. */\n public async getAllFormResponses(\n formId: PodFormId,\n params: PodFormResponseListParams = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/responses/all/${formId}`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Retrieves responses by a public form hash. */\n public async getAllFormResponsesByHash(\n formHash: string,\n params: Pick<PodFormResponseListParams, 'page' | 'size'> = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/responses/all/byFormHash/${formHash}`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Gets an individual response. */\n public async getResponse(\n responseId: PodFormId,\n containsNonInputFields = false,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/responses/${responseId}`, this.requestOptions({\n ...options,\n params: { ...(options.params || {}), containsNonInputFields },\n }, { 'Content-Type': 'application/json' }));\n }\n\n /** Updates fields of an existing response. */\n public async updateResponseFields(\n responseId: PodFormId,\n fields: PodFormJson[],\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.patch<PodFormResponse>(`/responses/${responseId}`, fields, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Deletes selected/all responses for a form. */\n public async deleteResponses(\n formId: PodFormId,\n data: PodFormJson | Array<number | string>,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n if (Array.isArray(data)) {\n return this.http.delete<PodFormResponse>(`/responses/${formId}`, this.requestOptions({ ...options, params: { responseIds: data } }, {\n 'Content-Type': 'application/json',\n }));\n }\n return this.http.put<PodFormResponse>(`/responses/${formId}`, data, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Lists templates available to the current user. */\n public async getTemplates(\n params: { page?: number; size?: number; templateOwnership?: string } = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/templates', this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Creates a template. */\n public async createTemplate(\n data: PodFormTemplateDto,\n templateOwnership?: string,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.post<PodFormResponse>('/templates', data, this.requestOptions({ ...options, params: { templateOwnership } }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Updates or deletes a template. */\n public async updateTemplate(\n templateId: PodFormId,\n data: Partial<PodFormTemplateDto>,\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.patch<PodFormResponse>(`/templates/${templateId}`, data, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n public async deleteTemplate(templateId: PodFormId, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.delete<PodFormResponse>(`/templates/${templateId}`, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Lists or creates folders. */\n public async getFolders(\n params: { page?: number; size?: number; name?: string; ownership?: string } = {},\n options: PodFormRequestOptions = {}\n ): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/folders', this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n public async createFolder(data: PodFormFolderDto, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.post<PodFormResponse>('/folders', data, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n public async updateFolder(folderId: PodFormId, data: Partial<PodFormFolderDto>, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.patch<PodFormResponse>(`/folders/${folderId}`, data, this.requestOptions(options, {\n 'Content-Type': 'application/json',\n }));\n }\n\n public async deleteFolder(folderId: PodFormId, removeFromTrash = false, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.delete<PodFormResponse>(`/folders/${folderId}`, this.requestOptions({ ...options, params: { removeFromTrash } }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Sends or validates a form OTP. */\n public async sendOtp(formHash: string, params: PodFormOtpParams, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/otp/${formHash}/send`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n public async validateOtp(formHash: string, params: PodFormOtpParams & { code: string }, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/otp/${formHash}/validate`, this.requestOptions({ ...options, params }, {\n 'Content-Type': 'application/json',\n }));\n }\n\n /** Retrieves the authenticated PodForm user. */\n public async getUser(options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/user', this.requestOptions(options, { 'Content-Type': 'application/json' }));\n }\n\n public async getUploadLink(options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/user/getUploadLink', this.requestOptions(options, { 'Content-Type': 'application/json' }));\n }\n\n public async getDownloadLink(params: PodFormDownloadLinkParams, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/user/getDownloadLink', this.requestOptions({ ...options, params }, { 'Content-Type': 'application/json' }));\n }\n\n /** Gets plans and the current user's plan. */\n public async getPlans(params: { page?: number; size?: number } = {}, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/plans/all', this.requestOptions({ ...options, params }, { 'Content-Type': 'application/json' }));\n }\n\n public async getUserPlan(options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>('/plans', this.requestOptions(options, { 'Content-Type': 'application/json' }));\n }\n\n /** Exports form responses using the official export endpoint. */\n public async exportResponses(formId: PodFormId, params: PodFormExportParams = {}, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/responses/${formId}/export`, this.requestOptions({ ...options, params }, { 'Content-Type': 'application/json' }));\n }\n\n /** Retrieves the statistical report for a form. */\n public async getFormReport(formId: PodFormId, options: PodFormRequestOptions = {}): Promise<PodFormResponse> {\n return this.http.get<PodFormResponse>(`/forms/${formId}/reports`, this.requestOptions(options, { 'Content-Type': 'application/json' }));\n }\n\n /**\n * Escape hatch for any newly-added Swagger operation not yet represented by\n * a convenience method. Authentication and base URL are still applied.\n */\n public async request<T = PodFormResponse>(\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n path: string,\n options: PodFormRequestOptions & { body?: any } = {}\n ): Promise<T> {\n const { body, ...requestOptions } = options;\n return this.http.request<T>({\n ...this.requestOptions(requestOptions),\n url: path,\n method,\n body,\n });\n }\n}\n\nexport * from './types';\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport type { SendSmsParams, SendSmsResponse } from './types';\n\nexport interface NotificationServiceOptions {\n baseUrl?: string;\n apiToken: string;\n}\n\nexport class NotificationService {\n private http: NextHttp;\n private apiToken: string;\n\n constructor(options: NotificationServiceOptions) {\n this.apiToken = options.apiToken || '';\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl || 'https://api.pod.ir/srv/notification',\n serviceName: 'POD-Notification',\n headers: {\n apiToken: this.apiToken,\n },\n });\n }\n\n /**\n * Sends an SMS notification to one or multiple mobile numbers.\n */\n public async sendSms(params: SendSmsParams): Promise<SendSmsResponse> {\n const payload = {\n content: {\n content: params.content,\n mobileNumbers: params.mobileNumbers,\n receiverType: 'MOBILE',\n },\n };\n\n return this.http.post<SendSmsResponse>('/service/sms', payload);\n }\n}\n\nexport * from './types';\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport type {\n GetCommentListParams,\n AddCommentParams,\n LikeCommentParams,\n LikePostParams,\n SocialResponse,\n CommentItem,\n} from './types';\n\nexport interface SocialServiceOptions {\n baseUrl: string;\n apiToken: string;\n revalidate?: number | string;\n}\n\nexport class SocialService {\n private http: NextHttp;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: SocialServiceOptions) {\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.http = createNextHttp({\n baseUrl: options.baseUrl,\n serviceName: 'POD-Social',\n headers: {\n _token_: this.apiToken,\n _token_issuer_: '1',\n },\n });\n }\n\n /**\n * Retrieves comments for a specific post or subject ID.\n */\n public async getCommentList(\n params: GetCommentListParams,\n options?: RequestOptions\n ): Promise<SocialResponse<CommentItem[]>> {\n return this.http.get<SocialResponse<CommentItem[]>>('/srv/core/nzh/commentList', {\n ...options,\n params,\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n });\n }\n\n /**\n * Adds a new comment to a subject.\n */\n public async addComment(params: AddCommentParams): Promise<SocialResponse> {\n return this.http.get<SocialResponse>('/srv/core/nzh/comment', {\n params,\n });\n }\n\n /**\n * Likes or dislikes a comment.\n */\n public async likeComment(params: LikeCommentParams): Promise<SocialResponse> {\n return this.http.get<SocialResponse>('/srv/core/nzh/likeComment', {\n params,\n });\n }\n\n /**\n * Likes or dislikes a post.\n */\n public async likePost(params: LikePostParams): Promise<SocialResponse> {\n return this.http.get<SocialResponse>('/srv/core/nzh/like', {\n params,\n });\n }\n}\n\nexport * from './types';\n","import type {\n FormattedSubject,\n FormattedProductSubject,\n FormattedGetContentResponse,\n FormattedGetProductResponse,\n MetaContent,\n} from './types';\n\nexport class CmsDataFormatter {\n private podspaceUrl: string;\n\n constructor(podspaceUrl: string = 'https://podspace.pod.ir') {\n this.podspaceUrl = podspaceUrl;\n }\n\n public generateImage(hash?: string, defaultSrc: string = ''): string {\n return hash ? `${this.podspaceUrl}/api/images/${hash}?dl=1` : defaultSrc;\n }\n\n public formatItem<TSubject = any>(\n item: any,\n normalizer?: (item: TSubject) => Record<string, any>\n ): any {\n if (typeof item === 'number' || !item || typeof item !== 'object') {\n return item;\n }\n\n const newItem: any = {\n ...JSON.parse(JSON.stringify(item)),\n formatted: {},\n __normalized: {},\n };\n\n const formatted: Record<string | number, any> = {};\n const fieldList: MetaContent[] = Array.isArray(item?.metadata?.content)\n ? item.metadata.content\n : Array.isArray(item?.metadata?.product)\n ? item.metadata.product\n : [];\n\n fieldList.forEach((detail: MetaContent) => {\n switch (detail.type) {\n case 'IMAGE_TYPE': {\n formatted[detail.code] = Array.isArray(detail.value)\n ? detail.value.map((v: string) => this.generateImage(v))\n : this.generateImage(detail.value as string);\n break;\n }\n default:\n formatted[detail.code] = detail.value !== undefined ? detail.value : '';\n }\n });\n\n if (Array.isArray(item?.metadata?.content_related)) {\n item.metadata.content_related.forEach((detail: any) => {\n if (detail?.uniqueId && Array.isArray(detail.values)) {\n formatted[detail.uniqueId] = detail.values.map((val: any) =>\n this.formatItem(val)\n );\n }\n });\n }\n\n if (Array.isArray(item?.metadata?.product_related)) {\n item.metadata.product_related.forEach((detail: any) => {\n if (detail?.uniqueId && Array.isArray(detail.values)) {\n formatted[detail.uniqueId] = detail.values.map((val: any) =>\n this.formatItem(val)\n );\n }\n });\n }\n\n newItem.formatted = formatted;\n if (typeof normalizer === 'function') {\n newItem.__normalized = normalizer(newItem);\n }\n\n return newItem;\n }\n\n public formatContentItem(\n item: any,\n normalizer?: (item: FormattedSubject) => Record<string, any>\n ): any {\n return this.formatItem<FormattedSubject>(item, normalizer);\n }\n\n public formatProductItem(\n item: any,\n normalizer?: (item: FormattedProductSubject) => Record<string, any>\n ): any {\n return this.formatItem<FormattedProductSubject>(item, normalizer);\n }\n\n public formatGetContentResponse<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n response: any,\n normalizer?: (item: FormattedSubject) => Record<string, any>\n ): FormattedGetContentResponse<T, P> {\n if (response && Array.isArray(response.result)) {\n const result = response.result.map((item: any) =>\n this.formatContentItem(item, normalizer)\n );\n return {\n ...response,\n result,\n };\n }\n return response || {};\n }\n\n public formatGetProductResponse<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n response: any,\n normalizer?: (item: FormattedProductSubject) => Record<string, any>\n ): FormattedGetProductResponse<T, P> {\n if (response && Array.isArray(response.result)) {\n const result = response.result.map((item: any) =>\n this.formatProductItem(item, normalizer)\n );\n return {\n ...response,\n result,\n };\n }\n return response || {};\n }\n}\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\nimport { CmsDataFormatter } from './formatter';\nimport type {\n GetProductParams,\n GetProductByEntityIdParams,\n GetProductResponse,\n FormattedGetProductResponse,\n FormattedProductSubject,\n AddProductParams,\n EditProductParams,\n BatchPublishProductParams,\n BatchUnpublishProductParams,\n ArchiveProductParams,\n TimelineSearchBody,\n TimelineResponse,\n CmsRequestOptions,\n} from './types';\n\nexport interface CmsProductServiceOptions {\n baseUrl?: string;\n clientId: string;\n apiToken?: string;\n podspaceUrl?: string;\n revalidate?: number | string;\n http?: NextHttp;\n formatter?: CmsDataFormatter;\n}\n\nexport class CmsProductService {\n private http: NextHttp;\n private formatter: CmsDataFormatter;\n private clientId: string;\n private apiToken: string;\n private revalidate: number;\n\n constructor(options: CmsProductServiceOptions) {\n this.clientId = options.clientId || '';\n this.apiToken = options.apiToken || '';\n this.revalidate = Number(options.revalidate) || 0;\n\n this.formatter =\n options.formatter ||\n new CmsDataFormatter(options.podspaceUrl || 'https://podspace.pod.ir');\n\n this.http =\n options.http ||\n createNextHttp({\n baseUrl: options.baseUrl || 'https://api.pod.ir/srv/cms-server',\n serviceName: 'POD-CMS-PRODUCT',\n });\n }\n\n private get commonHeaders(): Record<string, string> {\n return {\n 'Client-Id': this.clientId,\n 'Content-Type': 'application/json',\n };\n }\n\n private get managingHeaders(): Record<string, string> {\n return {\n ...this.commonHeaders,\n 'Access-Token': this.apiToken,\n };\n }\n\n /**\n * Retrieves enabled published products from CMS, formatted with generic metadata type T and optional normalized type P.\n * Swagger: GET /api/core/products/enable\n */\n public async getProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>('/api/core/products/enable', {\n params: transferParams,\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves all products using Provider credentials (Access-Token).\n * Swagger: GET /api/core/products\n */\n public async getAllProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>('/api/core/products', {\n params: transferParams,\n headers: {\n ...this.managingHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves products for management view.\n * Swagger: GET /api/core/products/manage\n */\n public async getManageProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>('/api/core/products/manage', {\n params: transferParams,\n headers: {\n ...this.managingHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves products by ProductType unique identifier.\n * Swagger: GET /api/core/products/{productTypeUniqueId}\n */\n public async getProductsByType<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n productTypeUniqueId: string,\n params: GetProductParams = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const transferParams = {\n size: 50,\n offset: 0,\n showDetail: true,\n ...params,\n };\n\n try {\n const res = await this.http.get<GetProductResponse>(\n `/api/core/products/${productTypeUniqueId}`,\n {\n params: transferParams,\n headers: {\n ...this.managingHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves a single published product by entityId.\n * Swagger: GET /api/core/products/enable/{entityId} OR /api/core/products/{productTypeUniqueId}/enable/{entityId}\n */\n public async getProductByEntityId<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: GetProductByEntityIdParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/enable/${params.entityId}`\n : `/api/core/products/enable/${params.entityId}`;\n\n try {\n const res = await this.http.get<GetProductResponse>(url, {\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves a single product by uniqueId.\n * Swagger: GET /api/core/products/{productUniqueId}/byProductUniqueId/enable\n */\n public async getProductByUniqueId<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n productUniqueId: string,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n try {\n const res = await this.http.get<GetProductResponse>(\n `/api/core/products/${productUniqueId}/byProductUniqueId/enable`,\n {\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Retrieves products matching a barcode.\n * Swagger: GET /api/core/products/barcode/enable\n */\n public async getProductByBarcode<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n barcode: string,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n try {\n const res = await this.http.get<GetProductResponse>(\n '/api/core/products/barcode/enable',\n {\n params: { barcode },\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Searches published products by keyword.\n * Swagger: GET /api/core/products/enable/search\n */\n public async searchProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: {\n query?: string;\n name?: string;\n offset?: number;\n size?: number;\n [key: string]: any;\n } = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n try {\n const res = await this.http.get<GetProductResponse>(\n '/api/core/products/enable/search',\n {\n params,\n headers: {\n ...this.commonHeaders,\n ...(options.headers as any),\n },\n cache: options.cache,\n signal: options.signal,\n next: {\n revalidate:\n options.revalidate !== undefined\n ? options.revalidate === false\n ? 0\n : options.revalidate\n : this.revalidate,\n },\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Creates and publishes a new product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/add-publish\n */\n public async addProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/add-publish`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Creates a draft/unpublished product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}\n */\n public async createProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Edits and publishes an existing product by entityId.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/{entityId}/edit-publish\n */\n public async editProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n entityId: number | string,\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/${entityId}/edit-publish`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Updates an existing product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/{entityId}\n */\n public async updateProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n entityId: number | string,\n params: AddProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.post<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/${entityId}`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Partially updates an existing product.\n * Swagger: PATCH /api/core/products/{productTypeUniqueId}/{entityId}\n */\n public async patchProduct<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n entityId: number | string,\n params: EditProductParams,\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const res = await this.http.patch<GetProductResponse>(\n `/api/core/products/${params.productTypeUniqueId}/${entityId}`,\n params.body,\n {\n headers: this.managingHeaders,\n }\n );\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n }\n\n /**\n * Publishes an existing product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/publish/{entityId}\n */\n public async publishProduct(\n productTypeUniqueId: string,\n entityId: number | string\n ): Promise<any> {\n return this.http.post(\n `/api/core/products/${productTypeUniqueId}/publish/${entityId}`,\n {},\n {\n headers: this.managingHeaders,\n }\n );\n }\n\n /**\n * Unpublishes an existing product.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/unpublish/{entityId}\n */\n public async unpublishProduct(\n productTypeUniqueId: string,\n entityId: number | string\n ): Promise<any> {\n return this.http.post(\n `/api/core/products/${productTypeUniqueId}/unpublish/${entityId}`,\n {},\n {\n headers: this.managingHeaders,\n }\n );\n }\n\n /**\n * Batch publishes products.\n * Swagger: PUT /api/core/products/{productTypeUniqueId}/publish OR /api/core/products/publish\n */\n public async batchPublish(params: BatchPublishProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/publish`\n : '/api/core/products/publish';\n\n return this.http.put(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Batch unpublishes products.\n * Swagger: PUT /api/core/products/{productTypeUniqueId}/unpublish OR /api/core/products/unpublish\n */\n public async batchUnpublish(params: BatchUnpublishProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/unpublish`\n : '/api/core/products/unpublish';\n\n return this.http.put(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Archives products.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/archive OR /api/core/products/archive\n */\n public async archiveProduct(params: ArchiveProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/archive`\n : '/api/core/products/archive';\n\n return this.http.post(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Unarchives products.\n * Swagger: POST /api/core/products/{productTypeUniqueId}/unarchive OR /api/core/products/unarchive\n */\n public async unarchiveProduct(params: ArchiveProductParams): Promise<any> {\n const url = params.productTypeUniqueId\n ? `/api/core/products/${params.productTypeUniqueId}/unarchive`\n : '/api/core/products/unarchive';\n\n return this.http.post(url, { entityIds: params.entityIds }, {\n headers: this.managingHeaders,\n });\n }\n\n /**\n * Gets list of archived products.\n * Swagger: GET /api/core/products/archive OR /api/core/products/{productTypeUniqueId}/archive\n */\n public async getArchivedProducts<\n T extends Record<string, any> = Record<string, any>,\n P = {}\n >(\n params: {\n productTypeUniqueId?: string;\n offset?: number;\n size?: number;\n [key: string]: any;\n } = {},\n options: CmsRequestOptions<FormattedProductSubject> = {}\n ): Promise<FormattedGetProductResponse<T, P>> {\n const { productTypeUniqueId, ...rest } = params;\n const url = productTypeUniqueId\n ? `/api/core/products/${productTypeUniqueId}/archive`\n : '/api/core/products/archive';\n\n try {\n const res = await this.http.get<GetProductResponse>(url, {\n params: rest,\n headers: this.managingHeaders,\n });\n\n return this.formatter.formatGetProductResponse<T, P>(res, options.normalizer);\n } catch {\n return { hasError: true, result: [] } as unknown as FormattedGetProductResponse<T, P>;\n }\n }\n\n /**\n * Performs advanced AI timeline search on products.\n * Swagger: GET /api/core/products/ai/timeline-search/enable\n */\n public async timelineSearch(query?: TimelineSearchBody): Promise<TimelineResponse> {\n const params: Record<string, any> = {};\n if (query?.advance) {\n params.advance = JSON.stringify(query.advance);\n params.newVersion = true;\n }\n if (query?.offset) {\n params.offset = query.offset;\n }\n if (query?.size) {\n params.size = query.size;\n }\n\n return this.http.get<TimelineResponse>(\n '/api/core/products/ai/timeline-search/enable',\n {\n params,\n headers: this.commonHeaders,\n }\n );\n }\n}\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\r\nimport type {\r\n TagCategoryListParams,\r\n CreateTagCategoryParams,\r\n UpdateTagCategoryParams,\r\n GetTagCategoriesResponse,\r\n GetTagTreeParams,\r\n CreateTagTreeItemParams,\r\n UpdateTagTreeItemParams,\r\n TagTreeAncestorsParams,\r\n GetTagTreeResponse,\r\n CmsRequestOptions,\r\n} from './types';\r\n\r\nexport interface CmsTagServiceOptions {\r\n baseUrl?: string;\r\n clientId: string;\r\n apiToken?: string;\r\n revalidate?: number | string;\r\n http?: NextHttp;\r\n}\r\n\r\nexport class CmsTagService {\r\n private http: NextHttp;\r\n private clientId: string;\r\n private apiToken: string;\r\n private revalidate: number;\r\n\r\n constructor(options: CmsTagServiceOptions) {\r\n this.clientId = options.clientId || '';\r\n this.apiToken = options.apiToken || '';\r\n this.revalidate = Number(options.revalidate) || 0;\r\n\r\n this.http =\r\n options.http ||\r\n createNextHttp({\r\n baseUrl: options.baseUrl || 'https://api.pod.ir/srv/cms-server',\r\n serviceName: 'POD-CMS-TAGS',\r\n });\r\n }\r\n\r\n private get commonHeaders(): Record<string, string> {\r\n return {\r\n 'Client-Id': this.clientId,\r\n 'Content-Type': 'application/json',\r\n };\r\n }\r\n\r\n private get managingHeaders(): Record<string, string> {\r\n return {\r\n ...this.commonHeaders,\r\n 'Access-Token': this.apiToken,\r\n };\r\n }\r\n\r\n // =========================================================================\r\n // 1. TAG CATEGORY MANAGEMENT (Swagger: /api/core/tags/category)\r\n // =========================================================================\r\n\r\n /**\r\n * Retrieves list of tag categories.\r\n * Swagger: GET /api/core/tags/category\r\n */\r\n public async getTagCategories(\r\n params: TagCategoryListParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagCategoriesResponse> {\r\n try {\r\n return await this.http.get<GetTagCategoriesResponse>('/api/core/tags/category', {\r\n params,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagCategoriesResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new tag category.\r\n * Swagger: POST /api/core/tags/category\r\n */\r\n public async createTagCategory(\r\n params: CreateTagCategoryParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.post(\r\n '/api/core/tags/category',\r\n {},\r\n {\r\n params: {\r\n name: params.name,\r\n desc: params.desc,\r\n },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves single tag category by ID.\r\n * Swagger: GET /api/core/tags/category/{id}\r\n */\r\n public async getTagCategory(\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.get(`/api/core/tags/category/${id}`, {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Updates an existing tag category.\r\n * Swagger: PUT /api/core/tags/category/{id}\r\n */\r\n public async updateTagCategory(\r\n id: number | string,\r\n params: UpdateTagCategoryParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/category/${id}`,\r\n {},\r\n {\r\n params: {\r\n name: params.name,\r\n desc: params.desc,\r\n enable: params.enable,\r\n },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Publishes a tag category.\r\n * Swagger: PUT /api/core/tags/category/{id}/publish\r\n */\r\n public async publishTagCategory(\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/category/${id}/publish`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Unpublishes a tag category.\r\n * Swagger: PUT /api/core/tags/category/{id}/unpublish\r\n */\r\n public async unpublishTagCategory(\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/category/${id}/unpublish`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // 2. TAG TREE & HIERARCHY (Swagger: /api/core/tags/{categoryId}/tree/...)\r\n // =========================================================================\r\n\r\n /**\r\n * Retrieves enabled published tag tree for category (defaults to 'root').\r\n * End user call (without requiring Access-Token).\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/enable\r\n */\r\n public async getTagTree(\r\n categoryId: string | number = 'root',\r\n params: GetTagTreeParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/enable`,\r\n {\r\n params,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves tag tree for category with management credentials.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/manage\r\n */\r\n public async getManageTagTree(\r\n categoryId: string | number,\r\n params: GetTagTreeParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/manage`,\r\n {\r\n params,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new tag tree node for category.\r\n * Swagger: POST /api/core/tags/{categoryId}/tree\r\n */\r\n public async createTagTreeItem(\r\n categoryId: string | number,\r\n params: CreateTagTreeItemParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n const { relatedContentIds, ...rest } = params;\r\n const queryParams: Record<string, any> = { ...rest };\r\n if (Array.isArray(relatedContentIds)) {\r\n queryParams['relatedContentIds[]'] = relatedContentIds;\r\n }\r\n\r\n return this.http.post(\r\n `/api/core/tags/${categoryId}/tree`,\r\n {},\r\n {\r\n params: queryParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Shows a single enabled tag tree item for end users.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/{id}/enable\r\n */\r\n public async getTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.get(`/api/core/tags/${categoryId}/tree/${id}/enable`, {\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Shows a single tag tree item for manager (with token).\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/{id}/manage\r\n */\r\n public async getManageTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.get(`/api/core/tags/${categoryId}/tree/${id}/manage`, {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Updates an existing tag tree node.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/{id}\r\n */\r\n public async updateTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n params: UpdateTagTreeItemParams,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n const { relatedContentIds, ...rest } = params;\r\n const queryParams: Record<string, any> = { ...rest };\r\n if (Array.isArray(relatedContentIds)) {\r\n queryParams['relatedContentIds[]'] = relatedContentIds;\r\n }\r\n\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/${id}`,\r\n {},\r\n {\r\n params: queryParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Publishes a tag tree item.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/publish/{id}\r\n */\r\n public async publishTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/publish/${id}`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Unpublishes a tag tree item.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/unpublish/{id}\r\n */\r\n public async unpublishTagTreeItem(\r\n categoryId: string | number,\r\n id: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/unpublish/${id}`,\r\n {},\r\n {\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Updates the parent of a tag tree item.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/parent/{id}\r\n */\r\n public async updateTagTreeParent(\r\n categoryId: string | number,\r\n id: number | string,\r\n parentId?: number | string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/parent/${id}`,\r\n {},\r\n {\r\n params: {\r\n parentId: parentId !== undefined ? String(parentId) : '',\r\n },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves tag tree ancestors for end user.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/parent/{id}/enable\r\n */\r\n public async getTagTreeAncestors(\r\n categoryId: string | number,\r\n id: number | string,\r\n params: TagTreeAncestorsParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/parent/${id}/enable`,\r\n {\r\n params,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves tag tree ancestors for manager (with token).\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/parent/{id}/manage\r\n */\r\n public async getManageTagTreeAncestors(\r\n categoryId: string | number,\r\n id: number | string,\r\n params: TagTreeAncestorsParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetTagTreeResponse> {\r\n try {\r\n return await this.http.get<GetTagTreeResponse>(\r\n `/api/core/tags/${categoryId}/tree/parent/${id}/manage`,\r\n {\r\n params,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as GetTagTreeResponse;\r\n }\r\n }\r\n\r\n /**\r\n * Updates tag tree code for category.\r\n * Swagger: PUT /api/core/tags/{categoryId}/tree/code/{id}\r\n */\r\n public async updateTagTreeCode(\r\n categoryId: string | number,\r\n id: number | string,\r\n code: string,\r\n options: CmsRequestOptions = {}\r\n ): Promise<any> {\r\n return this.http.put(\r\n `/api/core/tags/${categoryId}/tree/code/${id}`,\r\n {},\r\n {\r\n params: { code },\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","import { NextHttp, createNextHttp } from '@rezamirzapour/http';\r\nimport { CmsDataFormatter } from './formatter';\r\nimport { CmsProductService } from './product';\r\nimport { CmsTagService } from './tags';\r\nimport type {\r\n GetContentParams,\r\n GetCategoriesParams,\r\n GetContentByEntityIdParams,\r\n GetContentResponse,\r\n GetCategoryResponse,\r\n FormattedGetContentResponse,\r\n FormattedSubject,\r\n AddContentParams,\r\n EditContentParams,\r\n BatchPublishParams,\r\n BatchUnpublishParams,\r\n ArchiveParams,\r\n GetCommentsParams,\r\n GetReactionsParams,\r\n TimelineSearchBody,\r\n TimelineResponse,\r\n CmsRequestOptions,\r\n GetProductParams,\r\n GetProductByEntityIdParams,\r\n FormattedGetProductResponse,\r\n FormattedProductSubject,\r\n AddProductParams,\r\n} from './types';\r\n\r\nexport interface CmsServiceOptions {\r\n baseUrl: string;\r\n clientId: string;\r\n apiToken?: string;\r\n podspaceUrl?: string;\r\n revalidate?: number | string;\r\n}\r\n\r\nexport class CmsService {\r\n private http: NextHttp;\r\n private formatter: CmsDataFormatter;\r\n private clientId: string;\r\n private apiToken: string;\r\n private revalidate: number;\r\n\r\n /**\r\n * Dedicated CMS Product sub-service.\r\n * Swagger: tag=product\r\n */\r\n public readonly products: CmsProductService;\r\n\r\n /**\r\n * Dedicated CMS Tags & Tag Categories sub-service.\r\n * Swagger: tag=tags\r\n */\r\n public readonly tags: CmsTagService;\r\n\r\n constructor(options: CmsServiceOptions) {\r\n this.clientId = options.clientId || '';\r\n this.apiToken = options.apiToken || '';\r\n this.revalidate = Number(options.revalidate) || 0;\r\n this.formatter = new CmsDataFormatter(options.podspaceUrl || 'https://podspace.pod.ir');\r\n\r\n this.http = createNextHttp({\r\n baseUrl: options.baseUrl,\r\n serviceName: 'POD-CMS',\r\n });\r\n\r\n this.products = new CmsProductService({\r\n http: this.http,\r\n formatter: this.formatter,\r\n clientId: this.clientId,\r\n apiToken: this.apiToken,\r\n revalidate: this.revalidate,\r\n });\r\n\r\n this.tags = new CmsTagService({\r\n http: this.http,\r\n clientId: this.clientId,\r\n apiToken: this.apiToken,\r\n revalidate: this.revalidate,\r\n });\r\n }\r\n\r\n private get commonHeaders(): Record<string, string> {\r\n return {\r\n 'Client-Id': this.clientId,\r\n 'Content-Type': 'application/json',\r\n };\r\n }\r\n\r\n private get managingHeaders(): Record<string, string> {\r\n return {\r\n ...this.commonHeaders,\r\n 'Access-Token': this.apiToken,\r\n };\r\n }\r\n\r\n // =========================================================================\r\n // CONTENT METHODS (Swagger: tag=content)\r\n // =========================================================================\r\n\r\n /**\r\n * Retrieves enabled published content from CMS, formatted with generic metadata type T and optional normalized type P.\r\n * Swagger: GET /api/core/contents/enable\r\n */\r\n public async getContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents/enable', {\r\n params: transferParams,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves all contents using managing credentials (Access-Token).\r\n * Swagger: GET /api/core/contents\r\n */\r\n public async getAllContents<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents', {\r\n params: transferParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves current user/client contents.\r\n * Swagger: GET /api/core/contents/my\r\n */\r\n public async getMyContents<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents/my', {\r\n params: transferParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves contents by ContentType unique identifier.\r\n * Swagger: GET /api/core/contents/{contentTypeUniqueId}\r\n */\r\n public async getContentsByType<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentTypeUniqueId: string,\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const transferParams = {\r\n size: 50,\r\n offset: 0,\r\n showDetail: true,\r\n ...params,\r\n };\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(\r\n `/api/core/contents/${contentTypeUniqueId}`,\r\n {\r\n params: transferParams,\r\n headers: {\r\n ...this.managingHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves unpublished content (enable: false).\r\n */\r\n public async getUnpublishedContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentParams = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n return this.getAllContents<T, P>({ ...params, enable: false }, options);\r\n }\r\n\r\n /**\r\n * Retrieves single content by entityId and optional contentTypeUniqueId.\r\n * Swagger: GET /api/core/contents/enable/{entityId} OR /api/core/contents/{contentTypeUniqueId}/enable/{entityId}\r\n */\r\n public async getContentByEntityId<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetContentByEntityIdParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/enable/${params.entityId}`\r\n : `/api/core/contents/enable/${params.entityId}`;\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(url, {\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves content by unique identifier.\r\n * Swagger: GET /api/core/contents/{contentUniqueId}/byContentUniqueId/enable\r\n */\r\n public async getContentByUniqueId<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentUniqueId: string,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n try {\r\n const res = await this.http.get<GetContentResponse>(\r\n `/api/core/contents/${contentUniqueId}/byContentUniqueId/enable`,\r\n {\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Searches published contents by keyword.\r\n * Swagger: GET /api/core/contents/search\r\n */\r\n public async searchContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: { query?: string; name?: string; offset?: number; size?: number; [key: string]: any } = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n try {\r\n const res = await this.http.get<GetContentResponse>('/api/core/contents/search', {\r\n params,\r\n headers: {\r\n ...this.commonHeaders,\r\n ...(options.headers as any),\r\n },\r\n cache: options.cache,\r\n signal: options.signal,\r\n next: {\r\n revalidate:\r\n options.revalidate !== undefined\r\n ? options.revalidate === false\r\n ? 0\r\n : options.revalidate\r\n : this.revalidate,\r\n },\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Adds and publishes new content to CMS.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/add-publish\r\n */\r\n public async addContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/add-publish`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Creates a new draft/unpublished content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}\r\n */\r\n public async createContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Edits and publishes existing content by entityId.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/{entityId}/edit-publish\r\n */\r\n public async editContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/${entityId}/edit-publish`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Updates existing content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/{entityId}\r\n */\r\n public async updateContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/${entityId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Partially updates existing content.\r\n * Swagger: PATCH /api/core/contents/{contentTypeUniqueId}/{entityId}\r\n */\r\n public async patchContent<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: EditContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.patch<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/${entityId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Publishes existing content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/publish/{entityId}\r\n */\r\n public async publishContent(\r\n contentTypeUniqueId: string,\r\n entityId: number | string\r\n ): Promise<any> {\r\n return this.http.post(\r\n `/api/core/contents/${contentTypeUniqueId}/publish/${entityId}`,\r\n {},\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Unpublishes existing content.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/unpublish/{entityId}\r\n */\r\n public async unpublishContent(\r\n contentTypeUniqueId: string,\r\n entityId: number | string\r\n ): Promise<any> {\r\n return this.http.post(\r\n `/api/core/contents/${contentTypeUniqueId}/unpublish/${entityId}`,\r\n {},\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Batch publishes content items.\r\n * Swagger: PUT /api/core/contents/{contentTypeUniqueId}/publish OR /api/core/contents/publish\r\n */\r\n public async batchPublish(params: BatchPublishParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/publish`\r\n : '/api/core/contents/publish';\r\n\r\n return this.http.put(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Batch unpublishes content items.\r\n * Swagger: PUT /api/core/contents/{contentTypeUniqueId}/unpublish OR /api/core/contents/unpublish\r\n */\r\n public async batchUnpublish(params: BatchUnpublishParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/unpublish`\r\n : '/api/core/contents/unpublish';\r\n\r\n return this.http.put(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Archives content items.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/archive\r\n */\r\n public async archiveContent(params: ArchiveParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/archive`\r\n : '/api/core/contents/archive';\r\n\r\n return this.http.post(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Unarchives content items.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/unarchive\r\n */\r\n public async unarchiveContent(params: ArchiveParams): Promise<any> {\r\n const url = params.contentTypeUniqueId\r\n ? `/api/core/contents/${params.contentTypeUniqueId}/unarchive`\r\n : '/api/core/contents/unarchive';\r\n\r\n return this.http.post(url, { entityIds: params.entityIds }, {\r\n headers: this.managingHeaders,\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves list of archived contents.\r\n * Swagger: GET /api/core/contents/archive OR /api/core/contents/{contentTypeUniqueId}/archive\r\n */\r\n public async getArchivedContents<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: { contentTypeUniqueId?: string; offset?: number; size?: number; [key: string]: any } = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const { contentTypeUniqueId, ...rest } = params;\r\n const url = contentTypeUniqueId\r\n ? `/api/core/contents/${contentTypeUniqueId}/archive`\r\n : '/api/core/contents/archive';\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(url, {\r\n params: rest,\r\n headers: this.managingHeaders,\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves drafts.\r\n * Swagger: GET /api/core/contents/draft OR /api/core/contents/{contentTypeUniqueId}/draft\r\n */\r\n public async getDrafts<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: { contentTypeUniqueId?: string; offset?: number; size?: number; [key: string]: any } = {},\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const { contentTypeUniqueId, ...rest } = params;\r\n const url = contentTypeUniqueId\r\n ? `/api/core/contents/${contentTypeUniqueId}/draft`\r\n : '/api/core/contents/draft';\r\n\r\n try {\r\n const res = await this.http.get<GetContentResponse>(url, {\r\n params: rest,\r\n headers: this.managingHeaders,\r\n });\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a draft.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/draft\r\n */\r\n public async createDraft<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${params.contentTypeUniqueId}/draft`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Gets a specific draft by entityId.\r\n * Swagger: GET /api/core/contents/{contentTypeUniqueId}/draft/{entityId}\r\n */\r\n public async getDraftById<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentTypeUniqueId: string,\r\n entityId: number | string,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n try {\r\n const res = await this.http.get<GetContentResponse>(\r\n `/api/core/contents/${contentTypeUniqueId}/draft/${entityId}`,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n } catch {\r\n return { hasError: true, result: [] } as unknown as FormattedGetContentResponse<T, P>;\r\n }\r\n }\r\n\r\n /**\r\n * Updates a draft.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/draft/{entityId}\r\n */\r\n public async updateDraft<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n contentTypeUniqueId: string,\r\n entityId: number | string,\r\n params: AddContentParams,\r\n options: CmsRequestOptions<FormattedSubject> = {}\r\n ): Promise<FormattedGetContentResponse<T, P>> {\r\n const res = await this.http.post<GetContentResponse>(\r\n `/api/core/contents/${contentTypeUniqueId}/draft/${entityId}`,\r\n params.body,\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n\r\n return this.formatter.formatGetContentResponse<T, P>(res, options.normalizer);\r\n }\r\n\r\n /**\r\n * Undrafts content by entityId.\r\n * Swagger: POST /api/core/contents/{contentTypeUniqueId}/undraft/{entityId}\r\n */\r\n public async undraftContent(\r\n contentTypeUniqueId: string,\r\n entityId: number | string\r\n ): Promise<any> {\r\n return this.http.post(\r\n `/api/core/contents/${contentTypeUniqueId}/undraft/${entityId}`,\r\n {},\r\n {\r\n headers: this.managingHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves comments on content.\r\n * Swagger: GET /api/core/contents/{contentTypeUniqueId}/comments/{entityId}\r\n */\r\n public async getComments(\r\n contentTypeUniqueId: string,\r\n entityId: number | string,\r\n params: GetCommentsParams = {}\r\n ): Promise<any> {\r\n return this.http.get(\r\n `/api/core/contents/${contentTypeUniqueId}/comments/${entityId}`,\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves list of likes for content.\r\n * Swagger: GET /api/core/contents/{contentUniqueId}/like/{entityId}\r\n */\r\n public async getLikes(\r\n contentUniqueId: string,\r\n entityId: number | string,\r\n params: GetReactionsParams = {}\r\n ): Promise<any> {\r\n return this.http.get(\r\n `/api/core/contents/${contentUniqueId}/like/${entityId}`,\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves list of dislikes for content.\r\n * Swagger: GET /api/core/contents/{contentUniqueId}/dislike/{entityId}\r\n */\r\n public async getDislikes(\r\n contentUniqueId: string,\r\n entityId: number | string,\r\n params: GetReactionsParams = {}\r\n ): Promise<any> {\r\n return this.http.get(\r\n `/api/core/contents/${contentUniqueId}/dislike/${entityId}`,\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves tag/category tree.\r\n * Backward-compatible delegate pointing to `cms.tags.getTagTree('root', params, options)`.\r\n * Swagger: GET /api/core/tags/{categoryId}/tree/enable\r\n */\r\n public async getCategories(\r\n params: GetCategoriesParams = {},\r\n options: CmsRequestOptions = {}\r\n ): Promise<GetCategoryResponse> {\r\n return this.tags.getTagTree('root', params, options);\r\n }\r\n\r\n /**\r\n * Retrieves details of a content type structure.\r\n * Swagger: GET /api/core/content-types/{contentTypeUniqueId}\r\n */\r\n public async getContentTypeDetail(contentTypeUniqueId: string): Promise<any> {\r\n try {\r\n return await this.http.get(`/api/core/content-types/${contentTypeUniqueId}`, {\r\n headers: this.managingHeaders,\r\n });\r\n } catch {\r\n return {};\r\n }\r\n }\r\n\r\n /**\r\n * Performs advanced AI timeline search on content.\r\n * Swagger: GET /api/core/contents/ai/timeline-search/enable\r\n */\r\n public async timelineSearch(query?: TimelineSearchBody): Promise<TimelineResponse> {\r\n const params: Record<string, any> = {};\r\n if (query?.advance) {\r\n params.advance = JSON.stringify(query.advance);\r\n params.newVersion = true;\r\n }\r\n if (query?.offset) {\r\n params.offset = query.offset;\r\n }\r\n if (query?.size) {\r\n params.size = query.size;\r\n }\r\n\r\n return this.http.get<TimelineResponse>(\r\n '/api/core/contents/ai/timeline-search/enable',\r\n {\r\n params,\r\n headers: this.commonHeaders,\r\n }\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // CONVENIENCE DELEGATES FOR PRODUCTS\r\n // =========================================================================\r\n\r\n /**\r\n * Delegate to `cms.products.getProducts(...)`.\r\n */\r\n public async getProducts<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetProductParams = {},\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.getProducts<T, P>(params, options);\r\n }\r\n\r\n /**\r\n * Delegate to `cms.products.getProductByEntityId(...)`.\r\n */\r\n public async getProductByEntityId<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: GetProductByEntityIdParams,\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.getProductByEntityId<T, P>(params, options);\r\n }\r\n\r\n /**\r\n * Delegate to `cms.products.addProduct(...)`.\r\n */\r\n public async addProduct<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n params: AddProductParams,\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.addProduct<T, P>(params, options);\r\n }\r\n\r\n /**\r\n * Delegate to `cms.products.editProduct(...)`.\r\n */\r\n public async editProduct<T extends Record<string, any> = Record<string, any>, P = {}>(\r\n entityId: number | string,\r\n params: AddProductParams,\r\n options: CmsRequestOptions<FormattedProductSubject> = {}\r\n ): Promise<FormattedGetProductResponse<T, P>> {\r\n return this.products.editProduct<T, P>(entityId, params, options);\r\n }\r\n}\r\n\r\nexport * from './types';\r\nexport * from './formatter';\r\nexport * from './product';\r\nexport * from './tags';\r\n","import { NextHttp, createNextHttp, RequestOptions } from '@rezamirzapour/http';\nimport type {\n GetInfOfGraduatedByGraduateDateResponse,\n GetSessionClassInCurrentDayResponse,\n} from './types';\n\nexport interface IumsServiceOptions {\n baseUrl?: string;\n clientId: string;\n revalidate?: number | string;\n}\n\nexport class IumsService {\n private http: NextHttp;\n private baseUrl: string;\n private clientId: string;\n private revalidate: number;\n\n constructor(options: IumsServiceOptions) {\n this.clientId = options.clientId || '';\n this.revalidate = Number(options.revalidate) || 0;\n this.baseUrl = options.baseUrl || 'https://indra.khatam.ac.ir/srv';\n\n this.http = createNextHttp({\n baseUrl: this.baseUrl,\n serviceName: 'POD-IUMS',\n headers: {\n 'Client-Id': this.clientId,\n },\n });\n }\n\n private generateIumsDataPayload(method: string, parameters: (number | string)[] = [], service: string = 'ExternalFacade'): string {\n const paramsString = parameters.length > 0\n ? '[' + parameters.map((v) => `\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"${v}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"`) + ']'\n : null;\n\n return `{\"type\":3,\"content\":\"{\\\\\\\"peerName\\\\\\\":\\\\\\\"khatam_eng_hq\\\\\\\",\\\\\\\"receivers\\\\\\\":[],\\\\\\\"collapseId\\\\\\\":null,\\\\\\\"groupId\\\\\\\":null,\\\\\\\"index\\\\\\\":null,\\\\\\\"messageId\\\\\\\":\\\\\\\"8657270951\\\\\\\",\\\\\\\"ttl\\\\\\\":60000,\\\\\\\"content\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"requestHeader\\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\\"trackerId\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"token\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"id_token\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"pod_token\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"ssoToken\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"requesterPostId\\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\\"userIds\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"ssoIds\\\\\\\\\\\\\\\":null},\\\\\\\\\\\\\\\"messageType\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"INVOKE_SERVICE\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"processData\\\\\\\\\\\\\\\":[],\\\\\\\\\\\\\\\"content\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"service\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"${service}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"serviceMethod\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"${method}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"parameters\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":${paramsString ?? 'null'},\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"returnedVarType\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"returnedVarJson\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"genericType\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\":null}\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"engineName\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"peerId\\\\\\\\\\\\\\\":null,\\\\\\\\\\\\\\\"asyncTracker\\\\\\\\\\\\\\\":0,\\\\\\\\\\\\\\\"trackerId\\\\\\\\\\\\\\\":null}\\\\\\\"}\\\",\\\"trackerId\\\":null}`;\n }\n\n private formatIumsResponse(response: { content?: string }): any {\n const content = response?.content;\n if (!content) return response;\n\n try {\n let data = JSON.parse(content);\n if (data?.content) {\n data = JSON.parse(data.content);\n }\n if (data?.returnedVarJson) {\n return JSON.parse(data.returnedVarJson);\n }\n return data;\n } catch {\n return response;\n }\n }\n\n private async request<T = any>(\n serviceMethod: string,\n params: (string | number)[] = [],\n options?: RequestOptions\n ): Promise<T> {\n const dataPayload = this.generateIumsDataPayload(serviceMethod, params);\n\n // If baseUrl already ends with '/srv', don't append '/srv' again\n const endpoint = this.baseUrl.replace(/\\/+$/, '').endsWith('/srv') ? '' : '/srv';\n\n const response = await this.http.get<{ content?: string }>(endpoint, {\n ...options,\n params: { data: dataPayload },\n next: this.revalidate ? { revalidate: this.revalidate, ...(options?.next || {}) } : options?.next,\n });\n\n return this.formatIumsResponse(response) as T;\n }\n\n public async getInfOfGraduatedByGraduateDate(\n startDate: string = '20240521',\n endDate: string = '20250621',\n options?: RequestOptions\n ): Promise<GetInfOfGraduatedByGraduateDateResponse> {\n return this.request<GetInfOfGraduatedByGraduateDateResponse>(\n 'getInfOfGraduatedByGraduateDate3',\n [startDate, endDate],\n options\n );\n }\n\n public async getSessionClassInCurrentDay(options?: RequestOptions): Promise<GetSessionClassInCurrentDayResponse> {\n return this.request<GetSessionClassInCurrentDayResponse>(\n 'getSessionCalssInCurrentDay',\n [],\n options\n );\n }\n\n public async getDetailsOfTermExam(options?: RequestOptions): Promise<any> {\n return this.request('getDetailsOfTermExam', [], options);\n }\n\n public async getStudentInformationByNumber(\n studentNumber: string | number,\n options?: RequestOptions\n ): Promise<any> {\n return this.request('getStudentInformationByNumber', [Number(studentNumber)], options);\n }\n\n public async getStudentInformationByNationalCode(\n nationalCode: string | number,\n options?: RequestOptions\n ): Promise<any> {\n return this.request('getStudentInformationByNationalCode', [Number(nationalCode)], options);\n }\n}\n\nexport * from './types';\n","import type { PodUrlsConfig } from './types';\n\n/**\n * Official POD Platform Production URLs.\n */\nexport const DEFAULT_POD_URLS: Required<PodUrlsConfig> = {\n accounts: 'https://accounts.pod.ir',\n apiPod: 'https://api.pod.ir',\n apiPodSandbox: 'https://api.sandpod.ir',\n cms: 'https://api.pod.ir/srv/cms-server',\n iums: 'https://indra.khatam.ac.ir/srv',\n notification: 'https://api.pod.ir/srv/notification',\n podreport: 'https://reporting.pod.ir',\n podspace: 'https://podspace.pod.ir',\n podform: 'https://podformapi.pod.ir',\n sandboxCms: 'http://api.sandpod.ir/srv/cms-sandbox',\n sandboxCmsClient: 'https://api.sandpod.ir/srv/cms-sandbox',\n sandboxPodspace: 'http://podspace.sandpod.ir',\n sandboxStream: 'https://sandbox-offline-stream.sandpod.ir',\n stream: 'https://sandbox-offline-stream.sandpod.ir',\n website: '',\n};\n\n/**\n * Official POD Platform Sandbox URLs for development and testing.\n */\nexport const SANDBOX_POD_URLS: Required<PodUrlsConfig> = {\n accounts: 'https://accounts.pod.ir',\n apiPod: 'https://api.sandpod.ir',\n apiPodSandbox: 'https://api.sandpod.ir',\n cms: 'https://api.sandpod.ir/srv/cms-sandbox',\n iums: 'https://indra.khatam.ac.ir/srv',\n notification: 'https://api.pod.ir/srv/notification',\n podreport: 'https://reporting.pod.ir',\n podspace: 'http://podspace.sandpod.ir',\n podform: 'https://podformapi.sandpod.ir',\n sandboxCms: 'http://api.sandpod.ir/srv/cms-sandbox',\n sandboxCmsClient: 'https://api.sandpod.ir/srv/cms-sandbox',\n sandboxPodspace: 'http://podspace.sandpod.ir',\n sandboxStream: 'https://sandbox-offline-stream.sandpod.ir',\n stream: 'https://sandbox-offline-stream.sandpod.ir',\n website: '',\n};\n\n/**\n * Safely extracts environment variable from `process.env` when running in Node.js or Next.js.\n */\nfunction getEnv(key: string): string | undefined {\n if (typeof process !== 'undefined' && process?.env && process.env[key]) {\n const val = process.env[key]?.trim();\n if (val && val.length > 0) {\n return val;\n }\n }\n return undefined;\n}\n\n/**\n * Resolves full POD URL configuration with the following priority:\n * 1. Explicit user overrides in `config.urls`\n * 2. Next.js / Node environment variables (`process.env.NEXT_PUBLIC_*`)\n * 3. Default production / sandbox URLs\n *\n * Supported Environment Variables:\n * - `NEXT_PUBLIC_ACCOUNTS_URL`\n * - `NEXT_PUBLIC_API_POD_URL`\n * - `NEXT_PUBLIC_API_POD_SANDBOX_URL`\n * - `NEXT_PUBLIC_CMS_URL`\n * - `NEXT_PUBLIC_IUMS_URL`\n * - `NEXT_PUBLIC_NOTIFICATION_URL`\n * - `NEXT_PUBLIC_PODREPORT_URL`\n * - `NEXT_PUBLIC_PODSPACE_URL`\n * - `NEXT_PUBLIC_SANDBOX_CMS_URL`\n * - `NEXT_PUBLIC_SANDBOX_CMS_CLIENT_URL`\n * - `NEXT_PUBLIC_SANDBOX_PODSPACE_URL`\n * - `NEXT_PUBLIC_SANDBOX_STREAM_URL`\n * - `NEXT_PUBLIC_PODFORM_URL`\n * - `NEXT_PUBLIC_WEBSITE_URL`\n */\nexport function resolvePodUrls(\n urls?: PodUrlsConfig,\n sandbox: boolean = false\n): Required<PodUrlsConfig> {\n const defaults = sandbox ? SANDBOX_POD_URLS : DEFAULT_POD_URLS;\n\n return {\n accounts:\n urls?.accounts ||\n getEnv('NEXT_PUBLIC_ACCOUNTS_URL') ||\n defaults.accounts,\n\n apiPod:\n urls?.apiPod ||\n (sandbox\n ? getEnv('NEXT_PUBLIC_API_POD_SANDBOX_URL') || defaults.apiPod\n : getEnv('NEXT_PUBLIC_API_POD_URL') || defaults.apiPod),\n\n apiPodSandbox:\n urls?.apiPodSandbox ||\n getEnv('NEXT_PUBLIC_API_POD_SANDBOX_URL') ||\n defaults.apiPodSandbox,\n\n cms:\n urls?.cms ||\n (sandbox\n ? getEnv('NEXT_PUBLIC_SANDBOX_CMS_CLIENT_URL') ||\n getEnv('NEXT_PUBLIC_SANDBOX_CMS_URL') ||\n defaults.cms\n : getEnv('NEXT_PUBLIC_CMS_URL') || defaults.cms),\n\n iums:\n urls?.iums ||\n getEnv('NEXT_PUBLIC_IUMS_URL') ||\n defaults.iums,\n\n notification:\n urls?.notification ||\n getEnv('NEXT_PUBLIC_NOTIFICATION_URL') ||\n defaults.notification,\n\n podreport:\n urls?.podreport ||\n getEnv('NEXT_PUBLIC_PODREPORT_URL') ||\n defaults.podreport,\n\n podspace:\n urls?.podspace ||\n (sandbox\n ? getEnv('NEXT_PUBLIC_SANDBOX_PODSPACE_URL') || defaults.podspace\n : getEnv('NEXT_PUBLIC_PODSPACE_URL') || defaults.podspace),\n\n podform:\n urls?.podform ||\n getEnv('NEXT_PUBLIC_PODFORM_URL') ||\n defaults.podform,\n\n sandboxCms:\n urls?.sandboxCms ||\n getEnv('NEXT_PUBLIC_SANDBOX_CMS_URL') ||\n defaults.sandboxCms,\n\n sandboxCmsClient:\n urls?.sandboxCmsClient ||\n getEnv('NEXT_PUBLIC_SANDBOX_CMS_CLIENT_URL') ||\n defaults.sandboxCmsClient,\n\n sandboxPodspace:\n urls?.sandboxPodspace ||\n getEnv('NEXT_PUBLIC_SANDBOX_PODSPACE_URL') ||\n defaults.sandboxPodspace,\n\n sandboxStream:\n urls?.sandboxStream ||\n urls?.stream ||\n getEnv('NEXT_PUBLIC_SANDBOX_STREAM_URL') ||\n defaults.sandboxStream,\n\n stream:\n urls?.stream ||\n urls?.sandboxStream ||\n getEnv('NEXT_PUBLIC_SANDBOX_STREAM_URL') ||\n defaults.stream,\n\n website:\n urls?.website ||\n getEnv('NEXT_PUBLIC_WEBSITE_URL') ||\n defaults.website,\n };\n}\r\n","import { SsoService } from './services/sso';\nimport { CaptchaService } from './services/captcha';\nimport { CustomPostService, CustomPostCrudService } from './services/customPost';\nimport { PodspaceService } from './services/podspace';\nimport { PodFormService } from './services/podform';\nimport { NotificationService } from './services/notification';\nimport { SocialService } from './services/social';\nimport { CmsService, CmsProductService, CmsTagService } from './services/cms';\nimport { IumsService } from './services/iums';\nimport { resolvePodUrls } from './constants';\nimport type { PodSdkConfig, PodUrlsConfig } from './types';\nimport type { CustomPostCrudConfig } from './services/customPost/types';\n\nexport class PodSdk {\n public readonly sso: SsoService;\n public readonly captcha: CaptchaService;\n public readonly customPost: CustomPostService;\n public readonly podspace: PodspaceService;\n public readonly podform: PodFormService;\n public readonly notification: NotificationService;\n public readonly social: SocialService;\n public readonly cms: CmsService;\n public readonly product: CmsProductService;\n public readonly tags: CmsTagService;\n public readonly iums: IumsService;\n public readonly urls: Required<PodUrlsConfig>;\n\n constructor(config: PodSdkConfig = {}) {\n const urls = resolvePodUrls(config.urls, config.sandbox);\n this.urls = urls;\n\n const apiToken = config.apiToken || '';\n const clientId = config.clientId || '';\n const clientSecret = config.clientSecret || '';\n const privateKeyPem = config.privateKeyPem || '';\n const revalidate = config.revalidate;\n\n // 1. SSO\n this.sso = new SsoService({\n baseUrl: urls.accounts!,\n clientId,\n clientSecret,\n apiToken,\n privateKeyPem,\n websiteUrl: urls.website,\n revalidate,\n });\n\n // 1.5 Captcha\n this.captcha = new CaptchaService({\n baseUrl: urls.apiPod!,\n clientId,\n accessToken: apiToken,\n });\n\n // 2. CustomPost\n this.customPost = new CustomPostService({\n baseUrl: urls.apiPod!,\n apiToken,\n revalidate,\n });\n\n // 3. Podspace\n this.podspace = new PodspaceService({\n baseUrl: urls.podspace,\n apiToken,\n revalidate,\n });\n\n // 4. PodForm\n this.podform = new PodFormService({\n baseUrl: urls.podform!,\n apiToken,\n revalidate,\n });\n\n // 5. Notification (SMS)\n this.notification = new NotificationService({\n baseUrl: urls.notification!,\n apiToken,\n });\n\n // 6. Social\n this.social = new SocialService({\n baseUrl: urls.apiPod!,\n apiToken,\n revalidate,\n });\n\n // 7. CMS, Product & Tags\n this.cms = new CmsService({\n baseUrl: urls.cms || urls.apiPod!,\n apiToken,\n clientId,\n podspaceUrl: urls.podspace,\n revalidate,\n });\n this.product = this.cms.products;\n this.tags = this.cms.tags;\n\n // 8. IUMS\n this.iums = new IumsService({\n baseUrl: urls.iums!,\n clientId,\n revalidate,\n });\n }\n\n /**\n * Helper shortcut to instantiate a Generic CRUD repository for any entity type on POD CustomPost.\n */\n public createCrud<DataType>(config: CustomPostCrudConfig): CustomPostCrudService<DataType> {\n return this.customPost.createCrud<DataType>(config);\n }\n}\n\n/**\n * Factory function to create a new POD SDK instance.\n */\nexport function createPodSdk(config: PodSdkConfig): PodSdk {\n return new PodSdk(config);\n}\n\nexport default PodSdk;\n"]}
|