From 980318114948b31ad0f6afaa72a9365c582c00b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 19 Jan 2026 09:23:02 +0000 Subject: [PATCH] Publish proto files from f4b214f2f --- .../applications/v1alpha1/k8s_release.proto | 40 +++++-- nebius/audit/v2/audit_event_export.proto | 113 ++++++++++++++++++ nebius/audit/v2/audit_event_service.proto | 7 +- .../common/error/v1alpha1/common_errors.proto | 4 +- nebius/common/error/v1alpha1/error.proto | 6 +- nebius/common/v1/metadata.proto | 4 +- nebius/common/v1/operation.proto | 12 +- nebius/common/v1/resource_event.proto | 4 +- nebius/common/v1alpha1/operation.proto | 18 +-- .../common/v1alpha1/operation_service.proto | 16 +-- nebius/compute/v1/disk.proto | 7 +- nebius/compute/v1/disk_service.proto | 2 +- nebius/compute/v1/filesystem.proto | 7 +- nebius/compute/v1/filesystem_service.proto | 2 +- nebius/compute/v1/gpu_cluster.proto | 7 +- nebius/compute/v1/gpu_cluster_service.proto | 2 +- nebius/compute/v1/image.proto | 9 +- nebius/compute/v1/image_service.proto | 2 +- nebius/compute/v1/instance.proto | 58 ++++++--- nebius/compute/v1/network_interface.proto | 11 +- nebius/compute/v1/node_service.proto | 5 +- nebius/compute/v1/platform.proto | 10 +- nebius/compute/v1alpha1/disk.proto | 10 +- nebius/compute/v1alpha1/disk_service.proto | 5 +- nebius/compute/v1alpha1/filesystem.proto | 10 +- .../compute/v1alpha1/filesystem_service.proto | 5 +- nebius/compute/v1alpha1/gpu_cluster.proto | 10 +- .../v1alpha1/gpu_cluster_service.proto | 5 +- nebius/compute/v1alpha1/image.proto | 5 +- nebius/compute/v1alpha1/image_service.proto | 5 +- nebius/compute/v1alpha1/instance.proto | 19 ++- .../compute/v1alpha1/instance_service.proto | 3 +- nebius/dns/v1/record.proto | 15 ++- nebius/dns/v1/zone.proto | 31 ++--- nebius/iam/v1/access.proto | 3 +- nebius/iam/v1/access_key.proto | 2 +- nebius/iam/v1/access_key_service.proto | 6 +- nebius/iam/v1/access_permit.proto | 5 +- nebius/iam/v1/auth_public_key.proto | 2 +- nebius/iam/v1/auth_public_key_service.proto | 2 +- nebius/iam/v1/federated_credentials.proto | 3 +- nebius/iam/v1/federation.proto | 4 +- nebius/iam/v1/federation_certificate.proto | 2 +- nebius/iam/v1/federation_service.proto | 2 +- nebius/iam/v1/group.proto | 3 +- nebius/iam/v1/group_membership_service.proto | 2 +- nebius/iam/v1/profile_service.proto | 8 +- .../iam/v1/session_management_service.proto | 3 +- nebius/iam/v1/tenant_user_account.proto | 11 +- nebius/iam/v2/access_key.proto | 2 +- nebius/iam/v2/access_key_service.proto | 2 +- nebius/iam/v2/tenant.proto | 3 +- .../v1/agentmanager/version_service.proto | 10 +- nebius/maintenance/v1alpha1/maintenance.proto | 2 +- .../v1alpha1/maintenance_service.proto | 12 +- nebius/mk8s/v1/cluster.proto | 28 +++-- nebius/mk8s/v1/cluster_service.proto | 3 +- nebius/mk8s/v1/instance_template.proto | 16 ++- nebius/mk8s/v1/node_group.proto | 62 +++++++--- nebius/mk8s/v1alpha1/cluster.proto | 29 +++-- nebius/mk8s/v1alpha1/cluster_service.proto | 10 +- nebius/mk8s/v1alpha1/instance_template.proto | 21 ++-- nebius/mk8s/v1alpha1/node_group.proto | 38 ++++-- nebius/mk8s/v1alpha1/node_group_service.proto | 7 +- nebius/mk8s/v1alpha1/progress_data.proto | 5 +- nebius/msp/mlflow/v1alpha1/cluster.proto | 10 +- .../msp/mlflow/v1alpha1/cluster_service.proto | 20 ++-- .../postgresql/v1alpha1/backup_service.proto | 18 ++- nebius/msp/postgresql/v1alpha1/cluster.proto | 57 +++++---- .../postgresql/v1alpha1/cluster_service.proto | 30 +++-- .../v1alpha1/config/postgresql.proto | 70 +++++++++-- nebius/msp/serverless/v1alpha1/endpoint.proto | 20 +++- nebius/msp/serverless/v1alpha1/job.proto | 10 +- nebius/msp/v1alpha1/common.proto | 4 +- nebius/mysterybox/v1/payload.proto | 21 +++- nebius/mysterybox/v1/payload_service.proto | 4 +- nebius/mysterybox/v1/secret.proto | 7 +- nebius/mysterybox/v1/secret_service.proto | 17 +-- nebius/mysterybox/v1/secret_version.proto | 6 +- .../v1/secret_version_service.proto | 15 +-- nebius/quotas/v1/quota_allowance.proto | 13 +- .../quotas/v1/quota_allowance_service.proto | 52 +++++++- nebius/storage/v1/bucket.proto | 7 +- nebius/storage/v1/bucket_service.proto | 4 +- nebius/storage/v1/lifecycle.proto | 70 ++++++++--- nebius/storage/v1alpha1/transfer.proto | 63 +++++++--- nebius/vpc/v1/allocation.proto | 8 +- nebius/vpc/v1/allocation_service.proto | 42 +++---- nebius/vpc/v1/network_service.proto | 64 +++++----- nebius/vpc/v1/pool.proto | 51 ++++---- nebius/vpc/v1/pool_service.proto | 42 +++---- nebius/vpc/v1/route.proto | 21 ++-- nebius/vpc/v1/route_service.proto | 42 +++---- nebius/vpc/v1/route_table.proto | 7 +- nebius/vpc/v1/route_table_service.proto | 42 +++---- nebius/vpc/v1/subnet.proto | 41 ++++--- nebius/vpc/v1/subnet_service.proto | 42 +++---- nebius/vpc/v1/target_group.proto | 2 +- nebius/vpc/v1/target_group_service.proto | 20 ++-- nebius/vpc/v1alpha1/allocation.proto | 8 +- nebius/vpc/v1alpha1/allocation_service.proto | 42 +++---- nebius/vpc/v1alpha1/network_interface.proto | 21 ++-- nebius/vpc/v1alpha1/pool.proto | 47 ++++---- nebius/vpc/v1alpha1/subnet.proto | 40 ++++--- 104 files changed, 1195 insertions(+), 682 deletions(-) create mode 100644 nebius/audit/v2/audit_event_export.proto diff --git a/nebius/applications/v1alpha1/k8s_release.proto b/nebius/applications/v1alpha1/k8s_release.proto index b418cf5..fb7db86 100644 --- a/nebius/applications/v1alpha1/k8s_release.proto +++ b/nebius/applications/v1alpha1/k8s_release.proto @@ -22,17 +22,35 @@ message K8sRelease { } message K8sReleaseSpec { - string cluster_id = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; - - string product_slug = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; - - string namespace = 3 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; - - string application_name = 4 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; - - string values = 5 [(field_behavior) = INPUT_ONLY, (sensitive) = true]; - - map set = 6 [(field_behavior) = INPUT_ONLY, (sensitive) = true]; + string cluster_id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; + + string product_slug = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; + + string namespace = 3 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; + + string application_name = 4 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; + + string values = 5 [ + (field_behavior) = INPUT_ONLY, + (sensitive) = true + ]; + + map set = 6 [ + (field_behavior) = INPUT_ONLY, + (sensitive) = true + ]; } message K8sReleaseStatus { diff --git a/nebius/audit/v2/audit_event_export.proto b/nebius/audit/v2/audit_event_export.proto new file mode 100644 index 0000000..b176623 --- /dev/null +++ b/nebius/audit/v2/audit_event_export.proto @@ -0,0 +1,113 @@ +syntax = "proto3"; + +package nebius.audit.v2; + +import "buf/validate/validate.proto"; +import "google/protobuf/timestamp.proto"; +import "nebius/annotations.proto"; +import "nebius/audit/v2/audit_event_service.proto"; +import "nebius/common/v1/metadata.proto"; + +option go_package = "github.com/nebius/gosdk/proto/nebius/audit/v2"; +option java_multiple_files = true; +option java_outer_classname = "AuditEventExportProto"; +option java_package = "ai.nebius.pub.audit.v2"; + +// A resource representing information about previously created exports of audit events. +// Each record stores data about which filter was used and where the audit events were exported. +message AuditEventExport { + common.v1.ResourceMetadata metadata = 1; + + AuditEventExportSpec spec = 2; + + AuditEventExportStatus status = 3; +} + +message AuditEventExportSpec { + // Filter based on which audit logs must be exported. + AuditEventExportParams params = 1 [(buf.validate.field).required = true]; + + oneof export_destination { + option (buf.validate.oneof).required = true; + + // An object storage bucket that will be used as the destination for audit logs. + // You must have `storage.upload` permission for successful execution. + NebiusObjectStorageDestination nebius_object_storage = 2; + } +} + +message NebiusObjectStorageDestination { + // Prefix for export objects. + // Default value is `auditlogs`. + string object_prefix = 1; + + // The bucket into which events will be exported. + oneof bucket { + option (buf.validate.oneof).required = true; + + BucketById bucket_by_id = 2; + } +} + +message BucketById { + // The id of the bucket in the tenant where the logs will be exported. + string id = 1 [(buf.validate.field).required = true]; +} + +message AuditEventExportParams { + // Returns results with a timestamp greater than or equal to this value. + google.protobuf.Timestamp from = 1 [(buf.validate.field).required = true]; + + // Returns results with a timestamp lower than this value. + google.protobuf.Timestamp to = 2 [(buf.validate.field).required = true]; + + // Example: + // service.name = 'iam' AND resource.hierarchy.id:'container-e0t' AND regex(resource.metadata.name, '^.*test.*$') + // + // Supported filters: + // "=" - equals + // "!=" - not equals + // ":" - contains + // regex - regular expression + // + // Fields that can be used for filtering: + // action + // authentication.static_key_credential.id + // authentication.subject.service_account_id + // authentication.subject.tenant_user_id + // authentication.token_credential.masked_token + // project_region.name + // resource.hierarchy.id + // resource.hierarchy.name + // resource.metadata.id + // resource.metadata.name + // resource.metadata.type + // service.name + // type + // status + string filter = 3 [(sensitive) = true]; + + // Type of audit event to filter by. + EventType event_type = 4 [(buf.validate.field).required = true]; +} + +message AuditEventExportStatus { + // Current state of audit logs export. + AuditEventExportState state = 1; +} + +enum AuditEventExportState { + AUDIT_EVENT_EXPORT_STATE_UNSPECIFIED = 0; + + // Export created and running. + AUDIT_EVENT_EXPORT_STATE_RUNNING = 1; + + // Export has been cancelled. + AUDIT_EVENT_EXPORT_STATE_CANCELED = 2; + + // Export successfully completed. + AUDIT_EVENT_EXPORT_STATE_DONE = 3; + + // Export failed. + AUDIT_EVENT_EXPORT_STATE_FAILED = 4; +} diff --git a/nebius/audit/v2/audit_event_service.proto b/nebius/audit/v2/audit_event_service.proto index 16e681f..34da1bd 100644 --- a/nebius/audit/v2/audit_event_service.proto +++ b/nebius/audit/v2/audit_event_service.proto @@ -22,7 +22,12 @@ message ListAuditEventRequest { // A tenant id must be provided string parent_id = 1 [(buf.validate.field).required = true]; - int64 page_size = 2 [(buf.validate.field) = { int64: { lte: 500, gte: 0 } }]; + int64 page_size = 2 [(buf.validate.field) = { + int64: { + lte: 500 + gte: 0 + } + }]; google.protobuf.Timestamp start = 3 [(buf.validate.field).required = true]; diff --git a/nebius/common/error/v1alpha1/common_errors.proto b/nebius/common/error/v1alpha1/common_errors.proto index f2e2b2b..20efd05 100644 --- a/nebius/common/error/v1alpha1/common_errors.proto +++ b/nebius/common/error/v1alpha1/common_errors.proto @@ -4,12 +4,12 @@ package nebius.common.error.v1alpha1; import "nebius/annotations.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/common/error/v1alpha1"; option deprecated = true; -option (file_deprecation_details) = { description: "migrate to common/v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/common/error/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "CommonErrorsProto"; option java_package = "ai.nebius.pub.common.error.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to common/v1"}; // The request is invalid. message BadRequest { diff --git a/nebius/common/error/v1alpha1/error.proto b/nebius/common/error/v1alpha1/error.proto index 8b7bef0..a0a00d7 100644 --- a/nebius/common/error/v1alpha1/error.proto +++ b/nebius/common/error/v1alpha1/error.proto @@ -5,16 +5,16 @@ package nebius.common.error.v1alpha1; import "nebius/annotations.proto"; import "nebius/common/error/v1alpha1/common_errors.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/common/error/v1alpha1"; option deprecated = true; -option (file_deprecation_details) = { description: "migrate to common/v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/common/error/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "ErrorProto"; option java_package = "ai.nebius.pub.common.error.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to common/v1"}; message ServiceError { option deprecated = true; - option (message_deprecation_details) = { description: "migrate to common/v1" }; + option (message_deprecation_details) = {description: "migrate to common/v1"}; // ID of Service which the error originated in. E.g. "dns". string service = 1; diff --git a/nebius/common/v1/metadata.proto b/nebius/common/v1/metadata.proto index 0c9c2d1..6a48aca 100644 --- a/nebius/common/v1/metadata.proto +++ b/nebius/common/v1/metadata.proto @@ -26,7 +26,9 @@ message ResourceMetadata { // Positive and monotonically increases on each resource spec change (but *not* on each change of the // resource's container(s) or status). // Service allows zero value or current. - int64 resource_version = 4 [(buf.validate.field) = { int64: { gte: 0 } }]; + int64 resource_version = 4 [(buf.validate.field) = { + int64: {gte: 0} + }]; // Timestamp indicating when the resource was created. google.protobuf.Timestamp created_at = 5 [(field_behavior) = OUTPUT_ONLY]; diff --git a/nebius/common/v1/operation.proto b/nebius/common/v1/operation.proto index 6d03273..5c6644b 100644 --- a/nebius/common/v1/operation.proto +++ b/nebius/common/v1/operation.proto @@ -2,10 +2,10 @@ syntax = "proto3"; package nebius.common.v1; +import "buf/validate/validate.proto"; import "google/protobuf/any.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; -import "buf/validate/validate.proto"; import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/common/v1"; @@ -44,13 +44,13 @@ message Operation { // All the header names *must* be converted to lower case. // Validator is based on: // https://httpwg.org/specs/rfc9110.html#considerations.for.new.field.names - map request_headers = 11 [ - (buf.validate.field) = { - map: { - keys: { string: { pattern: "^[a-z][-a-z\\.]*$" } } + map request_headers = 11 [(buf.validate.field) = { + map: { + keys: { + string: {pattern: "^[a-z][-a-z\\.]*$"} } } - ]; + }]; // ID of the resource that this operation creates, updates, deletes or otherwise changes. // diff --git a/nebius/common/v1/resource_event.proto b/nebius/common/v1/resource_event.proto index 316670b..fe159c1 100644 --- a/nebius/common/v1/resource_event.proto +++ b/nebius/common/v1/resource_event.proto @@ -56,5 +56,7 @@ message RecurrentResourceEvent { ResourceEvent last_occurrence = 2 [(buf.validate.field).required = true]; // The number of times this event has occurred between `first_occurred_at` and `last_occurrence.occurred_at`. Must be > 0 - int64 occurrence_count = 3 [(buf.validate.field) = { int64: { gt: 0 } }]; + int64 occurrence_count = 3 [(buf.validate.field) = { + int64: {gt: 0} + }]; } diff --git a/nebius/common/v1alpha1/operation.proto b/nebius/common/v1alpha1/operation.proto index 1d20dda..92cb618 100644 --- a/nebius/common/v1alpha1/operation.proto +++ b/nebius/common/v1alpha1/operation.proto @@ -2,22 +2,22 @@ syntax = "proto3"; package nebius.common.v1alpha1; +import "buf/validate/validate.proto"; import "google/protobuf/any.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; -import "buf/validate/validate.proto"; import "nebius/annotations.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/common/v1alpha1"; option deprecated = true; -option (file_deprecation_details) = { description: "migrate to common/v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/common/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "OperationProto"; option java_package = "ai.nebius.pub.common.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to common/v1"}; message Operation { option deprecated = true; - option (message_deprecation_details) = { description: "migrate to common/v1" }; + option (message_deprecation_details) = {description: "migrate to common/v1"}; // ID of the operation. string id = 1; @@ -50,13 +50,13 @@ message Operation { // All the header names *must* be converted to lower case. // Validator is based on: // https://httpwg.org/specs/rfc9110.html#considerations.for.new.field.names - map request_headers = 11 [ - (buf.validate.field) = { - map: { - keys: { string: { pattern: "^[a-z][-a-z\\.]*$" } } + map request_headers = 11 [(buf.validate.field) = { + map: { + keys: { + string: {pattern: "^[a-z][-a-z\\.]*$"} } } - ]; + }]; // ID of the resource that this operation creates, updates, deletes or otherwise changes. // diff --git a/nebius/common/v1alpha1/operation_service.proto b/nebius/common/v1alpha1/operation_service.proto index 52c56bb..2cc00ac 100644 --- a/nebius/common/v1alpha1/operation_service.proto +++ b/nebius/common/v1alpha1/operation_service.proto @@ -3,20 +3,20 @@ syntax = "proto3"; package nebius.common.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1alpha1/operation.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1alpha1/operation.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/common/v1alpha1"; option deprecated = true; -option (file_deprecation_details) = { description: "migrate to common/v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/common/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "OperationServiceProto"; option java_package = "ai.nebius.pub.common.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to common/v1"}; // Service for reading operations. service OperationService { option deprecated = true; - option (service_deprecation_details) = { description: "migrate to common/v1" }; + option (service_deprecation_details) = {description: "migrate to common/v1"}; // Returns the latest state of the specified operation. rpc Get(GetOperationRequest) returns (Operation); @@ -27,7 +27,7 @@ service OperationService { message GetOperationRequest { option deprecated = true; - option (message_deprecation_details) = { description: "migrate to common/v1" }; + option (message_deprecation_details) = {description: "migrate to common/v1"}; // Operation ID. string id = 1 [(buf.validate.field).required = true]; @@ -35,7 +35,7 @@ message GetOperationRequest { message ListOperationsRequest { option deprecated = true; - option (message_deprecation_details) = { description: "migrate to common/v1" }; + option (message_deprecation_details) = {description: "migrate to common/v1"}; // ID of the Resource to list operations for. string resource_id = 1 [(buf.validate.field).required = true]; @@ -53,7 +53,7 @@ message ListOperationsRequest { message ListOperationsResponse { option deprecated = true; - option (message_deprecation_details) = { description: "migrate to common/v1" }; + option (message_deprecation_details) = {description: "migrate to common/v1"}; // List of operations on this result page. repeated Operation operations = 1; @@ -64,7 +64,7 @@ message ListOperationsResponse { message ListOperationsByParentRequest { option deprecated = true; - option (message_deprecation_details) = { description: "migrate to common/v1" }; + option (message_deprecation_details) = {description: "migrate to common/v1"}; // ID of the parent to list operations for resource type at. string parent_id = 1 [(buf.validate.field).required = true]; diff --git a/nebius/compute/v1/disk.proto b/nebius/compute/v1/disk.proto index 1735e0a..08e0067 100644 --- a/nebius/compute/v1/disk.proto +++ b/nebius/compute/v1/disk.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.compute.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1"; option java_multiple_files = true; @@ -56,7 +56,10 @@ message DiskSpec { // The type of disk defines the performance and reliability characteristics of the block device. // For details, see https://docs.nebius.com/compute/storage/types#disks-types - DiskType type = 6 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + DiskType type = 6 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Source for disk creation. // Boot disk must be created from an image https://docs.nebius.com/compute/storage/manage#boot diff --git a/nebius/compute/v1/disk_service.proto b/nebius/compute/v1/disk_service.proto index 55705f1..2949b0f 100644 --- a/nebius/compute/v1/disk_service.proto +++ b/nebius/compute/v1/disk_service.proto @@ -55,7 +55,7 @@ message ListDisksRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1/filesystem.proto b/nebius/compute/v1/filesystem.proto index f667ee1..eab8a40 100644 --- a/nebius/compute/v1/filesystem.proto +++ b/nebius/compute/v1/filesystem.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.compute.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1"; option java_multiple_files = true; @@ -55,7 +55,10 @@ message FilesystemSpec { // The Shared Filesystem type determines its limits and performance characteristics. // For details, see https://docs.nebius.com/compute/storage/types#filesystems-types - FilesystemType type = 6 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + FilesystemType type = 6 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } message FilesystemStatus { diff --git a/nebius/compute/v1/filesystem_service.proto b/nebius/compute/v1/filesystem_service.proto index f98db2a..8611bde 100644 --- a/nebius/compute/v1/filesystem_service.proto +++ b/nebius/compute/v1/filesystem_service.proto @@ -55,7 +55,7 @@ message ListFilesystemsRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1/gpu_cluster.proto b/nebius/compute/v1/gpu_cluster.proto index d317f02..3844048 100644 --- a/nebius/compute/v1/gpu_cluster.proto +++ b/nebius/compute/v1/gpu_cluster.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.compute.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1"; option java_multiple_files = true; @@ -22,7 +22,10 @@ message GpuCluster { message GpuClusterSpec { // The identifier of the physical InfiniBand fabric to connect GPU instances to. // For details, see https://docs.nebius.com/compute/clusters/gpu#fabrics - string infiniband_fabric = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string infiniband_fabric = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } message GpuClusterStatus { diff --git a/nebius/compute/v1/gpu_cluster_service.proto b/nebius/compute/v1/gpu_cluster_service.proto index 652a3e6..8269cb7 100644 --- a/nebius/compute/v1/gpu_cluster_service.proto +++ b/nebius/compute/v1/gpu_cluster_service.proto @@ -54,7 +54,7 @@ message ListGpuClustersRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1/image.proto b/nebius/compute/v1/image.proto index 139a7ad..8507c7e 100644 --- a/nebius/compute/v1/image.proto +++ b/nebius/compute/v1/image.proto @@ -3,9 +3,9 @@ syntax = "proto3"; package nebius.compute.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; -import "nebius/annotations.proto"; import "google/protobuf/timestamp.proto"; +import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1"; option java_multiple_files = true; @@ -32,7 +32,10 @@ message ImageSpec { optional string description = 1 [ (field_behavior) = IMMUTABLE, deprecated = true, - (field_deprecation_details) = { effective_at: "2026-01-01", description: "The field is empty" } + (field_deprecation_details) = { + effective_at: "2026-01-01" + description: "The field is empty" + } ]; string image_family = 2 [(field_behavior) = IMMUTABLE]; diff --git a/nebius/compute/v1/image_service.proto b/nebius/compute/v1/image_service.proto index 1e9d582..6fe2508 100644 --- a/nebius/compute/v1/image_service.proto +++ b/nebius/compute/v1/image_service.proto @@ -64,7 +64,7 @@ message ListImagesRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1/instance.proto b/nebius/compute/v1/instance.proto index a3bf944..ad4417d 100644 --- a/nebius/compute/v1/instance.proto +++ b/nebius/compute/v1/instance.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.compute.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/compute/v1/network_interface.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1"; @@ -36,7 +36,10 @@ message InstanceSpec { InstanceGpuClusterSpec gpu_cluster = 3 [(field_behavior) = IMMUTABLE]; // List of network interfaces attached to the instance. - repeated NetworkInterfaceSpec network_interfaces = 4 [(buf.validate.field) = { repeated: { max_items: 8 }, required: true }]; + repeated NetworkInterfaceSpec network_interfaces = 4 [(buf.validate.field) = { + repeated: {max_items: 8} + required: true + }]; // Specified boot disk attached to the instance. AttachedDiskSpec boot_disk = 5 [(field_behavior) = IMMUTABLE]; @@ -49,7 +52,12 @@ message InstanceSpec { // Data in cloud-init format for customizing instance initialization. // For details, see https://docs.nebius.com/compute/virtual-machines/manage#user-data - string cloud_init_user_data = 8 [(sensitive) = true, (buf.validate.field) = { string: { max_len: 32768 } }]; + string cloud_init_user_data = 8 [ + (sensitive) = true, + (buf.validate.field) = { + string: {max_len: 32768} + } + ]; // Indicates whether the instance should be stopped. bool stopped = 13; @@ -66,17 +74,15 @@ message InstanceSpec { // Instance's hostname. Used to generate default DNS record in format `..compute.internal.` // or `..compute.internal.` if hostname is not specified. - string hostname = 20 [ - (buf.validate.field) = { - cel: [ - { - id: "hostname.valid", - message: "value must be a valid hostname", - expression: "this == '' || this.matches('^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$')" - } - ] - } - ]; + string hostname = 20 [(buf.validate.field) = { + cel: [ + { + id: "hostname.valid" + message: "value must be a valid hostname" + expression: "this == '' || this.matches('^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$')" + } + ] + }]; ReservationPolicy reservation_policy = 23; } @@ -90,15 +96,24 @@ message PreemptibleSpec { // Specifies what happens when the VM is preempted. The only supported value is STOP: // Compute stops the VM without deleting or restarting it. - PreemptionPolicy on_preemption = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + PreemptionPolicy on_preemption = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // The value can range from 1 to 5, where 5 indicates the highest priority. // Affects the order in which Compute tries to preempt VMs, but does not guarantee the exact order. - int32 priority = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + int32 priority = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } message ResourcesSpec { - string platform = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string platform = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; oneof size { option (buf.validate.oneof).required = true; @@ -133,7 +148,9 @@ message AttachedDiskSpec { } // Specifies the user-defined identifier, allowing to use '/dev/disk/by-id/virtio-{device_id}' as a device path in mount command. - string device_id = 3 [(buf.validate.field) = { string: { max_len: 20 } }]; + string device_id = 3 [(buf.validate.field) = { + string: {max_len: 20} + }]; } message ExistingDisk { @@ -156,7 +173,10 @@ message AttachedFilesystemSpec { AttachMode attach_mode = 1 [(buf.validate.field).required = true]; // Specifies the user-defined identifier, allowing to use it as a device in mount command. - string mount_tag = 2 [(buf.validate.field) = { string: { max_len: 37 }, required: true }]; + string mount_tag = 2 [(buf.validate.field) = { + string: {max_len: 37} + required: true + }]; oneof type { option (buf.validate.oneof).required = true; diff --git a/nebius/compute/v1/network_interface.proto b/nebius/compute/v1/network_interface.proto index 6985072..ad4d121 100644 --- a/nebius/compute/v1/network_interface.proto +++ b/nebius/compute/v1/network_interface.proto @@ -13,7 +13,10 @@ option java_package = "ai.nebius.pub.compute.v1"; // Describes the specification of a network interface. message NetworkInterfaceSpec { // Subnet ID - string subnet_id = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string subnet_id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Interface name // Value of this field configures the name of the network interface inside VM's OS. @@ -21,10 +24,10 @@ message NetworkInterfaceSpec { string name = 2 [ (buf.validate.field) = { string: { - min_len: 1, - max_len: 60, + min_len: 1 + max_len: 60 pattern: "^[0-9a-z][0-9a-z-]*$" - }, + } required: true }, (field_behavior) = IMMUTABLE diff --git a/nebius/compute/v1/node_service.proto b/nebius/compute/v1/node_service.proto index ac74268..a28c884 100644 --- a/nebius/compute/v1/node_service.proto +++ b/nebius/compute/v1/node_service.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package nebius.compute.v1; -import "google/protobuf/timestamp.proto"; import "buf/validate/validate.proto"; +import "google/protobuf/timestamp.proto"; import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1"; @@ -47,5 +47,4 @@ message NodeSetUnhealthyRequest { bool dry_run = 3; } -message NodeSetUnhealthyResponse { -} +message NodeSetUnhealthyResponse {} diff --git a/nebius/compute/v1/platform.proto b/nebius/compute/v1/platform.proto index 294fed1..c567be4 100644 --- a/nebius/compute/v1/platform.proto +++ b/nebius/compute/v1/platform.proto @@ -31,7 +31,10 @@ message PlatformSpec { int32 gpu_memory_gibibytes = 11 [ deprecated = true, - (field_deprecation_details) = { effective_at: "2026-02-10", description: "Use field 'gpu_memory_gigabytes' instead" } + (field_deprecation_details) = { + effective_at: "2026-02-10" + description: "Use field 'gpu_memory_gigabytes' instead" + } ]; int32 gpu_memory_gigabytes = 12; @@ -54,7 +57,10 @@ message PresetResources { int32 gpu_memory_gibibytes = 6 [ deprecated = true, - (field_deprecation_details) = { effective_at: "2026-01-10", description: "Use field 'platform.spec.gpu_memory_gibibytes' instead" } + (field_deprecation_details) = { + effective_at: "2026-01-10" + description: "Use field 'platform.spec.gpu_memory_gibibytes' instead" + } ]; } diff --git a/nebius/compute/v1alpha1/disk.proto b/nebius/compute/v1alpha1/disk.proto index 003cb3b..d90e3dc 100644 --- a/nebius/compute/v1alpha1/disk.proto +++ b/nebius/compute/v1alpha1/disk.proto @@ -3,13 +3,12 @@ syntax = "proto3"; package nebius.compute.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; - -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; +import "nebius/common/v1/metadata.proto"; // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "DiskProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -52,7 +51,10 @@ message DiskSpec { int64 block_size_bytes = 5 [(field_behavior) = IMMUTABLE]; - DiskType type = 6 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + DiskType type = 6 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; oneof source { string source_image_id = 8 [(field_behavior) = IMMUTABLE]; diff --git a/nebius/compute/v1alpha1/disk_service.proto b/nebius/compute/v1alpha1/disk_service.proto index 3cdc97f..d62b310 100644 --- a/nebius/compute/v1alpha1/disk_service.proto +++ b/nebius/compute/v1alpha1/disk_service.proto @@ -8,10 +8,9 @@ import "nebius/common/v1alpha1/operation.proto"; import "nebius/common/v1alpha1/operation_service.proto"; import "nebius/compute/v1alpha1/disk.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; - // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "DiskServiceProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -50,7 +49,7 @@ message ListDisksRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1alpha1/filesystem.proto b/nebius/compute/v1alpha1/filesystem.proto index b2804ad..944835a 100644 --- a/nebius/compute/v1alpha1/filesystem.proto +++ b/nebius/compute/v1alpha1/filesystem.proto @@ -3,13 +3,12 @@ syntax = "proto3"; package nebius.compute.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; - -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; +import "nebius/common/v1/metadata.proto"; // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "FilesystemProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -50,7 +49,10 @@ message FilesystemSpec { int64 block_size_bytes = 5 [(field_behavior) = IMMUTABLE]; - FilesystemType type = 6 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + FilesystemType type = 6 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } message FilesystemStatus { diff --git a/nebius/compute/v1alpha1/filesystem_service.proto b/nebius/compute/v1alpha1/filesystem_service.proto index 9e75d0d..4864807 100644 --- a/nebius/compute/v1alpha1/filesystem_service.proto +++ b/nebius/compute/v1alpha1/filesystem_service.proto @@ -8,10 +8,9 @@ import "nebius/common/v1alpha1/operation.proto"; import "nebius/common/v1alpha1/operation_service.proto"; import "nebius/compute/v1alpha1/filesystem.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; - // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "FilesystemServiceProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -50,7 +49,7 @@ message ListFilesystemsRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1alpha1/gpu_cluster.proto b/nebius/compute/v1alpha1/gpu_cluster.proto index b3f1123..e92efe7 100644 --- a/nebius/compute/v1alpha1/gpu_cluster.proto +++ b/nebius/compute/v1alpha1/gpu_cluster.proto @@ -3,13 +3,12 @@ syntax = "proto3"; package nebius.compute.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; - -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; +import "nebius/common/v1/metadata.proto"; // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "GpuClusterProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -23,7 +22,10 @@ message GpuCluster { } message GpuClusterSpec { - string infiniband_fabric = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string infiniband_fabric = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } message GpuClusterStatus { diff --git a/nebius/compute/v1alpha1/gpu_cluster_service.proto b/nebius/compute/v1alpha1/gpu_cluster_service.proto index 2b3522e..6861825 100644 --- a/nebius/compute/v1alpha1/gpu_cluster_service.proto +++ b/nebius/compute/v1alpha1/gpu_cluster_service.proto @@ -8,10 +8,9 @@ import "nebius/common/v1alpha1/operation.proto"; import "nebius/common/v1alpha1/operation_service.proto"; import "nebius/compute/v1alpha1/gpu_cluster.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; - // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "GpuClusterServiceProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -50,7 +49,7 @@ message ListGpuClustersRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1alpha1/image.proto b/nebius/compute/v1alpha1/image.proto index b230833..446796f 100644 --- a/nebius/compute/v1alpha1/image.proto +++ b/nebius/compute/v1alpha1/image.proto @@ -2,13 +2,12 @@ syntax = "proto3"; package nebius.compute.v1alpha1; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; - -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; +import "nebius/common/v1/metadata.proto"; // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "ImageProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; diff --git a/nebius/compute/v1alpha1/image_service.proto b/nebius/compute/v1alpha1/image_service.proto index 7a3059b..3c88e9f 100644 --- a/nebius/compute/v1alpha1/image_service.proto +++ b/nebius/compute/v1alpha1/image_service.proto @@ -7,10 +7,9 @@ import "nebius/common/v1/metadata.proto"; import "nebius/common/v1alpha1/operation_service.proto"; import "nebius/compute/v1alpha1/image.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; - // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "ImageServiceProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -51,7 +50,7 @@ message ListImagesRequest { string filter = 4 [ deprecated = true, (field_deprecation_details) = { - effective_at: "2025-06-16", + effective_at: "2025-06-16" description: "it is not implemented, filtering could be done on client side" } ]; diff --git a/nebius/compute/v1alpha1/instance.proto b/nebius/compute/v1alpha1/instance.proto index 78cb5a9..3a37686 100644 --- a/nebius/compute/v1alpha1/instance.proto +++ b/nebius/compute/v1alpha1/instance.proto @@ -3,14 +3,13 @@ syntax = "proto3"; package nebius.compute.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/vpc/v1alpha1/network_interface.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; - // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "InstanceProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; @@ -28,11 +27,17 @@ message InstanceSpec { string service_account_id = 1 [(field_behavior) = IMMUTABLE]; - ResourcesSpec resources = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + ResourcesSpec resources = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; InstanceGpuClusterSpec gpu_cluster = 3 [(field_behavior) = IMMUTABLE]; - repeated nebius.vpc.v1alpha1.NetworkInterfaceSpec network_interfaces = 4 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + repeated nebius.vpc.v1alpha1.NetworkInterfaceSpec network_interfaces = 4 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; AttachedDiskSpec boot_disk = 5 [(field_behavior) = IMMUTABLE]; @@ -83,7 +88,9 @@ message AttachedDiskSpec { } // Specifies the user-defined identifier, allowing to use '/dev/disk/by-id/virtio-{device_name}' as a device path in mount command. - string device_name = 3 [(buf.validate.field) = { string: { max_len: 20 } }]; + string device_name = 3 [(buf.validate.field) = { + string: {max_len: 20} + }]; } message ExistingDisk { diff --git a/nebius/compute/v1alpha1/instance_service.proto b/nebius/compute/v1alpha1/instance_service.proto index 0f02f08..568e668 100644 --- a/nebius/compute/v1alpha1/instance_service.proto +++ b/nebius/compute/v1alpha1/instance_service.proto @@ -8,10 +8,9 @@ import "nebius/common/v1alpha1/operation.proto"; import "nebius/common/v1alpha1/operation_service.proto"; import "nebius/compute/v1alpha1/instance.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; - // Migrate to compute/v1. option deprecated = true; +option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "InstanceServiceProto"; option java_package = "ai.nebius.pub.compute.v1alpha1"; diff --git a/nebius/dns/v1/record.proto b/nebius/dns/v1/record.proto index 85d2045..7ec1b04 100644 --- a/nebius/dns/v1/record.proto +++ b/nebius/dns/v1/record.proto @@ -36,18 +36,21 @@ message RecordSpec { (buf.validate.field) = { cel: [ { - id: "relative_name_format", - message: "relative_name must be '@' for zone apex, or a valid relative domain name (e.g. 'a.x-y.zzz')", + id: "relative_name_format" + message: "relative_name must be '@' for zone apex, or a valid relative domain name (e.g. 'a.x-y.zzz')" expression: "size(this) < 253 && this.matches('^(?:@|(?:[*]|[a-z0-9_](?:[a-z0-9-_]{0,60}[a-z0-9_])*)(?:[.][a-z0-9_](?:[a-z0-9-_]{0,60}[a-z0-9_])*)*)$')" } - ], + ] required: true }, (field_behavior) = IMMUTABLE ]; // Record type - RecordType type = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + RecordType type = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Record TTL. If absent or negative, will be assumed to be the default value (`600`) int64 ttl = 3; @@ -124,7 +127,9 @@ message GetRecordRequest { // Optional: expected record version (`metadata.resource_version`) // - If specified, the requested version will be returned if possible (if the version has changed, you will get a `FAILED_PRECONDITION` error) // - If not specified or set to `0`, the latest version will be returned - int64 resource_version = 2 [(buf.validate.field) = { int64: { gte: 0 } }]; + int64 resource_version = 2 [(buf.validate.field) = { + int64: {gte: 0} + }]; } // Request to list DNS records in the specified parent DNS zone diff --git a/nebius/dns/v1/zone.proto b/nebius/dns/v1/zone.proto index e80caa5..7464a4c 100644 --- a/nebius/dns/v1/zone.proto +++ b/nebius/dns/v1/zone.proto @@ -33,18 +33,16 @@ message Zone { // DNS Zone specification message ZoneSpec { // Fully qualified domain name of this zone, including `.` at the end - string domain_name = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "domain_name_format", - message: "domain_name must be a fully-qualified domain name with '.' at the end, e.g. 'x.y.z.'", - expression: "size(this) < 253 && this.matches('^[a-z0-9][-a-z0-9.]*[.]$')" - } - ], - required: true - } - ]; + string domain_name = 1 [(buf.validate.field) = { + cel: [ + { + id: "domain_name_format" + message: "domain_name must be a fully-qualified domain name with '.' at the end, e.g. 'x.y.z.'" + expression: "size(this) < 253 && this.matches('^[a-z0-9][-a-z0-9.]*[.]$')" + } + ] + required: true + }]; // Scope for this zone // The scope is chosen at zone creation time and cannot be changed, but scope's attributes can sometimes be changed @@ -63,7 +61,10 @@ message ZoneSpec { message VpcZoneScope { // ID of the virtual network that this zone's records will be visible from // This value cannot be changed after creating the zone - string primary_network_id = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string primary_network_id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } // Custom SOA (Start of Authority) record specification for the zone @@ -91,7 +92,9 @@ message GetZoneRequest { // Optional: expected zone version (`metadata.resource_version`) // - If specified, the requested version will be returned if possible (if the version has changed, you will get a `FAILED_PRECONDITION` error) // - If not specified or set to `0`, the latest zone version will be returned - int64 resource_version = 2 [(buf.validate.field) = { int64: { gte: 0 } }]; + int64 resource_version = 2 [(buf.validate.field) = { + int64: {gte: 0} + }]; } // Request to list DNS zones in the specified parent IAM container diff --git a/nebius/iam/v1/access.proto b/nebius/iam/v1/access.proto index 9e18dfd..5284ed6 100644 --- a/nebius/iam/v1/access.proto +++ b/nebius/iam/v1/access.proto @@ -24,6 +24,5 @@ message Account { string id = 1; } - message AnonymousAccount { - } + message AnonymousAccount {} } diff --git a/nebius/iam/v1/access_key.proto b/nebius/iam/v1/access_key.proto index 80044b3..8ed95dd 100644 --- a/nebius/iam/v1/access_key.proto +++ b/nebius/iam/v1/access_key.proto @@ -4,8 +4,8 @@ package nebius.iam.v1; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/iam/v1/access.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; diff --git a/nebius/iam/v1/access_key_service.proto b/nebius/iam/v1/access_key_service.proto index eca59dd..af0db83 100644 --- a/nebius/iam/v1/access_key_service.proto +++ b/nebius/iam/v1/access_key_service.proto @@ -5,8 +5,8 @@ package nebius.iam.v1; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1/operation.proto"; -import "nebius/iam/v1/access_key.proto"; import "nebius/iam/v1/access.proto"; +import "nebius/iam/v1/access_key.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; option java_multiple_files = true; @@ -19,8 +19,8 @@ service AccessKeyService { option deprecated = true; option (service_deprecation_details) = { - effective_at: "2026-09-01", - description: "Access keys v1 API is deprecated. Please use the v2 API instead. All existing keys remain accessible through the v2 API.", + effective_at: "2026-09-01" + description: "Access keys v1 API is deprecated. Please use the v2 API instead. All existing keys remain accessible through the v2 API." description_cli: "Please use the 'iam v2 access-key' command instead. All existing keys remain accessible through the new command." }; diff --git a/nebius/iam/v1/access_permit.proto b/nebius/iam/v1/access_permit.proto index 1aff781..2a5555b 100644 --- a/nebius/iam/v1/access_permit.proto +++ b/nebius/iam/v1/access_permit.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package nebius.iam.v1; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; option java_multiple_files = true; @@ -28,5 +28,4 @@ message AccessPermitSpec { string role = 2 [(field_behavior) = IMMUTABLE]; } -message AccessPermitStatus { -} +message AccessPermitStatus {} diff --git a/nebius/iam/v1/auth_public_key.proto b/nebius/iam/v1/auth_public_key.proto index 93ec1b9..26615e7 100644 --- a/nebius/iam/v1/auth_public_key.proto +++ b/nebius/iam/v1/auth_public_key.proto @@ -4,8 +4,8 @@ package nebius.iam.v1; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/iam/v1/access.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; diff --git a/nebius/iam/v1/auth_public_key_service.proto b/nebius/iam/v1/auth_public_key_service.proto index dabfd5d..b6c6a0f 100644 --- a/nebius/iam/v1/auth_public_key_service.proto +++ b/nebius/iam/v1/auth_public_key_service.proto @@ -5,8 +5,8 @@ package nebius.iam.v1; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1/operation.proto"; -import "nebius/iam/v1/auth_public_key.proto"; import "nebius/iam/v1/access.proto"; +import "nebius/iam/v1/auth_public_key.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; option java_multiple_files = true; diff --git a/nebius/iam/v1/federated_credentials.proto b/nebius/iam/v1/federated_credentials.proto index b1ab586..475f26b 100644 --- a/nebius/iam/v1/federated_credentials.proto +++ b/nebius/iam/v1/federated_credentials.proto @@ -54,5 +54,4 @@ message OidcCredentialsProvider { string jwk_set_json = 2; } -message FederatedCredentialsStatus { -} +message FederatedCredentialsStatus {} diff --git a/nebius/iam/v1/federation.proto b/nebius/iam/v1/federation.proto index 1f8515d..647b06f 100644 --- a/nebius/iam/v1/federation.proto +++ b/nebius/iam/v1/federation.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.iam.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; option java_multiple_files = true; @@ -26,7 +26,7 @@ message FederationSpec { bool active = 4 [ deprecated = true, - (field_deprecation_details) = { description: "'active' field ignored. Use 'Activate/Deactivate' methods to manage federation state. A newly created federation is always active by default." } + (field_deprecation_details) = {description: "'active' field ignored. Use 'Activate/Deactivate' methods to manage federation state. A newly created federation is always active by default."} ]; oneof settings { diff --git a/nebius/iam/v1/federation_certificate.proto b/nebius/iam/v1/federation_certificate.proto index 5687889..7b11c3f 100644 --- a/nebius/iam/v1/federation_certificate.proto +++ b/nebius/iam/v1/federation_certificate.proto @@ -4,8 +4,8 @@ package nebius.iam.v1; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; option java_multiple_files = true; diff --git a/nebius/iam/v1/federation_service.proto b/nebius/iam/v1/federation_service.proto index ca6f54e..c1c8e9e 100644 --- a/nebius/iam/v1/federation_service.proto +++ b/nebius/iam/v1/federation_service.proto @@ -73,7 +73,7 @@ message UpdateFederationRequest { FederationStatus status = 3 [ deprecated = true, - (field_deprecation_details) = { description: "'status' is ignored for update requests." } + (field_deprecation_details) = {description: "'status' is ignored for update requests."} ]; } diff --git a/nebius/iam/v1/group.proto b/nebius/iam/v1/group.proto index 15a69b9..73698c8 100644 --- a/nebius/iam/v1/group.proto +++ b/nebius/iam/v1/group.proto @@ -19,8 +19,7 @@ message Group { GroupStatus status = 3 [(field_behavior) = OUTPUT_ONLY]; } -message GroupSpec { -} +message GroupSpec {} message GroupStatus { enum State { diff --git a/nebius/iam/v1/group_membership_service.proto b/nebius/iam/v1/group_membership_service.proto index 7399b86..596633c 100644 --- a/nebius/iam/v1/group_membership_service.proto +++ b/nebius/iam/v1/group_membership_service.proto @@ -6,8 +6,8 @@ import "buf/validate/validate.proto"; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1/operation.proto"; -import "nebius/iam/v1/group_membership.proto"; import "nebius/iam/v1/group.proto"; +import "nebius/iam/v1/group_membership.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; option java_multiple_files = true; diff --git a/nebius/iam/v1/profile_service.proto b/nebius/iam/v1/profile_service.proto index 66b603c..8530929 100644 --- a/nebius/iam/v1/profile_service.proto +++ b/nebius/iam/v1/profile_service.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.iam.v1; import "nebius/annotations.proto"; -import "nebius/iam/v1/tenant_user_account.proto"; import "nebius/iam/v1/service_account.proto"; +import "nebius/iam/v1/tenant_user_account.proto"; import "nebius/iam/v1/user_account.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; @@ -19,8 +19,7 @@ service ProfileService { rpc Get(GetProfileRequest) returns (GetProfileResponse); } -message GetProfileRequest { -} +message GetProfileRequest {} message GetProfileResponse { oneof profile { @@ -56,5 +55,4 @@ message ServiceAccountProfile { ServiceAccount info = 1; } -message AnonymousAccount { -} +message AnonymousAccount {} diff --git a/nebius/iam/v1/session_management_service.proto b/nebius/iam/v1/session_management_service.proto index d71df83..4c1eb50 100644 --- a/nebius/iam/v1/session_management_service.proto +++ b/nebius/iam/v1/session_management_service.proto @@ -25,5 +25,4 @@ message RevokeSessionRequest { } } -message RevokeSessionResponse { -} +message RevokeSessionResponse {} diff --git a/nebius/iam/v1/tenant_user_account.proto b/nebius/iam/v1/tenant_user_account.proto index 15ac442..62ad246 100644 --- a/nebius/iam/v1/tenant_user_account.proto +++ b/nebius/iam/v1/tenant_user_account.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.iam.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/iam/v1/user_account.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v1"; @@ -56,8 +56,8 @@ message UserAttributes { (buf.validate.field) = { cel: [ { - id: "string.email", - message: "value must be a valid email address", + id: "string.email" + message: "value must be a valid email address" expression: "this == '' || this.isEmail()" } ] @@ -67,7 +67,10 @@ message UserAttributes { optional bool email_verified = 7 [deprecated = true]; - optional string zoneinfo = 8 [(sensitive) = true, deprecated = true]; + optional string zoneinfo = 8 [ + (sensitive) = true, + deprecated = true + ]; optional string locale = 9 [(sensitive) = true]; diff --git a/nebius/iam/v2/access_key.proto b/nebius/iam/v2/access_key.proto index a0d8748..335e4ea 100644 --- a/nebius/iam/v2/access_key.proto +++ b/nebius/iam/v2/access_key.proto @@ -4,8 +4,8 @@ package nebius.iam.v2; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/iam/v1/access.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v2"; diff --git a/nebius/iam/v2/access_key_service.proto b/nebius/iam/v2/access_key_service.proto index 4795c64..311c2a0 100644 --- a/nebius/iam/v2/access_key_service.proto +++ b/nebius/iam/v2/access_key_service.proto @@ -5,8 +5,8 @@ package nebius.iam.v2; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1/operation.proto"; -import "nebius/iam/v2/access_key.proto"; import "nebius/iam/v1/access.proto"; +import "nebius/iam/v2/access_key.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/iam/v2"; option java_multiple_files = true; diff --git a/nebius/iam/v2/tenant.proto b/nebius/iam/v2/tenant.proto index fdfe23c..3595f3d 100644 --- a/nebius/iam/v2/tenant.proto +++ b/nebius/iam/v2/tenant.proto @@ -19,8 +19,7 @@ message Tenant { TenantStatus status = 3 [(field_behavior) = OUTPUT_ONLY]; } -message TenantSpec { -} +message TenantSpec {} message TenantStatus { enum TenantState { diff --git a/nebius/logging/v1/agentmanager/version_service.proto b/nebius/logging/v1/agentmanager/version_service.proto index 51da3d5..806816a 100644 --- a/nebius/logging/v1/agentmanager/version_service.proto +++ b/nebius/logging/v1/agentmanager/version_service.proto @@ -1,10 +1,10 @@ syntax = "proto3"; +package nebius.logging.agentmanager.v1; + import "google/protobuf/duration.proto"; import "nebius/annotations.proto"; -package nebius.logging.agentmanager.v1; - option go_package = "github.com/nebius/gosdk/proto/nebius/logging/v1/agentmanager"; option java_multiple_files = true; option java_outer_classname = "VersionServiceProto"; @@ -191,8 +191,7 @@ message GetVersionResponse { } // Parameters when no operation is required. -message NopActionParams { -} +message NopActionParams {} // Parameters for agent update action. message UpdateActionParams { @@ -204,5 +203,4 @@ message UpdateActionParams { } // Parameters for agent restart action. -message RestartActionParams { -} +message RestartActionParams {} diff --git a/nebius/maintenance/v1alpha1/maintenance.proto b/nebius/maintenance/v1alpha1/maintenance.proto index 7bda8ed..10f9597 100644 --- a/nebius/maintenance/v1alpha1/maintenance.proto +++ b/nebius/maintenance/v1alpha1/maintenance.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.maintenance.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "google/protobuf/timestamp.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/maintenance/v1alpha1"; option java_multiple_files = true; diff --git a/nebius/maintenance/v1alpha1/maintenance_service.proto b/nebius/maintenance/v1alpha1/maintenance_service.proto index cc4f9b6..07f4201 100644 --- a/nebius/maintenance/v1alpha1/maintenance_service.proto +++ b/nebius/maintenance/v1alpha1/maintenance_service.proto @@ -43,7 +43,9 @@ message GetMaintenanceRequest { // To get the maintenance ID use a [MaintenanceService.List] request. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "maintenance" ] } + (nid) = { + resource: ["maintenance"] + } ]; } @@ -51,8 +53,8 @@ message UpdateMaintenanceRequest { option (buf.validate.message) = { cel: [ { - id: "update_maintenance.metadata", - message: "'metadata' must have 'id'", + id: "update_maintenance.metadata" + message: "'metadata' must have 'id'" expression: "has(this.metadata.id)" } ] @@ -62,7 +64,9 @@ message UpdateMaintenanceRequest { // Must include ID of the maintenance operation to update. common.v1.ResourceMetadata metadata = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "maintenance" ] } + (nid) = { + resource: ["maintenance"] + } ]; // Updated specification for the maintenance operation. diff --git a/nebius/mk8s/v1/cluster.proto b/nebius/mk8s/v1/cluster.proto index 91c4d1b..2833f61 100644 --- a/nebius/mk8s/v1/cluster.proto +++ b/nebius/mk8s/v1/cluster.proto @@ -29,11 +29,16 @@ message ClusterSpec { message ControlPlaneSpec { // Desired Kubernetes version of the cluster. For now only acceptable format is // `.` like "1.31". Option for patch version update will be added later. - string version = 1 [(buf.validate.field) = { string: { pattern: "|^\\d\\.\\d\\d$" } }]; + string version = 1 [(buf.validate.field) = { + string: {pattern: "|^\\d\\.\\d\\d$"} + }]; // Nebius VPC Subnet ID where control plane instances will be located. // Also will be default NodeGroup subnet. - string subnet_id = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string subnet_id = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Specification of endpoints of cluster control plane. ControlPlaneEndpointsSpec endpoints = 3; @@ -42,7 +47,15 @@ message ControlPlaneSpec { // 3 by default. // Control plane with `etcd_cluster_size: 3` called "Highly Available" ("HA"), because it's Kubernetes API // will be available despite a failure of one control plane instance. - int64 etcd_cluster_size = 4 [(buf.validate.field) = { int64: { in: [ 0, 1, 3 ] } }]; + int64 etcd_cluster_size = 4 [(buf.validate.field) = { + int64: { + in: [ + 0, + 1, + 3 + ] + } + }]; } message ControlPlaneEndpointsSpec { @@ -50,8 +63,7 @@ message ControlPlaneEndpointsSpec { PublicEndpointSpec public_endpoint = 1 [(field_behavior) = MEANINGFUL_EMPTY_VALUE]; } -message PublicEndpointSpec { -} +message PublicEndpointSpec {} message KubeNetworkSpec { // CIDR blocks for Service ClusterIP allocation. @@ -63,11 +75,11 @@ message KubeNetworkSpec { // Empty value treated as ["/16"]. repeated string service_cidrs = 1 [ (buf.validate.field) = { - repeated: { max_items: 1 }, + repeated: {max_items: 1} cel: [ { - id: "string.valid_cidr", - message: "value must be a CIDR block or prefix length from \"/12\" to \"/28\"", + id: "string.valid_cidr" + message: "value must be a CIDR block or prefix length from \"/12\" to \"/28\"" expression: "this.all(x, x.matches('^(.*)/(1[2-9]|2[0-8])$'))" } ] diff --git a/nebius/mk8s/v1/cluster_service.proto b/nebius/mk8s/v1/cluster_service.proto index f5d3c5d..fa62177 100644 --- a/nebius/mk8s/v1/cluster_service.proto +++ b/nebius/mk8s/v1/cluster_service.proto @@ -80,8 +80,7 @@ message DeleteClusterRequest { string id = 1 [(buf.validate.field).required = true]; } -message ListClusterControlPlaneVersionsRequest { -} +message ListClusterControlPlaneVersionsRequest {} message ListClusterControlPlaneVersionsResponse { repeated ClusterControlPlaneVersion items = 1; diff --git a/nebius/mk8s/v1/instance_template.proto b/nebius/mk8s/v1/instance_template.proto index e5e7096..caace3a 100644 --- a/nebius/mk8s/v1/instance_template.proto +++ b/nebius/mk8s/v1/instance_template.proto @@ -26,13 +26,21 @@ message DiskSpec { oneof size { option (buf.validate.oneof).required = true; - int64 size_bytes = 1 [(buf.validate.field) = { int64: { gte: 68719476736 } }]; + int64 size_bytes = 1 [(buf.validate.field) = { + int64: {gte: 68719476736} + }]; - int64 size_kibibytes = 2 [(buf.validate.field) = { int64: { gte: 67108864 } }]; + int64 size_kibibytes = 2 [(buf.validate.field) = { + int64: {gte: 67108864} + }]; - int64 size_mebibytes = 3 [(buf.validate.field) = { int64: { gte: 65536 } }]; + int64 size_mebibytes = 3 [(buf.validate.field) = { + int64: {gte: 65536} + }]; - int64 size_gibibytes = 4 [(buf.validate.field) = { int64: { gte: 64 } }]; + int64 size_gibibytes = 4 [(buf.validate.field) = { + int64: {gte: 64} + }]; } int64 block_size_bytes = 5; diff --git a/nebius/mk8s/v1/node_group.proto b/nebius/mk8s/v1/node_group.proto index 112a4cb..e786e51 100644 --- a/nebius/mk8s/v1/node_group.proto +++ b/nebius/mk8s/v1/node_group.proto @@ -29,13 +29,20 @@ message NodeGroupSpec { // Version is desired Kubernetes version of the cluster. For now only acceptable format is // `.` like "1.31". Option for patch version update will be added later. // By default the cluster control plane . version will be used. - string version = 1 [(buf.validate.field) = { string: { pattern: "|^\\d\\.\\d\\d$" } }]; + string version = 1 [(buf.validate.field) = { + string: {pattern: "|^\\d\\.\\d\\d$"} + }]; oneof size { option (buf.validate.oneof).required = true; // Number of nodes in the group. Can be changed manually at any time. - int64 fixed_node_count = 2 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; + int64 fixed_node_count = 2 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; // Enables [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) // for that NodeGroup, and defines autoscaling parameters. @@ -62,7 +69,9 @@ message NodeTemplate { // That behaviour may change later. // So, for now you will need to manually set them to existing nodes, if that is needed. // Field change will NOT trigger NodeGroup roll out. - repeated NodeTaint taints = 2 [(buf.validate.field) = { repeated: { max_items: 100 } }]; + repeated NodeTaint taints = 2 [(buf.validate.field) = { + repeated: {max_items: 100} + }]; // Resources that will have Nebius Compute Instance where Node kubelet will run. ResourcesSpec resources = 3 [(buf.validate.field).required = true]; @@ -133,7 +142,9 @@ message NodeMetadataTemplate { // // System labels containing "kubernetes.io" and "k8s.io" will be ignored. // Field change will NOT trigger NodeGroup roll out. - map labels = 1 [(buf.validate.field) = { map: { max_pairs: 100 } }]; + map labels = 1 [(buf.validate.field) = { + map: {max_pairs: 100} + }]; } // GPU-related settings. @@ -166,8 +177,7 @@ message NetworkInterfaceTemplate { } // Describes a public IP address. -message PublicIPAddress { -} +message PublicIPAddress {} message AttachedFilesystemSpec { enum AttachMode { @@ -195,15 +205,25 @@ message ExistingFilesystem { } message NodeGroupAutoscalingSpec { - int64 min_node_count = 1 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; - - int64 max_node_count = 2 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; + int64 min_node_count = 1 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; + + int64 max_node_count = 2 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; option (buf.validate.message) = { cel: [ { - id: "autoscaling.protovalidate.message", - message: "min_node_count must be less or equal than max_node_count", + id: "autoscaling.protovalidate.message" + message: "min_node_count must be less or equal than max_node_count" expression: "this.min_node_count <= this.max_node_count" } ] @@ -258,16 +278,27 @@ message NodeGroupDeploymentStrategy { // Important consequence of that is if PodDisruptionBudget doesn't allow to evict a pod, // then NodeGroup update with node re-creation will hung on that pod eviction. // Note, that it is different from `kubectl drain --timeout` - google.protobuf.Duration drain_timeout = 3 [(buf.validate.field) = { duration: { gte: { } } }]; + google.protobuf.Duration drain_timeout = 3 [(buf.validate.field) = { + duration: { + gte: {} + } + }]; } message PercentOrCount { oneof value { option (buf.validate.oneof).required = true; - int64 percent = 1 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; + int64 percent = 1 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; - int64 count = 2 [(buf.validate.field) = { int64: { gte: 0 } }]; + int64 count = 2 [(buf.validate.field) = { + int64: {gte: 0} + }]; } } @@ -304,8 +335,7 @@ enum ConditionStatus { UNKNOWN = 3; } -message PreemptibleSpec { -} +message PreemptibleSpec {} message NodeGroupStatus { enum State { diff --git a/nebius/mk8s/v1alpha1/cluster.proto b/nebius/mk8s/v1alpha1/cluster.proto index 65485af..5d9856e 100644 --- a/nebius/mk8s/v1alpha1/cluster.proto +++ b/nebius/mk8s/v1alpha1/cluster.proto @@ -6,14 +6,13 @@ import "buf/validate/validate.proto"; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; - // Migrate to v1. option deprecated = true; -option (file_deprecation_details) = { description: "migrate to v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "ClusterProto"; option java_package = "ai.nebius.pub.mk8s.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to v1"}; message Cluster { common.v1.ResourceMetadata metadata = 1; @@ -36,7 +35,10 @@ message ControlPlaneSpec { string version = 1; // Subnet ID where control plane instances will be located. - string subnet_id = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string subnet_id = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; ControlPlaneEndpointsSpec endpoints = 3; @@ -44,7 +46,15 @@ message ControlPlaneSpec { // 3 by default. // Control plane with `etcd_cluster_size: 3` called "Highly Available" ("HA"), because it's Kubernetes API // will be available despite a failure of one control plane instance. - int64 etcd_cluster_size = 4 [(buf.validate.field) = { int64: { in: [ 0, 1, 3 ] } }]; + int64 etcd_cluster_size = 4 [(buf.validate.field) = { + int64: { + in: [ + 0, + 1, + 3 + ] + } + }]; } message ControlPlaneEndpointsSpec { @@ -52,8 +62,7 @@ message ControlPlaneEndpointsSpec { PublicEndpointSpec public_endpoint = 1 [(field_behavior) = MEANINGFUL_EMPTY_VALUE]; } -message PublicEndpointSpec { -} +message PublicEndpointSpec {} message KubeNetworkSpec { // CIDR blocks for Service ClusterIP allocation. @@ -65,11 +74,11 @@ message KubeNetworkSpec { // Empty value treated as ["/16"]. repeated string service_cidrs = 1 [ (buf.validate.field) = { - repeated: { max_items: 1 }, + repeated: {max_items: 1} cel: [ { - id: "string.valid_cidr", - message: "value must be a CIDR block or prefix length from \"/12\" to \"/28\"", + id: "string.valid_cidr" + message: "value must be a CIDR block or prefix length from \"/12\" to \"/28\"" expression: "this.all(x, x.matches('^(.*)/(1[2-9]|2[0-8])$'))" } ] diff --git a/nebius/mk8s/v1alpha1/cluster_service.proto b/nebius/mk8s/v1alpha1/cluster_service.proto index 783495a..3472c71 100644 --- a/nebius/mk8s/v1alpha1/cluster_service.proto +++ b/nebius/mk8s/v1alpha1/cluster_service.proto @@ -8,18 +8,17 @@ import "nebius/common/v1/metadata.proto"; import "nebius/common/v1alpha1/operation.proto"; import "nebius/mk8s/v1alpha1/cluster.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; - // Migrate to v1. option deprecated = true; -option (file_deprecation_details) = { description: "migrate to v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "ClusterServiceProto"; option java_package = "ai.nebius.pub.mk8s.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to v1"}; service ClusterService { option deprecated = true; - option (service_deprecation_details) = { description: "Cluster v1alpha1 API is deprecated, please migrate to v1." }; + option (service_deprecation_details) = {description: "Cluster v1alpha1 API is deprecated, please migrate to v1."}; option (api_service_name) = "mk8s"; rpc Get(GetClusterRequest) returns (Cluster); @@ -86,8 +85,7 @@ message DeleteClusterRequest { string id = 1 [(buf.validate.field).required = true]; } -message ListClusterControlPlaneVersionsRequest { -} +message ListClusterControlPlaneVersionsRequest {} message ListClusterControlPlaneVersionsResponse { repeated ClusterControlPlaneVersion items = 1; diff --git a/nebius/mk8s/v1alpha1/instance_template.proto b/nebius/mk8s/v1alpha1/instance_template.proto index 501bcf0..b47b36b 100644 --- a/nebius/mk8s/v1alpha1/instance_template.proto +++ b/nebius/mk8s/v1alpha1/instance_template.proto @@ -5,14 +5,13 @@ package nebius.mk8s.v1alpha1; import "buf/validate/validate.proto"; import "nebius/annotations.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; - // Migrate to v1. option deprecated = true; -option (file_deprecation_details) = { description: "migrate to v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "InstanceTemplateProto"; option java_package = "ai.nebius.pub.mk8s.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to v1"}; message DiskSpec { enum DiskType { @@ -31,13 +30,21 @@ message DiskSpec { oneof size { option (buf.validate.oneof).required = true; - int64 size_bytes = 1 [(buf.validate.field) = { int64: { gte: 68719476736 } }]; + int64 size_bytes = 1 [(buf.validate.field) = { + int64: {gte: 68719476736} + }]; - int64 size_kibibytes = 2 [(buf.validate.field) = { int64: { gte: 67108864 } }]; + int64 size_kibibytes = 2 [(buf.validate.field) = { + int64: {gte: 67108864} + }]; - int64 size_mebibytes = 3 [(buf.validate.field) = { int64: { gte: 65536 } }]; + int64 size_mebibytes = 3 [(buf.validate.field) = { + int64: {gte: 65536} + }]; - int64 size_gibibytes = 4 [(buf.validate.field) = { int64: { gte: 64 } }]; + int64 size_gibibytes = 4 [(buf.validate.field) = { + int64: {gte: 64} + }]; } int64 block_size_bytes = 5; diff --git a/nebius/mk8s/v1alpha1/node_group.proto b/nebius/mk8s/v1alpha1/node_group.proto index 9f7097f..d2f0591 100644 --- a/nebius/mk8s/v1alpha1/node_group.proto +++ b/nebius/mk8s/v1alpha1/node_group.proto @@ -8,14 +8,13 @@ import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/mk8s/v1alpha1/instance_template.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; - // Migrate to v1. option deprecated = true; -option (file_deprecation_details) = { description: "migrate to v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "NodeGroupProto"; option java_package = "ai.nebius.pub.mk8s.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to v1"}; // NodeGroup represents Kubernetes node pool message NodeGroup { @@ -35,7 +34,12 @@ message NodeGroupSpec { oneof size { option (buf.validate.oneof).required = true; - int64 fixed_node_count = 2 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; + int64 fixed_node_count = 2 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; NodeGroupAutoscalingSpec autoscaling = 5; } @@ -144,8 +148,7 @@ message NetworkInterfaceTemplate { } // Describes a public IP address. -message PublicIPAddress { -} +message PublicIPAddress {} message AttachedFilesystemSpec { enum AttachMode { @@ -172,23 +175,32 @@ message ExistingFilesystem { } message NodeGroupAutoscalingSpec { - int64 min_node_count = 1 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; - - int64 max_node_count = 2 [(buf.validate.field) = { int64: { lte: 100, gte: 0 } }]; + int64 min_node_count = 1 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; + + int64 max_node_count = 2 [(buf.validate.field) = { + int64: { + lte: 100 + gte: 0 + } + }]; option (buf.validate.message) = { cel: [ { - id: "autoscaling.protovalidate.message", - message: "min_node_count must be less or equal than max_node_count", + id: "autoscaling.protovalidate.message" + message: "min_node_count must be less or equal than max_node_count" expression: "this.min_node_count <= this.max_node_count" } ] }; } -message PreemptibleSpec { -} +message PreemptibleSpec {} // See https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ message NodeTaint { diff --git a/nebius/mk8s/v1alpha1/node_group_service.proto b/nebius/mk8s/v1alpha1/node_group_service.proto index 6681eeb..de4f7ff 100644 --- a/nebius/mk8s/v1alpha1/node_group_service.proto +++ b/nebius/mk8s/v1alpha1/node_group_service.proto @@ -9,18 +9,17 @@ import "nebius/common/v1/metadata.proto"; import "nebius/common/v1alpha1/operation.proto"; import "nebius/mk8s/v1alpha1/node_group.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; - // Migrate to v1. option deprecated = true; -option (file_deprecation_details) = { description: "migrate to v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "NodeGroupServiceProto"; option java_package = "ai.nebius.pub.mk8s.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to v1"}; service NodeGroupService { option deprecated = true; - option (service_deprecation_details) = { description: "NodeGroup v1alpha1 API is deprecated, please migrate to v1." }; + option (service_deprecation_details) = {description: "NodeGroup v1alpha1 API is deprecated, please migrate to v1."}; option (api_service_name) = "mk8s"; rpc Get(GetNodeGroupRequest) returns (NodeGroup); diff --git a/nebius/mk8s/v1alpha1/progress_data.proto b/nebius/mk8s/v1alpha1/progress_data.proto index 7ab5fb3..84a5784 100644 --- a/nebius/mk8s/v1alpha1/progress_data.proto +++ b/nebius/mk8s/v1alpha1/progress_data.proto @@ -4,14 +4,13 @@ package nebius.mk8s.v1alpha1; import "nebius/annotations.proto"; -option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; - // Migrate to v1. option deprecated = true; -option (file_deprecation_details) = { description: "migrate to v1" }; +option go_package = "github.com/nebius/gosdk/proto/nebius/mk8s/v1alpha1"; option java_multiple_files = true; option java_outer_classname = "ProgressDataProto"; option java_package = "ai.nebius.pub.mk8s.v1alpha1"; +option (file_deprecation_details) = {description: "migrate to v1"}; message ProgressData { // Problems encountered during the operation execution. diff --git a/nebius/msp/mlflow/v1alpha1/cluster.proto b/nebius/msp/mlflow/v1alpha1/cluster.proto index e293691..3b7712a 100644 --- a/nebius/msp/mlflow/v1alpha1/cluster.proto +++ b/nebius/msp/mlflow/v1alpha1/cluster.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.msp.mlflow.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/msp/v1alpha1/cluster.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/msp/mlflow/v1alpha1"; @@ -43,7 +43,9 @@ message ClusterSpec { // Id of the service account that will be used to access S3 bucket (and create one if not provided). string service_account_id = 6 [ (buf.validate.field).required = true, - (nid) = { resource: [ "serviceaccount" ] } + (nid) = { + resource: ["serviceaccount"] + } ]; // Name of the Nebius S3 bucket for MLflow artifacts. If not provided, will be created under the same parent. @@ -53,7 +55,9 @@ message ClusterSpec { string network_id = 8 [ (buf.validate.field).required = true, (field_behavior) = IMMUTABLE, - (nid) = { resource: [ "vpcnetwork" ] } + (nid) = { + resource: ["vpcnetwork"] + } ]; // Size defines how much resources will be allocated to mlflow diff --git a/nebius/msp/mlflow/v1alpha1/cluster_service.proto b/nebius/msp/mlflow/v1alpha1/cluster_service.proto index 461d543..8a14859 100644 --- a/nebius/msp/mlflow/v1alpha1/cluster_service.proto +++ b/nebius/msp/mlflow/v1alpha1/cluster_service.proto @@ -3,10 +3,10 @@ syntax = "proto3"; package nebius.msp.mlflow.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/msp/mlflow/v1alpha1/cluster.proto"; +import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1alpha1/operation.proto"; -import "nebius/annotations.proto"; +import "nebius/msp/mlflow/v1alpha1/cluster.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/msp/mlflow/v1alpha1"; option java_multiple_files = true; @@ -36,7 +36,9 @@ message GetClusterRequest { // ID of the cluster to retrieve. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "mlflow" ] } + (nid) = { + resource: ["mlflow"] + } ]; } @@ -77,13 +79,13 @@ message CreateClusterRequest { option (buf.validate.message) = { cel: [ { - id: "metadata.parent_id", - message: "metadata.parent_id should not be empty", + id: "metadata.parent_id" + message: "metadata.parent_id should not be empty" expression: "has(this.metadata.parent_id)" }, { - id: "metadata.name", - message: "metadata.name should not be empty", + id: "metadata.name" + message: "metadata.name should not be empty" expression: "has(this.metadata.name)" } ] @@ -94,6 +96,8 @@ message DeleteClusterRequest { // ID of the cluster to delete. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "mlflow" ] } + (nid) = { + resource: ["mlflow"] + } ]; } diff --git a/nebius/msp/postgresql/v1alpha1/backup_service.proto b/nebius/msp/postgresql/v1alpha1/backup_service.proto index d242158..8c53fd3 100644 --- a/nebius/msp/postgresql/v1alpha1/backup_service.proto +++ b/nebius/msp/postgresql/v1alpha1/backup_service.proto @@ -3,9 +3,9 @@ syntax = "proto3"; package nebius.msp.postgresql.v1alpha1; import "buf/validate/validate.proto"; +import "nebius/annotations.proto"; import "nebius/common/v1alpha1/operation.proto"; import "nebius/msp/postgresql/v1alpha1/backup.proto"; -import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/msp/postgresql/v1alpha1"; option java_multiple_files = true; @@ -37,7 +37,9 @@ message GetBackupRequest { // ID of the PostgreSQL cluster that holds backup. string cluster_id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; // ID of the designated backup. @@ -53,7 +55,9 @@ message ListBackupsByClusterRequest { // ID of the PostgreSQL cluster to list backups from. string cluster_id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; } @@ -66,7 +70,9 @@ message CreateBackupRequest { // ID of the PostgreSQL cluster that holds backup. string cluster_id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; } @@ -74,7 +80,9 @@ message DeleteBackupRequest { // ID of the PostgreSQL cluster that holds backup. string cluster_id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; // ID of the designated backup. diff --git a/nebius/msp/postgresql/v1alpha1/cluster.proto b/nebius/msp/postgresql/v1alpha1/cluster.proto index 7fcb64b..f915496 100644 --- a/nebius/msp/postgresql/v1alpha1/cluster.proto +++ b/nebius/msp/postgresql/v1alpha1/cluster.proto @@ -3,12 +3,12 @@ syntax = "proto3"; package nebius.msp.postgresql.v1alpha1; import "buf/validate/validate.proto"; +import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; -import "nebius/msp/v1alpha1/cluster.proto"; import "nebius/msp/postgresql/v1alpha1/config/postgresql.proto"; import "nebius/msp/postgresql/v1alpha1/template.proto"; +import "nebius/msp/v1alpha1/cluster.proto"; import "nebius/msp/v1alpha1/resource/template.proto"; -import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/msp/postgresql/v1alpha1"; option java_multiple_files = true; @@ -38,21 +38,30 @@ message ConnectionPoolerConfig { PoolingMode pooling_mode = 1; // Maximum number of connections in the pool for a single user/database pair. - optional int64 max_pool_size = 2 [(buf.validate.field) = { int64: { lte: 12800, gte: 5 } }]; + optional int64 max_pool_size = 2 [(buf.validate.field) = { + int64: { + lte: 12800 + gte: 5 + } + }]; } message ClusterSpec { // Description of the PostgreSQL cluster. string description = 1 [ (field_behavior) = IMMUTABLE, - (buf.validate.field) = { string: { max_len: 256 } } + (buf.validate.field) = { + string: {max_len: 256} + } ]; // Network ID in which the cluster is created. string network_id = 6 [ (field_behavior) = IMMUTABLE, (buf.validate.field).required = true, - (nid) = { resource: [ "vpcnetwork" ] } + (nid) = { + resource: ["vpcnetwork"] + } ]; ConfigSpec config = 3 [(buf.validate.field).required = true]; @@ -93,7 +102,10 @@ message Endpoints { message ConfigSpec { // Version of PostgreSQL used in the cluster. // Possible values: `16` - string version = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string version = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Configuration of the connection pooler. ConnectionPoolerConfig pooler_config = 2; @@ -120,27 +132,30 @@ message BootstrapSpec { (buf.validate.field) = { cel: [ { - id: "user_name.min_length", - message: "User name must be at least 1 characters long.", + id: "user_name.min_length" + message: "User name must be at least 1 characters long." expression: "size(this) >= 1" }, { - id: "user_name.max_length", - message: "User name must not exceed 63 characters.", + id: "user_name.max_length" + message: "User name must not exceed 63 characters." expression: "size(this) <= 63" }, { - id: "user_name.pattern", - message: "User name must match the pattern: '^[a-zA-Z0-9_][a-zA-Z0-9_-]*$'", + id: "user_name.pattern" + message: "User name must match the pattern: '^[a-zA-Z0-9_][a-zA-Z0-9_-]*$'" expression: "this.matches('^[a-zA-Z0-9_][a-zA-Z0-9_-]*$')" } - ], + ] required: true } ]; // Password of the bootstrap PostgreSQL user. - string user_password = 2 [(field_behavior) = INPUT_ONLY, (sensitive) = true]; + string user_password = 2 [ + (field_behavior) = INPUT_ONLY, + (sensitive) = true + ]; // Name of the PostgreSQL database. 1-63 characters long. string db_name = 3 [ @@ -148,21 +163,21 @@ message BootstrapSpec { (buf.validate.field) = { cel: [ { - id: "db_name.min_length", - message: "Database name must be at least 1 characters long.", + id: "db_name.min_length" + message: "Database name must be at least 1 characters long." expression: "size(this) >= 1" }, { - id: "db_name.max_length", - message: "Database name must not exceed 63 characters.", + id: "db_name.max_length" + message: "Database name must not exceed 63 characters." expression: "size(this) <= 63" }, { - id: "db_name.pattern", - message: "Database name must match the pattern: '^[a-zA-Z0-9_][a-zA-Z0-9_-]*$'", + id: "db_name.pattern" + message: "Database name must match the pattern: '^[a-zA-Z0-9_][a-zA-Z0-9_-]*$'" expression: "this.matches('^[a-zA-Z0-9_][a-zA-Z0-9_-]*$')" } - ], + ] required: true } ]; diff --git a/nebius/msp/postgresql/v1alpha1/cluster_service.proto b/nebius/msp/postgresql/v1alpha1/cluster_service.proto index d3ffa46..f954a34 100644 --- a/nebius/msp/postgresql/v1alpha1/cluster_service.proto +++ b/nebius/msp/postgresql/v1alpha1/cluster_service.proto @@ -3,11 +3,11 @@ syntax = "proto3"; package nebius.msp.postgresql.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/msp/postgresql/v1alpha1/cluster.proto"; +import "google/protobuf/timestamp.proto"; +import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1alpha1/operation.proto"; -import "nebius/annotations.proto"; -import "google/protobuf/timestamp.proto"; +import "nebius/msp/postgresql/v1alpha1/cluster.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/msp/postgresql/v1alpha1"; option java_multiple_files = true; @@ -57,7 +57,9 @@ message GetClusterRequest { // To get the cluster ID use a [ClusterService.List] request. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; } @@ -65,7 +67,9 @@ message GetClusterForBackupRequest { // ID of the PostgreSQL cluster that holds backup. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; // ID of the backup for which source cluster is requested. @@ -115,7 +119,9 @@ message RestoreClusterRequest { // ID of the PostgreSQL cluster to restore from. string source_cluster_id = 4 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; // Timestamp for point in time recovery. @@ -125,7 +131,9 @@ message RestoreClusterRequest { message DeleteClusterRequest { // ID of the PostgreSQL cluster to delete. // To get the PostgreSQL cluster ID, use a [ClusterService.List] request. - string id = 1 [(nid) = { resource: [ "postgresql" ] }]; + string id = 1 [(nid) = { + resource: ["postgresql"] + }]; } message UpdateClusterRequest { @@ -141,7 +149,9 @@ message StopClusterRequest { // To get the cluster ID use a [ClusterService.List] request. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; } @@ -150,6 +160,8 @@ message StartClusterRequest { // To get the cluster ID use a [ClusterService.List] request. string id = 1 [ (buf.validate.field).required = true, - (nid) = { resource: [ "postgresql" ] } + (nid) = { + resource: ["postgresql"] + } ]; } diff --git a/nebius/msp/postgresql/v1alpha1/config/postgresql.proto b/nebius/msp/postgresql/v1alpha1/config/postgresql.proto index 6abc82f..e39ed0c 100644 --- a/nebius/msp/postgresql/v1alpha1/config/postgresql.proto +++ b/nebius/msp/postgresql/v1alpha1/config/postgresql.proto @@ -10,27 +10,77 @@ option java_outer_classname = "PostgresqlProto"; option java_package = "ai.nebius.pub.msp.postgresql.v1alpha1.config"; message PostgresqlConfig16 { - optional int64 autovacuum_work_mem = 1 [(buf.validate.field) = { int64: { lte: 2147483647, gte: -1 } }]; // in kilobytes. + optional int64 autovacuum_work_mem = 1 [(buf.validate.field) = { + int64: { + lte: 2147483647 + gte: -1 + } + }]; // in kilobytes. - optional int64 statement_timeout = 2 [(buf.validate.field) = { int64: { lte: 2147483647, gte: 0 } }]; // in milliseconds. + optional int64 statement_timeout = 2 [(buf.validate.field) = { + int64: { + lte: 2147483647 + gte: 0 + } + }]; // in milliseconds. - optional int64 idle_in_transaction_session_timeout = 3 [(buf.validate.field) = { int64: { lte: 2147483647, gte: 0 } }]; // in milliseconds. + optional int64 idle_in_transaction_session_timeout = 3 [(buf.validate.field) = { + int64: { + lte: 2147483647 + gte: 0 + } + }]; // in milliseconds. - optional int64 autovacuum_vacuum_cost_delay = 4 [(buf.validate.field) = { int64: { lte: 100, gte: -1 } }]; // in milliseconds. + optional int64 autovacuum_vacuum_cost_delay = 4 [(buf.validate.field) = { + int64: { + lte: 100 + gte: -1 + } + }]; // in milliseconds. - optional int64 autovacuum_vacuum_cost_limit = 5 [(buf.validate.field) = { int64: { lte: 10000, gte: -1 } }]; + optional int64 autovacuum_vacuum_cost_limit = 5 [(buf.validate.field) = { + int64: { + lte: 10000 + gte: -1 + } + }]; - optional int64 autovacuum_naptime = 6 [(buf.validate.field) = { int64: { lte: 2147483, gte: 1 } }]; // in seconds. + optional int64 autovacuum_naptime = 6 [(buf.validate.field) = { + int64: { + lte: 2147483 + gte: 1 + } + }]; // in seconds. - optional double autovacuum_vacuum_scale_factor = 7 [(buf.validate.field) = { double: { lte: 100.000000, gte: 0.000000 } }]; + optional double autovacuum_vacuum_scale_factor = 7 [(buf.validate.field) = { + double: { + lte: 100.000000 + gte: 0.000000 + } + }]; - optional double autovacuum_analyze_scale_factor = 8 [(buf.validate.field) = { double: { lte: 100.000000, gte: 0.000000 } }]; + optional double autovacuum_analyze_scale_factor = 8 [(buf.validate.field) = { + double: { + lte: 100.000000 + gte: 0.000000 + } + }]; optional bool default_transaction_read_only = 9; optional string search_path = 10; - optional int64 max_connections = 11 [(buf.validate.field) = { int64: { lte: 12800, gte: 100 } }]; + optional int64 max_connections = 11 [(buf.validate.field) = { + int64: { + lte: 12800 + gte: 100 + } + }]; - optional int64 shared_buffers = 12 [(buf.validate.field) = { int64: { lte: 8589934584, gte: 128 } }]; // in kilobytes. + optional int64 shared_buffers = 12 [(buf.validate.field) = { + int64: { + lte: 8589934584 + gte: 128 + } + }]; // in kilobytes. } diff --git a/nebius/msp/serverless/v1alpha1/endpoint.proto b/nebius/msp/serverless/v1alpha1/endpoint.proto index a8c4d9a..8d6b0d3 100644 --- a/nebius/msp/serverless/v1alpha1/endpoint.proto +++ b/nebius/msp/serverless/v1alpha1/endpoint.proto @@ -26,7 +26,10 @@ message EndpointSpec { string description = 1; // Network ID to run the endpoint in - string network_id = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string network_id = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Username for accessing the container endpoint. string username = 3 [ @@ -69,7 +72,10 @@ message EndpointContainerSpec { map envs = 103; // Environment variables with sensitive data - map sensitive_envs = 104 [(field_behavior) = INPUT_ONLY, (sensitive) = true]; + map sensitive_envs = 104 [ + (field_behavior) = INPUT_ONLY, + (sensitive) = true + ]; // Liveness probe spec ProbeSpec liveness = 201; @@ -85,10 +91,16 @@ message ProbeSpec { int64 delay_seconds = 5; // Probing period in seconds - int64 period_seconds = 6 [(buf.validate.field) = { int64: { gt: 0 }, required: true }]; + int64 period_seconds = 6 [(buf.validate.field) = { + int64: {gt: 0} + required: true + }]; // Failure threshold for the probe after which the container will be restarted - int64 failure_threshold = 7 [(buf.validate.field) = { int64: { gt: 0 }, required: true }]; + int64 failure_threshold = 7 [(buf.validate.field) = { + int64: {gt: 0} + required: true + }]; } message EndpointTemplateSpec { diff --git a/nebius/msp/serverless/v1alpha1/job.proto b/nebius/msp/serverless/v1alpha1/job.proto index 0ca0364..8ecd8dc 100644 --- a/nebius/msp/serverless/v1alpha1/job.proto +++ b/nebius/msp/serverless/v1alpha1/job.proto @@ -26,7 +26,10 @@ message JobSpec { string description = 1; // Network ID to run the job in - string network_id = 2 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string network_id = 2 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Container spec JobContainerSpec container = 101; @@ -52,7 +55,10 @@ message JobContainerSpec { map envs = 103; // Environment variables with sensitive data - map sensitive_envs = 104 [(field_behavior) = INPUT_ONLY, (sensitive) = true]; + map sensitive_envs = 104 [ + (field_behavior) = INPUT_ONLY, + (sensitive) = true + ]; // Job timeout in seconds (0 - no timeout) int64 timeout_seconds = 201; diff --git a/nebius/msp/v1alpha1/common.proto b/nebius/msp/v1alpha1/common.proto index f84a20d..d202846 100644 --- a/nebius/msp/v1alpha1/common.proto +++ b/nebius/msp/v1alpha1/common.proto @@ -42,7 +42,9 @@ message ListRequest { string parent_id = 1 [(buf.validate.field).required = true]; // Specifies the maximum number of items to return in the response. Default value is 100. - int64 page_size = 2 [(buf.validate.field) = { int64: { gte: 0 } }]; + int64 page_size = 2 [(buf.validate.field) = { + int64: {gte: 0} + }]; // Token for pagination, allowing the retrieval of the next set of results. string page_token = 3; diff --git a/nebius/mysterybox/v1/payload.proto b/nebius/mysterybox/v1/payload.proto index 8139f2f..1cccafd 100644 --- a/nebius/mysterybox/v1/payload.proto +++ b/nebius/mysterybox/v1/payload.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package nebius.mysterybox.v1; -import "nebius/annotations.proto"; import "buf/validate/validate.proto"; +import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/mysterybox/v1"; option java_multiple_files = true; @@ -13,7 +13,10 @@ option java_package = "ai.nebius.pub.mysterybox.v1"; // Represents the secret's content as key-value pair. message Payload { // Non-confidential key of the payload entry. - string key = 1 [(sensitive) = true, (buf.validate.field).required = true]; + string key = 1 [ + (sensitive) = true, + (buf.validate.field).required = true + ]; oneof payload { option (buf.validate.oneof).required = true; @@ -21,13 +24,23 @@ message Payload { // The text data to encrypt and store in the version of the secret. string string_value = 12 [ (sensitive) = true, - (buf.validate.field) = { string: { min_len: 1, max_len: 65536 } } + (buf.validate.field) = { + string: { + min_len: 1 + max_len: 65536 + } + } ]; // The binary data to encrypt and store in the version of the secret. bytes binary_value = 13 [ (sensitive) = true, - (buf.validate.field) = { bytes: { min_len: 1, max_len: 65536 } } + (buf.validate.field) = { + bytes: { + min_len: 1 + max_len: 65536 + } + } ]; } } diff --git a/nebius/mysterybox/v1/payload_service.proto b/nebius/mysterybox/v1/payload_service.proto index 3f99788..04aecbb 100644 --- a/nebius/mysterybox/v1/payload_service.proto +++ b/nebius/mysterybox/v1/payload_service.proto @@ -2,9 +2,9 @@ syntax = "proto3"; package nebius.mysterybox.v1; -import "nebius/mysterybox/v1/payload.proto"; -import "nebius/annotations.proto"; import "buf/validate/validate.proto"; +import "nebius/annotations.proto"; +import "nebius/mysterybox/v1/payload.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/mysterybox/v1"; option java_multiple_files = true; diff --git a/nebius/mysterybox/v1/secret.proto b/nebius/mysterybox/v1/secret.proto index 5633277..742ad04 100644 --- a/nebius/mysterybox/v1/secret.proto +++ b/nebius/mysterybox/v1/secret.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.mysterybox.v1; import "google/protobuf/timestamp.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/mysterybox/v1/secret_version.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/mysterybox/v1"; @@ -30,7 +30,10 @@ message SecretSpec { optional string primary_version_id = 3 [(field_behavior) = NON_EMPTY_DEFAULT]; // Secret's version specification, defines the secret version, including its payload. This parameter must be specified only during create operations. - SecretVersionSpec secret_version = 4 [(field_behavior) = INPUT_ONLY, (field_behavior) = IMMUTABLE]; + SecretVersionSpec secret_version = 4 [ + (field_behavior) = INPUT_ONLY, + (field_behavior) = IMMUTABLE + ]; } message SecretStatus { diff --git a/nebius/mysterybox/v1/secret_service.proto b/nebius/mysterybox/v1/secret_service.proto index 8917758..5dac0aa 100644 --- a/nebius/mysterybox/v1/secret_service.proto +++ b/nebius/mysterybox/v1/secret_service.proto @@ -2,11 +2,11 @@ syntax = "proto3"; package nebius.mysterybox.v1; -import "nebius/mysterybox/v1/secret.proto"; -import "nebius/common/v1/metadata.proto"; -import "nebius/common/v1/operation.proto"; import "buf/validate/validate.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; +import "nebius/common/v1/operation.proto"; +import "nebius/mysterybox/v1/secret.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/mysterybox/v1"; option java_multiple_files = true; @@ -78,12 +78,13 @@ message ListSecretsRequest { // results is larger than [page_size], the service returns a [ListSecretsResponse.next_page_token] // that can be used to get the next page of results in subsequent list requests. // Default value: 100. - int64 page_size = 2 [ - (buf.validate.field) = { - int64: { lte: 1000, gte: 0 }, - ignore: IGNORE_IF_UNPOPULATED + int64 page_size = 2 [(buf.validate.field) = { + int64: { + lte: 1000 + gte: 0 } - ]; + ignore: IGNORE_IF_UNPOPULATED + }]; // Page token. To get the next page of results, set [page_token] to the // [ListSecretsResponse.next_page_token] returned by a previous list request. diff --git a/nebius/mysterybox/v1/secret_version.proto b/nebius/mysterybox/v1/secret_version.proto index 3a3661c..f4e0790 100644 --- a/nebius/mysterybox/v1/secret_version.proto +++ b/nebius/mysterybox/v1/secret_version.proto @@ -1,13 +1,13 @@ syntax = "proto3"; +package nebius.mysterybox.v1; + import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; import "nebius/mysterybox/v1/payload.proto"; -package nebius.mysterybox.v1; - option go_package = "github.com/nebius/gosdk/proto/nebius/mysterybox/v1"; option java_multiple_files = true; option java_outer_classname = "SecretVersionProto"; diff --git a/nebius/mysterybox/v1/secret_version_service.proto b/nebius/mysterybox/v1/secret_version_service.proto index 1aff29d..4253373 100644 --- a/nebius/mysterybox/v1/secret_version_service.proto +++ b/nebius/mysterybox/v1/secret_version_service.proto @@ -2,11 +2,11 @@ syntax = "proto3"; package nebius.mysterybox.v1; +import "buf/validate/validate.proto"; +import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1/operation.proto"; -import "buf/validate/validate.proto"; import "nebius/mysterybox/v1/secret_version.proto"; -import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/mysterybox/v1"; option java_multiple_files = true; @@ -57,12 +57,13 @@ message ListSecretVersionsRequest { // results is larger than [page_size], the service returns a [ListSecretVersionsResponse.next_page_token] // that can be used to get the next page of results in subsequent list requests. // Default value: 100. - int64 page_size = 2 [ - (buf.validate.field) = { - int64: { lte: 1000, gte: 0 }, - ignore: IGNORE_IF_UNPOPULATED + int64 page_size = 2 [(buf.validate.field) = { + int64: { + lte: 1000 + gte: 0 } - ]; + ignore: IGNORE_IF_UNPOPULATED + }]; // Page token. To get the next page of results, set [page_token] to the // [ListSecretVersionsResponse.next_page_token] returned by a previous list request. diff --git a/nebius/quotas/v1/quota_allowance.proto b/nebius/quotas/v1/quota_allowance.proto index 62c2af4..72d2e8d 100644 --- a/nebius/quotas/v1/quota_allowance.proto +++ b/nebius/quotas/v1/quota_allowance.proto @@ -89,7 +89,18 @@ message QuotaAllowanceStatus { message QuotaAllowance { option (resource_behavior) = UNNAMED; - common.v1.ResourceMetadata metadata = 1 [(buf.validate.field).required = true]; + common.v1.ResourceMetadata metadata = 1 [ + (buf.validate.field).required = true, + (nid) = { + parent_resource: [ + "tenant", + "aitenant", + "tractotenant", + "project", + "aiproject" + ] + } + ]; QuotaAllowanceSpec spec = 2 [(buf.validate.field).required = true]; diff --git a/nebius/quotas/v1/quota_allowance_service.proto b/nebius/quotas/v1/quota_allowance_service.proto index 936f63c..9bbb221 100644 --- a/nebius/quotas/v1/quota_allowance_service.proto +++ b/nebius/quotas/v1/quota_allowance_service.proto @@ -40,7 +40,15 @@ service QuotaAllowanceService { // Request to create a quota allowance with the specified spec and metadata. message CreateQuotaAllowanceRequest { - common.v1.ResourceMetadata metadata = 1; + common.v1.ResourceMetadata metadata = 1 [(nid) = { + parent_resource: [ + "tenant", + "aitenant", + "tractotenant", + "project", + "aiproject" + ] + }]; QuotaAllowanceSpec spec = 2 [(buf.validate.field).required = true]; } @@ -55,13 +63,30 @@ message UpdateQuotaAllowanceRequest { // Request to delete a quota allowance by its identifier. message DeleteQuotaAllowanceRequest { // ID of the quota. - string id = 1 [(buf.validate.field).required = true, (field_behavior) = IDENTIFIER]; + string id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IDENTIFIER, + (nid) = { + resource: ["quotaallowance"] + } + ]; } // Request to list quota allowances under a container with pagination support. message ListQuotaAllowancesRequest { // ID of the Container to list quotas for. - string parent_id = 1 [(buf.validate.field).required = true]; + string parent_id = 1 [ + (buf.validate.field).required = true, + (nid) = { + resource: [ + "tenant", + "aitenant", + "tractotenant", + "project", + "aiproject" + ] + } + ]; // Page size. Must be between [1...1000]. // Optional; if not specified, a reasonable default will be chosen by the service. @@ -74,7 +99,13 @@ message ListQuotaAllowancesRequest { // Request to get a quota allowance by its identifier. message GetQuotaAllowanceRequest { // ID of the quota. - string id = 1 [(buf.validate.field).required = true, (field_behavior) = IDENTIFIER]; + string id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IDENTIFIER, + (nid) = { + resource: ["quotaallowance"] + } + ]; } // Response containing quota allowances and pagination token. @@ -89,7 +120,18 @@ message ListQuotaAllowancesResponse { // Request to get a quota allowance by container, name, and region. message GetByNameRequest { // ID of the Container to list quotas for. - string parent_id = 1 [(buf.validate.field).required = true]; + string parent_id = 1 [ + (buf.validate.field).required = true, + (nid) = { + resource: [ + "tenant", + "aitenant", + "tractotenant", + "project", + "aiproject" + ] + } + ]; // Name of the quota. // Example: "compute.disk.size.network-ssd". diff --git a/nebius/storage/v1/bucket.proto b/nebius/storage/v1/bucket.proto index e8b701d..3a27957 100644 --- a/nebius/storage/v1/bucket.proto +++ b/nebius/storage/v1/bucket.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package nebius.storage.v1; -import "google/protobuf/timestamp.proto"; import "buf/validate/validate.proto"; +import "google/protobuf/timestamp.proto"; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/storage/v1/base.proto"; @@ -49,7 +49,10 @@ message BucketSpec { // or the one provided via the `x-amz-storage-class` header. StorageClass override_storage_class = 10 [ deprecated = true, - (field_deprecation_details) = { effective_at: "2025-12-01", description: "Use `default_storage_class` with `force_storage_class` instead" } + (field_deprecation_details) = { + effective_at: "2025-12-01" + description: "Use `default_storage_class` with `force_storage_class` instead" + } ]; // Flag to force usage of default_storage_class, ignoring `x-amz-storage-class` header. diff --git a/nebius/storage/v1/bucket_service.proto b/nebius/storage/v1/bucket_service.proto index 63d7327..789fed2 100644 --- a/nebius/storage/v1/bucket_service.proto +++ b/nebius/storage/v1/bucket_service.proto @@ -2,9 +2,9 @@ syntax = "proto3"; package nebius.storage.v1; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/duration.proto"; import "buf/validate/validate.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/common/v1/operation.proto"; diff --git a/nebius/storage/v1/lifecycle.proto b/nebius/storage/v1/lifecycle.proto index 3ff78b6..f16edeb 100644 --- a/nebius/storage/v1/lifecycle.proto +++ b/nebius/storage/v1/lifecycle.proto @@ -2,10 +2,10 @@ syntax = "proto3"; package nebius.storage.v1; -import "nebius/storage/v1/base.proto"; -import "nebius/annotations.proto"; import "buf/validate/validate.proto"; import "google/protobuf/timestamp.proto"; +import "nebius/annotations.proto"; +import "nebius/storage/v1/base.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/storage/v1"; option java_multiple_files = true; @@ -24,7 +24,9 @@ option java_package = "ai.nebius.pub.storage.v1"; // object (one current version and zero or more noncurrent versions). The system provides predefined actions // that you can specify for current and noncurrent object versions. message LifecycleConfiguration { - repeated LifecycleRule rules = 1 [(buf.validate.field) = { repeated: { max_items: 1000 } }]; + repeated LifecycleRule rules = 1 [(buf.validate.field) = { + repeated: {max_items: 1000} + }]; // Specifies which requests are included in `days_since_last_access` calculations for all transition rules. LifecycleAccessFilter last_access_filter = 2; @@ -89,25 +91,29 @@ message LifecycleAccessFilter { // - The first condition matching the request has `INCLUDE` type. // OR // - The request doesn't match any conditions - repeated Condition conditions = 1 [(buf.validate.field) = { repeated: { max_items: 100 } }]; + repeated Condition conditions = 1 [(buf.validate.field) = { + repeated: {max_items: 100} + }]; message Condition { Type type = 1 [(buf.validate.field).required = true]; // The s3 methods to match. // An empty list matches all methods - repeated Method methods = 2 [(buf.validate.field) = { repeated: { max_items: 10 } }]; + repeated Method methods = 2 [(buf.validate.field) = { + repeated: {max_items: 10} + }]; // User agents to match. Condition is satisfied if the request's user agent contains any of these substrings. // An empty list matches all user agents. - repeated string user_agents = 3 [ - (buf.validate.field) = { - repeated: { - max_items: 100, - items: { string: { max_len: 200 } } + repeated string user_agents = 3 [(buf.validate.field) = { + repeated: { + max_items: 100 + items: { + string: {max_len: 200} } } - ]; + }]; enum Type { TYPE_UNSPECIFIED = 0; @@ -146,7 +152,12 @@ message LifecycleExpiration { // Indicates the lifetime, in days, of the objects that are subject to the rule. // The value must be a non-zero positive integer. - int32 days = 2 [(buf.validate.field) = { int32: { lte: 18250, gte: 1 } }]; + int32 days = 2 [(buf.validate.field) = { + int32: { + lte: 18250 + gte: 1 + } + }]; } // Indicates whether the system will remove a "delete marker" with no noncurrent versions. @@ -161,13 +172,23 @@ message LifecycleNoncurrentVersionExpiration { optional int32 newer_noncurrent_versions = 1; // Specifies the number of days an object is noncurrent before the system will expire it. - int32 noncurrent_days = 2 [(buf.validate.field) = { int32: { lte: 18250, gte: 1 } }]; + int32 noncurrent_days = 2 [(buf.validate.field) = { + int32: { + lte: 18250 + gte: 1 + } + }]; } message LifecycleAbortIncompleteMultipartUpload { // Specifies the days since the initiation of an incomplete multipart upload that // the system will wait before permanently removing all parts of the upload. - int32 days_after_initiation = 1 [(buf.validate.field) = { int32: { lte: 18250, gte: 1 } }]; + int32 days_after_initiation = 1 [(buf.validate.field) = { + int32: { + lte: 18250 + gte: 1 + } + }]; } message LifecycleTransition { @@ -177,10 +198,20 @@ message LifecycleTransition { // Amount of days since object was uploaded before it's transited to a new storage class. // The value must be a non-zero positive integer. - int32 days = 2 [(buf.validate.field) = { int32: { lte: 18250, gte: 1 } }]; + int32 days = 2 [(buf.validate.field) = { + int32: { + lte: 18250 + gte: 1 + } + }]; // The number of days since the object was last accessed before it is transitioned. - int32 days_since_last_access = 4 [(buf.validate.field) = { int32: { lte: 18250, gte: 1 } }]; + int32 days_since_last_access = 4 [(buf.validate.field) = { + int32: { + lte: 18250 + gte: 1 + } + }]; } // Target storage class to transit to. @@ -192,7 +223,12 @@ message LifecycleNoncurrentVersionTransition { optional int32 newer_noncurrent_versions = 1; // Specifies the number of days an object is noncurrent before the system will transit it. - int32 noncurrent_days = 2 [(buf.validate.field) = { int32: { lte: 18250, gte: 1 } }]; + int32 noncurrent_days = 2 [(buf.validate.field) = { + int32: { + lte: 18250 + gte: 1 + } + }]; // Target storage class to transit to. StorageClass storage_class = 3; diff --git a/nebius/storage/v1alpha1/transfer.proto b/nebius/storage/v1alpha1/transfer.proto index e893209..138d213 100644 --- a/nebius/storage/v1alpha1/transfer.proto +++ b/nebius/storage/v1alpha1/transfer.proto @@ -3,10 +3,10 @@ syntax = "proto3"; package nebius.storage.v1alpha1; import "buf/validate/validate.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/duration.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/storage/v1alpha1"; option java_multiple_files = true; @@ -28,11 +28,20 @@ message TransferSpec { // The endpoint must be in the form of a URL, starting with the protocol (https), // followed by the endpoint address without a trailing slash. // Example: https://storage.us-central1.nebius.cloud - string endpoint = 1 [(field_behavior) = IMMUTABLE, (buf.validate.field).required = true]; + string endpoint = 1 [ + (field_behavior) = IMMUTABLE, + (buf.validate.field).required = true + ]; - string bucket_name = 2 [(field_behavior) = IMMUTABLE, (buf.validate.field).required = true]; + string bucket_name = 2 [ + (field_behavior) = IMMUTABLE, + (buf.validate.field).required = true + ]; - string region = 3 [(field_behavior) = IMMUTABLE, (buf.validate.field).required = true]; + string region = 3 [ + (field_behavior) = IMMUTABLE, + (buf.validate.field).required = true + ]; // Prefix to filter objects in the source bucket. Only objects whose keys start with this prefix will be transferred. // During transfer, the resulting object key in the destination bucket is computed @@ -58,7 +67,10 @@ message TransferSpec { DestinationBucket destination = 2 [(buf.validate.field).required = true]; message DestinationBucket { - string bucket_name = 1 [(field_behavior) = IMMUTABLE, (buf.validate.field).required = true]; + string bucket_name = 1 [ + (field_behavior) = IMMUTABLE, + (buf.validate.field).required = true + ]; // Prefix to add to the beginning of each transferred object key in the destination bucket. // During transfer, the resulting object key in the destination bucket is computed @@ -83,19 +95,30 @@ message TransferSpec { AzureAccessKey azure_access_key = 3; } - message CredentialsAnonymous { - } + message CredentialsAnonymous {} message CredentialsAccessKey { - string access_key_id = 1 [(sensitive) = true, (buf.validate.field).required = true]; - - string secret_access_key = 2 [(sensitive) = true, (buf.validate.field).required = true]; + string access_key_id = 1 [ + (sensitive) = true, + (buf.validate.field).required = true + ]; + + string secret_access_key = 2 [ + (sensitive) = true, + (buf.validate.field).required = true + ]; } message AzureAccessKey { - string account_name = 2 [(sensitive) = true, (buf.validate.field).required = true]; - - string access_key = 1 [(sensitive) = true, (buf.validate.field).required = true]; + string account_name = 2 [ + (sensitive) = true, + (buf.validate.field).required = true + ]; + + string access_key = 1 [ + (sensitive) = true, + (buf.validate.field).required = true + ]; } } @@ -119,20 +142,22 @@ message TransferSpec { StopConditionInfinite infinite = 5 [(field_behavior) = MEANINGFUL_EMPTY_VALUE]; } - message StopConditionAfterOneIteration { - } + message StopConditionAfterOneIteration {} message StopConditionAfterNEmptyIterations { // Number of consecutive iterations with zero transferred objects required to stop transfer. uint32 empty_iterations_threshold = 1 [(buf.validate.field).required = true]; } - message StopConditionInfinite { - } + message StopConditionInfinite {} // Time to wait between transfer iterations. Default is 15 minutes if not specified. google.protobuf.Duration inter_iteration_interval = 6 [ - (buf.validate.field) = { duration: { gte: { } } }, + (buf.validate.field) = { + duration: { + gte: {} + } + }, (field_behavior) = NON_EMPTY_DEFAULT ]; diff --git a/nebius/vpc/v1/allocation.proto b/nebius/vpc/v1/allocation.proto index 6523507..6b6ae48 100644 --- a/nebius/vpc/v1/allocation.proto +++ b/nebius/vpc/v1/allocation.proto @@ -47,8 +47,8 @@ message IPv4PrivateAllocationSpec { (buf.validate.field) = { cel: [ { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" expression: "this == '' || this.matches('^/([0-9]|[1-2][0-9]|3[0-2])$') || this.isIp(4) || this.isIpPrefix(4, true)" } ] @@ -83,8 +83,8 @@ message IPv4PublicAllocationSpec { (buf.validate.field) = { cel: [ { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" expression: "this == '' || this.matches('^/([0-9]|[1-2][0-9]|3[0-2])$') || this.isIp(4) || this.isIpPrefix(4, true)" } ] diff --git a/nebius/vpc/v1/allocation_service.proto b/nebius/vpc/v1/allocation_service.proto index b127f99..b5e0211 100644 --- a/nebius/vpc/v1/allocation_service.proto +++ b/nebius/vpc/v1/allocation_service.proto @@ -76,34 +76,30 @@ message ListAllocationsResponse { } message CreateAllocationRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; AllocationSpec spec = 2 [(buf.validate.field).required = true]; } message UpdateAllocationRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; AllocationSpec spec = 2; } diff --git a/nebius/vpc/v1/network_service.proto b/nebius/vpc/v1/network_service.proto index c53b380..b6dc96f 100644 --- a/nebius/vpc/v1/network_service.proto +++ b/nebius/vpc/v1/network_service.proto @@ -58,49 +58,43 @@ message ListNetworksResponse { } message CreateNetworkRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; NetworkSpec spec = 2; } message CreateDefaultNetworkRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; } message UpdateNetworkRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; NetworkSpec spec = 2; } diff --git a/nebius/vpc/v1/pool.proto b/nebius/vpc/v1/pool.proto index f989053..283a2e6 100644 --- a/nebius/vpc/v1/pool.proto +++ b/nebius/vpc/v1/pool.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.vpc.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/vpc/v1"; option java_multiple_files = true; @@ -29,11 +29,17 @@ message PoolSpec { string source_pool_id = 1 [(field_behavior) = IMMUTABLE]; // IP version of the pool. - IpVersion version = 3 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + IpVersion version = 3 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Configures whether the pool is private or public. // Only public pools IP addresses are routable in the Internet. - IpVisibility visibility = 5 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + IpVisibility visibility = 5 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // CIDR blocks defined by the pool. repeated PoolCidr cidrs = 4; @@ -43,23 +49,21 @@ message PoolCidr { // A CIDR block (e.g., "10.1.2.0/24") or a prefix length (e.g., "/24"). // If prefix length is specified, the CIDR block will be auto-allocated from // the available space in the parent pool. - string cidr = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", - expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIpPrefix(true)" - }, - { - id: "string.ip_empty", - message: "value is empty, which is not a valid IP address", - expression: "this != ''" - } - ], - required: true - } - ]; + string cidr = 1 [(buf.validate.field) = { + cel: [ + { + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" + expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIpPrefix(true)" + }, + { + id: "string.ip_empty" + message: "value is empty, which is not a valid IP address" + expression: "this != ''" + } + ] + required: true + }]; // Controls provisioning of IP addresses from the CIDR block to other pools // or allocations. Defaults to AVAILABLE. @@ -69,7 +73,12 @@ message PoolCidr { // Default max_mask_length is 32 for IPv4. int64 max_mask_length = 3 [ (field_behavior) = NON_EMPTY_DEFAULT, - (buf.validate.field) = { int64: { lte: 128, gte: 0 } } + (buf.validate.field) = { + int64: { + lte: 128 + gte: 0 + } + } ]; } diff --git a/nebius/vpc/v1/pool_service.proto b/nebius/vpc/v1/pool_service.proto index 5f60ed0..84809c7 100644 --- a/nebius/vpc/v1/pool_service.proto +++ b/nebius/vpc/v1/pool_service.proto @@ -66,34 +66,30 @@ message ListPoolsResponse { } message CreatePoolRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; PoolSpec spec = 2 [(buf.validate.field).required = true]; } message UpdatePoolRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; PoolSpec spec = 2; } diff --git a/nebius/vpc/v1/route.proto b/nebius/vpc/v1/route.proto index f182943..9205400 100644 --- a/nebius/vpc/v1/route.proto +++ b/nebius/vpc/v1/route.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.vpc.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/vpc/v1"; option java_multiple_files = true; @@ -32,10 +32,16 @@ message RouteSpec { // Each destination CIDR must be unique within a route table. // When multiple routes match a destination IP, the route with the longest // matching prefix (most specific match) is selected. - DestinationMatch destination = 2 [(field_behavior) = IMMUTABLE, (buf.validate.field).required = true]; + DestinationMatch destination = 2 [ + (field_behavior) = IMMUTABLE, + (buf.validate.field).required = true + ]; // Next hop configuration specifying where to send matching traffic. - NextHop next_hop = 3 [(field_behavior) = IMMUTABLE, (buf.validate.field).required = true]; + NextHop next_hop = 3 [ + (field_behavior) = IMMUTABLE, + (buf.validate.field).required = true + ]; } message DestinationMatch { @@ -47,11 +53,11 @@ message DestinationMatch { (buf.validate.field) = { cel: [ { - id: "string.valid_cidr", - message: "destination.cidr must be a valid and specified CIDR", + id: "string.valid_cidr" + message: "destination.cidr must be a valid and specified CIDR" expression: "this.matches('^([0-9]{1,3}\\\\.){3}[0-9]{1,3}/[0-9]+$') && this.isIpPrefix(4, true)" } - ], + ] required: true } ]; @@ -114,5 +120,4 @@ message AllocationNextHopState { string cidr = 1; } -message DefaultEgressGatewayState { -} +message DefaultEgressGatewayState {} diff --git a/nebius/vpc/v1/route_service.proto b/nebius/vpc/v1/route_service.proto index ee85f27..f2b3afc 100644 --- a/nebius/vpc/v1/route_service.proto +++ b/nebius/vpc/v1/route_service.proto @@ -56,34 +56,30 @@ message ListRoutesResponse { } message CreateRouteRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; RouteSpec spec = 2 [(buf.validate.field).required = true]; } message UpdateRouteRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; RouteSpec spec = 2; } diff --git a/nebius/vpc/v1/route_table.proto b/nebius/vpc/v1/route_table.proto index c73231c..9154907 100644 --- a/nebius/vpc/v1/route_table.proto +++ b/nebius/vpc/v1/route_table.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.vpc.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/vpc/v1"; option java_multiple_files = true; @@ -27,7 +27,10 @@ message RouteTable { message RouteTableSpec { // ID of the VPC network this route table belongs to. - string network_id = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string network_id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; } message RouteTableStatus { diff --git a/nebius/vpc/v1/route_table_service.proto b/nebius/vpc/v1/route_table_service.proto index 7c2c0f3..ea74b9a 100644 --- a/nebius/vpc/v1/route_table_service.proto +++ b/nebius/vpc/v1/route_table_service.proto @@ -66,34 +66,30 @@ message ListRouteTablesResponse { } message CreateRouteTableRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; RouteTableSpec spec = 2 [(buf.validate.field).required = true]; } message UpdateRouteTableRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; RouteTableSpec spec = 2; } diff --git a/nebius/vpc/v1/subnet.proto b/nebius/vpc/v1/subnet.proto index 63a2af4..c8764d8 100644 --- a/nebius/vpc/v1/subnet.proto +++ b/nebius/vpc/v1/subnet.proto @@ -3,9 +3,9 @@ syntax = "proto3"; package nebius.vpc.v1; import "buf/validate/validate.proto"; +import "nebius/annotations.proto"; import "nebius/common/v1/metadata.proto"; import "nebius/vpc/v1/pool.proto"; -import "nebius/annotations.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/vpc/v1"; option java_multiple_files = true; @@ -73,23 +73,21 @@ message SubnetCidr { // A CIDR block (e.g., "10.1.2.0/24") or a prefix length (e.g., "/24"). // If prefix length is specified, the CIDR block will be auto-allocated // from the network's available space. - string cidr = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", - expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIp() || this.isIpPrefix(true)" - }, - { - id: "string.ip_empty", - message: "value is empty, which is not a valid IP address", - expression: "this != ''" - } - ], - required: true - } - ]; + string cidr = 1 [(buf.validate.field) = { + cel: [ + { + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" + expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIp() || this.isIpPrefix(true)" + }, + { + id: "string.ip_empty" + message: "value is empty, which is not a valid IP address" + expression: "this != ''" + } + ] + required: true + }]; // Controls provisioning of IP addresses from the CIDR block . Defaults to AVAILABLE. AddressBlockState state = 2 [(field_behavior) = NON_EMPTY_DEFAULT]; @@ -97,7 +95,12 @@ message SubnetCidr { // Maximum mask length for an allocation from this block. Defaults to /32 for IPv4. int64 max_mask_length = 3 [ (field_behavior) = NON_EMPTY_DEFAULT, - (buf.validate.field) = { int64: { lte: 128, gte: 0 } } + (buf.validate.field) = { + int64: { + lte: 128 + gte: 0 + } + } ]; } diff --git a/nebius/vpc/v1/subnet_service.proto b/nebius/vpc/v1/subnet_service.proto index 6eb52e6..cc1f453 100644 --- a/nebius/vpc/v1/subnet_service.proto +++ b/nebius/vpc/v1/subnet_service.proto @@ -66,34 +66,30 @@ message ListSubnetsResponse { } message CreateSubnetRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; SubnetSpec spec = 2 [(buf.validate.field).required = true]; } message UpdateSubnetRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; SubnetSpec spec = 2; } diff --git a/nebius/vpc/v1/target_group.proto b/nebius/vpc/v1/target_group.proto index d793d70..37081a8 100644 --- a/nebius/vpc/v1/target_group.proto +++ b/nebius/vpc/v1/target_group.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.vpc.v1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/vpc/v1"; option java_multiple_files = true; diff --git a/nebius/vpc/v1/target_group_service.proto b/nebius/vpc/v1/target_group_service.proto index 5249a72..91265ee 100644 --- a/nebius/vpc/v1/target_group_service.proto +++ b/nebius/vpc/v1/target_group_service.proto @@ -26,17 +26,15 @@ message GetTargetGroupRequest { } message UpdateTargetGroupRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; TargetGroupSpec spec = 2; } diff --git a/nebius/vpc/v1alpha1/allocation.proto b/nebius/vpc/v1alpha1/allocation.proto index d8cff0f..7a964c6 100644 --- a/nebius/vpc/v1alpha1/allocation.proto +++ b/nebius/vpc/v1alpha1/allocation.proto @@ -44,8 +44,8 @@ message IPv4PrivateAllocationSpec { (buf.validate.field) = { cel: [ { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" expression: "this == '' || this.matches('^/([0-9]|[1-2][0-9]|3[0-2])$') || this.isIp(4) || this.isIpPrefix(4, true)" } ] @@ -74,8 +74,8 @@ message IPv4PublicAllocationSpec { (buf.validate.field) = { cel: [ { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" expression: "this == '' || this.matches('^/([0-9]|[1-2][0-9]|3[0-2])$') || this.isIp(4) || this.isIpPrefix(4, true)" } ] diff --git a/nebius/vpc/v1alpha1/allocation_service.proto b/nebius/vpc/v1alpha1/allocation_service.proto index f95b033..d7633f9 100644 --- a/nebius/vpc/v1alpha1/allocation_service.proto +++ b/nebius/vpc/v1alpha1/allocation_service.proto @@ -56,34 +56,30 @@ message ListAllocationsResponse { } message CreateAllocationRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ], - required: true - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + required: true + }]; AllocationSpec spec = 2 [(buf.validate.field).required = true]; } message UpdateAllocationRequest { - common.v1.ResourceMetadata metadata = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "metadata_name", - message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters.", - expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" - } - ] - } - ]; + common.v1.ResourceMetadata metadata = 1 [(buf.validate.field) = { + cel: [ + { + id: "metadata_name" + message: "'name' must start with a letter or digit, allow '-', '_', '.', '/', and have a length between 2 and 255 characters." + expression: "this.name.matches('^[a-zA-Z0-9][-_./a-zA-Z0-9]{1,254}$')" + } + ] + }]; AllocationSpec spec = 2; } diff --git a/nebius/vpc/v1alpha1/network_interface.proto b/nebius/vpc/v1alpha1/network_interface.proto index af653f9..fd4f9ee 100644 --- a/nebius/vpc/v1alpha1/network_interface.proto +++ b/nebius/vpc/v1alpha1/network_interface.proto @@ -13,21 +13,22 @@ option java_package = "ai.nebius.pub.vpc.v1alpha1"; // Describes the specification of a network interface. message NetworkInterfaceSpec { // Subnet ID - string subnet_id = 1 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + string subnet_id = 1 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // Interface name // Value of this field configures the name of the network interface inside VM's OS. // Longer values will persist in the specification but will be truncated to 15 symbols before being passed to VM configuration. - string name = 2 [ - (buf.validate.field) = { - string: { - min_len: 1, - max_len: 60, - pattern: "^[0-9a-z][0-9a-z-]*$" - }, - required: true + string name = 2 [(buf.validate.field) = { + string: { + min_len: 1 + max_len: 60 + pattern: "^[0-9a-z][0-9a-z-]*$" } - ]; + required: true + }]; // Private IPv4 address associated with the interface. IPAddress ip_address = 3 [(field_behavior) = MEANINGFUL_EMPTY_VALUE]; diff --git a/nebius/vpc/v1alpha1/pool.proto b/nebius/vpc/v1alpha1/pool.proto index 719d478..c041333 100644 --- a/nebius/vpc/v1alpha1/pool.proto +++ b/nebius/vpc/v1alpha1/pool.proto @@ -3,8 +3,8 @@ syntax = "proto3"; package nebius.vpc.v1alpha1; import "buf/validate/validate.proto"; -import "nebius/common/v1/metadata.proto"; import "nebius/annotations.proto"; +import "nebius/common/v1/metadata.proto"; option go_package = "github.com/nebius/gosdk/proto/nebius/vpc/v1alpha1"; option java_multiple_files = true; @@ -35,7 +35,10 @@ message PoolSpec { } // IP version for the Pool. - IpVersion version = 3 [(buf.validate.field).required = true, (field_behavior) = IMMUTABLE]; + IpVersion version = 3 [ + (buf.validate.field).required = true, + (field_behavior) = IMMUTABLE + ]; // CIDR blocks. repeated PoolCidr cidrs = 4; @@ -45,29 +48,33 @@ message PoolCidr { // CIDR block. // May be a prefix length (such as /24) for non-top-level pools // or a CIDR-formatted string (such as 10.1.2.0/24). - string cidr = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", - expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIpPrefix(true)" - }, - { - id: "string.ip_empty", - message: "value is empty, which is not a valid IP address", - expression: "this != ''" - } - ], - required: true - } - ]; + string cidr = 1 [(buf.validate.field) = { + cel: [ + { + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" + expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIpPrefix(true)" + }, + { + id: "string.ip_empty" + message: "value is empty, which is not a valid IP address" + expression: "this != ''" + } + ] + required: true + }]; // State of the Cidr. PoolCidrState state = 2 [(buf.validate.field).required = true]; // Maximum mask length for allocation from this IP pool including creation of sub-pools - int64 allowed_mask = 3 [(buf.validate.field) = { int64: { lte: 128, gte: 0 }, required: true }]; + int64 allowed_mask = 3 [(buf.validate.field) = { + int64: { + lte: 128 + gte: 0 + } + required: true + }]; } enum PoolCidrState { diff --git a/nebius/vpc/v1alpha1/subnet.proto b/nebius/vpc/v1alpha1/subnet.proto index d93a6ef..fe48c7b 100644 --- a/nebius/vpc/v1alpha1/subnet.proto +++ b/nebius/vpc/v1alpha1/subnet.proto @@ -55,29 +55,33 @@ message SubnetPoolSpec { message SubnetCidr { // CIDR block. // May be a prefix length (such as /24) or a CIDR-formatted string (such as 10.1.2.0/24). - string cidr = 1 [ - (buf.validate.field) = { - cel: [ - { - id: "string.valid_cidr", - message: "value must be a valid IP address, CIDR or mask", - expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIp() || this.isIpPrefix(true)" - }, - { - id: "string.ip_empty", - message: "value is empty, which is not a valid IP address", - expression: "this != ''" - } - ], - required: true - } - ]; + string cidr = 1 [(buf.validate.field) = { + cel: [ + { + id: "string.valid_cidr" + message: "value must be a valid IP address, CIDR or mask" + expression: "this == '' || this.matches('^/([0-9]|[1-9][0-9]|1[0-2][0-8])$') || this.isIp() || this.isIpPrefix(true)" + }, + { + id: "string.ip_empty" + message: "value is empty, which is not a valid IP address" + expression: "this != ''" + } + ] + required: true + }]; // State of the Cidr. PoolCidrState state = 2 [(buf.validate.field).required = true]; // Maximum mask length for allocation from this cidr - int64 allowed_mask = 3 [(buf.validate.field) = { int64: { lte: 128, gte: 0 }, required: true }]; + int64 allowed_mask = 3 [(buf.validate.field) = { + int64: { + lte: 128 + gte: 0 + } + required: true + }]; } message SubnetStatus {