1import * as parametermanager from "@distilled.cloud/gcp/parametermanager_v1";
2import * as Layer from "effect/Layer";
3import { makeParameterVersionHttpBinding } from "./BindingHttp.ts";
4import {
5 GetParameterVersion,
6 type GetParameterVersionRequest,
7} from "./GetParameterVersion.ts";
8
9/**
10 * HTTP implementation of {@link GetParameterVersion}.
11 *
12 * @layer
13 * @provides GCP.ParameterManager.GetParameterVersion
14 */
15export const GetParameterVersionHttp = Layer.effect(
16 GetParameterVersion,
17 makeParameterVersionHttpBinding<
18 parametermanager.GetProjectsLocationsParametersVersionsRequest,
19 parametermanager.ParameterVersion,
20 parametermanager.GetProjectsLocationsParametersVersionsError,
21 GetParameterVersionRequest
22 >({
23 tag: "GCP.ParameterManager.GetParameterVersion",
24 // Parameter Manager has no resource-level IAM; an IAM Condition on the
25 // version name scopes the project grant to this version.
26 iam: {
27 role: "roles/parametermanager.parameterViewer",
28 scopeByCondition: true,
29 },
30 operation: parametermanager.getProjectsLocationsParametersVersions,
31 toInput: (name, request) => ({
32 name,
33 view: request?.view ?? "FULL",
34 }),
35 }),
36);