// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../../../core/resource'; import { APIPromise } from '../../../../core/api-promise'; import { PagePromise, V4PagePaginationArray, type V4PagePaginationArrayParams, } from '../../../../core/pagination'; import { RequestOptions } from '../../../../internal/request-options'; import { path } from '../../../../internal/utils/path'; export class BaseJobs extends APIResource { static override readonly _key: readonly ['aiSearch', 'namespaces', 'instances', 'jobs'] = Object.freeze([ 'aiSearch', 'namespaces', 'instances', 'jobs', ] as const); /** * Creates a new indexing job for an AI Search instance. * * @example * ```ts * const job = * await client.aiSearch.namespaces.instances.jobs.create( * 'my-ai-search', * { * account_id: 'c3dc5f0b34a14ff8e1b3ec04895e1b22', * name: 'my-namespace', * }, * ); * ``` */ create(id: string, params: JobCreateParams, options?: RequestOptions): APIPromise { const { account_id, name, ...body } = params; return ( this._client.post(path`/accounts/${account_id}/ai-search/namespaces/${name}/instances/${id}/jobs`, { body, ...options, }) as APIPromise<{ result: JobCreateResponse }> )._thenUnwrap((obj) => obj.result); } /** * Updates the status of an AI Search indexing job. * * @example * ```ts * const job = * await client.aiSearch.namespaces.instances.jobs.update( * 'job_id', * { * account_id: 'c3dc5f0b34a14ff8e1b3ec04895e1b22', * name: 'my-namespace', * id: 'my-ai-search', * action: 'cancel', * }, * ); * ``` */ update(jobID: string, params: JobUpdateParams, options?: RequestOptions): APIPromise { const { account_id, name, id, ...body } = params; return ( this._client.patch( path`/accounts/${account_id}/ai-search/namespaces/${name}/instances/${id}/jobs/${jobID}`, { body, ...options }, ) as APIPromise<{ result: JobUpdateResponse }> )._thenUnwrap((obj) => obj.result); } /** * Lists indexing jobs for an AI Search instance. * * @example * ```ts * // Automatically fetches more pages as needed. * for await (const jobListResponse of client.aiSearch.namespaces.instances.jobs.list( * 'my-ai-search', * { * account_id: 'c3dc5f0b34a14ff8e1b3ec04895e1b22', * name: 'my-namespace', * }, * )) { * // ... * } * ``` */ list( id: string, params: JobListParams, options?: RequestOptions, ): PagePromise { const { account_id, name, ...query } = params; return this._client.getAPIList( path`/accounts/${account_id}/ai-search/namespaces/${name}/instances/${id}/jobs`, V4PagePaginationArray, { query, ...options }, ); } /** * Retrieves details for a specific AI Search indexing job. * * @example * ```ts * const job = * await client.aiSearch.namespaces.instances.jobs.get( * 'job_id', * { * account_id: 'c3dc5f0b34a14ff8e1b3ec04895e1b22', * name: 'my-namespace', * id: 'my-ai-search', * }, * ); * ``` */ get(jobID: string, params: JobGetParams, options?: RequestOptions): APIPromise { const { account_id, name, id } = params; return ( this._client.get( path`/accounts/${account_id}/ai-search/namespaces/${name}/instances/${id}/jobs/${jobID}`, options, ) as APIPromise<{ result: JobGetResponse }> )._thenUnwrap((obj) => obj.result); } /** * Lists log entries for an AI Search indexing job. * * @example * ```ts * const response = * await client.aiSearch.namespaces.instances.jobs.logs( * 'job_id', * { * account_id: 'c3dc5f0b34a14ff8e1b3ec04895e1b22', * name: 'my-namespace', * id: 'my-ai-search', * }, * ); * ``` */ logs(jobID: string, params: JobLogsParams, options?: RequestOptions): APIPromise { const { account_id, name, id, ...query } = params; return ( this._client.get( path`/accounts/${account_id}/ai-search/namespaces/${name}/instances/${id}/jobs/${jobID}/logs`, { query, ...options }, ) as APIPromise<{ result: JobLogsResponse }> )._thenUnwrap((obj) => obj.result); } } export class Jobs extends BaseJobs {} export type JobListResponsesV4PagePaginationArray = V4PagePaginationArray; export interface JobCreateResponse { id: string; source: 'user' | 'schedule'; description?: string; end_reason?: string; ended_at?: string; last_seen_at?: string; started_at?: string; } export interface JobUpdateResponse { id: string; source: 'user' | 'schedule'; description?: string; end_reason?: string; ended_at?: string; last_seen_at?: string; started_at?: string; } export interface JobListResponse { id: string; source: 'user' | 'schedule'; description?: string; end_reason?: string; ended_at?: string; last_seen_at?: string; started_at?: string; } export interface JobGetResponse { id: string; source: 'user' | 'schedule'; description?: string; end_reason?: string; ended_at?: string; last_seen_at?: string; started_at?: string; } export type JobLogsResponse = Array; export namespace JobLogsResponse { export interface JobLogsResponseItem { id: number; created_at: number; message: string; message_type: number; } } export interface JobCreateParams { /** * Path param */ account_id: string; /** * Path param: Namespace name */ name: string; /** * Body param */ description?: string; } export interface JobUpdateParams { /** * Path param */ account_id: string; /** * Path param: Namespace name */ name: string; /** * Path param: AI Search instance ID. Lowercase alphanumeric, hyphens, and * underscores. */ id: string; /** * Body param */ action: 'cancel'; } export interface JobListParams extends V4PagePaginationArrayParams { /** * Path param */ account_id: string; /** * Path param: Namespace name */ name: string; } export interface JobGetParams { account_id: string; /** * Namespace name */ name: string; /** * AI Search instance ID. Lowercase alphanumeric, hyphens, and underscores. */ id: string; } export interface JobLogsParams { /** * Path param */ account_id: string; /** * Path param: Namespace name */ name: string; /** * Path param: AI Search instance ID. Lowercase alphanumeric, hyphens, and * underscores. */ id: string; /** * Query param */ page?: number; /** * Query param */ per_page?: number; } export declare namespace Jobs { export { type JobCreateResponse as JobCreateResponse, type JobUpdateResponse as JobUpdateResponse, type JobListResponse as JobListResponse, type JobGetResponse as JobGetResponse, type JobLogsResponse as JobLogsResponse, type JobListResponsesV4PagePaginationArray as JobListResponsesV4PagePaginationArray, type JobCreateParams as JobCreateParams, type JobUpdateParams as JobUpdateParams, type JobListParams as JobListParams, type JobGetParams as JobGetParams, type JobLogsParams as JobLogsParams, }; }