Merge pull request #5 from nspcc-dev/documentation

Update proto documentation
This commit is contained in:
Alex Vanin 2019-11-21 11:28:34 +03:00 committed by GitHub
commit 5aea5b42d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 511 additions and 271 deletions

View file

@ -32,6 +32,7 @@ type BalanceRequest struct {
// OwnerID is a wallet address // OwnerID is a wallet address
OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -19,6 +19,7 @@ message BalanceRequest {
// OwnerID is a wallet address // OwnerID is a wallet address
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 2; uint32 TTL = 2;
} }

View file

@ -100,6 +100,7 @@ type GetRequest struct {
// OwnerID is a wallet address // OwnerID is a wallet address
OwnerID OwnerID `protobuf:"bytes,2,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` OwnerID OwnerID `protobuf:"bytes,2,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -143,7 +144,7 @@ func (m *GetRequest) GetTTL() uint32 {
} }
type GetResponse struct { type GetResponse struct {
// Item is cheque with meta information // Withdraw is cheque with meta information
Withdraw *Item `protobuf:"bytes,1,opt,name=Withdraw,proto3" json:"Withdraw,omitempty"` Withdraw *Item `protobuf:"bytes,1,opt,name=Withdraw,proto3" json:"Withdraw,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -198,6 +199,7 @@ type PutRequest struct {
// Signature is a signature of the sent request // Signature is a signature of the sent request
Signature []byte `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,omitempty"` Signature []byte `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,6,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,6,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -302,6 +304,7 @@ type ListRequest struct {
// OwnerID is a wallet address // OwnerID is a wallet address
OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -345,7 +348,7 @@ func (m *ListRequest) GetTTL() uint32 {
} }
type ListResponse struct { type ListResponse struct {
// Item is a set of cheques with meta information // Items is a set of cheques with meta information
Items []*Item `protobuf:"bytes,1,rep,name=Items,proto3" json:"Items,omitempty"` Items []*Item `protobuf:"bytes,1,rep,name=Items,proto3" json:"Items,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -398,6 +401,7 @@ type DeleteRequest struct {
// Signature is a signature of the sent request // Signature is a signature of the sent request
Signature []byte `protobuf:"bytes,4,opt,name=Signature,proto3" json:"Signature,omitempty"` Signature []byte `protobuf:"bytes,4,opt,name=Signature,proto3" json:"Signature,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,5,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,5,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -38,11 +38,12 @@ message GetRequest {
// OwnerID is a wallet address // OwnerID is a wallet address
bytes OwnerID = 2 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; bytes OwnerID = 2 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 3; uint32 TTL = 3;
} }
message GetResponse { message GetResponse {
// Item is cheque with meta information // Withdraw is cheque with meta information
Item Withdraw = 1; Item Withdraw = 1;
} }
@ -58,6 +59,7 @@ message PutRequest {
// Signature is a signature of the sent request // Signature is a signature of the sent request
bytes Signature = 5; bytes Signature = 5;
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 6; uint32 TTL = 6;
} }
message PutResponse { message PutResponse {
@ -69,11 +71,12 @@ message ListRequest {
// OwnerID is a wallet address // OwnerID is a wallet address
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 2; uint32 TTL = 2;
} }
message ListResponse { message ListResponse {
// Item is a set of cheques with meta information // Items is a set of cheques with meta information
repeated Item Items = 1; repeated Item Items = 1;
} }
@ -87,6 +90,7 @@ message DeleteRequest {
// Signature is a signature of the sent request // Signature is a signature of the sent request
bytes Signature = 4; bytes Signature = 4;
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 5; uint32 TTL = 5;
} }

View file

@ -33,6 +33,7 @@ type Request struct {
// Info contains information about node // Info contains information about node
Info NodeInfo `protobuf:"bytes,2,opt,name=info,proto3" json:"info"` Info NodeInfo `protobuf:"bytes,2,opt,name=info,proto3" json:"info"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -21,5 +21,6 @@ message Request {
// Info contains information about node // Info contains information about node
bootstrap.NodeInfo info = 2 [(gogoproto.nullable) = false]; bootstrap.NodeInfo info = 2 [(gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 3; uint32 TTL = 3;
} }

View file

@ -40,6 +40,7 @@ type PutRequest struct {
// Signature of the user (owner id) // Signature of the user (owner id)
Signature []byte `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,omitempty"` Signature []byte `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,6,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,6,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -144,6 +145,7 @@ type DeleteRequest struct {
// CID (container id) is a SHA256 hash of the container structure // CID (container id) is a SHA256 hash of the container structure
CID CID `protobuf:"bytes,1,opt,name=CID,proto3,customtype=CID" json:"CID"` CID CID `protobuf:"bytes,1,opt,name=CID,proto3,customtype=CID" json:"CID"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
// Signature of the container owner // Signature of the container owner
Signature []byte `protobuf:"bytes,3,opt,name=Signature,proto3" json:"Signature,omitempty"` Signature []byte `protobuf:"bytes,3,opt,name=Signature,proto3" json:"Signature,omitempty"`
@ -236,6 +238,7 @@ type GetRequest struct {
// CID (container id) is a SHA256 hash of the container structure // CID (container id) is a SHA256 hash of the container structure
CID CID `protobuf:"bytes,1,opt,name=CID,proto3,customtype=CID" json:"CID"` CID CID `protobuf:"bytes,1,opt,name=CID,proto3,customtype=CID" json:"CID"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -326,6 +329,7 @@ type ListRequest struct {
// OwnerID is a wallet address // OwnerID is a wallet address
OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -43,6 +43,7 @@ message PutRequest {
bytes Signature = 5; bytes Signature = 5;
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 6; uint32 TTL = 6;
} }
@ -56,6 +57,7 @@ message DeleteRequest {
bytes CID = 1 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false]; bytes CID = 1 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 2; uint32 TTL = 2;
// Signature of the container owner // Signature of the container owner
@ -72,6 +74,7 @@ message GetRequest {
bytes CID = 1 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false]; bytes CID = 1 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 2; uint32 TTL = 2;
} }
@ -85,6 +88,7 @@ message ListRequest {
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 2; uint32 TTL = 2;
} }

View file

@ -26,9 +26,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// The Container service definition. // The Container service definition.
type Container struct { type Container struct {
OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` // OwnerID is a wallet address.
Salt UUID `protobuf:"bytes,2,opt,name=Salt,proto3,customtype=UUID" json:"Salt"` OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
Capacity uint64 `protobuf:"varint,3,opt,name=Capacity,proto3" json:"Capacity,omitempty"` // Salt is a nonce for unique container id calculation.
Salt UUID `protobuf:"bytes,2,opt,name=Salt,proto3,customtype=UUID" json:"Salt"`
// Capacity defines amount of data that can be stored in the container (doesn't used for now).
Capacity uint64 `protobuf:"varint,3,opt,name=Capacity,proto3" json:"Capacity,omitempty"`
// Rules define storage policy for the object inside the container.
Rules netmap.PlacementRule `protobuf:"bytes,4,opt,name=Rules,proto3" json:"Rules"` Rules netmap.PlacementRule `protobuf:"bytes,4,opt,name=Rules,proto3" json:"Rules"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -9,8 +9,12 @@ option (gogoproto.stable_marshaler_all) = true;
// The Container service definition. // The Container service definition.
message Container { message Container {
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; // OwnerID is a wallet address. // OwnerID is a wallet address.
bytes Salt = 2 [(gogoproto.customtype) = "UUID", (gogoproto.nullable) = false]; // Salt is a nonce for unique container id calculation. bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
uint64 Capacity = 3; // Capacity defines amount of data that can be stored in the container (doesn't used for now). // Salt is a nonce for unique container id calculation.
netmap.PlacementRule Rules = 4 [(gogoproto.nullable) = false]; // Rules define storage policy for the object inside the container. bytes Salt = 2 [(gogoproto.customtype) = "UUID", (gogoproto.nullable) = false];
// Capacity defines amount of data that can be stored in the container (doesn't used for now).
uint64 Capacity = 3;
// Rules define storage policy for the object inside the container.
netmap.PlacementRule Rules = 4 [(gogoproto.nullable) = false];
} }

View file

@ -87,7 +87,7 @@ Balance returns current balance status of the NeoFS user
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="accounting.BalanceResponse"></a> <a name="accounting.BalanceResponse"></a>
@ -362,7 +362,7 @@ Delete allows user to remove unused cheque
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| MessageID | [bytes](#bytes) | | MessageID is a nonce for uniq request (UUIDv4) | | MessageID | [bytes](#bytes) | | MessageID is a nonce for uniq request (UUIDv4) |
| Signature | [bytes](#bytes) | | Signature is a signature of the sent request | | Signature | [bytes](#bytes) | | Signature is a signature of the sent request |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="accounting.DeleteResponse"></a> <a name="accounting.DeleteResponse"></a>
@ -382,7 +382,7 @@ DeleteResponse is empty
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| ID | [bytes](#bytes) | | ID is cheque identifier | | ID | [bytes](#bytes) | | ID is cheque identifier |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="accounting.GetResponse"></a> <a name="accounting.GetResponse"></a>
@ -393,7 +393,7 @@ DeleteResponse is empty
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Withdraw | [Item](#accounting.Item) | | Item is cheque with meta information | | Withdraw | [Item](#accounting.Item) | | Withdraw is cheque with meta information |
<a name="accounting.Item"></a> <a name="accounting.Item"></a>
@ -420,7 +420,7 @@ DeleteResponse is empty
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="accounting.ListResponse"></a> <a name="accounting.ListResponse"></a>
@ -431,7 +431,7 @@ DeleteResponse is empty
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Items | [Item](#accounting.Item) | repeated | Item is a set of cheques with meta information | | Items | [Item](#accounting.Item) | repeated | Items is a set of cheques with meta information |
<a name="accounting.PutRequest"></a> <a name="accounting.PutRequest"></a>
@ -447,7 +447,7 @@ DeleteResponse is empty
| Height | [uint64](#uint64) | | Height is the neo blockchain height until the cheque is valid | | Height | [uint64](#uint64) | | Height is the neo blockchain height until the cheque is valid |
| MessageID | [bytes](#bytes) | | MessageID is a nonce for uniq request (UUIDv4) | | MessageID | [bytes](#bytes) | | MessageID is a nonce for uniq request (UUIDv4) |
| Signature | [bytes](#bytes) | | Signature is a signature of the sent request | | Signature | [bytes](#bytes) | | Signature is a signature of the sent request |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="accounting.PutResponse"></a> <a name="accounting.PutResponse"></a>

View file

@ -62,7 +62,7 @@ Process is method that allows to register node in the network and receive actual
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| type | [int32](#int32) | | Type is NodeType, can be InnerRingNode (type=1) or StorageNode (type=2) | | type | [int32](#int32) | | Type is NodeType, can be InnerRingNode (type=1) or StorageNode (type=2) |
| info | [NodeInfo](#bootstrap.NodeInfo) | | Info contains information about node | | info | [NodeInfo](#bootstrap.NodeInfo) | | Info contains information about node |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<!-- end messages --> <!-- end messages -->

View file

@ -92,7 +92,7 @@ List returns all user's containers
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| CID | [bytes](#bytes) | | CID (container id) is a SHA256 hash of the container structure | | CID | [bytes](#bytes) | | CID (container id) is a SHA256 hash of the container structure |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Signature | [bytes](#bytes) | | Signature of the container owner | | Signature | [bytes](#bytes) | | Signature of the container owner |
@ -113,7 +113,7 @@ via consensus in inner ring nodes
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| CID | [bytes](#bytes) | | CID (container id) is a SHA256 hash of the container structure | | CID | [bytes](#bytes) | | CID (container id) is a SHA256 hash of the container structure |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="container.GetResponse"></a> <a name="container.GetResponse"></a>
@ -136,7 +136,7 @@ via consensus in inner ring nodes
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="container.ListResponse"></a> <a name="container.ListResponse"></a>
@ -163,7 +163,7 @@ via consensus in inner ring nodes
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| rules | [netmap.PlacementRule](#netmap.PlacementRule) | | Rules define storage policy for the object inside the container. | | rules | [netmap.PlacementRule](#netmap.PlacementRule) | | Rules define storage policy for the object inside the container. |
| Signature | [bytes](#bytes) | | Signature of the user (owner id) | | Signature | [bytes](#bytes) | | Signature of the user (owner id) |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="container.PutResponse"></a> <a name="container.PutResponse"></a>

View file

@ -147,10 +147,10 @@ calculated for XORed data.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) | | Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Token | [session.Token](#session.Token) | | Token with session public key and user's signature | | Token | [session.Token](#session.Token) | | Token with session public key and user's signature |
@ -170,11 +170,11 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) | | Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) |
| Ranges | [Range](#object.Range) | repeated | Ranges of object's payload to calculate homomorphic hash | | Ranges | [Range](#object.Range) | repeated | Ranges of object's payload to calculate homomorphic hash |
| Salt | [bytes](#bytes) | | Salt is used to XOR object's payload ranges before hashing, it can be nil | | Salt | [bytes](#bytes) | | Salt is used to XOR object's payload ranges before hashing, it can be nil |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="object.GetRangeHashResponse"></a> <a name="object.GetRangeHashResponse"></a>
@ -185,7 +185,7 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Hashes | [bytes](#bytes) | repeated | Homomorphic hashes of all ranges | | Hashes | [bytes](#bytes) | repeated | Hashes is a homomorphic hashes of all ranges |
<a name="object.GetRangeRequest"></a> <a name="object.GetRangeRequest"></a>
@ -196,10 +196,10 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) | | Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) |
| Ranges | [Range](#object.Range) | repeated | Ranges of object's payload to return | | Ranges | [Range](#object.Range) | repeated | Ranges of object's payload to return |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="object.GetRangeResponse"></a> <a name="object.GetRangeResponse"></a>
@ -221,9 +221,9 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) | | Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="object.GetResponse"></a> <a name="object.GetResponse"></a>
@ -246,10 +246,10 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch should be empty on user side, node sets epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) | | Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) |
| FullHeaders | [bool](#bool) | | FullHeaders can be set true for extended headers in the object | | FullHeaders | [bool](#bool) | | FullHeaders can be set true for extended headers in the object |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="object.HeadResponse"></a> <a name="object.HeadResponse"></a>
@ -283,9 +283,9 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Object | [Object](#object.Object) | | Object with at least container id and owner id fields | | Object | [Object](#object.Object) | | Object with at least container id and owner id fields |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Token | [session.Token](#session.Token) | | Token with session public key and user's signature | | Token | [session.Token](#session.Token) | | Token with session public key and user's signature |
@ -308,11 +308,11 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value | | Epoch | [uint64](#uint64) | | Epoch is set by user to 0, node set epoch to the actual value Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
| Version | [uint32](#uint32) | | Version of search query format | | Version | [uint32](#uint32) | | Version of search query format |
| ContainerID | [bytes](#bytes) | | ContainerID for searching the object | | ContainerID | [bytes](#bytes) | | ContainerID for searching the object |
| Query | [bytes](#bytes) | | Query in the binary serialized format | | Query | [bytes](#bytes) | | Query in the binary serialized format |
| TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node | | TTL | [uint32](#uint32) | | TTL must be larger than zero, it decreased in every neofs-node Deprecated: will be replaced with RequestMetaHeader (see develop branch) |
<a name="object.SearchResponse"></a> <a name="object.SearchResponse"></a>
@ -348,8 +348,8 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| UnixTime | [int64](#int64) | | Date of creation in unixtime format | | UnixTime | [int64](#int64) | | UnixTime is a date of creation in unixtime format |
| Epoch | [uint64](#uint64) | | Date of creation in NeoFS epochs | | Epoch | [uint64](#uint64) | | Epoch is a date of creation in NeoFS epochs |
<a name="object.Header"></a> <a name="object.Header"></a>
@ -361,12 +361,12 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Link | [Link](#object.Link) | | Link to other objects | | Link | [Link](#object.Link) | | Link to other objects |
| Redirect | [refs.Address](#refs.Address) | | RedirectNot used yet | | Redirect | [refs.Address](#refs.Address) | | Redirect not used yet |
| UserHeader | [UserHeader](#object.UserHeader) | | UserHeader defined by user | | UserHeader | [UserHeader](#object.UserHeader) | | UserHeader is a set of KV headers defined by user |
| Transform | [Transform](#object.Transform) | | Transform defines transform operation (e.g. payload split) | | Transform | [Transform](#object.Transform) | | Transform defines transform operation (e.g. payload split) |
| Tombstone | [Tombstone](#object.Tombstone) | | Tombstone header that set up in deleted objects | | Tombstone | [Tombstone](#object.Tombstone) | | Tombstone header that set up in deleted objects |
| Verify | [session.VerificationHeader](#session.VerificationHeader) | | Verify header that contains session public key and user's signature | | Verify | [session.VerificationHeader](#session.VerificationHeader) | | Verify header that contains session public key and user's signature |
| HomoHash | [bytes](#bytes) | | Homomorphic hash of original object payload | | HomoHash | [bytes](#bytes) | | HomoHash is a homomorphic hash of original object payload |
| PayloadChecksum | [bytes](#bytes) | | PayloadChecksum of actual object's payload | | PayloadChecksum | [bytes](#bytes) | | PayloadChecksum of actual object's payload |
| Integrity | [IntegrityHeader](#object.IntegrityHeader) | | Integrity header with checksum of all above headers in the object | | Integrity | [IntegrityHeader](#object.IntegrityHeader) | | Integrity header with checksum of all above headers in the object |
| StorageGroup | [StorageGroup](#object.StorageGroup) | | StorageGroup contains meta information for the data audit | | StorageGroup | [StorageGroup](#object.StorageGroup) | | StorageGroup contains meta information for the data audit |
@ -380,8 +380,8 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| HeadersChecksum | [bytes](#bytes) | | Checksum of all above headers in the object | | HeadersChecksum | [bytes](#bytes) | | HeadersChecksum is a checksum of all above headers in the object |
| ChecksumSignature | [bytes](#bytes) | | User's signature of checksum to verify if it is correct | | ChecksumSignature | [bytes](#bytes) | | ChecksumSignature is an user's signature of checksum to verify if it is correct |
<a name="object.Link"></a> <a name="object.Link"></a>
@ -392,8 +392,8 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| type | [Link.Type](#object.Link.Type) | | Link type | | type | [Link.Type](#object.Link.Type) | | Type of link |
| ID | [bytes](#bytes) | | Object id | | ID | [bytes](#bytes) | | ID is an object identifier, is a valid UUIDv4 |
<a name="object.Object"></a> <a name="object.Object"></a>
@ -404,9 +404,9 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| SystemHeader | [SystemHeader](#object.SystemHeader) | | System header | | SystemHeader | [SystemHeader](#object.SystemHeader) | | SystemHeader describes system header |
| Headers | [Header](#object.Header) | repeated | Extended headers | | Headers | [Header](#object.Header) | repeated | Headers describes a set of an extended headers |
| Payload | [bytes](#bytes) | | Object's payload | | Payload | [bytes](#bytes) | | Payload is an object's payload |
<a name="object.Range"></a> <a name="object.Range"></a>
@ -429,9 +429,9 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| ValidationDataSize | [uint64](#uint64) | | Size of the all object's payloads included into storage group | | ValidationDataSize | [uint64](#uint64) | | ValidationDataSize is size of the all object's payloads included into storage group |
| ValidationHash | [bytes](#bytes) | | Homomorphic hash of all object's payloads included into storage group | | ValidationHash | [bytes](#bytes) | | ValidationHash is homomorphic hash of all object's payloads included into storage group |
| lifetime | [StorageGroup.Lifetime](#object.StorageGroup.Lifetime) | | Time until storage group is valid | | lifetime | [StorageGroup.Lifetime](#object.StorageGroup.Lifetime) | | Lifetime is time until storage group is valid |
<a name="object.StorageGroup.Lifetime"></a> <a name="object.StorageGroup.Lifetime"></a>
@ -442,8 +442,8 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| unit | [StorageGroup.Lifetime.Unit](#object.StorageGroup.Lifetime.Unit) | | Lifetime type | | unit | [StorageGroup.Lifetime.Unit](#object.StorageGroup.Lifetime.Unit) | | Unit is lifetime type |
| Value | [int64](#int64) | | Lifetime value | | Value | [int64](#int64) | | Value for lifetime |
<a name="object.SystemHeader"></a> <a name="object.SystemHeader"></a>
@ -455,11 +455,11 @@ in distributed system.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Version | [uint64](#uint64) | | Version of the object structure | | Version | [uint64](#uint64) | | Version of the object structure |
| PayloadLength | [uint64](#uint64) | | Object payload length | | PayloadLength | [uint64](#uint64) | | PayloadLength is an object payload length |
| ID | [bytes](#bytes) | | ObjectID is a UUID | | ID | [bytes](#bytes) | | ID is an object identifier, is a valid UUIDv4 |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address | | OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| CID | [bytes](#bytes) | | ContainerID is a SHA256 hash of the container structure | | CID | [bytes](#bytes) | | CID is a SHA256 hash of the container structure (container identifier) |
| CreatedAt | [CreationPoint](#object.CreationPoint) | | Timestamp of object creation | | CreatedAt | [CreationPoint](#object.CreationPoint) | | CreatedAt is a timestamp of object creation |
<a name="object.Tombstone"></a> <a name="object.Tombstone"></a>
@ -521,9 +521,9 @@ in distributed system.
| Name | Number | Description | | Name | Number | Description |
| ---- | ------ | ----------- | | ---- | ------ | ----------- |
| Unlimited | 0 | Storage group always valid | | Unlimited | 0 | Unlimited set if storage group always valid |
| NeoFSEpoch | 1 | Storage group is valid until lifetime NeoFS epoch | | NeoFSEpoch | 1 | NeoFSEpoch set if storage group is valid until lifetime NeoFS epoch |
| UnixTime | 2 | Storage group is valid until lifetime unix timestamp | | UnixTime | 2 | UnixTime set if storage group is valid until lifetime unix timestamp |
@ -535,9 +535,9 @@ in distributed system.
| Name | Number | Description | | Name | Number | Description |
| ---- | ------ | ----------- | | ---- | ------ | ----------- |
| Unknown | 0 | | | Unknown | 0 | |
| Split | 1 | Object created after payload split | | Split | 1 | Split sets when object created after payload split |
| Sign | 2 | Object created after re-signing (doesn't used) | | Sign | 2 | Sign sets when object created after re-signing (doesn't used) |
| Mould | 3 | Object created after filling missing headers in the object | | Mould | 3 | Mould sets when object created after filling missing headers in the object |
<!-- end enums --> <!-- end enums -->

View file

@ -52,12 +52,12 @@
<a name="query.Filter.Type"></a> <a name="query.Filter.Type"></a>
### Filter.Type ### Filter.Type
Type can be Exact or Regex
| Name | Number | Description | | Name | Number | Description |
| ---- | ------ | ----------- | | ---- | ------ | ----------- |
| Exact | 0 | | | Exact | 0 | Exact sets when value of filter should be equal to the header value |
| Regex | 1 | | | Regex | 1 | Regex sets when value of filter should match the header value by the regular expression |
<!-- end enums --> <!-- end enums -->

View file

@ -30,7 +30,7 @@ Address of object (container id + object id)
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| ObjectID | [bytes](#bytes) | | ObjectID is an object identifier | | ObjectID | [bytes](#bytes) | | ObjectID is an object identifier, valid UUIDv4 represented in bytes |
| CID | [bytes](#bytes) | | CID is container identifier | | CID | [bytes](#bytes) | | CID is container identifier |
<!-- end messages --> <!-- end messages -->

View file

@ -34,11 +34,7 @@
<a name="session.Session"></a> <a name="session.Session"></a>
### Service "session.Session" ### Service "session.Session"
Open a trusted session to manipulate an object. In order to put or
delete object client have to obtain session token with trusted node.
Trusted node will modify client's object (add missing headers, checksums,
homomorphic hash) and sign id with session key. Session is established
during 4-step handshake in one gRPC stream
``` ```
rpc Create(stream CreateRequest) returns (stream CreateResponse); rpc Create(stream CreateRequest) returns (stream CreateResponse);
@ -47,7 +43,16 @@ rpc Create(stream CreateRequest) returns (stream CreateResponse);
#### Method Create #### Method Create
Create is a method that used to open a trusted session to manipulate
an object. In order to put or delete object client have to obtain session
token with trusted node. Trusted node will modify client's object
(add missing headers, checksums, homomorphic hash) and sign id with
session key. Session is established during 4-step handshake in one gRPC stream
- First client stream message SHOULD BE type of `CreateRequest_Init`.
- First server stream message SHOULD BE type of `CreateResponse_Unsigned`.
- Second client stream message SHOULD BE type of `CreateRequest_Signed`.
- Second server stream message SHOULD BE type of `CreateResponse_Result`.
| Name | Input | Output | | Name | Input | Output |
| ---- | ----- | ------ | | ---- | ----- | ------ |
@ -63,7 +68,7 @@ rpc Create(stream CreateRequest) returns (stream CreateResponse);
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Init | [Token](#session.Token) | | Message to init session opening. Carry: owner of manipulation object; ID of manipulation object; token lifetime bounds. | | Init | [Token](#session.Token) | | Init is a message to initialize session opening. Carry: owner of manipulation object; ID of manipulation object; token lifetime bounds. |
| Signed | [Token](#session.Token) | | Signed Init message response (Unsigned) from server with user private key | | Signed | [Token](#session.Token) | | Signed Init message response (Unsigned) from server with user private key |
@ -76,7 +81,7 @@ rpc Create(stream CreateRequest) returns (stream CreateResponse);
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Unsigned | [Token](#session.Token) | | Unsigned token with token ID and session public key generated on server side | | Unsigned | [Token](#session.Token) | | Unsigned token with token ID and session public key generated on server side |
| Result | [Token](#session.Token) | | Resulting token which can be used for object placing through an trusted intermediary | | Result | [Token](#session.Token) | | Result is a resulting token which can be used for object placing through an trusted intermediary |
<!-- end messages --> <!-- end messages -->
@ -102,12 +107,12 @@ User token granting rights for object manipulation
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| Header | [VerificationHeader](#session.VerificationHeader) | | Header carries verification data of session key | | Header | [VerificationHeader](#session.VerificationHeader) | | Header carries verification data of session key |
| OwnerID | [bytes](#bytes) | | Owner of manipulation object | | OwnerID | [bytes](#bytes) | | OwnerID is an owner of manipulation object |
| FirstEpoch | [uint64](#uint64) | | Initial epoch of token lifetime | | FirstEpoch | [uint64](#uint64) | | FirstEpoch is an initial epoch of token lifetime |
| LastEpoch | [uint64](#uint64) | | Last epoch of token lifetime | | LastEpoch | [uint64](#uint64) | | LastEpoch is a last epoch of token lifetime |
| ObjectID | [bytes](#bytes) | repeated | ID of manipulation object | | ObjectID | [bytes](#bytes) | repeated | ObjectID is an object identifier of manipulation object |
| Signature | [bytes](#bytes) | | Token signature. Signed by owner of manipulation object | | Signature | [bytes](#bytes) | | Signature is a token signature, signed by owner of manipulation object |
| ID | [bytes](#bytes) | | Token ID (UUID) | | ID | [bytes](#bytes) | | ID is a token identifier. valid UUIDv4 represented in bytes |
<a name="session.VerificationHeader"></a> <a name="session.VerificationHeader"></a>
@ -118,8 +123,8 @@ User token granting rights for object manipulation
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| PublicKey | [bytes](#bytes) | | Session public key | | PublicKey | [bytes](#bytes) | | PublicKey is a session public key |
| KeySignature | [bytes](#bytes) | | Session public key signature. Signed by trusted side | | KeySignature | [bytes](#bytes) | | KeySignature is a session public key signature. Signed by trusted side |
<!-- end messages --> <!-- end messages -->

View file

@ -30,12 +30,17 @@ var _ = math.Inf
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type GetRequest struct { type GetRequest struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch is set by user to 0, node set epoch to the actual value
Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` // Address of object (container id + object id)
XXX_unrecognized []byte `json:"-"` Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"`
XXX_sizecache int32 `json:"-"` // TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *GetRequest) Reset() { *m = GetRequest{} } func (m *GetRequest) Reset() { *m = GetRequest{} }
@ -257,9 +262,15 @@ func (*PutRequest) XXX_OneofWrappers() []interface{} {
} }
type PutRequest_PutHeader struct { type PutRequest_PutHeader struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch is set by user to 0, node set epoch to the actual value
Object *Object `protobuf:"bytes,2,opt,name=Object,proto3" json:"Object,omitempty"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
// Object with at least container id and owner id fields
Object *Object `protobuf:"bytes,2,opt,name=Object,proto3" json:"Object,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,3,opt,name=TTL,proto3" json:"TTL,omitempty"`
// Token with session public key and user's signature
Token *session.Token `protobuf:"bytes,4,opt,name=Token,proto3" json:"Token,omitempty"` Token *session.Token `protobuf:"bytes,4,opt,name=Token,proto3" json:"Token,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -324,6 +335,7 @@ func (m *PutRequest_PutHeader) GetToken() *session.Token {
} }
type PutResponse struct { type PutResponse struct {
// Address of object (container id + object id)
Address refs.Address `protobuf:"bytes,1,opt,name=Address,proto3" json:"Address"` Address refs.Address `protobuf:"bytes,1,opt,name=Address,proto3" json:"Address"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -367,10 +379,17 @@ func (m *PutResponse) GetAddress() refs.Address {
} }
type DeleteRequest struct { type DeleteRequest struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch is set by user to 0, node set epoch to the actual value
Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
OwnerID OwnerID `protobuf:"bytes,3,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
TTL uint32 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"` // Address of object (container id + object id)
Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"`
// OwnerID is a wallet address
OwnerID OwnerID `protobuf:"bytes,3,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"`
// Token with session public key and user's signature
Token *session.Token `protobuf:"bytes,5,opt,name=Token,proto3" json:"Token,omitempty"` Token *session.Token `protobuf:"bytes,5,opt,name=Token,proto3" json:"Token,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -472,9 +491,15 @@ func (m *DeleteResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo
type HeadRequest struct { type HeadRequest struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch should be empty on user side, node sets epoch to the actual value
Address Address `protobuf:"bytes,2,opt,name=Address,proto3,customtype=Address" json:"Address"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
FullHeaders bool `protobuf:"varint,3,opt,name=FullHeaders,proto3" json:"FullHeaders,omitempty"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
// Address of object (container id + object id)
Address Address `protobuf:"bytes,2,opt,name=Address,proto3,customtype=Address" json:"Address"`
// FullHeaders can be set true for extended headers in the object
FullHeaders bool `protobuf:"varint,3,opt,name=FullHeaders,proto3" json:"FullHeaders,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -532,6 +557,7 @@ func (m *HeadRequest) GetTTL() uint32 {
} }
type HeadResponse struct { type HeadResponse struct {
// Object without payload
Object *Object `protobuf:"bytes,1,opt,name=Object,proto3" json:"Object,omitempty"` Object *Object `protobuf:"bytes,1,opt,name=Object,proto3" json:"Object,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -575,10 +601,17 @@ func (m *HeadResponse) GetObject() *Object {
} }
type SearchRequest struct { type SearchRequest struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch is set by user to 0, node set epoch to the actual value
Version uint32 `protobuf:"varint,2,opt,name=Version,proto3" json:"Version,omitempty"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
ContainerID CID `protobuf:"bytes,3,opt,name=ContainerID,proto3,customtype=CID" json:"ContainerID"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
Query []byte `protobuf:"bytes,4,opt,name=Query,proto3" json:"Query,omitempty"` // Version of search query format
Version uint32 `protobuf:"varint,2,opt,name=Version,proto3" json:"Version,omitempty"`
// ContainerID for searching the object
ContainerID CID `protobuf:"bytes,3,opt,name=ContainerID,proto3,customtype=CID" json:"ContainerID"`
// Query in the binary serialized format
Query []byte `protobuf:"bytes,4,opt,name=Query,proto3" json:"Query,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,5,opt,name=TTL,proto3" json:"TTL,omitempty"` TTL uint32 `protobuf:"varint,5,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -643,6 +676,7 @@ func (m *SearchRequest) GetTTL() uint32 {
} }
type SearchResponse struct { type SearchResponse struct {
// Addresses of found objects
Addresses []refs.Address `protobuf:"bytes,1,rep,name=Addresses,proto3" json:"Addresses"` Addresses []refs.Address `protobuf:"bytes,1,rep,name=Addresses,proto3" json:"Addresses"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -686,13 +720,19 @@ func (m *SearchResponse) GetAddresses() []refs.Address {
} }
type GetRangeRequest struct { type GetRangeRequest struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch is set by user to 0, node set epoch to the actual value
Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
Ranges []Range `protobuf:"bytes,3,rep,name=Ranges,proto3" json:"Ranges"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
TTL uint32 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"` // Address of object (container id + object id)
XXX_NoUnkeyedLiteral struct{} `json:"-"` Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"`
XXX_unrecognized []byte `json:"-"` // Ranges of object's payload to return
XXX_sizecache int32 `json:"-"` Ranges []Range `protobuf:"bytes,3,rep,name=Ranges,proto3" json:"Ranges"`
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *GetRangeRequest) Reset() { *m = GetRangeRequest{} } func (m *GetRangeRequest) Reset() { *m = GetRangeRequest{} }
@ -753,6 +793,7 @@ func (m *GetRangeRequest) GetTTL() uint32 {
} }
type GetRangeResponse struct { type GetRangeResponse struct {
// Fragments of object's payload
Fragments [][]byte `protobuf:"bytes,1,rep,name=Fragments,proto3" json:"Fragments,omitempty"` Fragments [][]byte `protobuf:"bytes,1,rep,name=Fragments,proto3" json:"Fragments,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -796,14 +837,21 @@ func (m *GetRangeResponse) GetFragments() [][]byte {
} }
type GetRangeHashRequest struct { type GetRangeHashRequest struct {
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` // Epoch is set by user to 0, node set epoch to the actual value
Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"` // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
Ranges []Range `protobuf:"bytes,3,rep,name=Ranges,proto3" json:"Ranges"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
Salt []byte `protobuf:"bytes,4,opt,name=Salt,proto3" json:"Salt,omitempty"` // Address of object (container id + object id)
TTL uint32 `protobuf:"varint,5,opt,name=TTL,proto3" json:"TTL,omitempty"` Address refs.Address `protobuf:"bytes,2,opt,name=Address,proto3" json:"Address"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` // Ranges of object's payload to calculate homomorphic hash
XXX_unrecognized []byte `json:"-"` Ranges []Range `protobuf:"bytes,3,rep,name=Ranges,proto3" json:"Ranges"`
XXX_sizecache int32 `json:"-"` // Salt is used to XOR object's payload ranges before hashing, it can be nil
Salt []byte `protobuf:"bytes,4,opt,name=Salt,proto3" json:"Salt,omitempty"`
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,5,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *GetRangeHashRequest) Reset() { *m = GetRangeHashRequest{} } func (m *GetRangeHashRequest) Reset() { *m = GetRangeHashRequest{} }
@ -871,6 +919,7 @@ func (m *GetRangeHashRequest) GetTTL() uint32 {
} }
type GetRangeHashResponse struct { type GetRangeHashResponse struct {
// Hashes is a homomorphic hashes of all ranges
Hashes []Hash `protobuf:"bytes,1,rep,name=Hashes,proto3,customtype=Hash" json:"Hashes"` Hashes []Hash `protobuf:"bytes,1,rep,name=Hashes,proto3,customtype=Hash" json:"Hashes"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -52,41 +52,64 @@ service Service {
} }
message GetRequest { message GetRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch is set by user to 0, node set epoch to the actual value
refs.Address Address = 2 [(gogoproto.nullable) = false]; // Address of object (container id + object id) // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 3; // TTL must be larger than zero, it decreased in every neofs-node uint64 Epoch = 1;
// Address of object (container id + object id)
refs.Address Address = 2 [(gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 3;
} }
message GetResponse { message GetResponse {
oneof R { oneof R {
Object object = 1; // Object header and some payload // Object header and some payload
bytes Chunk = 2; // Chunk of remaining payload Object object = 1;
// Chunk of remaining payload
bytes Chunk = 2;
} }
} }
message PutRequest { message PutRequest {
message PutHeader { message PutHeader {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch is set by user to 0, node set epoch to the actual value
Object Object = 2; // Object with at least container id and owner id fields // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 3; // TTL must be larger than zero, it decreased in every neofs-node uint64 Epoch = 1;
session.Token Token = 4; // Token with session public key and user's signature // Object with at least container id and owner id fields
Object Object = 2;
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 3;
// Token with session public key and user's signature
session.Token Token = 4;
} }
oneof R { oneof R {
PutHeader Header = 1; // Header should be the first message in the stream // Header should be the first message in the stream
bytes Chunk = 2; // Chunk should be a remaining message in stream should be chunks PutHeader Header = 1;
// Chunk should be a remaining message in stream should be chunks
bytes Chunk = 2;
} }
} }
message PutResponse { message PutResponse {
refs.Address Address = 1 [(gogoproto.nullable) = false]; // Address of object (container id + object id) // Address of object (container id + object id)
refs.Address Address = 1 [(gogoproto.nullable) = false];
} }
message DeleteRequest { message DeleteRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch is set by user to 0, node set epoch to the actual value
refs.Address Address = 2 [(gogoproto.nullable) = false]; // Address of object (container id + object id) // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
bytes OwnerID = 3 [(gogoproto.nullable) = false, (gogoproto.customtype) = "OwnerID"]; // OwnerID is a wallet address uint64 Epoch = 1;
uint32 TTL = 4; // TTL must be larger than zero, it decreased in every neofs-node // Address of object (container id + object id)
session.Token Token = 5; // Token with session public key and user's signature refs.Address Address = 2 [(gogoproto.nullable) = false];
// OwnerID is a wallet address
bytes OwnerID = 3 [(gogoproto.nullable) = false, (gogoproto.customtype) = "OwnerID"];
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 4;
// Token with session public key and user's signature
session.Token Token = 5;
} }
// DeleteResponse is empty because we cannot guarantee permanent object removal // DeleteResponse is empty because we cannot guarantee permanent object removal
@ -94,47 +117,77 @@ message DeleteRequest {
message DeleteResponse {} message DeleteResponse {}
message HeadRequest { message HeadRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch should be empty on user side, node sets epoch to the actual value
refs.Address Address = 2 [(gogoproto.nullable) = false, (gogoproto.customtype) = "Address"]; // Address of object (container id + object id) // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
bool FullHeaders = 3; // FullHeaders can be set true for extended headers in the object uint64 Epoch = 1;
uint32 TTL = 4; // TTL must be larger than zero, it decreased in every neofs-node // Address of object (container id + object id)
refs.Address Address = 2 [(gogoproto.nullable) = false, (gogoproto.customtype) = "Address"];
// FullHeaders can be set true for extended headers in the object
bool FullHeaders = 3;
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 4;
} }
message HeadResponse { message HeadResponse {
Object Object = 1; // Object without payload // Object without payload
Object Object = 1;
} }
message SearchRequest { message SearchRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch is set by user to 0, node set epoch to the actual value
uint32 Version = 2; // Version of search query format // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
bytes ContainerID = 3 [(gogoproto.nullable) = false, (gogoproto.customtype) = "CID"]; // ContainerID for searching the object uint64 Epoch = 1;
bytes Query = 4; // Query in the binary serialized format // Version of search query format
uint32 TTL = 5; // TTL must be larger than zero, it decreased in every neofs-node uint32 Version = 2;
// ContainerID for searching the object
bytes ContainerID = 3 [(gogoproto.nullable) = false, (gogoproto.customtype) = "CID"];
// Query in the binary serialized format
bytes Query = 4;
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 5;
} }
message SearchResponse { message SearchResponse {
repeated refs.Address Addresses = 1 [(gogoproto.nullable) = false]; // Addresses of found objects // Addresses of found objects
repeated refs.Address Addresses = 1 [(gogoproto.nullable) = false];
} }
message GetRangeRequest { message GetRangeRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch is set by user to 0, node set epoch to the actual value
refs.Address Address = 2 [(gogoproto.nullable) = false]; // Address of object (container id + object id) // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
repeated Range Ranges = 3 [(gogoproto.nullable) = false]; // Ranges of object's payload to return uint64 Epoch = 1;
uint32 TTL = 4; // TTL must be larger than zero, it decreased in every neofs-node // Address of object (container id + object id)
refs.Address Address = 2 [(gogoproto.nullable) = false];
// Ranges of object's payload to return
repeated Range Ranges = 3 [(gogoproto.nullable) = false];
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 4;
} }
message GetRangeResponse { message GetRangeResponse {
repeated bytes Fragments = 1; // Fragments of object's payload // Fragments of object's payload
repeated bytes Fragments = 1;
} }
message GetRangeHashRequest { message GetRangeHashRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value // Epoch is set by user to 0, node set epoch to the actual value
refs.Address Address = 2 [(gogoproto.nullable) = false]; // Address of object (container id + object id) // Deprecated: will be replaced with RequestMetaHeader (see develop branch)
repeated Range Ranges = 3 [(gogoproto.nullable) = false]; // Ranges of object's payload to calculate homomorphic hash uint64 Epoch = 1;
bytes Salt = 4; // Salt is used to XOR object's payload ranges before hashing, it can be nil // Address of object (container id + object id)
uint32 TTL = 5; // TTL must be larger than zero, it decreased in every neofs-node refs.Address Address = 2 [(gogoproto.nullable) = false];
// Ranges of object's payload to calculate homomorphic hash
repeated Range Ranges = 3 [(gogoproto.nullable) = false];
// Salt is used to XOR object's payload ranges before hashing, it can be nil
bytes Salt = 4;
// TTL must be larger than zero, it decreased in every neofs-node
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint32 TTL = 5;
} }
message GetRangeHashResponse { message GetRangeHashResponse {
repeated bytes Hashes = 1 [(gogoproto.customtype) = "Hash", (gogoproto.nullable) = false]; // Homomorphic hashes of all ranges // Hashes is a homomorphic hashes of all ranges
repeated bytes Hashes = 1 [(gogoproto.customtype) = "Hash", (gogoproto.nullable) = false];
} }

