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 OwnerID `protobuf:"bytes,1,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,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`

View file

@ -19,6 +19,7 @@ message BalanceRequest {
// OwnerID is a wallet address
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (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 = 2;
}

View file

@ -100,6 +100,7 @@ type GetRequest struct {
// OwnerID is a wallet address
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
// 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:"-"`
@ -143,7 +144,7 @@ func (m *GetRequest) GetTTL() uint32 {
}
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -198,6 +199,7 @@ type PutRequest struct {
// Signature is a signature of the sent request
Signature []byte `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,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,6,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -302,6 +304,7 @@ type ListRequest struct {
// OwnerID is a wallet address
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
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -345,7 +348,7 @@ func (m *ListRequest) GetTTL() uint32 {
}
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -398,6 +401,7 @@ type DeleteRequest struct {
// Signature is a signature of the sent request
Signature []byte `protobuf:"bytes,4,opt,name=Signature,proto3" json:"Signature,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:"-"`

View file

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

View file

@ -33,6 +33,7 @@ type Request struct {
// Info contains information about node
Info NodeInfo `protobuf:"bytes,2,opt,name=info,proto3" json:"info"`
// 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:"-"`

View file

@ -21,5 +21,6 @@ message Request {
// Info contains information about node
bootstrap.NodeInfo info = 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;
}

View file

@ -40,6 +40,7 @@ type PutRequest struct {
// Signature of the user (owner id)
Signature []byte `protobuf:"bytes,5,opt,name=Signature,proto3" json:"Signature,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,6,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -144,6 +145,7 @@ type DeleteRequest struct {
// CID (container id) is a SHA256 hash of the container structure
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
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
// Signature of the container owner
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 CID `protobuf:"bytes,1,opt,name=CID,proto3,customtype=CID" json:"CID"`
// 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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -326,6 +329,7 @@ type ListRequest struct {
// OwnerID is a wallet address
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
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
TTL uint32 `protobuf:"varint,2,opt,name=TTL,proto3" json:"TTL,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`

View file

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

View file

@ -26,9 +26,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// The Container service definition.
type Container struct {
OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
Salt UUID `protobuf:"bytes,2,opt,name=Salt,proto3,customtype=UUID" json:"Salt"`
Capacity uint64 `protobuf:"varint,3,opt,name=Capacity,proto3" json:"Capacity,omitempty"`
// OwnerID is a wallet address.
OwnerID OwnerID `protobuf:"bytes,1,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
// 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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`

View file

@ -9,8 +9,12 @@ option (gogoproto.stable_marshaler_all) = true;
// The Container service definition.
message Container {
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; // OwnerID is a wallet address.
bytes Salt = 2 [(gogoproto.customtype) = "UUID", (gogoproto.nullable) = false]; // Salt is a nonce for unique container id calculation.
uint64 Capacity = 3; // Capacity defines amount of data that can be stored in the container (doesn't used for now).
netmap.PlacementRule Rules = 4 [(gogoproto.nullable) = false]; // Rules define storage policy for the object inside the container.
// OwnerID is a wallet address.
bytes OwnerID = 1 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false];
// Salt is a nonce for unique container id calculation.
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 |
| ----- | ---- | ----- | ----------- |
| 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>
@ -362,7 +362,7 @@ Delete allows user to remove unused cheque
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| MessageID | [bytes](#bytes) | | MessageID is a nonce for uniq request (UUIDv4) |
| 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>
@ -382,7 +382,7 @@ DeleteResponse is empty
| ----- | ---- | ----- | ----------- |
| ID | [bytes](#bytes) | | ID is cheque identifier |
| 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>
@ -393,7 +393,7 @@ DeleteResponse is empty
| 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>
@ -420,7 +420,7 @@ DeleteResponse is empty
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| 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>
@ -431,7 +431,7 @@ DeleteResponse is empty
| 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>
@ -447,7 +447,7 @@ DeleteResponse is empty
| 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) |
| 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>

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) |
| 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 -->

View file

@ -92,7 +92,7 @@ List returns all user's containers
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| 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 |
@ -113,7 +113,7 @@ via consensus in inner ring nodes
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| 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>
@ -136,7 +136,7 @@ via consensus in inner ring nodes
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| 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>
@ -163,7 +163,7 @@ via consensus in inner ring nodes
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| rules | [netmap.PlacementRule](#netmap.PlacementRule) | | Rules define storage policy for the object inside the container. |
| 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>

View file

@ -147,10 +147,10 @@ calculated for XORed data.
| 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) |
| 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 |
@ -170,11 +170,11 @@ in distributed system.
| 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) |
| 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 |
| 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>
@ -185,7 +185,7 @@ in distributed system.
| 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>
@ -196,10 +196,10 @@ in distributed system.
| 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) |
| 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>
@ -221,9 +221,9 @@ in distributed system.
| 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) |
| 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>
@ -246,10 +246,10 @@ in distributed system.
| 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) |
| 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>
@ -283,9 +283,9 @@ in distributed system.
| 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 |
| 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 |
@ -308,11 +308,11 @@ in distributed system.
| 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 |
| ContainerID | [bytes](#bytes) | | ContainerID for searching the object |
| 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>
@ -348,8 +348,8 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| UnixTime | [int64](#int64) | | Date of creation in unixtime format |
| Epoch | [uint64](#uint64) | | Date of creation in NeoFS epochs |
| UnixTime | [int64](#int64) | | UnixTime is a date of creation in unixtime format |
| Epoch | [uint64](#uint64) | | Epoch is a date of creation in NeoFS epochs |
<a name="object.Header"></a>
@ -361,12 +361,12 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| Link | [Link](#object.Link) | | Link to other objects |
| Redirect | [refs.Address](#refs.Address) | | RedirectNot used yet |
| UserHeader | [UserHeader](#object.UserHeader) | | UserHeader defined by user |
| Redirect | [refs.Address](#refs.Address) | | Redirect not used yet |
| 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) |
| 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 |
| 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 |
| 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 |
@ -380,8 +380,8 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| HeadersChecksum | [bytes](#bytes) | | Checksum of all above headers in the object |
| ChecksumSignature | [bytes](#bytes) | | User's signature of checksum to verify if it is correct |
| HeadersChecksum | [bytes](#bytes) | | HeadersChecksum is a checksum of all above headers in the object |
| ChecksumSignature | [bytes](#bytes) | | ChecksumSignature is an user's signature of checksum to verify if it is correct |
<a name="object.Link"></a>
@ -392,8 +392,8 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| type | [Link.Type](#object.Link.Type) | | Link type |
| ID | [bytes](#bytes) | | Object id |
| type | [Link.Type](#object.Link.Type) | | Type of link |
| ID | [bytes](#bytes) | | ID is an object identifier, is a valid UUIDv4 |
<a name="object.Object"></a>
@ -404,9 +404,9 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| SystemHeader | [SystemHeader](#object.SystemHeader) | | System header |
| Headers | [Header](#object.Header) | repeated | Extended headers |
| Payload | [bytes](#bytes) | | Object's payload |
| SystemHeader | [SystemHeader](#object.SystemHeader) | | SystemHeader describes system header |
| Headers | [Header](#object.Header) | repeated | Headers describes a set of an extended headers |
| Payload | [bytes](#bytes) | | Payload is an object's payload |
<a name="object.Range"></a>
@ -429,9 +429,9 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| ValidationDataSize | [uint64](#uint64) | | 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 |
| lifetime | [StorageGroup.Lifetime](#object.StorageGroup.Lifetime) | | Time until storage group is valid |
| ValidationDataSize | [uint64](#uint64) | | ValidationDataSize is size of the 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) | | Lifetime is time until storage group is valid |
<a name="object.StorageGroup.Lifetime"></a>
@ -442,8 +442,8 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| unit | [StorageGroup.Lifetime.Unit](#object.StorageGroup.Lifetime.Unit) | | Lifetime type |
| Value | [int64](#int64) | | Lifetime value |
| unit | [StorageGroup.Lifetime.Unit](#object.StorageGroup.Lifetime.Unit) | | Unit is lifetime type |
| Value | [int64](#int64) | | Value for lifetime |
<a name="object.SystemHeader"></a>
@ -455,11 +455,11 @@ in distributed system.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| Version | [uint64](#uint64) | | Version of the object structure |
| PayloadLength | [uint64](#uint64) | | Object payload length |
| ID | [bytes](#bytes) | | ObjectID is a UUID |
| PayloadLength | [uint64](#uint64) | | PayloadLength is an object payload length |
| ID | [bytes](#bytes) | | ID is an object identifier, is a valid UUIDv4 |
| OwnerID | [bytes](#bytes) | | OwnerID is a wallet address |
| CID | [bytes](#bytes) | | ContainerID is a SHA256 hash of the container structure |
| CreatedAt | [CreationPoint](#object.CreationPoint) | | Timestamp of object creation |
| CID | [bytes](#bytes) | | CID is a SHA256 hash of the container structure (container identifier) |
| CreatedAt | [CreationPoint](#object.CreationPoint) | | CreatedAt is a timestamp of object creation |
<a name="object.Tombstone"></a>
@ -521,9 +521,9 @@ in distributed system.
| Name | Number | Description |
| ---- | ------ | ----------- |
| Unlimited | 0 | Storage group always valid |
| NeoFSEpoch | 1 | Storage group is valid until lifetime NeoFS epoch |
| UnixTime | 2 | Storage group is valid until lifetime unix timestamp |
| Unlimited | 0 | Unlimited set if storage group always valid |
| NeoFSEpoch | 1 | NeoFSEpoch set if storage group is valid until lifetime NeoFS epoch |
| UnixTime | 2 | UnixTime set if storage group is valid until lifetime unix timestamp |
@ -535,9 +535,9 @@ in distributed system.
| Name | Number | Description |
| ---- | ------ | ----------- |
| Unknown | 0 | |
| Split | 1 | Object created after payload split |
| Sign | 2 | Object created after re-signing (doesn't used) |
| Mould | 3 | Object created after filling missing headers in the object |
| Split | 1 | Split sets when object created after payload split |
| Sign | 2 | Sign sets when object created after re-signing (doesn't used) |
| Mould | 3 | Mould sets when object created after filling missing headers in the object |
<!-- end enums -->

View file

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

View file

@ -30,7 +30,7 @@ Address of object (container id + object id)
| 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 |
<!-- end messages -->

View file

@ -34,11 +34,7 @@
<a name="session.Session"></a>
### 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);
@ -47,7 +43,16 @@ rpc Create(stream CreateRequest) returns (stream CreateResponse);
#### 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 |
| ---- | ----- | ------ |
@ -63,7 +68,7 @@ rpc Create(stream CreateRequest) returns (stream CreateResponse);
| 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 |
@ -76,7 +81,7 @@ rpc Create(stream CreateRequest) returns (stream CreateResponse);
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| 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 -->
@ -102,12 +107,12 @@ User token granting rights for object manipulation
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| Header | [VerificationHeader](#session.VerificationHeader) | | Header carries verification data of session key |
| OwnerID | [bytes](#bytes) | | Owner of manipulation object |
| FirstEpoch | [uint64](#uint64) | | Initial epoch of token lifetime |
| LastEpoch | [uint64](#uint64) | | Last epoch of token lifetime |
| ObjectID | [bytes](#bytes) | repeated | ID of manipulation object |
| Signature | [bytes](#bytes) | | Token signature. Signed by owner of manipulation object |
| ID | [bytes](#bytes) | | Token ID (UUID) |
| OwnerID | [bytes](#bytes) | | OwnerID is an owner of manipulation object |
| FirstEpoch | [uint64](#uint64) | | FirstEpoch is an initial epoch of token lifetime |
| LastEpoch | [uint64](#uint64) | | LastEpoch is a last epoch of token lifetime |
| ObjectID | [bytes](#bytes) | repeated | ObjectID is an object identifier of manipulation object |
| Signature | [bytes](#bytes) | | Signature is a token signature, signed by owner of manipulation object |
| ID | [bytes](#bytes) | | ID is a token identifier. valid UUIDv4 represented in bytes |
<a name="session.VerificationHeader"></a>
@ -118,8 +123,8 @@ User token granting rights for object manipulation
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| PublicKey | [bytes](#bytes) | | Session public key |
| KeySignature | [bytes](#bytes) | | Session public key signature. Signed by trusted side |
| PublicKey | [bytes](#bytes) | | PublicKey is a session public key |
| KeySignature | [bytes](#bytes) | | KeySignature is a session public key signature. Signed by trusted side |
<!-- end messages -->

View file

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

View file

@ -52,41 +52,64 @@ service Service {
}
message GetRequest {
uint64 Epoch = 1; // 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)
uint32 TTL = 3; // TTL must be larger than zero, it decreased in every neofs-node
// Epoch is set by user to 0, node set epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
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 {
oneof R {
Object object = 1; // Object header and some payload
bytes Chunk = 2; // Chunk of remaining payload
// Object header and some payload
Object object = 1;
// Chunk of remaining payload
bytes Chunk = 2;
}
}
message PutRequest {
message PutHeader {
uint64 Epoch = 1; // 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
uint32 TTL = 3; // TTL must be larger than zero, it decreased in every neofs-node
session.Token Token = 4; // Token with session public key and user's signature
// Epoch is set by user to 0, node set epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint64 Epoch = 1;
// 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 {
PutHeader Header = 1; // Header should be the first message in the stream
bytes Chunk = 2; // Chunk should be a remaining message in stream should be chunks
// Header should be the first message in the stream
PutHeader Header = 1;
// Chunk should be a remaining message in stream should be chunks
bytes Chunk = 2;
}
}
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 {
uint64 Epoch = 1; // 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)
bytes OwnerID = 3 [(gogoproto.nullable) = false, (gogoproto.customtype) = "OwnerID"]; // OwnerID is a wallet address
uint32 TTL = 4; // TTL must be larger than zero, it decreased in every neofs-node
session.Token Token = 5; // Token with session public key and user's signature
// Epoch is set by user to 0, node set epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint64 Epoch = 1;
// Address of object (container id + object id)
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
@ -94,47 +117,77 @@ message DeleteRequest {
message DeleteResponse {}
message HeadRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value
refs.Address Address = 2 [(gogoproto.nullable) = false, (gogoproto.customtype) = "Address"]; // Address of object (container id + object id)
bool FullHeaders = 3; // FullHeaders can be set true for extended headers in the object
uint32 TTL = 4; // TTL must be larger than zero, it decreased in every neofs-node
// Epoch should be empty on user side, node sets epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint64 Epoch = 1;
// 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 {
Object Object = 1; // Object without payload
// Object without payload
Object Object = 1;
}
message SearchRequest {
uint64 Epoch = 1; // Epoch is set by user to 0, node set epoch to the actual value
uint32 Version = 2; // Version of search query format
bytes ContainerID = 3 [(gogoproto.nullable) = false, (gogoproto.customtype) = "CID"]; // ContainerID for searching the object
bytes Query = 4; // Query in the binary serialized format
uint32 TTL = 5; // TTL must be larger than zero, it decreased in every neofs-node
// Epoch is set by user to 0, node set epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint64 Epoch = 1;
// Version of search query format
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 {
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 {
uint64 Epoch = 1; // 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)
repeated Range Ranges = 3 [(gogoproto.nullable) = false]; // Ranges of object's payload to return
uint32 TTL = 4; // TTL must be larger than zero, it decreased in every neofs-node
// Epoch is set by user to 0, node set epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint64 Epoch = 1;
// 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 {
repeated bytes Fragments = 1; // Fragments of object's payload
// Fragments of object's payload
repeated bytes Fragments = 1;
}
message GetRangeHashRequest {
uint64 Epoch = 1; // 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)
repeated Range Ranges = 3 [(gogoproto.nullable) = false]; // Ranges of object's payload to calculate homomorphic hash
bytes Salt = 4; // Salt is used to XOR object's payload ranges before hashing, it can be nil
uint32 TTL = 5; // TTL must be larger than zero, it decreased in every neofs-node
// Epoch is set by user to 0, node set epoch to the actual value
// Deprecated: will be replaced with RequestMetaHeader (see develop branch)
uint64 Epoch = 1;
// Address of object (container id + object id)
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 {
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
const (
Link_Unknown Link_Type = 0
Link_Parent Link_Type = 1
Link_Previous Link_Type = 2
Link_Next Link_Type = 3
Link_Child Link_Type = 4
Link_Unknown Link_Type = 0
// Parent object created during object transformation
Link_Parent Link_Type = 1
// Previous object in the linked list created during object transformation
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
)
@ -66,9 +71,12 @@ type Transform_Type int32
const (
Transform_Unknown Transform_Type = 0
Transform_Split Transform_Type = 1
Transform_Sign Transform_Type = 2
Transform_Mould Transform_Type = 3
// Split sets when object created after payload split
Transform_Split Transform_Type = 1
// 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{
@ -96,9 +104,12 @@ func (Transform_Type) EnumDescriptor() ([]byte, []int) {
type StorageGroup_Lifetime_Unit int32
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_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{
@ -122,7 +133,9 @@ func (StorageGroup_Lifetime_Unit) EnumDescriptor() ([]byte, []int) {
}
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -173,7 +186,9 @@ func (m *Range) GetLength() uint64 {
}
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -405,6 +420,7 @@ func (*Header) XXX_OneofWrappers() []interface{} {
}
type Tombstone struct {
// Epoch when tombstone was created
Epoch uint64 `protobuf:"varint,1,opt,name=Epoch,proto3" json:"Epoch,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -448,11 +464,17 @@ func (m *Tombstone) GetEpoch() uint64 {
}
type SystemHeader struct {
Version uint64 `protobuf:"varint,1,opt,name=Version,proto3" json:"Version,omitempty"`
PayloadLength uint64 `protobuf:"varint,2,opt,name=PayloadLength,proto3" json:"PayloadLength,omitempty"`
ID ID `protobuf:"bytes,3,opt,name=ID,proto3,customtype=ID" json:"ID"`
OwnerID OwnerID `protobuf:"bytes,4,opt,name=OwnerID,proto3,customtype=OwnerID" json:"OwnerID"`
CID CID `protobuf:"bytes,5,opt,name=CID,proto3,customtype=CID" json:"CID"`
// Version of the object structure
Version uint64 `protobuf:"varint,1,opt,name=Version,proto3" json:"Version,omitempty"`
// PayloadLength is an object payload length
PayloadLength uint64 `protobuf:"varint,2,opt,name=PayloadLength,proto3" json:"PayloadLength,omitempty"`
// 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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -510,7 +532,9 @@ func (m *SystemHeader) GetCreatedAt() CreationPoint {
}
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -561,7 +585,9 @@ func (m *CreationPoint) GetEpoch() uint64 {
}
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -612,11 +638,13 @@ func (m *IntegrityHeader) GetChecksumSignature() []byte {
}
type Link struct {
Type Link_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Link_Type" json:"type,omitempty"`
ID ID `protobuf:"bytes,2,opt,name=ID,proto3,customtype=ID" json:"ID"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
// Type of link
Type Link_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Link_Type" json:"type,omitempty"`
// ID is an object identifier, is a valid UUIDv4
ID ID `protobuf:"bytes,2,opt,name=ID,proto3,customtype=ID" json:"ID"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Link) Reset() { *m = Link{} }
@ -656,6 +684,7 @@ func (m *Link) GetType() Link_Type {
}
type Transform struct {
// Type of object transformation
Type Transform_Type `protobuf:"varint,1,opt,name=type,proto3,enum=object.Transform_Type" json:"type,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -699,12 +728,15 @@ func (m *Transform) GetType() Transform_Type {
}
type Object struct {
SystemHeader SystemHeader `protobuf:"bytes,1,opt,name=SystemHeader,proto3" json:"SystemHeader"`
Headers []Header `protobuf:"bytes,2,rep,name=Headers,proto3" json:"Headers"`
Payload []byte `protobuf:"bytes,3,opt,name=Payload,proto3" json:"Payload,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
// SystemHeader describes system header
SystemHeader SystemHeader `protobuf:"bytes,1,opt,name=SystemHeader,proto3" json:"SystemHeader"`
// Headers describes a set of an extended headers
Headers []Header `protobuf:"bytes,2,rep,name=Headers,proto3" json:"Headers"`
// Payload is an object's payload
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{} }
@ -758,8 +790,11 @@ func (m *Object) GetPayload() []byte {
}
type StorageGroup struct {
ValidationDataSize uint64 `protobuf:"varint,1,opt,name=ValidationDataSize,proto3" json:"ValidationDataSize,omitempty"`
ValidationHash Hash `protobuf:"bytes,2,opt,name=ValidationHash,proto3,customtype=Hash" json:"ValidationHash"`
// ValidationDataSize is size of the all object's payloads included into storage group
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -810,11 +845,13 @@ func (m *StorageGroup) GetLifetime() *StorageGroup_Lifetime {
}
type StorageGroup_Lifetime struct {
Unit StorageGroup_Lifetime_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=object.StorageGroup_Lifetime_Unit" json:"unit,omitempty"`
Value int64 `protobuf:"varint,2,opt,name=Value,proto3" json:"Value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
// Unit is lifetime type
Unit StorageGroup_Lifetime_Unit `protobuf:"varint,1,opt,name=unit,proto3,enum=object.StorageGroup_Lifetime_Unit" json:"unit,omitempty"`
// Value for lifetime
Value int64 `protobuf:"varint,2,opt,name=Value,proto3" json:"Value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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;
message Range {
uint64 Offset = 1; // Offset of the data range
uint64 Length = 2; // Length of the data range
// Offset of the data range
uint64 Offset = 1;
// Length of the data range
uint64 Length = 2;
}
message UserHeader {
string Key = 1; // Key of the user's header
string Value = 2; // Value of the user's header
// Key of the user's header
string Key = 1;
// Value of the user's header
string Value = 2;
}
message Header {
oneof Value {
Link Link = 1; // Link to other objects
refs.Address Redirect = 2; // RedirectNot used yet
UserHeader UserHeader = 3; // UserHeader defined by user
Transform Transform = 4; // Transform defines transform operation (e.g. payload split)
Tombstone Tombstone = 5; // Tombstone header that set up in deleted objects
session.VerificationHeader Verify = 6; // Verify header that contains session public key and user's signature
bytes HomoHash = 7 [(gogoproto.customtype) = "Hash"]; // Homomorphic hash of original object payload
bytes PayloadChecksum = 8; // PayloadChecksum of actual object's payload
IntegrityHeader Integrity = 9; // Integrity header with checksum of all above headers in the object
StorageGroup StorageGroup = 10; // StorageGroup contains meta information for the data audit
// Link to other objects
Link Link = 1;
// Redirect not used yet
refs.Address Redirect = 2;
// UserHeader is a set of KV headers defined by user
UserHeader UserHeader = 3;
// Transform defines transform operation (e.g. payload split)
Transform Transform = 4;
// Tombstone header that set up in deleted objects
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 {
uint64 Epoch = 1; // Epoch when tombstone was created
// Epoch when tombstone was created
uint64 Epoch = 1;
}
message SystemHeader {
uint64 Version = 1; // Version of the object structure
uint64 PayloadLength = 2; // Object payload length
// Version of the object structure
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
bytes OwnerID = 4 [(gogoproto.customtype) = "OwnerID", (gogoproto.nullable) = false]; // OwnerID is a wallet address
bytes CID = 5 [(gogoproto.customtype) = "CID", (gogoproto.nullable) = false]; // ContainerID is a SHA256 hash of the container structure
CreationPoint CreatedAt = 6 [(gogoproto.nullable) = false]; // Timestamp of object creation
// ID is an object identifier, is a valid UUIDv4
bytes ID = 3 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false];
// OwnerID is a wallet address
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 {
int64 UnixTime = 1; // Date of creation in unixtime format
uint64 Epoch = 2; // Date of creation in NeoFS epochs
// UnixTime is a date of creation in unixtime format
int64 UnixTime = 1;
// Epoch is a date of creation in NeoFS epochs
uint64 Epoch = 2;
}
message IntegrityHeader {
bytes HeadersChecksum = 1; // Checksum of all above headers in the object
bytes ChecksumSignature = 2; // User's signature of checksum to verify if it is correct
// HeadersChecksum is a checksum of all above headers in the object
bytes HeadersChecksum = 1;
// ChecksumSignature is an user's signature of checksum to verify if it is correct
bytes ChecksumSignature = 2;
}
message Link {
enum Type {
Unknown = 0;
Parent = 1; // Parent object created during object transformation
Previous = 2; // Previous object in the linked list created during object transformation
Next = 3; // Next object in the linked list created during object transformation
Child = 4; // Child object created during object transformation
StorageGroup = 5; // Object that included into this storage group
// Parent object created during object transformation
Parent = 1;
// Previous object in the linked list created during object transformation
Previous = 2;
// 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
bytes ID = 2 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false]; // Object id
// Type of link
Type type = 1;
// ID is an object identifier, is a valid UUIDv4
bytes ID = 2 [(gogoproto.customtype) = "ID", (gogoproto.nullable) = false];
}
message Transform {
enum Type {
Unknown = 0;
Split = 1; // Object created after payload split
Sign = 2; // Object created after re-signing (doesn't used)
Mould = 3; // Object created after filling missing headers in the object
// Split sets when object created after payload split
Split = 1;
// 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 {
SystemHeader SystemHeader = 1 [(gogoproto.nullable) = false]; // System header
repeated Header Headers = 2 [(gogoproto.nullable) = false]; // Extended headers
bytes Payload = 3; // Object's payload
// SystemHeader describes system header
SystemHeader SystemHeader = 1 [(gogoproto.nullable) = false];
// 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 {
uint64 ValidationDataSize = 1; // 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
// ValidationDataSize is size of the 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 {
enum Unit {
Unlimited = 0; // Storage group always valid
NeoFSEpoch = 1; // Storage group is valid until lifetime NeoFS epoch
UnixTime = 2; // Storage group is valid until lifetime unix timestamp
// Unlimited set if storage group always valid
Unlimited = 0;
// 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
int64 Value = 2; // Lifetime value
// Unit is lifetime type
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.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Type can be Exact or Regex
type Filter_Type int32
const (
// Exact sets when value of filter should be equal to the header value
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
)

View file

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

View file

@ -25,7 +25,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Address of object (container id + object id)
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"`
// CID is container identifier
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)
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];
// CID is container identifier
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.
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)
}
@ -282,6 +292,16 @@ func (x *sessionCreateClient) Recv() (*CreateResponse, error) {
// SessionServer is the server API for Session service.
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
}

View file

@ -9,17 +9,16 @@ option (gogoproto.stable_marshaler_all) = true;
service 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
// 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`.
rpc Create (stream CreateRequest) returns (stream CreateResponse);
}
@ -27,7 +26,7 @@ service Session {
message CreateRequest {
// Message should be one of
oneof Message {
// Message to init session opening. Carry:
// Init is a message to initialize session opening. Carry:
// owner of manipulation object;
// ID of manipulation object;
// token lifetime bounds.
@ -41,7 +40,7 @@ message CreateResponse {
oneof Message {
// Unsigned token with token ID and session public key generated on server side
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;
}
}

View file

@ -24,9 +24,9 @@ var _ = math.Inf
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type VerificationHeader struct {
// Session public key
// PublicKey is a session public key
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -80,17 +80,17 @@ func (m *VerificationHeader) GetKeySignature() []byte {
type Token struct {
// Header carries verification data of session key
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"`
// 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"`
// 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"`
// 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"`
// 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"`
// 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"`
XXX_NoUnkeyedLiteral struct{} `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;
message VerificationHeader {
// Session public key
// PublicKey is a session public key
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;
}
@ -17,16 +17,16 @@ message VerificationHeader {
message Token {
// Header carries verification data of session key
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];
// Initial epoch of token lifetime
// FirstEpoch is an initial epoch of token lifetime
uint64 FirstEpoch = 3;
// Last epoch of token lifetime
// LastEpoch is a last epoch of token lifetime
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];
// Token signature. Signed by owner of manipulation object
// Signature is a token signature, signed by owner of manipulation object
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];
}