1import type * as appintegrations from "@distilled.cloud/aws/appintegrations";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { DataIntegration } from "./DataIntegration.ts";
5
6export interface CreateDataIntegrationAssociationRequest extends Omit<
7 appintegrations.CreateDataIntegrationAssociationRequest,
8 "DataIntegrationIdentifier"
9> {}
10
11/**
12 * Associates a client (identified by `ClientId` / `ClientAssociationMetadata`)
13 * with an AppIntegrations {@link DataIntegration}
14 * (`app-integrations:CreateDataIntegrationAssociation`). Associations have no
15 * independent delete API — they live and die with the data integration — so
16 * they are exposed as a runtime binding rather than a Resource.
17 *
18 * Provide the `CreateDataIntegrationAssociationHttp` layer on the Function to
19 * satisfy the binding.
20 * ### Creating Data Integration Associations
21 * **Example:** Associate a Client with a Data Integration
22 * ```typescript
23 * // init (provide AWS.AppIntegrations.CreateDataIntegrationAssociationHttp on the Function)
24 * const createDataIntegrationAssociation =
25 * yield* AWS.AppIntegrations.CreateDataIntegrationAssociation(integration);
26 *
27 * // runtime — the DataIntegrationIdentifier is injected automatically
28 * const { DataIntegrationAssociationId } =
29 * yield* createDataIntegrationAssociation({
30 * ClientId: "my-client",
31 * ClientAssociationMetadata: { purpose: "sync" },
32 * });
33 * ```
34 *
35 * @binding
36 */
37export interface CreateDataIntegrationAssociation extends Binding.Service<
38 CreateDataIntegrationAssociation,
39 "AWS.AppIntegrations.CreateDataIntegrationAssociation",
40 <R extends DataIntegration>(
41 integration: R,
42 ) => Effect.Effect<
43 (
44 request?: CreateDataIntegrationAssociationRequest,
45 ) => Effect.Effect<
46 appintegrations.CreateDataIntegrationAssociationResponse,
47 appintegrations.CreateDataIntegrationAssociationError
48 >
49 >
50> {}
51export const CreateDataIntegrationAssociation =
52 Binding.Service<CreateDataIntegrationAssociation>(
53 "AWS.AppIntegrations.CreateDataIntegrationAssociation",
54 );