1import type * as qbusiness from "@distilled.cloud/aws/qbusiness";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Application } from "./Application.ts";
5
6/**
7 * `CreateSubscription` request with `applicationId` injected from the bound application.
8 */
9export interface CreateSubscriptionRequest extends Omit<
10 qbusiness.CreateSubscriptionRequest,
11 "applicationId"
12> {}
13
14/**
15 * Runtime binding for the `CreateSubscription` operation (IAM action
16 * `qbusiness:CreateSubscription`), scoped to one {@link Application}.
17 *
18 * Subscribes an IAM Identity Center user or group to a Q Business
19 * pricing tier (`Q_LITE` or `Q_BUSINESS`).
20 * Provide the implementation with
21 * `Effect.provide(AWS.QBusiness.CreateSubscriptionHttp)`.
22 *
23 * ### Subscriptions
24 * **Example:** Subscribe a User
25 * ```typescript
26 * const subscribe = yield* AWS.QBusiness.CreateSubscription(app);
27 *
28 * yield* subscribe({
29 * principal: { user: idcUserId },
30 * type: "Q_BUSINESS",
31 * });
32 * ```
33 *
34 * @binding
35 */
36export interface CreateSubscription extends Binding.Service<
37 CreateSubscription,
38 "AWS.QBusiness.CreateSubscription",
39 (
40 application: Application,
41 ) => Effect.Effect<
42 (
43 request: CreateSubscriptionRequest,
44 ) => Effect.Effect<
45 qbusiness.CreateSubscriptionResponse,
46 qbusiness.CreateSubscriptionError
47 >
48 >
49> {}
50export const CreateSubscription = Binding.Service<CreateSubscription>(
51 "AWS.QBusiness.CreateSubscription",
52);