import {z} from 'zod' export type PublicDelegatedPrefixPublicDelegatedSubPrefix = {allocatablePrefixLength?: number | undefined, delegateeProject?: string | undefined, description?: string | undefined, enableEnhancedIpv4Allocation?: boolean | undefined, ipCidrRange?: string | undefined, ipv6AccessType?: ('EXTERNAL' | 'INTERNAL') | undefined, isAddress?: boolean | undefined, mode?: ('DELEGATION' | 'EXTERNAL_IPV6_FORWARDING_RULE_CREATION' | 'EXTERNAL_IPV6_SUBNETWORK_CREATION' | 'INTERNAL_IPV6_SUBNETWORK_CREATION') | undefined, name?: string | undefined, region?: string | undefined, status?: ('ACTIVE' | 'INACTIVE') | undefined}; export type PublicDelegatedPrefix = {allocatablePrefixLength?: number | undefined, byoipApiVersion?: ('V1' | 'V2') | undefined, creationTimestamp?: string | undefined, description?: string | undefined, enableEnhancedIpv4Allocation?: boolean | undefined, fingerprint?: string | undefined, id?: unknown | undefined, ipCidrRange?: string | undefined, ipv6AccessType?: ('EXTERNAL' | 'INTERNAL') | undefined, isLiveMigration?: boolean | undefined, kind?: string | undefined, mode?: ('DELEGATION' | 'EXTERNAL_IPV6_FORWARDING_RULE_CREATION' | 'EXTERNAL_IPV6_SUBNETWORK_CREATION' | 'INTERNAL_IPV6_SUBNETWORK_CREATION') | undefined, name?: string | undefined, parentPrefix?: string | undefined, publicDelegatedSubPrefixs?: Array | undefined, region?: string | undefined, selfLink?: string | undefined, status?: ('ACTIVE' | 'ANNOUNCED' | 'ANNOUNCED_TO_GOOGLE' | 'ANNOUNCED_TO_INTERNET' | 'DELETING' | 'INITIALIZING' | 'READY_TO_ANNOUNCE') | undefined}; export type PatchApiProjectsProjectRegionsRegionPublicDelegatedPrefixesPublicDelegatedPrefixArgs = {project: string, region: string, publicDelegatedPrefix: string, requestId?: string | undefined, body: PublicDelegatedPrefix}; export type PatchApiProjectsProjectRegionsRegionPublicDelegatedPrefixesPublicDelegatedPrefixOptions = {baseUrl?: string | undefined, Oauth2?: string | undefined, Oauth2c?: string | undefined, fetch?: typeof fetch | undefined}; export const errorInfo = z.object({domain: z.string().optional(), metadatas: z.record(z.string(), z.string()).optional(), reason: z.string().optional()}); export const helpLink = z.object({description: z.string().optional(), url: z.string().optional()}); export const help = z.object({links: z.array(helpLink).optional()}); export const localizedMessage = z.object({locale: z.string().optional(), message: z.string().optional()}); export const quotaExceededInfo = z.object({dimensions: z.record(z.string(), z.string()).optional(), futureLimit: z.number().optional(), limit: z.number().optional(), limitName: z.string().optional(), metricName: z.string().optional(), rolloutStatus: z.enum(["IN_PROGRESS", "ROLLOUT_STATUS_UNSPECIFIED"]).optional()}); export const getHealthOperationMetadataHealthInfo = z.object({availabilitySloStatus: z.enum(["AVAILABILITY_SLO_STATUS_IN_SLO", "AVAILABILITY_SLO_STATUS_OUT_OF_SLO", "AVAILABILITY_SLO_STATUS_SLO_UNKNOWN", "AVAILABILITY_SLO_STATUS_UNSPECIFIED"]).optional(), healthStatus: z.enum(["HEALTH_STATUS_HEALTHY", "HEALTH_STATUS_UNHEALTHY", "HEALTH_STATUS_UNSPECIFIED"]).optional(), repairCategory: z.enum(["REPAIR_CATEGORY_CRITICAL_FAILURE", "REPAIR_CATEGORY_EMERGENT_MAINTENANCE", "REPAIR_CATEGORY_PLANNED_MAINTENANCE", "REPAIR_CATEGORY_UNSPECIFIED", "REPAIR_CATEGORY_USER_REPORTED_FAULT"]).optional(), unhealthyReason: z.enum(["UNHEALTHY_REASON_PENDING_USER_APPROVAL", "UNHEALTHY_REASON_REPAIRING", "UNHEALTHY_REASON_UNSCHEDULABLE", "UNHEALTHY_REASON_UNSPECIFIED"]).optional(), updateTime: z.string().optional()}); export const getHealthOperationMetadata = z.object({healthInfo: getHealthOperationMetadataHealthInfo.optional()}); export const getVersionOperationMetadataSbomInfo = z.object({currentComponentVersions: z.record(z.string(), z.string()).optional(), targetComponentVersions: z.record(z.string(), z.string()).optional()}); export const getVersionOperationMetadata = z.object({inlineSbomInfo: getVersionOperationMetadataSbomInfo.optional()}); export const bulkInsertOperationStatus = z.object({createdVmCount: z.number().int().optional(), deletedVmCount: z.number().int().optional(), failedToCreateVmCount: z.number().int().optional(), status: z.enum(["CREATING", "DONE", "ROLLING_BACK", "STATUS_UNSPECIFIED"]).optional(), targetVmCount: z.number().int().optional()}); export const instancesBulkInsertOperationMetadata = z.object({perLocationStatus: z.record(z.string(), bulkInsertOperationStatus).optional()}); export const status = z.object({code: z.number().int().optional(), details: z.array(z.record(z.string(), z.unknown())).optional(), message: z.string().optional()}); export const setCommonInstanceMetadataOperationMetadataPerLocationOperationInfo = z.object({error: status.optional(), state: z.enum(["ABANDONED", "DONE", "FAILED", "PROPAGATED", "PROPAGATING", "UNSPECIFIED"]).optional()}); export const setCommonInstanceMetadataOperationMetadata = z.object({clientOperationId: z.string().optional(), perLocationOperations: z.record(z.string(), setCommonInstanceMetadataOperationMetadataPerLocationOperationInfo).optional()}); export const operation = z.object({clientOperationId: z.string().optional(), creationTimestamp: z.string().optional(), description: z.string().optional(), endTime: z.string().optional(), error: z.object({errors: z.array(z.object({code: z.string().optional(), errorDetails: z.array(z.object({errorInfo: errorInfo.optional(), help: help.optional(), localizedMessage: localizedMessage.optional(), quotaInfo: quotaExceededInfo.optional()})).optional(), location: z.string().optional(), message: z.string().optional()})).optional()}).optional(), getHealthOperationMetadata: getHealthOperationMetadata.optional(), getVersionOperationMetadata: getVersionOperationMetadata.optional(), httpErrorMessage: z.string().optional(), httpErrorStatusCode: z.number().int().optional(), id: z.string().optional(), insertTime: z.string().optional(), instancesBulkInsertOperationMetadata: instancesBulkInsertOperationMetadata.optional(), kind: z.string().optional(), name: z.string().optional(), operationGroupId: z.string().optional(), operationType: z.string().optional(), progress: z.number().int().optional(), region: z.string().optional(), selfLink: z.string().optional(), setCommonInstanceMetadataOperationMetadata: setCommonInstanceMetadataOperationMetadata.optional(), startTime: z.string().optional(), status: z.enum(["DONE", "PENDING", "RUNNING"]).optional(), statusMessage: z.string().optional(), targetId: z.string().optional(), targetLink: z.string().optional(), user: z.string().optional(), warnings: z.array(z.object({code: z.enum(["CLEANUP_FAILED", "DEPRECATED_RESOURCE_USED", "DEPRECATED_TYPE_USED", "DISK_SIZE_LARGER_THAN_IMAGE_SIZE", "EXPERIMENTAL_TYPE_USED", "EXTERNAL_API_WARNING", "FIELD_VALUE_OVERRIDEN", "INJECTED_KERNELS_DEPRECATED", "INVALID_HEALTH_CHECK_FOR_DYNAMIC_WIEGHTED_LB", "LARGE_DEPLOYMENT_WARNING", "LIST_OVERHEAD_QUOTA_EXCEED", "MISSING_TYPE_DEPENDENCY", "NEXT_HOP_ADDRESS_NOT_ASSIGNED", "NEXT_HOP_CANNOT_IP_FORWARD", "NEXT_HOP_INSTANCE_HAS_NO_IPV6_INTERFACE", "NEXT_HOP_INSTANCE_NOT_FOUND", "NEXT_HOP_INSTANCE_NOT_ON_NETWORK", "NEXT_HOP_NOT_RUNNING", "NOT_CRITICAL_ERROR", "NO_RESULTS_ON_PAGE", "PARTIAL_SUCCESS", "QUOTA_INFO_UNAVAILABLE", "REQUIRED_TOS_AGREEMENT", "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING", "RESOURCE_NOT_DELETED", "SCHEMA_VALIDATION_IGNORED", "SINGLE_INSTANCE_PROPERTY_TEMPLATE", "UNDECLARED_PROPERTIES", "UNREACHABLE"]).optional(), data: z.array(z.object({key: z.string().optional(), value: z.string().optional()})).optional(), message: z.string().optional()})).optional(), zone: z.string().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Patches the specified PublicDelegatedPrefix resource with the data included * * PATCH /projects/{project}/regions/{region}/publicDelegatedPrefixes/{publicDelegatedPrefix} * * Also accepts auth: Oauth2 + Oauth2c */ export const patchApiProjectsProjectRegionsRegionPublicDelegatedPrefixesPublicDelegatedPrefix = async (args: PatchApiProjectsProjectRegionsRegionPublicDelegatedPrefixesPublicDelegatedPrefixArgs, options?: PatchApiProjectsProjectRegionsRegionPublicDelegatedPrefixesPublicDelegatedPrefixOptions) => { const {baseUrl = "https://compute.googleapis.com/compute/v1", fetch: fetchFn = fetch, Oauth2, Oauth2c} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (args.requestId != null) query.append("requestId", String(args.requestId)) if (Oauth2 !== undefined) headers.set('authorization', `Bearer ${Oauth2}`) if (Oauth2c !== undefined) headers.set('authorization', `Bearer ${Oauth2c}`) const url = `${baseUrl.replace(/\/+$/, '')}/projects/${encodeURIComponent(String(args.project))}/regions/${encodeURIComponent(String(args.region))}/publicDelegatedPrefixes/${encodeURIComponent(String(args.publicDelegatedPrefix))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PATCH", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(operation, await res.json()) };