/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. * @generated-id: 26f19cb22b51 */ import * as z from "zod/v3"; import { GleanCore } from "../core.js"; import { encodeJSON } from "../lib/encodings.js"; import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; import { RequestOptions } from "../lib/sdks.js"; import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; import { pathToFunc } from "../lib/url.js"; import * as components from "../models/components/index.js"; import { GleanBaseError } from "../models/errors/gleanbaseerror.js"; import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError, } from "../models/errors/httpclienterrors.js"; import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import { APICall, APIPromise } from "../types/async.js"; import { Result } from "../types/fp.js"; /** * Schedules the processing of uploaded documents * * @remarks * Schedules the immediate processing of documents uploaded through the indexing API. By default the uploaded documents will be processed asynchronously but this API can be used to schedule processing of all documents on demand. * * If a `datasource` parameter is specified, processing is limited to that custom datasource. Without it, processing applies to all documents across all custom datasources. * #### Rate Limits * This endpoint is rate-limited to one usage every 3 hours. Exceeding this limit results in a 429 response code. Here's how the rate limit works: * 1. Calling `/processalldocuments` for datasource `foo` prevents another call for `foo` for 3 hours. * 2. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for `bar`. * 3. Calling `/processalldocuments` for all datasources prevents any datasource calls for 3 hours. * 4. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for all datasources. * * For more frequent document processing, contact Glean support. */ export function indexingDocumentsProcessAll( client: GleanCore, request?: components.ProcessAllDocumentsRequest | undefined, options?: RequestOptions, ): APIPromise< Result< void, | GleanBaseError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError > > { return new APIPromise($do( client, request, options, )); } async function $do( client: GleanCore, request?: components.ProcessAllDocumentsRequest | undefined, options?: RequestOptions, ): Promise< [ Result< void, | GleanBaseError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError >, APICall, ] > { const parsed = safeParse( request, (value) => components.ProcessAllDocumentsRequest$outboundSchema.optional().parse( value, ), "Input validation failed", ); if (!parsed.ok) { return [parsed, { status: "invalid" }]; } const payload = parsed.value; const body = payload === undefined ? null : encodeJSON("body", payload, { explode: true }); const path = pathToFunc("/api/index/v1/processalldocuments")(); const headers = new Headers(compactMap({ "Content-Type": "application/json", Accept: "*/*", })); const secConfig = await extractSecurity(client._options.apiToken); const securityInput = secConfig == null ? {} : { apiToken: secConfig }; const requestSecurity = resolveGlobalSecurity(securityInput); const context = { options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "post_/api/index/v1/processalldocuments", oAuth2Scopes: null, resolvedSecurity: requestSecurity, securitySource: client._options.apiToken, retryConfig: options?.retries || client._options.retryConfig || { strategy: "none" }, retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], }; const requestRes = client._createRequest(context, { security: requestSecurity, method: "POST", baseURL: options?.serverURL, path: path, headers: headers, body: body, userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { return [requestRes, { status: "invalid" }]; } const req = requestRes.value; const doResult = await client._do(req, { context, isErrorStatusCode: (statusCode: number) => matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); if (!doResult.ok) { return [doResult, { status: "request-error", request: req }]; } const response = doResult.value; const [result] = await M.match< void, | GleanBaseError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError >( M.nil(200, z.void()), M.fail([400, 401, 429, "4XX"]), M.fail("5XX"), )(response, req); if (!result.ok) { return [result, { status: "complete", request: req, response }]; } return [result, { status: "complete", request: req, response }]; }