View file

@ -28,11 +28,16 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type Link_Type int32 type Link_Type int32
const ( const (
Link_Unknown Link_Type = 0 Link_Unknown Link_Type = 0
Link_Parent Link_Type = 1 // Parent object created during object transformation
Link_Previous Link_Type = 2 Link_Parent Link_Type = 1
Link_Next Link_Type = 3 // Previous object in the linked list created during object transformation
Link_Child Link_Type = 4 Link_Previous Link_Type = 2
// Next object in the linked list created during object transformation
Link_Next Link_Type = 3
// Child object created during object transformation
Link_Child Link_Type = 4
// Object that included into this storage group
Link_StorageGroup Link_Type = 5 Link_StorageGroup Link_Type = 5
) )
@ -66,9 +71,12 @@ type Transform_Type int32
const ( const (
Transform_Unknown Transform_Type = 0 Transform_Unknown Transform_Type = 0
Transform_Split Transform_Type = 1 // Split sets when object created after payload split
Transform_Sign Transform_Type = 2 Transform_Split Transform_Type = 1
Transform_Mould Transform_Type = 3 // Sign sets when object created after re-signing (doesn't used)
Transform_Sign Transform_Type = 2
// Mould sets when object created after filling missing headers in the object
Transform_Mould Transform_Type = 3
) )
var Transform_Type_name = map[int32]string{ var Transform_Type_name = map[int32]string{
@ -96,9 +104,12 @@ func (Transform_Type) EnumDescriptor() ([]byte, []int) {
type StorageGroup_Lifetime_Unit int32 type StorageGroup_Lifetime_Unit int32
const ( const (
StorageGroup_Lifetime_Unlimited StorageGroup_Lifetime_Unit = 0 // Unlimited set if storage group always valid
StorageGroup_Lifetime_Unlimited StorageGroup_Lifetime_Unit = 0
// NeoFSEpoch set if storage group is valid until lifetime NeoFS epoch
StorageGroup_Lifetime_NeoFSEpoch StorageGroup_Lifetime_Unit = 1 StorageGroup_Lifetime_NeoFSEpoch StorageGroup_Lifetime_Unit = 1
StorageGroup_Lifetime_UnixTime StorageGroup_Lifetime_Unit = 2 // UnixTime set if storage group is valid until lifetime unix timestamp
StorageGroup_Lifetime_UnixTime StorageGroup_Lifetime_Unit = 2
) )
var StorageGroup_Lifetime_Unit_name = map[int32]string{ var StorageGroup_Lifetime_Unit_name = map[int32]string{
@ -122,7 +133,9 @@ func (StorageGroup_Lifetime_Unit) EnumDescriptor() ([]byte, []int) {
} }
type Range struct { type Range struct {
Offset uint64 `protobuf:"varint,1,opt,name=Offset,proto3" json:"Offset,omitempty"` // Offset of the data range
Offset uint64 `protobuf:"varint,1,opt,name=Offset,proto3" json:"Offset,omitempty"`
// Length of the data range
Length uint64 `protobuf:"varint,2,opt,name=Length,proto3" json:"Length,omitempty"` Length uint64 `protobuf:"varint,2,opt,name=Length,proto3" json:"Length,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -173,7 +186,9 @@ func (m *Range) GetLength() uint64 {
} }
type UserHeader struct { type UserHeader struct {
Key string `protobuf:"bytes,1,opt,name=Key,proto3" json:"Key,omitempty"` // Key of the user's header
Key string `protobuf:"bytes,1,opt,name=Key,proto3" json:"Key,omitempty"`
// Value of the user's header
Value string `protobuf:"bytes,2,opt,name=Value,proto3" json:"Value,omitempty"` Value string `protobuf:"bytes,2,opt,name=Value,proto3" json:"Value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -405,6 +420,7 @@ func (*Header) XXX_OneofWrappers() []interface{} {
} }
type Tombstone struct { type Tombstone struct {
// Epoch when tombstone was created
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"` Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -448,11 +464,17 @@ func (m *Tombstone) GetEpoch() uint64 {
} }
type SystemHeader struct { type SystemHeader struct {
Version uint64 `protobuf:"varint,1,opt,name=Version,proto3" json:"Version,omitempty"` // Version of the object structure
PayloadLength uint64 `protobuf:"varint,2,opt,name=PayloadLength,proto3" json:"PayloadLength,omitempty"` Version uint64 `protobuf:"varint,1,opt,name=Version,proto3" json:"Version,omitempty"`
ID ID `protobuf:"bytes,3,opt,name=ID,proto3,customtype=ID" json:"ID"` // PayloadLength is an object payload length
OwnerID OwnerID `protobuf:"bytes,4,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` PayloadLength uint64 `protobuf:"varint,2,opt,name=PayloadLength,proto3" json:"PayloadLength,omitempty"`
CID CID `protobuf:"bytes,5,opt,name=CID,proto3,customtype=CID" json:"CID"` // ID is an object identifier, is a valid UUIDv4
ID ID `protobuf:"bytes,3,opt,name=ID,proto3,customtype=ID" json:"ID"`
// OwnerID is a wallet address
OwnerID OwnerID `protobuf:"bytes,4,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// CID is a SHA256 hash of the container structure (container identifier)
CID CID `protobuf:"bytes,5,opt,name=CID,proto3,customtype=CID" json:"CID"`
// CreatedAt is a timestamp of object creation
CreatedAt CreationPoint `protobuf:"bytes,6,opt,name=CreatedAt,proto3" json:"CreatedAt"` CreatedAt CreationPoint `protobuf:"bytes,6,opt,name=CreatedAt,proto3" json:"CreatedAt"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -510,7 +532,9 @@ func (m *SystemHeader) GetCreatedAt() CreationPoint {
} }
type CreationPoint struct { type CreationPoint struct {
UnixTime int64 `protobuf:"varint,1,opt,name=UnixTime,proto3" json:"UnixTime,omitempty"` // UnixTime is a date of creation in unixtime format
UnixTime int64 `protobuf:"varint,1,opt,name=UnixTime,proto3" json:"UnixTime,omitempty"`
// Epoch is a date of creation in NeoFS epochs
Epoch uint64 `protobuf:"varint,2,opt,name=Epoch,proto3" json:"Epoch,omitempty"` Epoch uint64 `protobuf:"varint,2,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -561,7 +585,9 @@ func (m *CreationPoint) GetEpoch() uint64 {
} }
type IntegrityHeader struct { type IntegrityHeader struct {
HeadersChecksum []byte `protobuf:"bytes,1,opt,name=HeadersChecksum,proto3" json:"HeadersChecksum,omitempty"` // HeadersChecksum is a checksum of all above headers in the object
HeadersChecksum []byte `protobuf:"bytes,1,opt,name=HeadersChecksum,proto3" json:"HeadersChecksum,omitempty"`
// ChecksumSignature is an user's signature of checksum to verify if it is correct
ChecksumSignature []byte `protobuf:"bytes,2,opt,name=ChecksumSignature,proto3" json:"ChecksumSignature,omitempty"` ChecksumSignature []byte `protobuf:"bytes,2,opt,name=ChecksumSignature,proto3" json:"ChecksumSignature,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -612,11 +638,13 @@ func (m *IntegrityHeader) GetChecksumSignature() []byte {
} }
type Link struct { type Link struct {
Type Link_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Link_Type" json:"type,omitempty"` // Type of link
ID ID `protobuf:"bytes,2,opt,name=ID,proto3,customtype=ID" json:"ID"` Type Link_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Link_Type" json:"type,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` // ID is an object identifier, is a valid UUIDv4
XXX_unrecognized []byte `json:"-"` ID ID `protobuf:"bytes,2,opt,name=ID,proto3,customtype=ID" json:"ID"`
XXX_sizecache int32 `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *Link) Reset() { *m = Link{} } func (m *Link) Reset() { *m = Link{} }
@ -656,6 +684,7 @@ func (m *Link) GetType() Link_Type {
} }
type Transform struct { type Transform struct {
// Type of object transformation
Type Transform_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Transform_Type" json:"type,omitempty"` Type Transform_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Transform_Type" json:"type,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -699,12 +728,15 @@ func (m *Transform) GetType() Transform_Type {
} }
type Object struct { type Object struct {
SystemHeader SystemHeader `protobuf:"bytes,1,opt,name=SystemHeader,proto3" json:"SystemHeader"` // SystemHeader describes system header
Headers []Header `protobuf:"bytes,2,rep,name=Headers,proto3" json:"Headers"` SystemHeader SystemHeader `protobuf:"bytes,1,opt,name=SystemHeader,proto3" json:"SystemHeader"`
Payload []byte `protobuf:"bytes,3,opt,name=Payload,proto3" json:"Payload,omitempty"` // Headers describes a set of an extended headers
XXX_NoUnkeyedLiteral struct{} `json:"-"` Headers []Header `protobuf:"bytes,2,rep,name=Headers,proto3" json:"Headers"`
XXX_unrecognized []byte `json:"-"` // Payload is an object's payload
XXX_sizecache int32 `json:"-"` Payload []byte `protobuf:"bytes,3,opt,name=Payload,proto3" json:"Payload,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *Object) Reset() { *m = Object{} } func (m *Object) Reset() { *m = Object{} }
@ -758,8 +790,11 @@ func (m *Object) GetPayload() []byte {
} }
type StorageGroup struct { type StorageGroup struct {
ValidationDataSize uint64 `protobuf:"varint,1,opt,name=ValidationDataSize,proto3" json:"ValidationDataSize,omitempty"` // ValidationDataSize is size of the all object's payloads included into storage group
ValidationHash Hash `protobuf:"bytes,2,opt,name=ValidationHash,proto3,customtype=Hash" json:"ValidationHash"` ValidationDataSize uint64 `protobuf:"varint,1,opt,name=ValidationDataSize,proto3" json:"ValidationDataSize,omitempty"`
// ValidationHash is homomorphic hash of all object's payloads included into storage group
ValidationHash Hash `protobuf:"bytes,2,opt,name=ValidationHash,proto3,customtype=Hash" json:"ValidationHash"`
// Lifetime is time until storage group is valid
Lifetime *StorageGroup_Lifetime `protobuf:"bytes,3,opt,name=lifetime,proto3" json:"lifetime,omitempty"` Lifetime *StorageGroup_Lifetime `protobuf:"bytes,3,opt,name=lifetime,proto3" json:"lifetime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -810,11 +845,13 @@ func (m *StorageGroup) GetLifetime() *StorageGroup_Lifetime {
} }
type StorageGroup_Lifetime struct { type StorageGroup_Lifetime struct {
Unit StorageGroup_Lifetime_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=object.StorageGroup_Lifetime_Unit" json:"unit,omitempty"` // Unit is lifetime type
Value int64 `protobuf:"varint,2,opt,name=Value,proto3" json:"Value,omitempty"` Unit StorageGroup_Lifetime_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=object.StorageGroup_Lifetime_Unit" json:"unit,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` // Value for lifetime
XXX_unrecognized []byte `json:"-"` Value int64 `protobuf:"varint,2,opt,name=Value,proto3" json:"Value,omitempty"`
XXX_sizecache int32 `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
} }
func (m *StorageGroup_Lifetime) Reset() { *m = StorageGroup_Lifetime{} } func (m *StorageGroup_Lifetime) Reset() { *m = StorageGroup_Lifetime{} }

View file

@ -9,97 +9,144 @@ import "github.com/gogo/protobuf/gogoproto/gogo.proto";
option (gogoproto.stable_marshaler_all) = true; option (gogoproto.stable_marshaler_all) = true;
message Range { message Range {
uint64 Offset = 1; // Offset of the data range // Offset of the data range
uint64 Length = 2; // Length of the data range uint64 Offset = 1;
// Length of the data range
uint64 Length = 2;
} }
message UserHeader { message UserHeader {
string Key = 1; // Key of the user's header // Key of the user's header
string Value = 2; // Value of the user's header string Key = 1;
// Value of the user's header
string Value = 2;
} }
message Header { message Header {
oneof Value { oneof Value {
Link Link = 1; // Link to other objects // Link to other objects
refs.Address Redirect = 2; // RedirectNot used yet Link Link = 1;
UserHeader UserHeader = 3; // UserHeader defined by user // Redirect not used yet
Transform Transform = 4; // Transform defines transform operation (e.g. payload split) refs.Address Redirect = 2;
Tombstone Tombstone = 5; // Tombstone header that set up in deleted objects // UserHeader is a set of KV headers defined by user
session.VerificationHeader Verify = 6; // Verify header that contains session public key and user's signature UserHeader UserHeader = 3;
bytes HomoHash = 7 [(gogoproto.customtype) = "Hash"]; // Homomorphic hash of original object payload // Transform defines transform operation (e.g. payload split)
bytes PayloadChecksum = 8; // PayloadChecksum of actual object's payload Transform Transform = 4;
IntegrityHeader Integrity = 9; // Integrity header with checksum of all above headers in the object // Tombstone header that set up in deleted objects
StorageGroup StorageGroup = 10; // StorageGroup contains meta information for the data audit Tombstone Tombstone = 5;
// Verify header that contains session public key and user's signature
session.VerificationHeader Verify = 6;
// HomoHash is a homomorphic hash of original object payload
bytes HomoHash = 7 [(gogoproto.customtype) = "Hash"];
// PayloadChecksum of actual object's payload
bytes PayloadChecksum = 8;
// Integrity header with checksum of all above headers in the object
IntegrityHeader Integrity = 9;
// StorageGroup contains meta information for the data audit
StorageGroup StorageGroup = 10;
} }
} }
message Tombstone { message Tombstone {
uint64 Epoch = 1; // Epoch when tombstone was created // Epoch when tombstone was created
uint64 Epoch = 1;
} }
message SystemHeader { message SystemHeader {
uint64 Version = 1; // Version of the object structure // Version of the object structure
uint64 PayloadLength = 2; // Object payload length uint64 Version = 1;
// PayloadLength is an object payload length
uint64 PayloadLength = 2;
bytes ID = 3 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false]; // ObjectID is a UUID // ID is an object identifier, is a valid UUIDv4
bytes OwnerID = 4 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; // OwnerID is a wallet address bytes ID = 3 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false];
bytes CID = 5 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false]; // ContainerID is a SHA256 hash of the container structure // OwnerID is a wallet address
CreationPoint CreatedAt = 6 [(gogoproto.nullable) = false]; // Timestamp of object creation bytes OwnerID = 4 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// CID is a SHA256 hash of the container structure (container identifier)
bytes CID = 5 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false];
// CreatedAt is a timestamp of object creation
CreationPoint CreatedAt = 6 [(gogoproto.nullable) = false];
} }
message CreationPoint { message CreationPoint {
int64 UnixTime = 1; // Date of creation in unixtime format // UnixTime is a date of creation in unixtime format
uint64 Epoch = 2; // Date of creation in NeoFS epochs int64 UnixTime = 1;
// Epoch is a date of creation in NeoFS epochs
uint64 Epoch = 2;
} }
message IntegrityHeader { message IntegrityHeader {
bytes HeadersChecksum = 1; // Checksum of all above headers in the object // HeadersChecksum is a checksum of all above headers in the object
bytes ChecksumSignature = 2; // User's signature of checksum to verify if it is correct bytes HeadersChecksum = 1;
// ChecksumSignature is an user's signature of checksum to verify if it is correct
bytes ChecksumSignature = 2;
} }
message Link { message Link {
enum Type { enum Type {
Unknown = 0; Unknown = 0;
Parent = 1; // Parent object created during object transformation // Parent object created during object transformation
Previous = 2; // Previous object in the linked list created during object transformation Parent = 1;
Next = 3; // Next object in the linked list created during object transformation // Previous object in the linked list created during object transformation
Child = 4; // Child object created during object transformation Previous = 2;
StorageGroup = 5; // Object that included into this storage group // Next object in the linked list created during object transformation
Next = 3;
// Child object created during object transformation
Child = 4;
// Object that included into this storage group
StorageGroup = 5;
} }
Type type = 1; // Link type // Type of link
bytes ID = 2 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false]; // Object id Type type = 1;
// ID is an object identifier, is a valid UUIDv4
bytes ID = 2 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false];
} }
message Transform { message Transform {
enum Type { enum Type {
Unknown = 0; Unknown = 0;
Split = 1; // Object created after payload split // Split sets when object created after payload split
Sign = 2; // Object created after re-signing (doesn't used) Split = 1;
Mould = 3; // Object created after filling missing headers in the object // Sign sets when object created after re-signing (doesn't used)
Sign = 2;
// Mould sets when object created after filling missing headers in the object
Mould = 3;
} }
Type type = 1; // Type of object transformation // Type of object transformation
Type type = 1;
} }
message Object { message Object {
SystemHeader SystemHeader = 1 [(gogoproto.nullable) = false]; // System header // SystemHeader describes system header
repeated Header Headers = 2 [(gogoproto.nullable) = false]; // Extended headers SystemHeader SystemHeader = 1 [(gogoproto.nullable) = false];
bytes Payload = 3; // Object's payload // Headers describes a set of an extended headers
repeated Header Headers = 2 [(gogoproto.nullable) = false];
// Payload is an object's payload
bytes Payload = 3;
} }
message StorageGroup { message StorageGroup {
uint64 ValidationDataSize = 1; // Size of the all object's payloads included into storage group // ValidationDataSize is size of the all object's payloads included into storage group
bytes ValidationHash = 2 [(gogoproto.customtype) = "Hash", (gogoproto.nullable) = false]; // Homomorphic hash of all object's payloads included into storage group uint64 ValidationDataSize = 1;
// ValidationHash is homomorphic hash of all object's payloads included into storage group
bytes ValidationHash = 2 [(gogoproto.customtype) = "Hash", (gogoproto.nullable) = false];
message Lifetime { message Lifetime {
enum Unit { enum Unit {
Unlimited = 0; // Storage group always valid // Unlimited set if storage group always valid
NeoFSEpoch = 1; // Storage group is valid until lifetime NeoFS epoch Unlimited = 0;
UnixTime = 2; // Storage group is valid until lifetime unix timestamp // NeoFSEpoch set if storage group is valid until lifetime NeoFS epoch
NeoFSEpoch = 1;
// UnixTime set if storage group is valid until lifetime unix timestamp
UnixTime = 2;
} }
Unit unit = 1 [(gogoproto.customname) = "Unit"]; // Lifetime type // Unit is lifetime type
int64 Value = 2; // Lifetime value Unit unit = 1 [(gogoproto.customname) = "Unit"];
// Value for lifetime
int64 Value = 2;
} }
Lifetime lifetime = 3 [(gogoproto.customname) = "Lifetime"]; // Time until storage group is valid // Lifetime is time until storage group is valid
Lifetime lifetime = 3 [(gogoproto.customname) = "Lifetime"];
} }

