1import type * as grafana from "@distilled.cloud/aws/grafana";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Workspace } from "./Workspace.ts";
5
6/**
7 * Runtime binding for the `DescribeWorkspaceConfiguration` operation (IAM
8 * action `grafana:DescribeWorkspaceConfiguration`), scoped to one
9 * {@link Workspace}.
10 *
11 * Reads the workspace's Grafana configuration JSON string (e.g. the
12 * `unifiedAlerting` feature toggle) and the running Grafana version. Provide
13 * the implementation with
14 * `Effect.provide(AWS.Grafana.DescribeWorkspaceConfigurationHttp)`.
15 * ### Managing Configuration
16 * **Example:** Read the Configuration JSON
17 * ```typescript
18 * const describeConfig = yield* Grafana.DescribeWorkspaceConfiguration(workspace);
19 *
20 * const { configuration, grafanaVersion } = yield* describeConfig();
21 * const parsed = JSON.parse(configuration);
22 * ```
23 *
24 * @binding
25 */
26export interface DescribeWorkspaceConfiguration extends Binding.Service<
27 DescribeWorkspaceConfiguration,
28 "AWS.Grafana.DescribeWorkspaceConfiguration",
29 (
30 workspace: Workspace,
31 ) => Effect.Effect<
32 () => Effect.Effect<
33 grafana.DescribeWorkspaceConfigurationResponse,
34 grafana.DescribeWorkspaceConfigurationError
35 >
36 >
37> {}
38export const DescribeWorkspaceConfiguration =
39 Binding.Service<DescribeWorkspaceConfiguration>(
40 "AWS.Grafana.DescribeWorkspaceConfiguration",
41 );