1import * as sns from "@distilled.cloud/aws/sns";
2import * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Subscription } from "./Subscription.ts";
5
6export interface SetSubscriptionAttributesRequest extends Omit<
7 sns.SetSubscriptionAttributesInput,
8 "SubscriptionArn"
9> {}
10
11/**
12 * Runtime binding for `sns:SetSubscriptionAttributes`.
13 *
14 * Bind this operation to a {@link Subscription} inside a function runtime to
15 * set a single subscription attribute by name (e.g. `FilterPolicy`,
16 * `RawMessageDelivery`). The binding grants the host function
17 * `sns:SetSubscriptionAttributes` on the subscription. Provide the
18 * `SetSubscriptionAttributesHttp` layer on the Function to implement the
19 * binding.
20 * ### Updating Subscription Attributes
21 * **Example:** Set a Filter Policy
22 * ```typescript
23 * // init (provide SNS.SetSubscriptionAttributesHttp on the Function)
24 * const setSubscriptionAttributes =
25 * yield* SNS.SetSubscriptionAttributes(subscription);
26 *
27 * // runtime
28 * yield* setSubscriptionAttributes({
29 * AttributeName: "FilterPolicy",
30 * AttributeValue: JSON.stringify({ type: ["order"] }),
31 * });
32 * ```
33 *
34 * @binding
35 */
36export interface SetSubscriptionAttributes extends Binding.Service<
37 SetSubscriptionAttributes,
38 "AWS.SNS.SetSubscriptionAttributes",
39 (
40 subscription: Subscription,
41 ) => Effect.Effect<
42 (
43 request: SetSubscriptionAttributesRequest,
44 ) => Effect.Effect<
45 sns.SetSubscriptionAttributesResponse,
46 sns.SetSubscriptionAttributesError
47 >
48 >
49> {}
50export const SetSubscriptionAttributes =
51 Binding.Service<SetSubscriptionAttributes>(
52 "AWS.SNS.SetSubscriptionAttributes",
53 );