View file

@ -23,11 +23,12 @@ var _ = math.Inf
// proto package needs to be updated. // proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Type can be Exact or Regex
type Filter_Type int32 type Filter_Type int32
const ( const (
// Exact sets when value of filter should be equal to the header value
Filter_Exact Filter_Type = 0 Filter_Exact Filter_Type = 0
// Regex sets when value of filter should match the header value by the regular expression
Filter_Regex Filter_Type = 1 Filter_Regex Filter_Type = 1
) )

View file

@ -9,9 +9,10 @@ option (gogoproto.stable_marshaler_all) = true;
message Filter { message Filter {
option (gogoproto.goproto_stringer) = false; option (gogoproto.goproto_stringer) = false;
// Type can be Exact or Regex
enum Type { enum Type {
// Exact sets when value of filter should be equal to the header value
Exact = 0; Exact = 0;
// Regex sets when value of filter should match the header value by the regular expression
Regex = 1; Regex = 1;
} }

View file

@ -25,7 +25,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Address of object (container id + object id) // Address of object (container id + object id)
type Address struct { type Address struct {
// ObjectID is an object identifier // ObjectID is an object identifier, valid UUIDv4 represented in bytes
ObjectID ObjectID `protobuf:"bytes,1,opt,name=ObjectID,proto3,customtype=ObjectID" json:"ObjectID"` ObjectID ObjectID `protobuf:"bytes,1,opt,name=ObjectID,proto3,customtype=ObjectID" json:"ObjectID"`
// CID is container identifier // CID is container identifier
CID CID `protobuf:"bytes,2,opt,name=CID,proto3,customtype=CID" json:"CID"` CID CID `protobuf:"bytes,2,opt,name=CID,proto3,customtype=CID" json:"CID"`

View file

@ -11,7 +11,7 @@ option (gogoproto.goproto_stringer_all) = false;
// Address of object (container id + object id) // Address of object (container id + object id)
message Address { message Address {
// ObjectID is an object identifier // ObjectID is an object identifier, valid UUIDv4 represented in bytes
bytes ObjectID = 1[(gogoproto.customtype) = "ObjectID", (gogoproto.nullable) = false]; bytes ObjectID = 1[(gogoproto.customtype) = "ObjectID", (gogoproto.nullable) = false];
// CID is container identifier // CID is container identifier
bytes CID = 2[(gogoproto.customtype) = "CID", (gogoproto.nullable) = false]; bytes CID = 2[(gogoproto.customtype) = "CID", (gogoproto.nullable) = false];

View file

@ -238,6 +238,16 @@ const _ = grpc.SupportPackageIsVersion4
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type SessionClient interface { type SessionClient interface {
// Create is a method that used to open a trusted session to manipulate
// an object. In order to put or delete object client have to obtain session
// token with trusted node. Trusted node will modify client's object
// (add missing headers, checksums, homomorphic hash) and sign id with
// session key. Session is established during 4-step handshake in one gRPC stream
//
// - First client stream message SHOULD BE type of `CreateRequest_Init`.
// - First server stream message SHOULD BE type of `CreateResponse_Unsigned`.
// - Second client stream message SHOULD BE type of `CreateRequest_Signed`.
// - Second server stream message SHOULD BE type of `CreateResponse_Result`.
Create(ctx context.Context, opts ...grpc.CallOption) (Session_CreateClient, error) Create(ctx context.Context, opts ...grpc.CallOption) (Session_CreateClient, error)
} }
@ -282,6 +292,16 @@ func (x *sessionCreateClient) Recv() (*CreateResponse, error) {
// SessionServer is the server API for Session service. // SessionServer is the server API for Session service.
type SessionServer interface { type SessionServer interface {
// Create is a method that used to open a trusted session to manipulate
// an object. In order to put or delete object client have to obtain session
// token with trusted node. Trusted node will modify client's object
// (add missing headers, checksums, homomorphic hash) and sign id with
// session key. Session is established during 4-step handshake in one gRPC stream
//
// - First client stream message SHOULD BE type of `CreateRequest_Init`.
// - First server stream message SHOULD BE type of `CreateResponse_Unsigned`.
// - Second client stream message SHOULD BE type of `CreateRequest_Signed`.
// - Second server stream message SHOULD BE type of `CreateResponse_Result`.
Create(Session_CreateServer) error Create(Session_CreateServer) error
} }

View file

@ -9,17 +9,16 @@ option (gogoproto.stable_marshaler_all) = true;
service Session { service Session {
// Open a trusted session to manipulate an object. In order to put or // Create is a method that used to open a trusted session to manipulate
// delete object client have to obtain session token with trusted node. // an object. In order to put or delete object client have to obtain session
// Trusted node will modify client's object (add missing headers, checksums, // token with trusted node. Trusted node will modify client's object
// homomorphic hash) and sign id with session key. Session is established // (add missing headers, checksums, homomorphic hash) and sign id with
// during 4-step handshake in one gRPC stream // session key. Session is established during 4-step handshake in one gRPC stream
//
// - First client stream message SHOULD BE type of `CreateRequest_Init`. // - First client stream message SHOULD BE type of `CreateRequest_Init`.
// - First server stream message SHOULD BE type of `CreateResponse_Unsigned`. // - First server stream message SHOULD BE type of `CreateResponse_Unsigned`.
// - Second client stream message SHOULD BE type of `CreateRequest_Signed`. // - Second client stream message SHOULD BE type of `CreateRequest_Signed`.
// - Second server stream message SHOULD BE type of `CreateResponse_Result`. // - Second server stream message SHOULD BE type of `CreateResponse_Result`.
rpc Create (stream CreateRequest) returns (stream CreateResponse); rpc Create (stream CreateRequest) returns (stream CreateResponse);
} }
@ -27,7 +26,7 @@ service Session {
message CreateRequest { message CreateRequest {
// Message should be one of // Message should be one of
oneof Message { oneof Message {
// Message to init session opening. Carry: // Init is a message to initialize session opening. Carry:
// owner of manipulation object; // owner of manipulation object;
// ID of manipulation object; // ID of manipulation object;
// token lifetime bounds. // token lifetime bounds.
@ -41,7 +40,7 @@ message CreateResponse {
oneof Message { oneof Message {
// Unsigned token with token ID and session public key generated on server side // Unsigned token with token ID and session public key generated on server side
session.Token Unsigned = 1; session.Token Unsigned = 1;
// Resulting token which can be used for object placing through an trusted intermediary // Result is a resulting token which can be used for object placing through an trusted intermediary
session.Token Result = 2; session.Token Result = 2;
} }
} }

View file

@ -24,9 +24,9 @@ var _ = math.Inf
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type VerificationHeader struct { type VerificationHeader struct {
// Session public key // PublicKey is a session public key
PublicKey []byte `protobuf:"bytes,1,opt,name=PublicKey,proto3" json:"PublicKey,omitempty"` PublicKey []byte `protobuf:"bytes,1,opt,name=PublicKey,proto3" json:"PublicKey,omitempty"`
// Session public key signature. Signed by trusted side // KeySignature is a session public key signature. Signed by trusted side
KeySignature []byte `protobuf:"bytes,2,opt,name=KeySignature,proto3" json:"KeySignature,omitempty"` KeySignature []byte `protobuf:"bytes,2,opt,name=KeySignature,proto3" json:"KeySignature,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -80,17 +80,17 @@ func (m *VerificationHeader) GetKeySignature() []byte {
type Token struct { type Token struct {
// Header carries verification data of session key // Header carries verification data of session key
Header VerificationHeader `protobuf:"bytes,1,opt,name=Header,proto3" json:"Header"` Header VerificationHeader `protobuf:"bytes,1,opt,name=Header,proto3" json:"Header"`
// Owner of manipulation object // OwnerID is an owner of manipulation object
OwnerID OwnerID `protobuf:"bytes,2,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"` OwnerID OwnerID `protobuf:"bytes,2,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// Initial epoch of token lifetime // FirstEpoch is an initial epoch of token lifetime
FirstEpoch uint64 `protobuf:"varint,3,opt,name=FirstEpoch,proto3" json:"FirstEpoch,omitempty"` FirstEpoch uint64 `protobuf:"varint,3,opt,name=FirstEpoch,proto3" json:"FirstEpoch,omitempty"`
// Last epoch of token lifetime // LastEpoch is a last epoch of token lifetime
LastEpoch uint64 `protobuf:"varint,4,opt,name=LastEpoch,proto3" json:"LastEpoch,omitempty"` LastEpoch uint64 `protobuf:"varint,4,opt,name=LastEpoch,proto3" json:"LastEpoch,omitempty"`
// ID of manipulation object // ObjectID is an object identifier of manipulation object
ObjectID []ObjectID `protobuf:"bytes,5,rep,name=ObjectID,proto3,customtype=ObjectID" json:"ObjectID"` ObjectID []ObjectID `protobuf:"bytes,5,rep,name=ObjectID,proto3,customtype=ObjectID" json:"ObjectID"`
// Token signature. Signed by owner of manipulation object // Signature is a token signature, signed by owner of manipulation object
Signature []byte `protobuf:"bytes,6,opt,name=Signature,proto3" json:"Signature,omitempty"` Signature []byte `protobuf:"bytes,6,opt,name=Signature,proto3" json:"Signature,omitempty"`
// Token ID (UUID) // ID is a token identifier. valid UUIDv4 represented in bytes
ID TokenID `protobuf:"bytes,7,opt,name=ID,proto3,customtype=TokenID" json:"ID"` ID TokenID `protobuf:"bytes,7,opt,name=ID,proto3,customtype=TokenID" json:"ID"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`

View file

@ -7,9 +7,9 @@ import "github.com/gogo/protobuf/gogoproto/gogo.proto";
option (gogoproto.stable_marshaler_all) = true; option (gogoproto.stable_marshaler_all) = true;
message VerificationHeader { message VerificationHeader {
// Session public key // PublicKey is a session public key
bytes PublicKey = 1; bytes PublicKey = 1;
// Session public key signature. Signed by trusted side // KeySignature is a session public key signature. Signed by trusted side
bytes KeySignature = 2; bytes KeySignature = 2;
} }
@ -17,16 +17,16 @@ message VerificationHeader {
message Token { message Token {
// Header carries verification data of session key // Header carries verification data of session key
VerificationHeader Header = 1 [(gogoproto.nullable) = false]; VerificationHeader Header = 1 [(gogoproto.nullable) = false];
// Owner of manipulation object // OwnerID is an owner of manipulation object
bytes OwnerID = 2 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; bytes OwnerID = 2 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// Initial epoch of token lifetime // FirstEpoch is an initial epoch of token lifetime
uint64 FirstEpoch = 3; uint64 FirstEpoch = 3;
// Last epoch of token lifetime // LastEpoch is a last epoch of token lifetime
uint64 LastEpoch = 4; uint64 LastEpoch = 4;
// ID of manipulation object // ObjectID is an object identifier of manipulation object
repeated bytes ObjectID = 5 [(gogoproto.customtype) = "ObjectID", (gogoproto.nullable) = false]; repeated bytes ObjectID = 5 [(gogoproto.customtype) = "ObjectID", (gogoproto.nullable) = false];
// Token signature. Signed by owner of manipulation object // Signature is a token signature, signed by owner of manipulation object
bytes Signature = 6; bytes Signature = 6;
// Token ID (UUID) // ID is a token identifier. valid UUIDv4 represented in bytes
bytes ID = 7 [(gogoproto.customtype) = "TokenID", (gogoproto.nullable) = false]; bytes ID = 7 [(gogoproto.customtype) = "TokenID", (gogoproto.nullable) = false];
} }