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
6 changes: 6 additions & 0 deletions nebius/ai/v1/endpoint.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package nebius.ai.v1;

import "buf/validate/validate.proto";
import "nebius/annotations.proto";
import "nebius/common/v1/error.proto";
import "nebius/common/v1/metadata.proto";
import "nebius/compute/v1/disk.proto";
import "nebius/compute/v1/instance.proto";
Expand Down Expand Up @@ -401,6 +402,11 @@ message EndpointStateDetails {

// Detailed human-readable description.
string message = 2;

// Structured error details for the failure, if available.
// For quota-related failures, `service_error.details.quota_failure`
// is populated with the quota violations.
common.v1.ServiceError service_error = 3;
}

// EndpointInstanceStatus represents the status of a endpoint instance.
Expand Down
12 changes: 12 additions & 0 deletions nebius/ai/v1/endpoint_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ service EndpointService {
// Starts an endpoint.
rpc Start(StartEndpointRequest) returns (common.v1.Operation);

// Restarts an endpoint.
rpc Restart(RestartEndpointRequest) returns (common.v1.Operation);

// Stops an endpoint.
rpc Stop(StopEndpointRequest) returns (common.v1.Operation);
}
Expand Down Expand Up @@ -104,6 +107,15 @@ message StartEndpointRequest {
];
}

message RestartEndpointRequest {
string id = 1 [
(buf.validate.field).required = true,
(nid) = {
resource: ["aiendpoint"]
}
];
}

message StopEndpointRequest {
string id = 1 [
(buf.validate.field).required = true,
Expand Down
6 changes: 6 additions & 0 deletions nebius/ai/v1/job.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import "buf/validate/validate.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "nebius/annotations.proto";
import "nebius/common/v1/error.proto";
import "nebius/common/v1/metadata.proto";
import "nebius/compute/v1/disk.proto";
import "nebius/compute/v1/instance.proto";
Expand Down Expand Up @@ -400,6 +401,11 @@ message JobStateDetails {

// Detailed human-readable description.
string message = 2;

// Structured error details for the failure, if available.
// For quota-related failures, `service_error.details.quota_failure`
// is populated with the quota violations.
common.v1.ServiceError service_error = 3;
}

// JobInstanceStatus represents the status of a job instance.
Expand Down
12 changes: 12 additions & 0 deletions nebius/ai/v1/job_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ service JobService {

// Cancels a job.
rpc Cancel(CancelJobRequest) returns (common.v1.Operation);

// Restarts a job.
rpc Restart(RestartJobRequest) returns (common.v1.Operation);
}

message GetJobRequest {
Expand Down Expand Up @@ -101,6 +104,15 @@ message CancelJobRequest {
];
}

message RestartJobRequest {
string id = 1 [
(buf.validate.field).required = true,
(nid) = {
resource: ["aijob"]
}
];
}

message ListJobsResponse {
repeated Job items = 1;

Expand Down
5 changes: 4 additions & 1 deletion nebius/capacity/v1/capacity_block_group.proto
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,10 @@ message CapacityBlockGroup {
common.v1.ResourceMetadata metadata = 1 [
(buf.validate.field).required = true,
(nid) = {
parent_resource: ["tenant"]
parent_resource: [
"tenant",
"aitenant"
]
}
];

Expand Down
10 changes: 8 additions & 2 deletions nebius/capacity/v1/capacity_block_group_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,10 @@ message GetCapacityBlockGroupByResourceAffinityRequest {
string parent_id = 1 [
(buf.validate.field).required = true,
(nid) = {
resource: ["tenant"]
resource: [
"tenant",
"aitenant"
]
}
];

Expand All @@ -65,7 +68,10 @@ message ListCapacityBlockGroupsRequest {
string parent_id = 1 [
(buf.validate.field).required = true,
(nid) = {
resource: ["tenant"]
resource: [
"tenant",
"aitenant"
]
}
];

Expand Down
5 changes: 4 additions & 1 deletion nebius/capacity/v1/capacity_interval.proto
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ message CapacityIntervalStatus {

// Tenant ID for which the Capacity Interval is created.
string container_id = 1 [(nid) = {
resource: ["tenant"]
resource: [
"tenant",
"aitenant"
]
}];

// Name of the region where the Capacity Interval is created.
Expand Down
5 changes: 5 additions & 0 deletions nebius/mk8s/v1/node_group.proto
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ message NodeGroupSpec {
id: "node_group_spec.nvlink_autoscaling"
message: "autoscaling cannot be used for a node group with NVLink"
expression: "!(has(this.template.nvlink) && has(this.autoscaling))"
},
{
id: "node_group_spec.nvlink_max_surge"
message: "max_surge must be 0 for a node group with NVLink"
expression: "!has(this.template.nvlink) || !has(this.strategy.max_surge) || (has(this.strategy.max_surge.count) && this.strategy.max_surge.count == 0) || (has(this.strategy.max_surge.percent) && this.strategy.max_surge.percent == 0)"
}
]
};
Expand Down
7 changes: 6 additions & 1 deletion nebius/vpc/v1alpha1/network_interface.proto
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ option java_package = "ai.nebius.pub.vpc.v1alpha1";
message NetworkInterfaceSpec {
// Subnet ID
string subnet_id = 1 [
(buf.validate.field).required = true,
(field_behavior) = IMMUTABLE,
(nid) = {
resource: ["vpcsubnet"]
Expand Down Expand Up @@ -97,6 +96,12 @@ message NetworkInterfaceStatus {

// MAC address
string mac_address = 7;

// Subnet ID actually used by the network interface.
// Equals spec.subnet_id when it is provided; otherwise contains the resolved default subnet ID.
string subnet_id = 10 [(nid) = {
resource: ["vpcsubnet"]
}];
}

message IPAddressStatus {
Expand Down