/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod/v3";
import { remap as remap$ } from "../lib/primitives.js";

/**
 * A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.
 */
export type UpdateResourceSecretsByIdEnvironmentOverrides = {
  /**
   * Value used for development environment.
   */
  development?: string | undefined;
  /**
   * Value used for preview environment.
   */
  preview?: string | undefined;
  /**
   * Value used for production environment.
   */
  production?: string | undefined;
};

export type UpdateResourceSecretsByIdSecrets = {
  name: string;
  value: string;
  prefix?: string | undefined;
  /**
   * A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.
   */
  environmentOverrides?:
    | UpdateResourceSecretsByIdEnvironmentOverrides
    | undefined;
};

export type UpdateResourceSecretsByIdRequestBody = {
  secrets: Array<UpdateResourceSecretsByIdSecrets>;
  /**
   * If true, will only overwrite the provided secrets instead of replacing all secrets.
   */
  partial?: boolean | undefined;
};

export type UpdateResourceSecretsByIdRequest = {
  integrationConfigurationId: string;
  resourceId: string;
  requestBody?: UpdateResourceSecretsByIdRequestBody | undefined;
};

/** @internal */
export type UpdateResourceSecretsByIdEnvironmentOverrides$Outbound = {
  development?: string | undefined;
  preview?: string | undefined;
  production?: string | undefined;
};

/** @internal */
export const UpdateResourceSecretsByIdEnvironmentOverrides$outboundSchema:
  z.ZodType<
    UpdateResourceSecretsByIdEnvironmentOverrides$Outbound,
    z.ZodTypeDef,
    UpdateResourceSecretsByIdEnvironmentOverrides
  > = z.object({
    development: z.string().optional(),
    preview: z.string().optional(),
    production: z.string().optional(),
  });

export function updateResourceSecretsByIdEnvironmentOverridesToJSON(
  updateResourceSecretsByIdEnvironmentOverrides:
    UpdateResourceSecretsByIdEnvironmentOverrides,
): string {
  return JSON.stringify(
    UpdateResourceSecretsByIdEnvironmentOverrides$outboundSchema.parse(
      updateResourceSecretsByIdEnvironmentOverrides,
    ),
  );
}

/** @internal */
export type UpdateResourceSecretsByIdSecrets$Outbound = {
  name: string;
  value: string;
  prefix?: string | undefined;
  environmentOverrides?:
    | UpdateResourceSecretsByIdEnvironmentOverrides$Outbound
    | undefined;
};

/** @internal */
export const UpdateResourceSecretsByIdSecrets$outboundSchema: z.ZodType<
  UpdateResourceSecretsByIdSecrets$Outbound,
  z.ZodTypeDef,
  UpdateResourceSecretsByIdSecrets
> = z.object({
  name: z.string(),
  value: z.string(),
  prefix: z.string().optional(),
  environmentOverrides: z.lazy(() =>
    UpdateResourceSecretsByIdEnvironmentOverrides$outboundSchema
  ).optional(),
});

export function updateResourceSecretsByIdSecretsToJSON(
  updateResourceSecretsByIdSecrets: UpdateResourceSecretsByIdSecrets,
): string {
  return JSON.stringify(
    UpdateResourceSecretsByIdSecrets$outboundSchema.parse(
      updateResourceSecretsByIdSecrets,
    ),
  );
}

/** @internal */
export type UpdateResourceSecretsByIdRequestBody$Outbound = {
  secrets: Array<UpdateResourceSecretsByIdSecrets$Outbound>;
  partial?: boolean | undefined;
};

/** @internal */
export const UpdateResourceSecretsByIdRequestBody$outboundSchema: z.ZodType<
  UpdateResourceSecretsByIdRequestBody$Outbound,
  z.ZodTypeDef,
  UpdateResourceSecretsByIdRequestBody
> = z.object({
  secrets: z.array(
    z.lazy(() => UpdateResourceSecretsByIdSecrets$outboundSchema),
  ),
  partial: z.boolean().optional(),
});

export function updateResourceSecretsByIdRequestBodyToJSON(
  updateResourceSecretsByIdRequestBody: UpdateResourceSecretsByIdRequestBody,
): string {
  return JSON.stringify(
    UpdateResourceSecretsByIdRequestBody$outboundSchema.parse(
      updateResourceSecretsByIdRequestBody,
    ),
  );
}

/** @internal */
export type UpdateResourceSecretsByIdRequest$Outbound = {
  integrationConfigurationId: string;
  resourceId: string;
  RequestBody?: UpdateResourceSecretsByIdRequestBody$Outbound | undefined;
};

/** @internal */
export const UpdateResourceSecretsByIdRequest$outboundSchema: z.ZodType<
  UpdateResourceSecretsByIdRequest$Outbound,
  z.ZodTypeDef,
  UpdateResourceSecretsByIdRequest
> = z.object({
  integrationConfigurationId: z.string(),
  resourceId: z.string(),
  requestBody: z.lazy(() => UpdateResourceSecretsByIdRequestBody$outboundSchema)
    .optional(),
}).transform((v) => {
  return remap$(v, {
    requestBody: "RequestBody",
  });
});

export function updateResourceSecretsByIdRequestToJSON(
  updateResourceSecretsByIdRequest: UpdateResourceSecretsByIdRequest,
): string {
  return JSON.stringify(
    UpdateResourceSecretsByIdRequest$outboundSchema.parse(
      updateResourceSecretsByIdRequest,
    ),
  );
}
