diff --git a/backend/src/server/routes/v1/secret-sync-routers/gcp-sync-router.ts b/backend/src/server/routes/v1/secret-sync-routers/gcp-sync-router.ts index 02020db02..8e4266556 100644 --- a/backend/src/server/routes/v1/secret-sync-routers/gcp-sync-router.ts +++ b/backend/src/server/routes/v1/secret-sync-routers/gcp-sync-router.ts @@ -5,7 +5,7 @@ import { registerSyncSecretsEndpoints } from "./secret-sync-endpoints"; export const registerGcpSyncRouter = async (server: FastifyZodProvider) => registerSyncSecretsEndpoints({ - destination: SecretSync.GCP, + destination: SecretSync.GCPSecretManager, server, responseSchema: GcpSyncSchema, createSchema: CreateGcpSyncSchema, diff --git a/backend/src/server/routes/v1/secret-sync-routers/index.ts b/backend/src/server/routes/v1/secret-sync-routers/index.ts index 212e27fda..6b3d2f15f 100644 --- a/backend/src/server/routes/v1/secret-sync-routers/index.ts +++ b/backend/src/server/routes/v1/secret-sync-routers/index.ts @@ -9,5 +9,5 @@ export * from "./secret-sync-router"; export const SECRET_SYNC_REGISTER_ROUTER_MAP: Record Promise> = { [SecretSync.AWSParameterStore]: registerAwsParameterStoreSyncRouter, [SecretSync.GitHub]: registerGitHubSyncRouter, - [SecretSync.GCP]: registerGcpSyncRouter + [SecretSync.GCPSecretManager]: registerGcpSyncRouter }; diff --git a/backend/src/services/secret-sync/gcp/gcp-sync-constants.ts b/backend/src/services/secret-sync/gcp/gcp-sync-constants.ts index 2c4e51547..7b54b1782 100644 --- a/backend/src/services/secret-sync/gcp/gcp-sync-constants.ts +++ b/backend/src/services/secret-sync/gcp/gcp-sync-constants.ts @@ -4,7 +4,7 @@ import { TSecretSyncListItem } from "@app/services/secret-sync/secret-sync-types export const GCP_SYNC_LIST_OPTION: TSecretSyncListItem = { name: "GCP Secret Manager", - destination: SecretSync.GCP, + destination: SecretSync.GCPSecretManager, connection: AppConnection.GCP, canImportSecrets: false }; diff --git a/backend/src/services/secret-sync/gcp/gcp-sync-schemas.ts b/backend/src/services/secret-sync/gcp/gcp-sync-schemas.ts index 7be3b8deb..9cf7369ee 100644 --- a/backend/src/services/secret-sync/gcp/gcp-sync-schemas.ts +++ b/backend/src/services/secret-sync/gcp/gcp-sync-schemas.ts @@ -16,22 +16,28 @@ const GcpSyncDestinationConfigSchema = z.object({ projectId: z.string().min(1, "Project ID is required") }); -export const GcpSyncSchema = BaseSecretSyncSchema(SecretSync.GCP, GcpSyncOptionsConfig).extend({ - destination: z.literal(SecretSync.GCP), +export const GcpSyncSchema = BaseSecretSyncSchema(SecretSync.GCPSecretManager, GcpSyncOptionsConfig).extend({ + destination: z.literal(SecretSync.GCPSecretManager), destinationConfig: GcpSyncDestinationConfigSchema }); -export const CreateGcpSyncSchema = GenericCreateSecretSyncFieldsSchema(SecretSync.GCP, GcpSyncOptionsConfig).extend({ +export const CreateGcpSyncSchema = GenericCreateSecretSyncFieldsSchema( + SecretSync.GCPSecretManager, + GcpSyncOptionsConfig +).extend({ destinationConfig: GcpSyncDestinationConfigSchema }); -export const UpdateGcpSyncSchema = GenericUpdateSecretSyncFieldsSchema(SecretSync.GCP, GcpSyncOptionsConfig).extend({ +export const UpdateGcpSyncSchema = GenericUpdateSecretSyncFieldsSchema( + SecretSync.GCPSecretManager, + GcpSyncOptionsConfig +).extend({ destinationConfig: GcpSyncDestinationConfigSchema.optional() }); export const GcpSyncListItemSchema = z.object({ name: z.literal("GCP Secret Manager"), connection: z.literal(AppConnection.GCP), - destination: z.literal(SecretSync.GCP), + destination: z.literal(SecretSync.GCPSecretManager), canImportSecrets: z.literal(false) }); diff --git a/backend/src/services/secret-sync/secret-sync-enums.ts b/backend/src/services/secret-sync/secret-sync-enums.ts index 5bc9ab4ba..58d68ebb1 100644 --- a/backend/src/services/secret-sync/secret-sync-enums.ts +++ b/backend/src/services/secret-sync/secret-sync-enums.ts @@ -1,7 +1,7 @@ export enum SecretSync { AWSParameterStore = "aws-parameter-store", GitHub = "github", - GCP = "gcp-secret-manager" + GCPSecretManager = "gcp-secret-manager" } export enum SecretSyncInitialSyncBehavior { diff --git a/backend/src/services/secret-sync/secret-sync-fns.ts b/backend/src/services/secret-sync/secret-sync-fns.ts index 5ec4ed1f7..0f55c8aa9 100644 --- a/backend/src/services/secret-sync/secret-sync-fns.ts +++ b/backend/src/services/secret-sync/secret-sync-fns.ts @@ -19,7 +19,7 @@ import { GcpSyncFns } from "./gcp/gcp-sync-fns"; const SECRET_SYNC_LIST_OPTIONS: Record = { [SecretSync.AWSParameterStore]: AWS_PARAMETER_STORE_SYNC_LIST_OPTION, [SecretSync.GitHub]: GITHUB_SYNC_LIST_OPTION, - [SecretSync.GCP]: GCP_SYNC_LIST_OPTION + [SecretSync.GCPSecretManager]: GCP_SYNC_LIST_OPTION }; export const listSecretSyncOptions = () => { @@ -75,7 +75,7 @@ export const SecretSyncFns = { return AwsParameterStoreSyncFns.syncSecrets(secretSync, secretMap); case SecretSync.GitHub: return GithubSyncFns.syncSecrets(secretSync, secretMap); - case SecretSync.GCP: + case SecretSync.GCPSecretManager: return GcpSyncFns.syncSecrets(secretSync, secretMap); default: throw new Error( @@ -92,7 +92,7 @@ export const SecretSyncFns = { case SecretSync.GitHub: secretMap = await GithubSyncFns.getSecrets(secretSync); break; - case SecretSync.GCP: + case SecretSync.GCPSecretManager: secretMap = await GcpSyncFns.getSecrets(secretSync); break; default: @@ -112,7 +112,7 @@ export const SecretSyncFns = { return AwsParameterStoreSyncFns.removeSecrets(secretSync, secretMap); case SecretSync.GitHub: return GithubSyncFns.removeSecrets(secretSync, secretMap); - case SecretSync.GCP: + case SecretSync.GCPSecretManager: return GcpSyncFns.removeSecrets(secretSync, secretMap); default: throw new Error( diff --git a/backend/src/services/secret-sync/secret-sync-maps.ts b/backend/src/services/secret-sync/secret-sync-maps.ts index a6d62f233..2df7d11e6 100644 --- a/backend/src/services/secret-sync/secret-sync-maps.ts +++ b/backend/src/services/secret-sync/secret-sync-maps.ts @@ -4,11 +4,11 @@ import { SecretSync } from "@app/services/secret-sync/secret-sync-enums"; export const SECRET_SYNC_NAME_MAP: Record = { [SecretSync.AWSParameterStore]: "AWS Parameter Store", [SecretSync.GitHub]: "GitHub", - [SecretSync.GCP]: "GCP Secret Manager" + [SecretSync.GCPSecretManager]: "GCP Secret Manager" }; export const SECRET_SYNC_CONNECTION_MAP: Record = { [SecretSync.AWSParameterStore]: AppConnection.AWS, [SecretSync.GitHub]: AppConnection.GitHub, - [SecretSync.GCP]: AppConnection.GCP + [SecretSync.GCPSecretManager]: AppConnection.GCP }; diff --git a/docs/mint.json b/docs/mint.json index c5b0ef1bc..6093a5697 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -823,6 +823,18 @@ "api-reference/endpoints/app-connections/github/update", "api-reference/endpoints/app-connections/github/delete" ] + }, + { + "group": "GCP", + "pages": [ + "api-reference/endpoints/app-connections/gcp/list", + "api-reference/endpoints/app-connections/gcp/available", + "api-reference/endpoints/app-connections/gcp/get-by-id", + "api-reference/endpoints/app-connections/gcp/get-by-name", + "api-reference/endpoints/app-connections/gcp/create", + "api-reference/endpoints/app-connections/gcp/update", + "api-reference/endpoints/app-connections/gcp/delete" + ] } ] }, @@ -857,6 +869,19 @@ "api-reference/endpoints/secret-syncs/github/sync-secrets", "api-reference/endpoints/secret-syncs/github/remove-secrets" ] + }, + { + "group": "GCP Secret Manager", + "pages": [ + "api-reference/endpoints/secret-syncs/gcp-secret-manager/list", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/get-by-id", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/get-by-name", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/create", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/update", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/delete", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/sync-secrets", + "api-reference/endpoints/secret-syncs/gcp-secret-manager/remove-secrets" + ] } ] }, diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx index f9637411d..e27bb980c 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/GcpSyncFields.tsx @@ -10,7 +10,9 @@ import { SecretSync } from "@app/hooks/api/secretSyncs"; import { TSecretSyncForm } from "../schemas"; export const GcpSyncFields = () => { - const { control, setValue } = useFormContext(); + const { control, setValue } = useFormContext< + TSecretSyncForm & { destination: SecretSync.GCPSecretManager } + >(); const connectionId = useWatch({ name: "connection.id", control }); diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/SecretSyncDestinationFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/SecretSyncDestinationFields.tsx index 77f0712e6..19c3d7f7c 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/SecretSyncDestinationFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncDestinationFields/SecretSyncDestinationFields.tsx @@ -17,7 +17,7 @@ export const SecretSyncDestinationFields = () => { return ; case SecretSync.GitHub: return ; - case SecretSync.GCP: + case SecretSync.GCPSecretManager: return ; default: throw new Error(`Unhandled Destination Config Field: ${destination}`); diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/GcpSyncReviewFIelds.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/GcpSyncReviewFIelds.tsx index 28986c317..52776c0e9 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/GcpSyncReviewFIelds.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/GcpSyncReviewFIelds.tsx @@ -5,7 +5,9 @@ import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas"; import { SecretSync } from "@app/hooks/api/secretSyncs"; export const GcpSyncReviewFields = () => { - const { watch } = useFormContext(); + const { watch } = useFormContext< + TSecretSyncForm & { destination: SecretSync.GCPSecretManager } + >(); const projectId = watch("destinationConfig.projectId"); return {projectId}; diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx index 2a8ed4a0a..e5326cec8 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncReviewFields/SecretSyncReviewFields.tsx @@ -39,7 +39,7 @@ export const SecretSyncReviewFields = () => { case SecretSync.GitHub: DestinationFieldsComponent = ; break; - case SecretSync.GCP: + case SecretSync.GCPSecretManager: DestinationFieldsComponent = ; break; default: diff --git a/frontend/src/components/secret-syncs/forms/schemas/gcp-sync-destination-schema.ts b/frontend/src/components/secret-syncs/forms/schemas/gcp-sync-destination-schema.ts index faf2fd8d1..b9efbf2e2 100644 --- a/frontend/src/components/secret-syncs/forms/schemas/gcp-sync-destination-schema.ts +++ b/frontend/src/components/secret-syncs/forms/schemas/gcp-sync-destination-schema.ts @@ -3,7 +3,7 @@ import { z } from "zod"; import { SecretSync } from "@app/hooks/api/secretSyncs"; export const GcpSyncDestinationSchema = z.object({ - destination: z.literal(SecretSync.GCP), + destination: z.literal(SecretSync.GCPSecretManager), destinationConfig: z.object({ projectId: z.string().min(1, "Project ID required") }) diff --git a/frontend/src/helpers/secretSyncs.ts b/frontend/src/helpers/secretSyncs.ts index 98299c8a4..91005f114 100644 --- a/frontend/src/helpers/secretSyncs.ts +++ b/frontend/src/helpers/secretSyncs.ts @@ -8,13 +8,13 @@ import { export const SECRET_SYNC_MAP: Record = { [SecretSync.AWSParameterStore]: { name: "Parameter Store", image: "Amazon Web Services.png" }, [SecretSync.GitHub]: { name: "GitHub", image: "GitHub.png" }, - [SecretSync.GCP]: { name: "GCP Secret Manager", image: "Google Cloud Platform.png" } + [SecretSync.GCPSecretManager]: { name: "GCP Secret Manager", image: "Google Cloud Platform.png" } }; export const SECRET_SYNC_CONNECTION_MAP: Record = { [SecretSync.AWSParameterStore]: AppConnection.AWS, [SecretSync.GitHub]: AppConnection.GitHub, - [SecretSync.GCP]: AppConnection.GCP + [SecretSync.GCPSecretManager]: AppConnection.GCP }; export const SECRET_SYNC_INITIAL_SYNC_BEHAVIOR_MAP: Record< diff --git a/frontend/src/hooks/api/secretSyncs/enums.ts b/frontend/src/hooks/api/secretSyncs/enums.ts index fe1ddb150..11f902388 100644 --- a/frontend/src/hooks/api/secretSyncs/enums.ts +++ b/frontend/src/hooks/api/secretSyncs/enums.ts @@ -1,7 +1,7 @@ export enum SecretSync { AWSParameterStore = "aws-parameter-store", GitHub = "github", - GCP = "gcp-secret-manager" + GCPSecretManager = "gcp-secret-manager" } export enum SecretSyncStatus { diff --git a/frontend/src/hooks/api/secretSyncs/types/gcp-sync.ts b/frontend/src/hooks/api/secretSyncs/types/gcp-sync.ts index d7332bf9e..4857e23e0 100644 --- a/frontend/src/hooks/api/secretSyncs/types/gcp-sync.ts +++ b/frontend/src/hooks/api/secretSyncs/types/gcp-sync.ts @@ -3,7 +3,7 @@ import { SecretSync } from "@app/hooks/api/secretSyncs"; import { TRootSecretSync } from "@app/hooks/api/secretSyncs/types/root-sync"; export type TGcpSync = TRootSecretSync & { - destination: SecretSync.GCP; + destination: SecretSync.GCPSecretManager; destinationConfig: { projectId: string; }; diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncDestinationCol/SecretSyncDestinationCol.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncDestinationCol/SecretSyncDestinationCol.tsx index 43ac55508..673e2aced 100644 --- a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncDestinationCol/SecretSyncDestinationCol.tsx +++ b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncDestinationCol/SecretSyncDestinationCol.tsx @@ -14,7 +14,7 @@ export const SecretSyncDestinationCol = ({ secretSync }: Props) => { return ; case SecretSync.GitHub: return ; - case SecretSync.GCP: + case SecretSync.GCPSecretManager: return ; default: throw new Error( diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/helpers/index.ts b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/helpers/index.ts index 2efe74b9f..8539fbd65 100644 --- a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/helpers/index.ts +++ b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/helpers/index.ts @@ -39,7 +39,7 @@ export const getSecretSyncDestinationColValues = (secretSync: TSecretSync) => { throw new Error(`Unhandled GitHub Scope Destination Col Values ${destination}`); } break; - case SecretSync.GCP: + case SecretSync.GCPSecretManager: primaryText = destinationConfig.projectId; break; default: diff --git a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncDestinationSection/SecretSyncDestinatonSection.tsx b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncDestinationSection/SecretSyncDestinatonSection.tsx index abf8539ba..4bfbd492a 100644 --- a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncDestinationSection/SecretSyncDestinatonSection.tsx +++ b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncDestinationSection/SecretSyncDestinatonSection.tsx @@ -32,7 +32,7 @@ export const SecretSyncDestinationSection = ({ secretSync, onEditDestination }: case SecretSync.GitHub: DestinationComponents = ; break; - case SecretSync.GCP: + case SecretSync.GCPSecretManager: DestinationComponents = ; break; default: