1import type * as qbusiness from "@distilled.cloud/aws/qbusiness";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { DataSource } from "./DataSource.ts";
5
6/**
7 * `StartDataSourceSyncJob` request with `applicationId` + `indexId` + `dataSourceId` injected from the bound data source.
8 */
9export interface StartDataSourceSyncJobRequest extends Omit<
10 qbusiness.StartDataSourceSyncJobRequest,
11 "applicationId" | "indexId" | "dataSourceId"
12> {}
13
14/**
15 * Runtime binding for the `StartDataSourceSyncJob` operation (IAM action
16 * `qbusiness:StartDataSourceSyncJob`), scoped to one {@link DataSource}.
17 *
18 * Starts a synchronization job that crawls the connector and ingests
19 * its content into the index.
20 * Provide the implementation with
21 * `Effect.provide(AWS.QBusiness.StartDataSourceSyncJobHttp)`.
22 *
23 * ### Data Source Sync
24 * **Example:** Start a Sync Job
25 * ```typescript
26 * const startSync = yield* AWS.QBusiness.StartDataSourceSyncJob(source);
27 *
28 * const { executionId } = yield* startSync();
29 * ```
30 *
31 * @binding
32 */
33export interface StartDataSourceSyncJob extends Binding.Service<
34 StartDataSourceSyncJob,
35 "AWS.QBusiness.StartDataSourceSyncJob",
36 (
37 dataSource: DataSource,
38 ) => Effect.Effect<
39 (
40 request?: StartDataSourceSyncJobRequest,
41 ) => Effect.Effect<
42 qbusiness.StartDataSourceSyncJobResponse,
43 qbusiness.StartDataSourceSyncJobError
44 >
45 >
46> {}
47export const StartDataSourceSyncJob = Binding.Service<StartDataSourceSyncJob>(
48 "AWS.QBusiness.StartDataSourceSyncJob",
49);