diff --git a/model/aws/appintegrations/extensions/models/application.ts b/model/aws/appintegrations/extensions/models/application.ts index 73e2e0ebe..01eaceb2d 100644 --- a/model/aws/appintegrations/extensions/models/application.ts +++ b/model/aws/appintegrations/extensions/models/application.ts @@ -44,7 +44,7 @@ const GlobalArgsSchema = z.object({ ).describe("The namespace of the application."), Description: z.string().min(1).max(1000).describe( "The application description.", - ), + ).optional(), ApplicationSourceConfig: z.object({ ExternalUrlConfig: ExternalUrlConfigSchema, }).describe("Application source config"), @@ -58,6 +58,9 @@ const GlobalArgsSchema = z.object({ ).optional(), IsService: z.boolean().describe("Indicates if the application is a service") .optional(), + ApplicationType: z.enum(["STANDARD", "SERVICE", "MCP_SERVER"]).describe( + "The type of application", + ).optional(), InitializationTimeout: z.number().int().describe( "The initialization timeout in milliseconds. Required when IsService is true.", ).optional(), @@ -84,6 +87,7 @@ const StateSchema = z.object({ Permissions: z.array(z.string()).optional(), Tags: z.array(TagSchema).optional(), IsService: z.boolean().optional(), + ApplicationType: z.string().optional(), InitializationTimeout: z.number().optional(), ApplicationConfig: z.object({ ContactHandling: ContactHandlingSchema, @@ -120,6 +124,9 @@ const InputsSchema = z.object({ ).optional(), IsService: z.boolean().describe("Indicates if the application is a service") .optional(), + ApplicationType: z.enum(["STANDARD", "SERVICE", "MCP_SERVER"]).describe( + "The type of application", + ).optional(), InitializationTimeout: z.number().int().describe( "The initialization timeout in milliseconds. Required when IsService is true.", ).optional(), @@ -136,7 +143,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/aws/appintegrations/application", - version: "2026.04.03.2", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -153,6 +160,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "Added: ApplicationType", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/aws/appintegrations/manifest.yaml b/model/aws/appintegrations/manifest.yaml index 188e9ae67..da2a17713 100644 --- a/model/aws/appintegrations/manifest.yaml +++ b/model/aws/appintegrations/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/aws/appintegrations" -version: "2026.04.03.2" +version: "2026.04.09.1" description: "AWS APPINTEGRATIONS infrastructure models" labels: - aws @@ -9,7 +9,7 @@ labels: - cloud - infrastructure releaseNotes: | - - Updated: application, data_integration, event_integration + - Updated: application models: - application.ts - data_integration.ts diff --git a/model/aws/connectcampaignsv2/extensions/models/campaign.ts b/model/aws/connectcampaignsv2/extensions/models/campaign.ts index 4ae9521d9..4a59711e2 100644 --- a/model/aws/connectcampaignsv2/extensions/models/campaign.ts +++ b/model/aws/connectcampaignsv2/extensions/models/campaign.ts @@ -299,6 +299,16 @@ const GlobalArgsSchema = z.object({ "Enumeration of Instance Limits handling in a Campaign", ).optional(), }).describe("Communication limits config").optional(), + EntryLimitsConfig: z.object({ + MaxEntryCount: z.number().int().min(0).describe( + "Maximum number of entries per participant. 0 indicates unlimited entries.", + ), + MinEntryInterval: z.string().min(0).max(50).regex( + new RegExp("^[a-zA-Z0-9.]*$"), + ).describe( + "Minimum time interval between entries for the same participant in ISO 8601 duration format", + ), + }).describe("Entry limits config for a campaign").optional(), Tags: z.array(TagSchema).describe("One or more tags.").optional(), }); @@ -334,6 +344,10 @@ const StateSchema = z.object({ AllChannelsSubtypes: CommunicationLimitsSchema, InstanceLimitsHandling: z.string(), }).optional(), + EntryLimitsConfig: z.object({ + MaxEntryCount: z.number(), + MinEntryInterval: z.string(), + }).optional(), Tags: z.array(TagSchema).optional(), }).passthrough(); @@ -399,12 +413,22 @@ const InputsSchema = z.object({ "Enumeration of Instance Limits handling in a Campaign", ).optional(), }).describe("Communication limits config").optional(), + EntryLimitsConfig: z.object({ + MaxEntryCount: z.number().int().min(0).describe( + "Maximum number of entries per participant. 0 indicates unlimited entries.", + ).optional(), + MinEntryInterval: z.string().min(0).max(50).regex( + new RegExp("^[a-zA-Z0-9.]*$"), + ).describe( + "Minimum time interval between entries for the same participant in ISO 8601 duration format", + ).optional(), + }).describe("Entry limits config for a campaign").optional(), Tags: z.array(TagSchema).describe("One or more tags.").optional(), }); export const model = { type: "@swamp/aws/connectcampaignsv2/campaign", - version: "2026.04.03.2", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -421,6 +445,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "Added: EntryLimitsConfig", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/aws/connectcampaignsv2/manifest.yaml b/model/aws/connectcampaignsv2/manifest.yaml index 5394fc312..717ba00e3 100644 --- a/model/aws/connectcampaignsv2/manifest.yaml +++ b/model/aws/connectcampaignsv2/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/aws/connectcampaignsv2" -version: "2026.04.03.2" +version: "2026.04.09.1" description: "AWS CONNECTCAMPAIGNSV2 infrastructure models" labels: - aws diff --git a/model/aws/lambda/extensions/models/function.ts b/model/aws/lambda/extensions/models/function.ts index 5d3a678f1..d5fa35d81 100644 --- a/model/aws/lambda/extensions/models/function.ts +++ b/model/aws/lambda/extensions/models/function.ts @@ -15,7 +15,7 @@ import { export const FileSystemConfigSchema = z.object({ Arn: z.string().max(200).regex( new RegExp( - "^arn:aws[a-zA-Z-]*:elasticfilesystem:(eusc-)?[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$", + "^arn:aws[a-zA-Z-]*:elasticfilesystem:(eusc-)?[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:\\d{12}:access-point/fsap-[a-f0-9]{17}$|^arn:aws[-a-z]*:s3files:[0-9a-z-:]+:file-system/fs-[0-9a-f]{17,40}/access-point/fsap-[0-9a-f]{17,40}$", ), ).describe( "The Amazon Resource Name (ARN) of the Amazon EFS access point that provides access to the file system.", @@ -557,7 +557,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/aws/lambda/function", - version: "2026.04.08.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -579,6 +579,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/aws/lambda/manifest.yaml b/model/aws/lambda/manifest.yaml index 0ef7dc4a2..678c068cb 100644 --- a/model/aws/lambda/manifest.yaml +++ b/model/aws/lambda/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/aws/lambda" -version: "2026.04.08.1" +version: "2026.04.09.1" description: "AWS LAMBDA infrastructure models" labels: - aws diff --git a/model/gcp/agentregistry/extensions/models/bindings.ts b/model/gcp/agentregistry/extensions/models/bindings.ts new file mode 100644 index 000000000..be975e578 --- /dev/null +++ b/model/gcp/agentregistry/extensions/models/bindings.ts @@ -0,0 +1,464 @@ +// Auto-generated extension model for @swamp/gcp/agentregistry/bindings +// Do not edit manually. Re-generate with: deno task generate:gcp + +// deno-lint-ignore-file no-explicit-any + +import { z } from "zod"; +import { + createResource, + deleteResource, + getProjectId, + isResourceNotFoundError, + readResource, + updateResource, +} from "./_lib/gcp.ts"; + +/** Construct the fully-qualified resource name from parent and short name. */ +function buildResourceName(parent: string, shortName: string): string { + return `${parent}/bindings/${shortName}`; +} + +const BASE_URL = "https://agentregistry.googleapis.com/"; + +const GET_CONFIG = { + "id": "agentregistry.projects.locations.bindings.get", + "path": "v1alpha/{+name}", + "httpMethod": "GET", + "parameterOrder": [ + "name", + ], + "parameters": { + "name": { + "location": "path", + "required": true, + }, + }, +} as const; + +const INSERT_CONFIG = { + "id": "agentregistry.projects.locations.bindings.create", + "path": "v1alpha/{+parent}/bindings", + "httpMethod": "POST", + "parameterOrder": [ + "parent", + ], + "parameters": { + "bindingId": { + "location": "query", + }, + "parent": { + "location": "path", + "required": true, + }, + "requestId": { + "location": "query", + }, + }, +} as const; + +const PATCH_CONFIG = { + "id": "agentregistry.projects.locations.bindings.patch", + "path": "v1alpha/{+name}", + "httpMethod": "PATCH", + "parameterOrder": [ + "name", + ], + "parameters": { + "name": { + "location": "path", + "required": true, + }, + "requestId": { + "location": "query", + }, + "updateMask": { + "location": "query", + }, + }, +} as const; + +const DELETE_CONFIG = { + "id": "agentregistry.projects.locations.bindings.delete", + "path": "v1alpha/{+name}", + "httpMethod": "DELETE", + "parameterOrder": [ + "name", + ], + "parameters": { + "name": { + "location": "path", + "required": true, + }, + "requestId": { + "location": "query", + }, + }, +} as const; + +const GlobalArgsSchema = z.object({ + authProviderBinding: z.object({ + authProvider: z.string().describe( + "Required. The resource name of the target AuthProvider. Format: * `projects/{project}/locations/{location}/authProviders/{auth_provider}`", + ).optional(), + continueUri: z.string().describe( + "Optional. The continue URI of the AuthProvider. The URI is used to reauthenticate the user and finalize the managed OAuth flow.", + ).optional(), + scopes: z.array(z.string()).describe( + "Optional. The list of OAuth2 scopes of the AuthProvider.", + ).optional(), + }).describe("The AuthProvider of the Binding.").optional(), + description: z.string().describe( + "Optional. User-defined description of a Binding. Can have a maximum length of `2048` characters.", + ).optional(), + displayName: z.string().describe( + "Optional. User-defined display name for the Binding. Can have a maximum length of `63` characters.", + ).optional(), + name: z.string().describe( + "Required. Identifier. The resource name of the Binding. Format: `projects/{project}/locations/{location}/bindings/{binding}`.", + ).optional(), + source: z.object({ + identifier: z.string().describe( + "The identifier of the source Agent. Format: * `urn:agent:{publisher}:{namespace}:{name}`", + ).optional(), + }).describe("The source of the Binding.").optional(), + target: z.object({ + identifier: z.string().describe( + "The identifier of the target Agent, MCP Server, or Endpoint. Format: * `urn:agent:{publisher}:{namespace}:{name}` * `urn:mcp:{publisher}:{namespace}:{name}` * `urn:endpoint:{publisher}:{namespace}:{name}`", + ).optional(), + }).describe("The target of the Binding.").optional(), + bindingId: z.string().describe( + "Required. The ID to use for the binding, which will become the final component of the binding's resource name. This value should be 4-63 characters, and must conform to RFC-1034. Specifically, it must match the regular expression `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.", + ).optional(), + requestId: z.string().describe( + "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + ).optional(), + location: z.string().describe( + "The location for this resource (e.g., 'us', 'us-central1', 'europe-west1')", + ).optional(), +}); + +const StateSchema = z.object({ + authProviderBinding: z.object({ + authProvider: z.string(), + continueUri: z.string(), + scopes: z.array(z.string()), + }).optional(), + createTime: z.string().optional(), + description: z.string().optional(), + displayName: z.string().optional(), + name: z.string(), + source: z.object({ + identifier: z.string(), + }).optional(), + target: z.object({ + identifier: z.string(), + }).optional(), + updateTime: z.string().optional(), +}).passthrough(); + +type StateData = z.infer; + +const InputsSchema = z.object({ + authProviderBinding: z.object({ + authProvider: z.string().describe( + "Required. The resource name of the target AuthProvider. Format: * `projects/{project}/locations/{location}/authProviders/{auth_provider}`", + ).optional(), + continueUri: z.string().describe( + "Optional. The continue URI of the AuthProvider. The URI is used to reauthenticate the user and finalize the managed OAuth flow.", + ).optional(), + scopes: z.array(z.string()).describe( + "Optional. The list of OAuth2 scopes of the AuthProvider.", + ).optional(), + }).describe("The AuthProvider of the Binding.").optional(), + description: z.string().describe( + "Optional. User-defined description of a Binding. Can have a maximum length of `2048` characters.", + ).optional(), + displayName: z.string().describe( + "Optional. User-defined display name for the Binding. Can have a maximum length of `63` characters.", + ).optional(), + name: z.string().describe( + "Required. Identifier. The resource name of the Binding. Format: `projects/{project}/locations/{location}/bindings/{binding}`.", + ).optional(), + source: z.object({ + identifier: z.string().describe( + "The identifier of the source Agent. Format: * `urn:agent:{publisher}:{namespace}:{name}`", + ).optional(), + }).describe("The source of the Binding.").optional(), + target: z.object({ + identifier: z.string().describe( + "The identifier of the target Agent, MCP Server, or Endpoint. Format: * `urn:agent:{publisher}:{namespace}:{name}` * `urn:mcp:{publisher}:{namespace}:{name}` * `urn:endpoint:{publisher}:{namespace}:{name}`", + ).optional(), + }).describe("The target of the Binding.").optional(), + bindingId: z.string().describe( + "Required. The ID to use for the binding, which will become the final component of the binding's resource name. This value should be 4-63 characters, and must conform to RFC-1034. Specifically, it must match the regular expression `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.", + ).optional(), + requestId: z.string().describe( + "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + ).optional(), + location: z.string().describe( + "The location for this resource (e.g., 'us', 'us-central1', 'europe-west1')", + ).optional(), +}); + +export const model = { + type: "@swamp/gcp/agentregistry/bindings", + version: "2026.04.09.1", + globalArguments: GlobalArgsSchema, + inputsSchema: InputsSchema, + resources: { + state: { + description: "Represents a user-defined Binding.", + schema: StateSchema, + lifetime: "infinite", + garbageCollection: 10, + }, + }, + methods: { + create: { + description: "Create a bindings", + arguments: z.object({}), + execute: async (_args: Record, context: any) => { + const g = context.globalArgs; + const projectId = await getProjectId(); + const params: Record = { project: projectId }; + if (g["parent"] !== undefined) params["parent"] = String(g["parent"]); + const body: Record = {}; + if (g["authProviderBinding"] !== undefined) { + body["authProviderBinding"] = g["authProviderBinding"]; + } + if (g["description"] !== undefined) { + body["description"] = g["description"]; + } + if (g["displayName"] !== undefined) { + body["displayName"] = g["displayName"]; + } + if (g["name"] !== undefined) body["name"] = g["name"]; + if (g["source"] !== undefined) body["source"] = g["source"]; + if (g["target"] !== undefined) body["target"] = g["target"]; + if (g["bindingId"] !== undefined) body["bindingId"] = g["bindingId"]; + if (g["requestId"] !== undefined) body["requestId"] = g["requestId"]; + if (g["parent"] !== undefined && g["name"] !== undefined) { + params["name"] = buildResourceName( + String(g["parent"]), + String(g["name"]), + ); + } + const result = await createResource( + BASE_URL, + INSERT_CONFIG, + params, + body, + GET_CONFIG, + ) as StateData; + const instanceName = ((result.name ?? g.name)?.toString() ?? "current") + .replace(/[\/\\]/g, "_").replace(/\.\./g, "_").replace(/\0/g, ""); + const handle = await context.writeResource( + "state", + instanceName, + result, + ); + return { dataHandles: [handle] }; + }, + }, + get: { + description: "Get a bindings", + arguments: z.object({ + identifier: z.string().describe("The name of the bindings"), + }), + execute: async (args: { identifier: string }, context: any) => { + const projectId = await getProjectId(); + const params: Record = { project: projectId }; + const g = context.globalArgs; + params["name"] = buildResourceName( + String(g["parent"] ?? ""), + args.identifier, + ); + const result = await readResource( + BASE_URL, + GET_CONFIG, + params, + ) as StateData; + const instanceName = + ((result.name ?? g.name)?.toString() ?? args.identifier).replace( + /[\/\\]/g, + "_", + ).replace(/\.\./g, "_").replace(/\0/g, ""); + const handle = await context.writeResource( + "state", + instanceName, + result, + ); + return { dataHandles: [handle] }; + }, + }, + update: { + description: "Update bindings attributes", + arguments: z.object({}), + execute: async (_args: Record, context: any) => { + const g = context.globalArgs; + const projectId = await getProjectId(); + const instanceName = (g.name?.toString() ?? "current").replace( + /[\/\\]/g, + "_", + ).replace(/\.\./g, "_").replace(/\0/g, ""); + const content = await context.dataRepository.getContent( + context.modelType, + context.modelId, + instanceName, + ); + if (!content) { + throw new Error("No existing state found - run create or get first"); + } + const existing = JSON.parse(new TextDecoder().decode(content)); + const params: Record = { project: projectId }; + params["name"] = buildResourceName( + String(g["parent"] ?? ""), + existing["name"]?.toString() ?? g["name"]?.toString() ?? "", + ); + const body: Record = {}; + if (g["authProviderBinding"] !== undefined) { + body["authProviderBinding"] = g["authProviderBinding"]; + } + if (g["description"] !== undefined) { + body["description"] = g["description"]; + } + if (g["displayName"] !== undefined) { + body["displayName"] = g["displayName"]; + } + if (g["source"] !== undefined) body["source"] = g["source"]; + if (g["target"] !== undefined) body["target"] = g["target"]; + for (const key of Object.keys(existing)) { + if ( + key === "fingerprint" || key === "labelFingerprint" || + key === "etag" || key.endsWith("Fingerprint") + ) { + body[key] = existing[key]; + } + } + const result = await updateResource( + BASE_URL, + PATCH_CONFIG, + params, + body, + GET_CONFIG, + ) as StateData; + const handle = await context.writeResource( + "state", + instanceName, + result, + ); + return { dataHandles: [handle] }; + }, + }, + delete: { + description: "Delete the bindings", + arguments: z.object({ + identifier: z.string().describe("The name of the bindings"), + }), + execute: async (args: { identifier: string }, context: any) => { + const g = context.globalArgs; + const projectId = await getProjectId(); + const params: Record = { project: projectId }; + params["name"] = buildResourceName( + String(g["parent"] ?? ""), + args.identifier, + ); + const { existed } = await deleteResource( + BASE_URL, + DELETE_CONFIG, + params, + ); + const instanceName = (g.name?.toString() ?? args.identifier).replace( + /[\/\\]/g, + "_", + ).replace(/\.\./g, "_").replace(/\0/g, ""); + const handle = await context.writeResource("state", instanceName, { + identifier: args.identifier, + existed, + status: existed ? "deleted" : "not_found", + deletedAt: new Date().toISOString(), + }); + return { dataHandles: [handle] }; + }, + }, + sync: { + description: "Sync bindings state from GCP", + arguments: z.object({}), + execute: async (_args: Record, context: any) => { + const g = context.globalArgs; + const projectId = await getProjectId(); + const instanceName = (g.name?.toString() ?? "current").replace( + /[\/\\]/g, + "_", + ).replace(/\.\./g, "_").replace(/\0/g, ""); + const content = await context.dataRepository.getContent( + context.modelType, + context.modelId, + instanceName, + ); + if (!content) { + throw new Error("No existing state found - run create or get first"); + } + const existing = JSON.parse(new TextDecoder().decode(content)); + try { + const params: Record = { project: projectId }; + const shortName = existing.name?.toString() ?? g["name"]?.toString(); + if (!shortName) throw new Error("No identifier found"); + params["name"] = buildResourceName( + String(g["parent"] ?? ""), + shortName, + ); + const result = await readResource( + BASE_URL, + GET_CONFIG, + params, + ) as StateData; + const handle = await context.writeResource( + "state", + instanceName, + result, + ); + return { dataHandles: [handle] }; + } catch (error: unknown) { + if (isResourceNotFoundError(error)) { + const handle = await context.writeResource("state", instanceName, { + status: "not_found", + syncedAt: new Date().toISOString(), + }); + return { dataHandles: [handle] }; + } + throw error; + } + }, + }, + fetch_available: { + description: "fetch available", + arguments: z.object({}), + execute: async (_args: Record, context: any) => { + const g = context.globalArgs; + const projectId = await getProjectId(); + const params: Record = { project: projectId }; + if (g["parent"] !== undefined) params["parent"] = String(g["parent"]); + const result = await createResource( + BASE_URL, + { + "id": "agentregistry.projects.locations.bindings.fetchAvailable", + "path": "v1alpha/{+parent}/bindings:fetchAvailable", + "httpMethod": "GET", + "parameterOrder": ["parent"], + "parameters": { + "pageSize": { "location": "query" }, + "pageToken": { "location": "query" }, + "parent": { "location": "path", "required": true }, + "sourceIdentifier": { "location": "query" }, + "targetIdentifier": { "location": "query" }, + }, + }, + params, + {}, + ); + return { result }; + }, + }, + }, +}; diff --git a/model/gcp/agentregistry/manifest.yaml b/model/gcp/agentregistry/manifest.yaml index 497a0f2ec..d47b151de 100644 --- a/model/gcp/agentregistry/manifest.yaml +++ b/model/gcp/agentregistry/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/agentregistry" -version: "2026.04.07.1" +version: "2026.04.09.1" description: "Google Cloud agentregistry infrastructure models" labels: - gcp @@ -10,9 +10,10 @@ labels: - cloud - infrastructure releaseNotes: | - - Updated: agents, mcpservers + - Added: bindings models: - agents.ts + - bindings.ts - endpoints.ts - locations.ts - mcpservers.ts diff --git a/model/gcp/bigquerydatapolicy/extensions/models/datapolicies.ts b/model/gcp/bigquerydatapolicy/extensions/models/datapolicies.ts index 23e459164..22ae544c2 100644 --- a/model/gcp/bigquerydatapolicy/extensions/models/datapolicies.ts +++ b/model/gcp/bigquerydatapolicy/extensions/models/datapolicies.ts @@ -88,6 +88,16 @@ const DELETE_CONFIG = { const GlobalArgsSchema = z.object({ dataPolicy: z.object({ + dataGovernanceTag: z.object({ + key: z.string().describe( + "Optional. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for example `parent-id/pii` where `parent-id` is the ID of the parent organization or project resource for this tag key.", + ).optional(), + value: z.string().describe( + "Optional. Specifies the tag value as the short name, for example `sensitive`.", + ).optional(), + }).describe( + "Data Governance tag This is a namespaced name specifying the key and the value. For example: `project-id/pii/sensitive`.", + ).optional(), dataMaskingPolicy: z.object({ predefinedExpression: z.enum([ "PREDEFINED_EXPRESSION_UNSPECIFIED", @@ -132,6 +142,16 @@ const GlobalArgsSchema = z.object({ dataPolicyId: z.string().describe( "Output only. User-assigned (human readable) ID of the data policy that needs to be unique within a project. Used as {data_policy_id} in part of the resource name.", ).optional(), + dataGovernanceTag: z.object({ + key: z.string().describe( + "Optional. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for example `parent-id/pii` where `parent-id` is the ID of the parent organization or project resource for this tag key.", + ).optional(), + value: z.string().describe( + "Optional. Specifies the tag value as the short name, for example `sensitive`.", + ).optional(), + }).describe( + "Data Governance tag This is a namespaced name specifying the key and the value. For example: `project-id/pii/sensitive`.", + ).optional(), dataMaskingPolicy: z.object({ predefinedExpression: z.enum([ "PREDEFINED_EXPRESSION_UNSPECIFIED", @@ -175,6 +195,10 @@ const GlobalArgsSchema = z.object({ }); const StateSchema = z.object({ + dataGovernanceTag: z.object({ + key: z.string(), + value: z.string(), + }).optional(), dataMaskingPolicy: z.object({ predefinedExpression: z.string(), routine: z.string(), @@ -192,6 +216,16 @@ type StateData = z.infer; const InputsSchema = z.object({ dataPolicy: z.object({ + dataGovernanceTag: z.object({ + key: z.string().describe( + "Optional. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for example `parent-id/pii` where `parent-id` is the ID of the parent organization or project resource for this tag key.", + ).optional(), + value: z.string().describe( + "Optional. Specifies the tag value as the short name, for example `sensitive`.", + ).optional(), + }).describe( + "Data Governance tag This is a namespaced name specifying the key and the value. For example: `project-id/pii/sensitive`.", + ).optional(), dataMaskingPolicy: z.object({ predefinedExpression: z.enum([ "PREDEFINED_EXPRESSION_UNSPECIFIED", @@ -236,6 +270,16 @@ const InputsSchema = z.object({ dataPolicyId: z.string().describe( "Output only. User-assigned (human readable) ID of the data policy that needs to be unique within a project. Used as {data_policy_id} in part of the resource name.", ).optional(), + dataGovernanceTag: z.object({ + key: z.string().describe( + "Optional. Tag keys are globally unique. Tag key is expected to be in the namespaced format, for example `parent-id/pii` where `parent-id` is the ID of the parent organization or project resource for this tag key.", + ).optional(), + value: z.string().describe( + "Optional. Specifies the tag value as the short name, for example `sensitive`.", + ).optional(), + }).describe( + "Data Governance tag This is a namespaced name specifying the key and the value. For example: `project-id/pii/sensitive`.", + ).optional(), dataMaskingPolicy: z.object({ predefinedExpression: z.enum([ "PREDEFINED_EXPRESSION_UNSPECIFIED", @@ -280,7 +324,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/bigquerydatapolicy/datapolicies", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -333,6 +377,11 @@ export const model = { return rest; }, }, + { + toVersion: "2026.04.09.1", + description: "Added: dataGovernanceTag", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, @@ -440,6 +489,9 @@ export const model = { if (g["dataPolicyId"] !== undefined) { body["dataPolicyId"] = g["dataPolicyId"]; } + if (g["dataGovernanceTag"] !== undefined) { + body["dataGovernanceTag"] = g["dataGovernanceTag"]; + } if (g["dataMaskingPolicy"] !== undefined) { body["dataMaskingPolicy"] = g["dataMaskingPolicy"]; } diff --git a/model/gcp/bigquerydatapolicy/manifest.yaml b/model/gcp/bigquerydatapolicy/manifest.yaml index 342c98195..cbe940453 100644 --- a/model/gcp/bigquerydatapolicy/manifest.yaml +++ b/model/gcp/bigquerydatapolicy/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/bigquerydatapolicy" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud bigquerydatapolicy infrastructure models" labels: - gcp diff --git a/model/gcp/dataflow/extensions/models/jobs.ts b/model/gcp/dataflow/extensions/models/jobs.ts index 3972e8f71..7d7677429 100644 --- a/model/gcp/dataflow/extensions/models/jobs.ts +++ b/model/gcp/dataflow/extensions/models/jobs.ts @@ -718,9 +718,12 @@ const GlobalArgsSchema = z.object({ ).optional(), runtimeUpdatableParams: z.object({ acceptableBacklogDuration: z.string().describe( - "Optional. Deprecated: Use `autoscaling_tier` instead. The backlog threshold duration in seconds for autoscaling. Value must be non-negative.", + "Optional. Deprecated: Use `latency_tier` instead. The backlog threshold duration in seconds for autoscaling. Value must be non-negative.", ).optional(), autoscalingTier: z.string().describe( + 'Optional. Deprecated: Use `latency_tier` instead. The backlog threshold tier for autoscaling. Value must be one of "low-latency", "medium-latency", or "high-latency".', + ).optional(), + latencyTier: z.string().describe( 'Optional. The backlog threshold tier for autoscaling. Value must be one of "low-latency", "medium-latency", or "high-latency".', ).optional(), maxNumWorkers: z.number().int().describe( @@ -1023,6 +1026,7 @@ const StateSchema = z.object({ runtimeUpdatableParams: z.object({ acceptableBacklogDuration: z.string(), autoscalingTier: z.string(), + latencyTier: z.string(), maxNumWorkers: z.number(), minNumWorkers: z.number(), workerUtilizationHint: z.number(), @@ -1679,9 +1683,12 @@ const InputsSchema = z.object({ ).optional(), runtimeUpdatableParams: z.object({ acceptableBacklogDuration: z.string().describe( - "Optional. Deprecated: Use `autoscaling_tier` instead. The backlog threshold duration in seconds for autoscaling. Value must be non-negative.", + "Optional. Deprecated: Use `latency_tier` instead. The backlog threshold duration in seconds for autoscaling. Value must be non-negative.", ).optional(), autoscalingTier: z.string().describe( + 'Optional. Deprecated: Use `latency_tier` instead. The backlog threshold tier for autoscaling. Value must be one of "low-latency", "medium-latency", or "high-latency".', + ).optional(), + latencyTier: z.string().describe( 'Optional. The backlog threshold tier for autoscaling. Value must be one of "low-latency", "medium-latency", or "high-latency".', ).optional(), maxNumWorkers: z.number().int().describe( @@ -1765,7 +1772,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/dataflow/jobs", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -1797,6 +1804,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/dataflow/manifest.yaml b/model/gcp/dataflow/manifest.yaml index 2acd0b3e4..b28a8e7b3 100644 --- a/model/gcp/dataflow/manifest.yaml +++ b/model/gcp/dataflow/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/dataflow" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud dataflow infrastructure models" labels: - gcp @@ -10,7 +10,7 @@ labels: - cloud - infrastructure releaseNotes: | - - Updated: jobs, templates + - Updated: jobs models: - jobs.ts - jobs_messages.ts diff --git a/model/gcp/developerconnect/extensions/models/accountconnectors.ts b/model/gcp/developerconnect/extensions/models/accountconnectors.ts index d17ea3529..556d33d8c 100644 --- a/model/gcp/developerconnect/extensions/models/accountconnectors.ts +++ b/model/gcp/developerconnect/extensions/models/accountconnectors.ts @@ -187,6 +187,9 @@ const GlobalArgsSchema = z.object({ enabled: z.boolean().describe( "Optional. Setting this to true allows the git and http proxies to perform actions on behalf of the user configured under the account connector.", ).optional(), + httpProxyBaseUri: z.string().describe( + "Output only. The base URI for the HTTP proxy endpoint. Has the format `https://{generatedID}-a-h-{shortRegion}.developerconnect.dev` Populated only when `enabled` is set to `true`. This endpoint is used by other Google services that integrate with Developer Connect.", + ).optional(), }).describe("The proxy configuration.").optional(), accountConnectorId: z.string().describe( "Required. The ID to use for the AccountConnector, which will become the final component of the AccountConnector's resource name. Its format should adhere to https://google.aip.dev/122#resource-id-segments Names must be unique per-project per-location.", @@ -227,7 +230,9 @@ const StateSchema = z.object({ }).optional(), proxyConfig: z.object({ enabled: z.boolean(), + httpProxyBaseUri: z.string(), }).optional(), + uid: z.string().optional(), updateTime: z.string().optional(), }).passthrough(); @@ -307,6 +312,9 @@ const InputsSchema = z.object({ enabled: z.boolean().describe( "Optional. Setting this to true allows the git and http proxies to perform actions on behalf of the user configured under the account connector.", ).optional(), + httpProxyBaseUri: z.string().describe( + "Output only. The base URI for the HTTP proxy endpoint. Has the format `https://{generatedID}-a-h-{shortRegion}.developerconnect.dev` Populated only when `enabled` is set to `true`. This endpoint is used by other Google services that integrate with Developer Connect.", + ).optional(), }).describe("The proxy configuration.").optional(), accountConnectorId: z.string().describe( "Required. The ID to use for the AccountConnector, which will become the final component of the AccountConnector's resource name. Its format should adhere to https://google.aip.dev/122#resource-id-segments Names must be unique per-project per-location.", @@ -321,7 +329,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/developerconnect/accountconnectors", - version: "2026.04.03.3", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -348,6 +356,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/developerconnect/manifest.yaml b/model/gcp/developerconnect/manifest.yaml index 15cdbabbd..5f4934fb6 100644 --- a/model/gcp/developerconnect/manifest.yaml +++ b/model/gcp/developerconnect/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/developerconnect" -version: "2026.04.03.3" +version: "2026.04.09.1" description: "Google Cloud developerconnect infrastructure models" labels: - gcp @@ -10,7 +10,7 @@ labels: - cloud - infrastructure releaseNotes: | - - Updated: locations, accountconnectors, accountconnectors_users, connections, connections_gitrepositorylinks, insightsconfigs, insightsconfigs_deploymentevents + - Updated: accountconnectors models: - accountconnectors.ts - accountconnectors_users.ts diff --git a/model/gcp/drive/extensions/models/changes.ts b/model/gcp/drive/extensions/models/changes.ts index a7968eebe..0ad08385d 100644 --- a/model/gcp/drive/extensions/models/changes.ts +++ b/model/gcp/drive/extensions/models/changes.ts @@ -176,6 +176,18 @@ const StateSchema = z.object({ canTrashChildren: z.boolean(), canUntrash: z.boolean(), }), + clientEncryptionDetails: z.object({ + decryptionMetadata: z.object({ + aes256GcmChunkSize: z.string(), + encryptionResourceKeyHash: z.string(), + jwt: z.string(), + kaclsId: z.string(), + kaclsName: z.string(), + keyFormat: z.string(), + wrappedKey: z.string(), + }), + encryptionState: z.string(), + }), contentHints: z.object({ indexableText: z.string(), thumbnail: z.object({ @@ -436,7 +448,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/drive/changes", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -468,6 +480,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/drive/extensions/models/files.ts b/model/gcp/drive/extensions/models/files.ts index 317b25b1a..d4d9fb216 100644 --- a/model/gcp/drive/extensions/models/files.ts +++ b/model/gcp/drive/extensions/models/files.ts @@ -154,6 +154,35 @@ const GlobalArgsSchema = z.object({ appProperties: z.record(z.string(), z.string()).describe( "A collection of arbitrary key-value pairs which are private to the requesting app. Entries with null values are cleared in update and copy requests. These properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.", ).optional(), + clientEncryptionDetails: z.object({ + decryptionMetadata: z.object({ + aes256GcmChunkSize: z.string().describe( + "Chunk size used if content was encrypted with the AES 256 GCM Cipher. Possible values are: - default - small", + ).optional(), + encryptionResourceKeyHash: z.string().describe( + "The URL-safe Base64 encoded HMAC-SHA256 digest of the resource metadata with its DEK (Data Encryption Key); see https://developers.google.com/workspace/cse/reference", + ).optional(), + jwt: z.string().describe( + "The signed JSON Web Token (JWT) which can be used to authorize the requesting user with the Key ACL Service (KACLS). The JWT asserts that the requesting user has at least read permissions on the file.", + ).optional(), + kaclsId: z.string().describe( + "The ID of the KACLS (Key ACL Service) used to encrypt the file.", + ).optional(), + kaclsName: z.string().describe( + "The name of the KACLS (Key ACL Service) used to encrypt the file.", + ).optional(), + keyFormat: z.string().describe( + "Key format for the unwrapped key. Must be `tinkAesGcmKey`.", + ).optional(), + wrappedKey: z.string().describe( + "The URL-safe Base64 encoded wrapped key used to encrypt the contents of the file.", + ).optional(), + }).describe("Representation of the CSE DecryptionMetadata.").optional(), + encryptionState: z.string().describe( + "The encryption state of the file. The values expected here are: - encrypted - unencrypted", + ).optional(), + }).describe("Details about the client-side encryption applied to the file.") + .optional(), contentHints: z.object({ indexableText: z.string().describe( "Text to be indexed for the file to improve fullText queries. This is limited to 128 KB in length and may contain HTML elements.", @@ -335,7 +364,7 @@ const GlobalArgsSchema = z.object({ starred: z.boolean().describe("Whether the user has starred the file.") .optional(), trashed: z.boolean().describe( - "Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file, and other users cannot see files in the owner's trash.", + "Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file, but other users can still access the file in the owner's trash until it's permanently deleted.", ).optional(), trashedTime: z.string().describe( "The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.", @@ -437,6 +466,18 @@ const StateSchema = z.object({ canTrashChildren: z.boolean(), canUntrash: z.boolean(), }).optional(), + clientEncryptionDetails: z.object({ + decryptionMetadata: z.object({ + aes256GcmChunkSize: z.string(), + encryptionResourceKeyHash: z.string(), + jwt: z.string(), + kaclsId: z.string(), + kaclsName: z.string(), + keyFormat: z.string(), + wrappedKey: z.string(), + }), + encryptionState: z.string(), + }).optional(), contentHints: z.object({ indexableText: z.string(), thumbnail: z.object({ @@ -636,6 +677,35 @@ const InputsSchema = z.object({ appProperties: z.record(z.string(), z.string()).describe( "A collection of arbitrary key-value pairs which are private to the requesting app. Entries with null values are cleared in update and copy requests. These properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.", ).optional(), + clientEncryptionDetails: z.object({ + decryptionMetadata: z.object({ + aes256GcmChunkSize: z.string().describe( + "Chunk size used if content was encrypted with the AES 256 GCM Cipher. Possible values are: - default - small", + ).optional(), + encryptionResourceKeyHash: z.string().describe( + "The URL-safe Base64 encoded HMAC-SHA256 digest of the resource metadata with its DEK (Data Encryption Key); see https://developers.google.com/workspace/cse/reference", + ).optional(), + jwt: z.string().describe( + "The signed JSON Web Token (JWT) which can be used to authorize the requesting user with the Key ACL Service (KACLS). The JWT asserts that the requesting user has at least read permissions on the file.", + ).optional(), + kaclsId: z.string().describe( + "The ID of the KACLS (Key ACL Service) used to encrypt the file.", + ).optional(), + kaclsName: z.string().describe( + "The name of the KACLS (Key ACL Service) used to encrypt the file.", + ).optional(), + keyFormat: z.string().describe( + "Key format for the unwrapped key. Must be `tinkAesGcmKey`.", + ).optional(), + wrappedKey: z.string().describe( + "The URL-safe Base64 encoded wrapped key used to encrypt the contents of the file.", + ).optional(), + }).describe("Representation of the CSE DecryptionMetadata.").optional(), + encryptionState: z.string().describe( + "The encryption state of the file. The values expected here are: - encrypted - unencrypted", + ).optional(), + }).describe("Details about the client-side encryption applied to the file.") + .optional(), contentHints: z.object({ indexableText: z.string().describe( "Text to be indexed for the file to improve fullText queries. This is limited to 128 KB in length and may contain HTML elements.", @@ -817,7 +887,7 @@ const InputsSchema = z.object({ starred: z.boolean().describe("Whether the user has starred the file.") .optional(), trashed: z.boolean().describe( - "Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file, and other users cannot see files in the owner's trash.", + "Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file, but other users can still access the file in the owner's trash until it's permanently deleted.", ).optional(), trashedTime: z.string().describe( "The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.", @@ -873,7 +943,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/drive/files", - version: "2026.04.03.3", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -900,6 +970,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "Added: clientEncryptionDetails", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, @@ -924,6 +999,9 @@ export const model = { if (g["appProperties"] !== undefined) { body["appProperties"] = g["appProperties"]; } + if (g["clientEncryptionDetails"] !== undefined) { + body["clientEncryptionDetails"] = g["clientEncryptionDetails"]; + } if (g["contentHints"] !== undefined) { body["contentHints"] = g["contentHints"]; } @@ -1085,6 +1163,9 @@ export const model = { if (g["appProperties"] !== undefined) { body["appProperties"] = g["appProperties"]; } + if (g["clientEncryptionDetails"] !== undefined) { + body["clientEncryptionDetails"] = g["clientEncryptionDetails"]; + } if (g["contentHints"] !== undefined) { body["contentHints"] = g["contentHints"]; } @@ -1256,6 +1337,7 @@ export const model = { arguments: z.object({ appProperties: z.any().optional(), capabilities: z.any().optional(), + clientEncryptionDetails: z.any().optional(), contentHints: z.any().optional(), contentRestrictions: z.any().optional(), copyRequiresWriterPermission: z.any().optional(), @@ -1344,6 +1426,9 @@ export const model = { if (args["capabilities"] !== undefined) { body["capabilities"] = args["capabilities"]; } + if (args["clientEncryptionDetails"] !== undefined) { + body["clientEncryptionDetails"] = args["clientEncryptionDetails"]; + } if (args["contentHints"] !== undefined) { body["contentHints"] = args["contentHints"]; } @@ -1635,6 +1720,30 @@ export const model = { return { result }; }, }, + generate_cse_token: { + description: "generate cse token", + arguments: z.object({}), + execute: async (_args: Record, _context: any) => { + const projectId = await getProjectId(); + const params: Record = { project: projectId }; + const result = await createResource( + BASE_URL, + { + "id": "drive.files.generateCseToken", + "path": "files/generateCseToken", + "httpMethod": "GET", + "parameterOrder": [], + "parameters": { + "fileId": { "location": "query" }, + "parent": { "location": "query" }, + }, + }, + params, + {}, + ); + return { result }; + }, + }, generate_ids: { description: "generate ids", arguments: z.object({}), diff --git a/model/gcp/drive/manifest.yaml b/model/gcp/drive/manifest.yaml index 6d56fc229..6e46b94fd 100644 --- a/model/gcp/drive/manifest.yaml +++ b/model/gcp/drive/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/drive" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud drive infrastructure models" labels: - gcp @@ -10,7 +10,7 @@ labels: - cloud - infrastructure releaseNotes: | - - Updated: changes + - Updated: changes, files models: - about.ts - accessproposals.ts diff --git a/model/gcp/firestore/extensions/models/databases_collectiongroups_fields.ts b/model/gcp/firestore/extensions/models/databases_collectiongroups_fields.ts index 5ffb13166..9dfd0083e 100644 --- a/model/gcp/firestore/extensions/models/databases_collectiongroups_fields.ts +++ b/model/gcp/firestore/extensions/models/databases_collectiongroups_fields.ts @@ -103,9 +103,6 @@ const GlobalArgsSchema = z.object({ "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection ID. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection ID as this index.", ).optional(), searchIndexOptions: z.object({ - customPartitionFieldPaths: z.array(z.unknown()).describe( - "Optional. Custom partition fields to use for the search index. If unspecified, all indexed fields will be in the same default partition. If a search index is created specifying custom partition fields, all search queries using that index will be required to filter on the partition. For indexes with MONGODB_COMPATIBLE_API ApiScope: This must refer to a top level field name.", - ).optional(), textLanguage: z.string().describe( "Optional. The language to use for text search indexes. Used as the default language if not overridden at the document level by specifying the `text_language_override_field`. The language is specified as a BCP 47 language code. For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the default language is English. For indexes with `ANY_API` ApiScope: If unspecified, the default behavior is autodetect.", ).optional(), @@ -164,7 +161,6 @@ const StateSchema = z.object({ name: z.string(), queryScope: z.string(), searchIndexOptions: z.object({ - customPartitionFieldPaths: z.array(z.unknown()), textLanguage: z.string(), textLanguageOverrideFieldPath: z.string(), }), @@ -236,9 +232,6 @@ const InputsSchema = z.object({ "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection ID. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection ID as this index.", ).optional(), searchIndexOptions: z.object({ - customPartitionFieldPaths: z.array(z.unknown()).describe( - "Optional. Custom partition fields to use for the search index. If unspecified, all indexed fields will be in the same default partition. If a search index is created specifying custom partition fields, all search queries using that index will be required to filter on the partition. For indexes with MONGODB_COMPATIBLE_API ApiScope: This must refer to a top level field name.", - ).optional(), textLanguage: z.string().describe( "Optional. The language to use for text search indexes. Used as the default language if not overridden at the document level by specifying the `text_language_override_field`. The language is specified as a BCP 47 language code. For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the default language is English. For indexes with `ANY_API` ApiScope: If unspecified, the default behavior is autodetect.", ).optional(), @@ -282,7 +275,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/firestore/databases-collectiongroups-fields", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -314,6 +307,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/firestore/extensions/models/databases_collectiongroups_indexes.ts b/model/gcp/firestore/extensions/models/databases_collectiongroups_indexes.ts index ae14f205e..16498b48c 100644 --- a/model/gcp/firestore/extensions/models/databases_collectiongroups_indexes.ts +++ b/model/gcp/firestore/extensions/models/databases_collectiongroups_indexes.ts @@ -90,19 +90,6 @@ const GlobalArgsSchema = z.object({ }).describe( "The specification for how to build a geo search index for a field.", ).optional(), - numberSpec: z.object({ - indexType: z.enum([ - "NUMBER_INDEX_TYPE_UNSPECIFIED", - "FLOAT64", - "INT32_LOG_TREE", - "INT64_LOG_TREE", - "INT32_PREFIX_TREE", - "INT64_PREFIX_TREE", - ]).describe("Required. How to index the number field value.") - .optional(), - }).describe( - "The specification for how to build a number search index for a field.", - ).optional(), textSpec: z.object({ indexSpecs: z.array(z.unknown()).describe( "Required. Specifications for how the field should be indexed. Repeated so that the field can be indexed in multiple ways.", @@ -136,9 +123,6 @@ const GlobalArgsSchema = z.object({ "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection ID. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection ID as this index.", ).optional(), searchIndexOptions: z.object({ - customPartitionFieldPaths: z.array(z.string()).describe( - "Optional. Custom partition fields to use for the search index. If unspecified, all indexed fields will be in the same default partition. If a search index is created specifying custom partition fields, all search queries using that index will be required to filter on the partition. For indexes with MONGODB_COMPATIBLE_API ApiScope: This must refer to a top level field name.", - ).optional(), textLanguage: z.string().describe( "Optional. The language to use for text search indexes. Used as the default language if not overridden at the document level by specifying the `text_language_override_field`. The language is specified as a BCP 47 language code. For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the default language is English. For indexes with `ANY_API` ApiScope: If unspecified, the default behavior is autodetect.", ).optional(), @@ -168,9 +152,6 @@ const StateSchema = z.object({ geoSpec: z.object({ geoJsonIndexingDisabled: z.boolean(), }), - numberSpec: z.object({ - indexType: z.string(), - }), textSpec: z.object({ indexSpecs: z.array(z.unknown()), }), @@ -184,7 +165,6 @@ const StateSchema = z.object({ name: z.string(), queryScope: z.string().optional(), searchIndexOptions: z.object({ - customPartitionFieldPaths: z.array(z.string()), textLanguage: z.string(), textLanguageOverrideFieldPath: z.string(), }).optional(), @@ -219,19 +199,6 @@ const InputsSchema = z.object({ }).describe( "The specification for how to build a geo search index for a field.", ).optional(), - numberSpec: z.object({ - indexType: z.enum([ - "NUMBER_INDEX_TYPE_UNSPECIFIED", - "FLOAT64", - "INT32_LOG_TREE", - "INT64_LOG_TREE", - "INT32_PREFIX_TREE", - "INT64_PREFIX_TREE", - ]).describe("Required. How to index the number field value.") - .optional(), - }).describe( - "The specification for how to build a number search index for a field.", - ).optional(), textSpec: z.object({ indexSpecs: z.array(z.unknown()).describe( "Required. Specifications for how the field should be indexed. Repeated so that the field can be indexed in multiple ways.", @@ -265,9 +232,6 @@ const InputsSchema = z.object({ "Indexes with a collection query scope specified allow queries against a collection that is the child of a specific document, specified at query time, and that has the same collection ID. Indexes with a collection group query scope specified allow queries against all collections descended from a specific document, specified at query time, and that have the same collection ID as this index.", ).optional(), searchIndexOptions: z.object({ - customPartitionFieldPaths: z.array(z.string()).describe( - "Optional. Custom partition fields to use for the search index. If unspecified, all indexed fields will be in the same default partition. If a search index is created specifying custom partition fields, all search queries using that index will be required to filter on the partition. For indexes with MONGODB_COMPATIBLE_API ApiScope: This must refer to a top level field name.", - ).optional(), textLanguage: z.string().describe( "Optional. The language to use for text search indexes. Used as the default language if not overridden at the document level by specifying the `text_language_override_field`. The language is specified as a BCP 47 language code. For indexes with MONGODB_COMPATIBLE_API ApiScope: If unspecified, the default language is English. For indexes with `ANY_API` ApiScope: If unspecified, the default behavior is autodetect.", ).optional(), @@ -288,7 +252,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/firestore/databases-collectiongroups-indexes", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -320,6 +284,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/firestore/manifest.yaml b/model/gcp/firestore/manifest.yaml index 02054045a..ae1ed7865 100644 --- a/model/gcp/firestore/manifest.yaml +++ b/model/gcp/firestore/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/firestore" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud firestore infrastructure models" labels: - gcp @@ -10,7 +10,7 @@ labels: - cloud - infrastructure releaseNotes: | - - Updated: databases_collectiongroups_fields, databases_collectiongroups_indexes, databases_documents + - Updated: databases_collectiongroups_fields, databases_collectiongroups_indexes models: - backups.ts - databases.ts diff --git a/model/gcp/hypercomputecluster/extensions/models/clusters.ts b/model/gcp/hypercomputecluster/extensions/models/clusters.ts index 064129205..e8d05da45 100644 --- a/model/gcp/hypercomputecluster/extensions/models/clusters.ts +++ b/model/gcp/hypercomputecluster/extensions/models/clusters.ts @@ -202,7 +202,7 @@ const GlobalArgsSchema = z.object({ ).optional(), }), ).describe( - "Optional. Network resources available to the cluster. Must contain at most one value. Keys specify the ID of the network resource by which it can be referenced elsewhere, and must conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, alphanumeric, and at most 63 characters).", + "Optional. Network resources available to the cluster. Must contain exactly one value. Keys specify the ID of the network resource by which it can be referenced elsewhere, and must conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, alphanumeric, and at most 63 characters).", ).optional(), orchestrator: z.object({ slurm: z.object({ @@ -266,7 +266,7 @@ const GlobalArgsSchema = z.object({ ).optional(), nodeSets: z.array(z.object({ computeId: z.string().describe( - "Optional. ID of the compute resource on which this nodeset will run. Must match a key in the cluster's compute_resources.", + "Required. ID of the compute resource on which this nodeset will run. Must match a key in the cluster's compute_resources.", ).optional(), computeInstance: z.object({ bootDisk: z.unknown().describe( @@ -611,7 +611,7 @@ const InputsSchema = z.object({ ).optional(), }), ).describe( - "Optional. Network resources available to the cluster. Must contain at most one value. Keys specify the ID of the network resource by which it can be referenced elsewhere, and must conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, alphanumeric, and at most 63 characters).", + "Optional. Network resources available to the cluster. Must contain exactly one value. Keys specify the ID of the network resource by which it can be referenced elsewhere, and must conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, alphanumeric, and at most 63 characters).", ).optional(), orchestrator: z.object({ slurm: z.object({ @@ -675,7 +675,7 @@ const InputsSchema = z.object({ ).optional(), nodeSets: z.array(z.object({ computeId: z.string().describe( - "Optional. ID of the compute resource on which this nodeset will run. Must match a key in the cluster's compute_resources.", + "Required. ID of the compute resource on which this nodeset will run. Must match a key in the cluster's compute_resources.", ).optional(), computeInstance: z.object({ bootDisk: z.unknown().describe( @@ -858,7 +858,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/hypercomputecluster/clusters", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -890,6 +890,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/hypercomputecluster/manifest.yaml b/model/gcp/hypercomputecluster/manifest.yaml index b2ab9415a..315bb0af1 100644 --- a/model/gcp/hypercomputecluster/manifest.yaml +++ b/model/gcp/hypercomputecluster/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/hypercomputecluster" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud hypercomputecluster infrastructure models" labels: - gcp diff --git a/model/gcp/ondemandscanning/extensions/models/scans_vulnerabilities.ts b/model/gcp/ondemandscanning/extensions/models/scans_vulnerabilities.ts index 9bc78da88..4bd224743 100644 --- a/model/gcp/ondemandscanning/extensions/models/scans_vulnerabilities.ts +++ b/model/gcp/ondemandscanning/extensions/models/scans_vulnerabilities.ts @@ -44,18 +44,6 @@ const GlobalArgsSchema = z.object({ const StateSchema = z.object({ advisoryPublishTime: z.string().optional(), - aiSkillAnalysis: z.object({ - findings: z.array(z.object({ - category: z.string(), - description: z.string(), - filePath: z.string(), - ruleId: z.string(), - severity: z.string(), - snippet: z.string(), - title: z.string(), - })), - skillName: z.string(), - }).optional(), attestation: z.object({ jwts: z.array(z.object({ compactJwt: z.string(), @@ -666,7 +654,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/ondemandscanning/scans-vulnerabilities", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -703,6 +691,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/ondemandscanning/manifest.yaml b/model/gcp/ondemandscanning/manifest.yaml index e9dce7c31..f241f505d 100644 --- a/model/gcp/ondemandscanning/manifest.yaml +++ b/model/gcp/ondemandscanning/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/ondemandscanning" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud ondemandscanning infrastructure models" labels: - gcp diff --git a/model/gcp/servicemanagement/extensions/models/services_configs.ts b/model/gcp/servicemanagement/extensions/models/services_configs.ts index e56ebc041..1d752956e 100644 --- a/model/gcp/servicemanagement/extensions/models/services_configs.ts +++ b/model/gcp/servicemanagement/extensions/models/services_configs.ts @@ -225,7 +225,9 @@ const GlobalArgsSchema = z.object({ "PATH_TRANSLATION_UNSPECIFIED", "CONSTANT_ADDRESS", "APPEND_PATH_TO_ADDRESS", - ]).describe("no-lint").optional(), + ]).describe( + "Path translation specifies how to combine the backend address with the request path in order to produce the appropriate forwarding URL for the request. See PathTranslation for more details.", + ).optional(), protocol: z.string().describe( 'The protocol used for sending a request to the backend. The supported values are "http/1.1" and "h2". The default value is inferred from the scheme in the address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this field to "h2" for improved performance. Configuring this field to non-default values is only supported for secure HTTP backends. This field will be ignored for all other backends. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on the supported values.', ).optional(), @@ -391,7 +393,7 @@ const GlobalArgsSchema = z.object({ 'The specification of an Internet routable address of API frontend that will handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). It should be either a valid IPv4 address or a fully-qualified domain name. For example, "8.8.8.8" or "myservice.appspot.com".', ).optional(), })).describe( - "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs. WARNING: Defining any entries in the `endpoints` list disables the automatic generation of default endpoint variations (e.g., `{service}.clients6.google.com`, `content-{service}.googleapis.com`, and mTLS variants like `{service}.mtls.googleapis.com`). To retain these default variations, you are required to explicitly include your main service endpoint (e.g., `myservice.googleapis.com`) in this list alongside any other custom endpoints (like REP, GFE, etc.).", + "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs.", ).optional(), enums: z.array(z.object({ edition: z.string().describe( @@ -703,7 +705,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), }).describe("Settings for C++ client libraries.").optional(), @@ -716,7 +718,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), forcedNamespaceAliases: z.array(z.unknown()).describe( @@ -744,7 +746,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), renamedServices: z.record(z.string(), z.unknown()).describe( @@ -760,7 +762,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), libraryPackage: z.string().describe( @@ -789,7 +791,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), }).describe("Settings for Node client libraries.").optional(), @@ -802,7 +804,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), libraryPackage: z.string().describe( @@ -818,7 +820,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), experimentalFeatures: z.object({ @@ -847,7 +849,7 @@ const GlobalArgsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), }).describe("Settings for Ruby client libraries.").optional(), @@ -1826,7 +1828,9 @@ const InputsSchema = z.object({ "PATH_TRANSLATION_UNSPECIFIED", "CONSTANT_ADDRESS", "APPEND_PATH_TO_ADDRESS", - ]).describe("no-lint").optional(), + ]).describe( + "Path translation specifies how to combine the backend address with the request path in order to produce the appropriate forwarding URL for the request. See PathTranslation for more details.", + ).optional(), protocol: z.string().describe( 'The protocol used for sending a request to the backend. The supported values are "http/1.1" and "h2". The default value is inferred from the scheme in the address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this field to "h2" for improved performance. Configuring this field to non-default values is only supported for secure HTTP backends. This field will be ignored for all other backends. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on the supported values.', ).optional(), @@ -1992,7 +1996,7 @@ const InputsSchema = z.object({ 'The specification of an Internet routable address of API frontend that will handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). It should be either a valid IPv4 address or a fully-qualified domain name. For example, "8.8.8.8" or "myservice.appspot.com".', ).optional(), })).describe( - "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs. WARNING: Defining any entries in the `endpoints` list disables the automatic generation of default endpoint variations (e.g., `{service}.clients6.google.com`, `content-{service}.googleapis.com`, and mTLS variants like `{service}.mtls.googleapis.com`). To retain these default variations, you are required to explicitly include your main service endpoint (e.g., `myservice.googleapis.com`) in this list alongside any other custom endpoints (like REP, GFE, etc.).", + "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs.", ).optional(), enums: z.array(z.object({ edition: z.string().describe( @@ -2304,7 +2308,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), }).describe("Settings for C++ client libraries.").optional(), @@ -2317,7 +2321,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), forcedNamespaceAliases: z.array(z.unknown()).describe( @@ -2345,7 +2349,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), renamedServices: z.record(z.string(), z.unknown()).describe( @@ -2361,7 +2365,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), libraryPackage: z.string().describe( @@ -2390,7 +2394,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), }).describe("Settings for Node client libraries.").optional(), @@ -2403,7 +2407,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), libraryPackage: z.string().describe( @@ -2419,7 +2423,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), experimentalFeatures: z.object({ @@ -2448,7 +2452,7 @@ const InputsSchema = z.object({ "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest", ).optional(), selectiveGapicGeneration: z.unknown().describe( - "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.", + "This message is used to configure the generation of a subset of the RPCs in a service for client libraries. Note: This feature should not be used in most cases.", ).optional(), }).describe("Required information for every language.").optional(), }).describe("Settings for Ruby client libraries.").optional(), @@ -2805,7 +2809,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/servicemanagement/services-configs", - version: "2026.04.04.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.1", @@ -2837,6 +2841,11 @@ export const model = { description: "No schema changes", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "No schema changes", + upgradeAttributes: (old: Record) => old, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, diff --git a/model/gcp/servicemanagement/manifest.yaml b/model/gcp/servicemanagement/manifest.yaml index 0454671d0..c9781ab6e 100644 --- a/model/gcp/servicemanagement/manifest.yaml +++ b/model/gcp/servicemanagement/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/servicemanagement" -version: "2026.04.04.1" +version: "2026.04.09.1" description: "Google Cloud servicemanagement infrastructure models" labels: - gcp diff --git a/model/gcp/workstations/extensions/models/workstationclusters.ts b/model/gcp/workstations/extensions/models/workstationclusters.ts index e6859f32a..5e4e47da4 100644 --- a/model/gcp/workstations/extensions/models/workstationclusters.ts +++ b/model/gcp/workstations/extensions/models/workstationclusters.ts @@ -151,12 +151,6 @@ const GlobalArgsSchema = z.object({ tags: z.record(z.string(), z.string()).describe( 'Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: "123/environment": "production", "123/costCenter": "marketing"', ).optional(), - workstationAuthorizationUrl: z.string().describe( - "Optional. Specifies the redirect URL for unauthorized requests received by workstation VMs in this cluster. Redirects to this endpoint will send a base64 encoded `state` query param containing the target workstation name and original request hostname. The endpoint is responsible for retrieving a token using `GenerateAccessToken` and redirecting back to the original hostname with the token.", - ).optional(), - workstationLaunchUrl: z.string().describe( - "Optional. Specifies the launch URL for workstations in this cluster. Requests sent to unstarted workstations will be redirected to this URL. Requests redirected to the launch endpoint will be sent with a `workstation` and `project` query parameter containing the full workstation resource name and project ID, respectively. The launch endpoint is responsible for starting the workstation, polling it until it reaches `STATE_RUNNING`, and then issuing a redirect to the workstation's host URL.", - ).optional(), workstationClusterId: z.string().describe( "Required. ID to use for the workstation cluster.", ).optional(), @@ -198,8 +192,6 @@ const StateSchema = z.object({ tags: z.record(z.string(), z.unknown()).optional(), uid: z.string().optional(), updateTime: z.string().optional(), - workstationAuthorizationUrl: z.string().optional(), - workstationLaunchUrl: z.string().optional(), }).passthrough(); type StateData = z.infer; @@ -251,12 +243,6 @@ const InputsSchema = z.object({ tags: z.record(z.string(), z.string()).describe( 'Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: "123/environment": "production", "123/costCenter": "marketing"', ).optional(), - workstationAuthorizationUrl: z.string().describe( - "Optional. Specifies the redirect URL for unauthorized requests received by workstation VMs in this cluster. Redirects to this endpoint will send a base64 encoded `state` query param containing the target workstation name and original request hostname. The endpoint is responsible for retrieving a token using `GenerateAccessToken` and redirecting back to the original hostname with the token.", - ).optional(), - workstationLaunchUrl: z.string().describe( - "Optional. Specifies the launch URL for workstations in this cluster. Requests sent to unstarted workstations will be redirected to this URL. Requests redirected to the launch endpoint will be sent with a `workstation` and `project` query parameter containing the full workstation resource name and project ID, respectively. The launch endpoint is responsible for starting the workstation, polling it until it reaches `STATE_RUNNING`, and then issuing a redirect to the workstation's host URL.", - ).optional(), workstationClusterId: z.string().describe( "Required. ID to use for the workstation cluster.", ).optional(), @@ -267,7 +253,7 @@ const InputsSchema = z.object({ export const model = { type: "@swamp/gcp/workstations/workstationclusters", - version: "2026.04.08.1", + version: "2026.04.09.1", upgrades: [ { toVersion: "2026.04.01.2", @@ -299,6 +285,18 @@ export const model = { description: "Added: workstationAuthorizationUrl, workstationLaunchUrl", upgradeAttributes: (old: Record) => old, }, + { + toVersion: "2026.04.09.1", + description: "Removed: workstationAuthorizationUrl, workstationLaunchUrl", + upgradeAttributes: (old: Record) => { + const { + workstationAuthorizationUrl: _workstationAuthorizationUrl, + workstationLaunchUrl: _workstationLaunchUrl, + ...rest + } = old; + return rest; + }, + }, ], globalArguments: GlobalArgsSchema, inputsSchema: InputsSchema, @@ -341,13 +339,6 @@ export const model = { } if (g["subnetwork"] !== undefined) body["subnetwork"] = g["subnetwork"]; if (g["tags"] !== undefined) body["tags"] = g["tags"]; - if (g["workstationAuthorizationUrl"] !== undefined) { - body["workstationAuthorizationUrl"] = - g["workstationAuthorizationUrl"]; - } - if (g["workstationLaunchUrl"] !== undefined) { - body["workstationLaunchUrl"] = g["workstationLaunchUrl"]; - } if (g["workstationClusterId"] !== undefined) { body["workstationClusterId"] = g["workstationClusterId"]; } @@ -446,13 +437,6 @@ export const model = { if (g["privateClusterConfig"] !== undefined) { body["privateClusterConfig"] = g["privateClusterConfig"]; } - if (g["workstationAuthorizationUrl"] !== undefined) { - body["workstationAuthorizationUrl"] = - g["workstationAuthorizationUrl"]; - } - if (g["workstationLaunchUrl"] !== undefined) { - body["workstationLaunchUrl"] = g["workstationLaunchUrl"]; - } for (const key of Object.keys(existing)) { if ( key === "fingerprint" || key === "labelFingerprint" || diff --git a/model/gcp/workstations/manifest.yaml b/model/gcp/workstations/manifest.yaml index b166a12be..1a69bf742 100644 --- a/model/gcp/workstations/manifest.yaml +++ b/model/gcp/workstations/manifest.yaml @@ -1,7 +1,7 @@ # Auto-generated manifest. Re-generate with the appropriate deno task. manifestVersion: 1 name: "@swamp/gcp/workstations" -version: "2026.04.08.1" +version: "2026.04.09.1" description: "Google Cloud workstations infrastructure models" labels: - gcp