syntax = "proto3"; option cc_enable_arenas = true; package Ydb.Scheme; option go_package = "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Scheme"; option java_package = "tech.ydb.scheme"; option java_outer_classname = "SchemeOperationProtos"; import "protos/ydb_common.proto"; import "protos/ydb_operation.proto"; // Create directory. // All intermediate directories must be created message MakeDirectoryRequest { Ydb.Operations.OperationParams operation_params = 1; string path = 2; } message MakeDirectoryResponse { Ydb.Operations.Operation operation = 1; } // Remove directory message RemoveDirectoryRequest { Ydb.Operations.OperationParams operation_params = 1; string path = 2; } message RemoveDirectoryResponse { Ydb.Operations.Operation operation = 1; } // List directory message ListDirectoryRequest { Ydb.Operations.OperationParams operation_params = 1; string path = 2; } message ListDirectoryResponse { // Holds ListDirectoryResult in case of successful call Ydb.Operations.Operation operation = 1; } message Permissions { // SID (Security ID) of user or group string subject = 1; repeated string permission_names = 2; } message Entry { enum Type { TYPE_UNSPECIFIED = 0; DIRECTORY = 1; TABLE = 2; PERS_QUEUE_GROUP = 3; DATABASE = 4; RTMR_VOLUME = 5; BLOCK_STORE_VOLUME = 6; COORDINATION_NODE = 7; COLUMN_STORE = 12; COLUMN_TABLE = 13; SEQUENCE = 15; REPLICATION = 16; TOPIC = 17; } // Name of scheme entry (dir2 of /dir1/dir2) string name = 1; // SID (Security ID) of user or group string owner = 2; Type type = 5; repeated Permissions effective_permissions = 6; repeated Permissions permissions = 7; // Size of entry in bytes. Currently filled for: // - TABLE; // - DATABASE. // Empty (zero) in other cases. uint64 size_bytes = 8; // Virtual timestamp when the object was created VirtualTimestamp created_at = 9; } message ListDirectoryResult { Entry self = 1; repeated Entry children = 2; } // Returns information about object with given path message DescribePathRequest { Ydb.Operations.OperationParams operation_params = 1; string path = 2; } message DescribePathResponse { // Holds DescribePathResult in case of DescribePathResult Ydb.Operations.Operation operation = 1; } message DescribePathResult { Entry self = 1; } message PermissionsAction { oneof action { // Grant permissions Permissions grant = 1; // Revoke permissions Permissions revoke = 2; // Rewrite permissions for given subject (last set win in case of multiple set for one subject) Permissions set = 3; // New owner for object string change_owner = 4; } } // Modify permissions of given object message ModifyPermissionsRequest { Ydb.Operations.OperationParams operation_params = 1; string path = 2; repeated PermissionsAction actions = 3; // Clear all permissions on the object for all subjects bool clear_permissions = 4; oneof inheritance { bool interrupt_inheritance = 5; } } message ModifyPermissionsResponse { Ydb.Operations.Operation operation = 1; }