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
2 changes: 2 additions & 0 deletions endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
* [nebius.audit.v2.AuditEventExportService](nebius/audit/v2/audit_event_export_service.proto)
* [nebius.audit.v2.AuditEventService](nebius/audit/v2/audit_event_service.proto)
* [nebius.common.v1.OperationService](nebius/common/v1/operation_service.proto)
* capacity-advisor.billing-cpl.api.nebius.cloud:443
* [nebius.capacity.v1.ResourceAdviceService](nebius/capacity/v1/resource_advice_service.proto)
* capacity-blocks.billing-cpl.api.nebius.cloud:443
* [nebius.capacity.v1.CapacityBlockGroupService](nebius/capacity/v1/capacity_block_group_service.proto)
* [nebius.capacity.v1.CapacityIntervalService](nebius/capacity/v1/capacity_interval_service.proto)
Expand Down
7 changes: 1 addition & 6 deletions nebius/ai/v1/endpoint.proto
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,7 @@ message EndpointSpec {
// Source of the volume mount.
//
// Can be a name of an ID of Nebius Storage bucket or filesystem.
string source = 1 [(nid) = {
resource: [
"computefilesystem",
"storagebucket"
]
}];
string source = 1;

// Path inside the source volume.
//
Expand Down
7 changes: 1 addition & 6 deletions nebius/ai/v1/job.proto
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,7 @@ message JobSpec {
// Source of the volume mount.
//
// Can be a name of an ID of Nebius Storage bucket or filesystem.
string source = 1 [(nid) = {
resource: [
"computefilesystem",
"storagebucket"
]
}];
string source = 1;

// Path inside the source volume.
//
Expand Down
122 changes: 122 additions & 0 deletions nebius/capacity/v1/resource_advice.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
syntax = "proto3";

package nebius.capacity.v1;

import "buf/validate/validate.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/capacity/v1";
option java_multiple_files = true;
option java_outer_classname = "ResourceAdviceProto";
option java_package = "ai.nebius.pub.capacity.v1";

// ResourceAdvice is a virtual resource representing the availability
// of a specific technical configuration in a specific scope.
message ResourceAdvice {
option (resource_behavior) = UNNAMED;

// Standard metadata. parent_id is the User's Tenant/Project NID.
common.v1.ResourceMetadata metadata = 1 [
(buf.validate.field).required = true,
(nid) = {
parent_resource: ["tenant"]
}
];

// Identifiers for the capacity scope and technical configuration.
ResourceAdviceSpec spec = 2 [(buf.validate.field).required = true];

// The current state of availability, including quotas and data freshness.
ResourceAdviceStatus status = 3 [(field_behavior) = OUTPUT_ONLY];
}

// Resource Advice specification.
message ResourceAdviceSpec {
// Geographical region identifier.
string region = 1 [(field_behavior) = IMMUTABLE];

// Data center fabric or cluster identifier.
string fabric = 2 [(field_behavior) = IMMUTABLE];

// Details specific to the type of resource being advised.
oneof resource_details {
ComputeInstanceDetails compute_instance = 10;
}
}

// Details for Compute/GPU capacity.
message ComputeInstanceDetails {
// Preset details.
message Preset {
// All resources existing in a preset.
message Resources {
// Number of vCPUs.
int32 vcpu_count = 1;

// Memory size.
int32 memory_gibibytes = 2;

// Number of GPU cores.
int32 gpu_count = 3;
}

// Name of the preset (e.g., "8gpu-128vcpu-1600gb").
string name = 1;

// Resources for the specified preset.
Resources resources = 2;
}

// Specific platform. Example: "gpu-h200-sxm".
string platform = 1 [(field_behavior) = IMMUTABLE];

// The specific VM preset this advice applies to.
Preset preset = 2 [(field_behavior) = IMMUTABLE];

// GPU memory size.
int32 gpu_memory_gigabytes = 3;
}

// Resource Advice status.
message ResourceAdviceStatus {
// Shows the available resources.
message Availability {
// Shows if data could be trusted.
enum DataState {
// Shouldn't ever happen.
DATA_STATE_UNSPECIFIED = 0;

// Data is relevant and reflects current state of the system.
DATA_STATE_FRESH = 1;

// Data is not relevant anymore as it was fetched long time ago.
DATA_STATE_STALE = 2;

// Failed to retrieve data.
DATA_STATE_UNKNOWN = 10;
}

// Reflects relevance of the data.
DataState data_state = 1;

// Current units that can be allocated immediately (clipped by quota).
uint32 available = 2;

// The user's maximum quota limit for this resource type.
uint32 limit = 4;

// The timestamp of the actual infrastructure measurement.
google.protobuf.Timestamp effective_at = 10;
}

// Capacity for reserved/guaranteed resources through Capacity Blocks.
Availability reserved = 1;

// Capacity for regular on-demand resources.
Availability on_demand = 2;

// Capacity for preemptible/spot resources.
Availability preemptible = 3;
}
49 changes: 49 additions & 0 deletions nebius/capacity/v1/resource_advice_service.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
syntax = "proto3";

package nebius.capacity.v1;

import "buf/validate/validate.proto";
import "nebius/annotations.proto";
import "nebius/capacity/v1/resource_advice.proto";

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

// ResourceAdvisorService provides insights into capacity availability for various resources.
// It helps users understand where they can launch instances or allocate storage based on their
// quotas and the current physical buffers in the data centers.
service ResourceAdviceService {
option (api_service_name) = "capacity-advisor.billing-cpl";

// Lists resource advice resources.
// Supports filtering by region, resource type, or platform.
rpc List(ListResourceAdviceRequest) returns (ListResourceAdviceResponse);
}

message ListResourceAdviceRequest {
// Tenant NID.
// Required to calculate 'available' numbers clipped by user quotas.
string parent_id = 1 [
(buf.validate.field).required = true,
(nid) = {
resource: ["tenant"]
}
];

// Maximum number of items to return.
int64 page_size = 2;

// Page token for pagination.
string page_token = 3;
}

message ListResourceAdviceResponse {
// List of resource advice items matching the request.
// Each item represents a unique combination of Resource Type + Tier/Preset.
repeated ResourceAdvice items = 1;

// Token for retrieving the next page of results.
string next_page_token = 2;
}
3 changes: 3 additions & 0 deletions nebius/compute/v1/disk.proto
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ message DiskSpec {

// Defines how data on the disk is encrypted. By default, no encryption is applied.
DiskEncryption disk_encryption = 11 [(field_behavior) = IMMUTABLE];

// Prevents deletion whilst set
bool forbid_deletion = 12;
}

message SourceImageFamily {
Expand Down
3 changes: 3 additions & 0 deletions nebius/compute/v1/filesystem.proto
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ message FilesystemSpec {
(buf.validate.field).required = true,
(field_behavior) = IMMUTABLE
];

// Prevents deletion whilst set
bool forbid_deletion = 7;
}

message FilesystemStatus {
Expand Down
Loading