1import type * as osis from "@distilled.cloud/aws/osis";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Pipeline } from "./Pipeline.ts";
5
6/**
7 * Runtime binding for `osis:StartPipeline`.
8 *
9 * Starts the bound {@link Pipeline} after it was stopped — e.g. resuming
10 * ingestion on a schedule or in response to an operational signal. Starting
11 * takes several minutes; the response reports the transitional `STARTING`
12 * status. The pipeline name is injected from the binding. Provide the
13 * implementation with `Effect.provide(AWS.OSIS.StartPipelineHttp)`.
14 * ### Controlling a Pipeline
15 * **Example:** Resume Ingestion
16 * ```typescript
17 * // init — bind the operation to the pipeline
18 * const startPipeline = yield* AWS.OSIS.StartPipeline(pipeline);
19 *
20 * // runtime
21 * const { Pipeline } = yield* startPipeline();
22 * // Pipeline?.Status === "STARTING"
23 * ```
24 *
25 * @binding
26 */
27export interface StartPipeline extends Binding.Service<
28 StartPipeline,
29 "AWS.OSIS.StartPipeline",
30 (
31 pipeline: Pipeline,
32 ) => Effect.Effect<
33 () => Effect.Effect<osis.StartPipelineResponse, osis.StartPipelineError>
34 >
35> {}
36export const StartPipeline = Binding.Service<StartPipeline>(
37 "AWS.OSIS.StartPipeline",
38);