frostfs-api/session/types.proto

84 lines
1.9 KiB
Protocol Buffer
Raw Normal View History

syntax = "proto3";
package neo.fs.v2.session;
option go_package = "github.com/nspcc-dev/neofs-api-go/v2/session/grpc;session";
option csharp_namespace = "NeoFS.API.v2.Session";
import "refs/types.proto";
// Context information for Session Tokens related to ObjectService requests
message ObjectSessionContext {
// Object request verbs
enum Verb {
// Unknown verb
VERB_UNSPECIFIED = 0;
// Refers to object.Put RPC call
PUT = 1;
// Refers to object.Get RPC call
GET = 2;
// Refers to object.Head RPC call
HEAD = 3;
// Refers to object.Search RPC call
SEARCH = 4;
// Refers to object.Delete RPC call
DELETE = 5;
// Refers to object.GetRange RPC call
RANGE = 6;
// Refers to object.GetRangeHash RPC call
RANGEHASH = 7;
}
// Verb is a type of request for which the token is issued
Verb verb = 1;
// Related Object address
neo.fs.v2.refs.Address address = 2;
}
// NeoFS session token.
message SessionToken {
// Session token body
message Body {
// ID is a token identifier. valid UUIDv4 represented in bytes
bytes id = 1;
// OwnerID carries identifier of the session initiator.
neo.fs.v2.refs.OwnerID owner_id = 2;
// Lifetime parameters of the token. Filed names taken from rfc7519.
message TokenLifetime {
// Expiration Epoch
uint64 exp = 1;
// Not valid before Epoch
uint64 nbf = 2;
// Issued at Epoch
uint64 iat = 3;
}
// Lifetime is a lifetime of the session
TokenLifetime lifetime = 3;
// SessionKey is a public key of session key
bytes session_key = 4;
// Carries context of the session.
oneof context {
// ObjectService session context.
ObjectSessionContext object = 5;
}
}
// Session Token body
Body body = 1;
// Signature is a signature of session token information
neo.fs.v2.refs.Signature signature = 2;
}