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 GetSubscriptionAttributesRequest extends Omit<
7 sns.GetSubscriptionAttributesInput,
8 "SubscriptionArn"
9> {}
10
11/**
12 * Runtime binding for `sns:GetSubscriptionAttributes`.
13 *
14 * Bind this operation to a {@link Subscription} inside a function runtime to
15 * read the subscription's raw attribute map (filter policy, redrive policy,
16 * raw message delivery, etc.). The binding grants the host function
17 * `sns:GetSubscriptionAttributes` on the subscription. Provide the
18 * `GetSubscriptionAttributesHttp` layer on the Function to implement the
19 * binding.
20 * ### Reading Subscription Attributes
21 * **Example:** Read a Subscription's Attributes
22 * ```typescript
23 * // init (provide SNS.GetSubscriptionAttributesHttp on the Function)
24 * const getSubscriptionAttributes =
25 * yield* SNS.GetSubscriptionAttributes(subscription);
26 *
27 * // runtime
28 * const response = yield* getSubscriptionAttributes();
29 * const filterPolicy = response.Attributes?.FilterPolicy;
30 * ```
31 *
32 * @binding
33 */
34export interface GetSubscriptionAttributes extends Binding.Service<
35 GetSubscriptionAttributes,
36 "AWS.SNS.GetSubscriptionAttributes",
37 (
38 subscription: Subscription,
39 ) => Effect.Effect<
40 (
41 request?: GetSubscriptionAttributesRequest,
42 ) => Effect.Effect<
43 sns.GetSubscriptionAttributesResponse,
44 sns.GetSubscriptionAttributesError
45 >
46 >
47> {}
48export const GetSubscriptionAttributes =
49 Binding.Service<GetSubscriptionAttributes>(
50 "AWS.SNS.GetSubscriptionAttributes",
51 );