forked from TrueCloudLab/frostfs-api
6b68940643
This commit: * moves Token message to service package; * updates token structure (new verb field, some renaming); * replaces VerificationHeader header with Token in object package; * removes no longer used VerificationHeader message.
6.5 KiB
6.5 KiB
Protocol Documentation
Table of Contents
-
- Messages
service/meta.proto
Message RequestMetaHeader
RequestMetaHeader contains information about request meta headers (should be embedded into message)
Field | Type | Label | Description |
---|---|---|---|
TTL | uint32 | TTL must be larger than zero, it decreased in every NeoFS Node | |
Epoch | uint64 | Epoch for user can be empty, because node sets epoch to the actual value | |
Version | uint32 | Version defines protocol version TODO: not used for now, should be implemented in future | |
Raw | bool | Raw determines whether the request is raw or not |
Message ResponseMetaHeader
ResponseMetaHeader contains meta information based on request processing by server (should be embedded into message)
Field | Type | Label | Description |
---|---|---|---|
Epoch | uint64 | Current NeoFS epoch on server | |
Version | uint32 | Version defines protocol version TODO: not used for now, should be implemented in future |
service/verify.proto
Message RequestVerificationHeader
RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message).
Field | Type | Label | Description |
---|---|---|---|
Signatures | RequestVerificationHeader.Signature | repeated | Signatures is a set of signatures of every passed NeoFS Node |
Token | Token | Token is a token of the session within which the request is sent |
Message RequestVerificationHeader.Signature
Field | Type | Label | Description |
---|---|---|---|
Sign | bytes | Sign is signature of the request or session key. | |
Peer | bytes | Peer is compressed public key used for signature. |
Message Token
User token granting rights for object manipulation
Field | Type | Label | Description |
---|---|---|---|
info | Token.Info | Info is a grouped information about token | |
Signature | bytes | Signature is a signature of session token information |
Message Token.Info
Field | Type | Label | Description |
---|---|---|---|
ID | bytes | ID is a token identifier. valid UUIDv4 represented in bytes | |
OwnerID | bytes | OwnerID is an owner of manipulation object | |
verb | Token.Info.Verb | Verb is a type of request for which the token is issued | |
Address | refs.Address | Address is an object address for which token is issued | |
Created | uint64 | Created is an initial epoch of token lifetime | |
ValidUntil | uint64 | ValidUntil is a last epoch of token lifetime | |
SessionKey | bytes | SessionKey is a public key of session key |
Token.Info.Verb
Verb is an enumeration of session request types
Name | Number | Description |
---|---|---|
Put | 0 | Put refers to object.Put RPC call |
Get | 1 | Get refers to object.Get RPC call |
Head | 2 | Head refers to object.Head RPC call |
Search | 3 | Search refers to object.Search RPC call |
Delete | 4 | Delete refers to object.Delete RPC call |
Range | 5 | Range refers to object.GetRange RPC call |
RangeHash | 6 | RangeHash refers to object.GetRangeHash RPC call |
Scalar Value Types
.proto Type | Notes | C++ Type | Java Type | Python Type |
---|---|---|---|---|
double | double | double | float | |
float | float | float | float | |
int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int |
int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long |
uint32 | Uses variable-length encoding. | uint32 | int | int/long |
uint64 | Uses variable-length encoding. | uint64 | long | int/long |
sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int |
sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long |
fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int |
fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long |
sfixed32 | Always four bytes. | int32 | int | int |
sfixed64 | Always eight bytes. | int64 | long | int/long |
bool | bool | boolean | boolean | |
string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode |
bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str |