Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
* [nebius.msp.postgresql.v1alpha1.BackupService](nebius/msp/postgresql/v1alpha1/backup_service.proto)
* [nebius.msp.postgresql.v1alpha1.ClusterService](nebius/msp/postgresql/v1alpha1/cluster_service.proto)
* quota-dispatcher.billing-cpl.api.nebius.cloud:443
* [nebius.common.v1.OperationService](nebius/common/v1/operation_service.proto)
* [nebius.quotas.v1.QuotaAllowanceService](nebius/quotas/v1/quota_allowance_service.proto)
* registry.api.nebius.cloud:443
* [nebius.common.v1.OperationService](nebius/common/v1/operation_service.proto)
Expand Down
10 changes: 10 additions & 0 deletions nebius/compute/v1/image.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package nebius.compute.v1;

import "nebius/common/v1/metadata.proto";
import "nebius/annotations.proto";
import "google/protobuf/timestamp.proto";

option go_package = "github.com/nebius/gosdk/proto/nebius/compute/v1";
option java_multiple_files = true;
Expand Down Expand Up @@ -62,4 +63,13 @@ message ImageStatus {

// Indicates whether there is an ongoing operation
bool reconciling = 5;

// Impossible create a disk using image family after the deprecation time, but still possible to create disk using image id.
message ImageFamilyDeprecationStatus {
google.protobuf.Timestamp deprecated_at = 1;

string message = 2;
}

ImageFamilyDeprecationStatus image_family_deprecation = 6;
}
7 changes: 6 additions & 1 deletion nebius/compute/v1/platform.proto
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,12 @@ message PlatformSpec {

string short_human_readable_name = 10;

int32 gpu_memory_gibibytes = 11;
int32 gpu_memory_gibibytes = 11 [
deprecated = true,
(field_deprecation_details) = { effective_at: "2026-02-10", description: "Use field 'gpu_memory_gigabytes' instead" }
];

int32 gpu_memory_gigabytes = 12;
}

message Preset {
Expand Down
46 changes: 42 additions & 4 deletions nebius/quotas/v1/quota_allowance_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,61 @@ package nebius.quotas.v1;

import "buf/validate/validate.proto";
import "nebius/annotations.proto";
import "nebius/common/v1/metadata.proto";
import "nebius/common/v1/operation.proto";
import "nebius/quotas/v1/quota_allowance.proto";

option go_package = "github.com/nebius/gosdk/proto/nebius/quotas/v1";
option java_multiple_files = true;
option java_outer_classname = "QuotaAllowanceServiceProto";
option java_package = "ai.nebius.pub.quotas.v1";

// Manages quota allowances for tenants and projects, including listing, retrieval, and lifecycle operations.
service QuotaAllowanceService {
option (api_service_name) = "quota-dispatcher.billing-cpl";

// Lists quotas by an ID of a Tenant or a Project.
// Lists quota allowances for the specified Tenant or Project.
rpc List(ListQuotaAllowancesRequest) returns (ListQuotaAllowancesResponse);

// Gets a quota by its ID.
// Gets a quota allowance by its ID.
rpc Get(GetQuotaAllowanceRequest) returns (QuotaAllowance);

// Gets a quota by an ID of a Tenant or a Project, its region, and name.
// Gets a quota allowance for a Tenant or Project by container ID, region, and name.
rpc GetByName(GetByNameRequest) returns (QuotaAllowance);

// Creates a quota allowance for a Project.
// If the quota already exists, its value is replaced with the provided one.
rpc Create(CreateQuotaAllowanceRequest) returns (common.v1.Operation);

// Updates a quota allowance by its ID.
rpc Update(UpdateQuotaAllowanceRequest) returns (common.v1.Operation);

// Deletes a quota by its ID.
// This is used to reset the quota value. It does not remove the quota entry.
rpc Delete(DeleteQuotaAllowanceRequest) returns (common.v1.Operation);
}

// Request to create a quota allowance with the specified spec and metadata.
message CreateQuotaAllowanceRequest {
common.v1.ResourceMetadata metadata = 1;

QuotaAllowanceSpec spec = 2 [(buf.validate.field).required = true];
}

// Request to update an existing quota allowance using its metadata and the new spec.
message UpdateQuotaAllowanceRequest {
common.v1.ResourceMetadata metadata = 1;

QuotaAllowanceSpec spec = 2 [(buf.validate.field).required = true];
}

// 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];
}

// 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];
Expand All @@ -36,19 +71,22 @@ message ListQuotaAllowancesRequest {
string page_token = 3;
}

// 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];
}

// Response containing quota allowances and pagination token.
message ListQuotaAllowancesResponse {
// List of quotas on this result page.
// List of quota allowances on this result page.
repeated QuotaAllowance items = 1;

// Listing continuation token for the next page of results.
string next_page_token = 2;
}

// 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];
Expand Down