Protocol Documentation
Table of Contents
Top
container/service.proto
Service "container.Service"
Service provides API to access container smart-contract in morph chain
via NeoFS node.
rpc Put(PutRequest) returns (PutResponse);
rpc Delete(DeleteRequest) returns (DeleteResponse);
rpc Get(GetRequest) returns (GetResponse);
rpc List(ListRequest) returns (ListResponse);
rpc SetExtendedACL(SetExtendedACLRequest) returns (SetExtendedACLResponse);
rpc GetExtendedACL(GetExtendedACLRequest) returns (GetExtendedACLResponse);
Method Put
Put invokes 'Put' method in container smart-contract and returns
response immediately. After new block in morph chain, request is verified
by inner ring nodes. After one more block in morph chain, container
added into smart-contract storage.
Method Delete
Delete invokes 'Delete' method in container smart-contract and returns
response immediately. After new block in morph chain, request is verified
by inner ring nodes. After one more block in morph chain, container
removed from smart-contract storage.
Method Get
Get returns container from container smart-contract storage.
Method List
List returns all owner's containers from container smart-contract
storage.
Method SetExtendedACL
SetExtendedACL invokes 'SetEACL' method in container smart-contract and
returns response immediately. After new block in morph chain,
Extended ACL added into smart-contract storage.
Method GetExtendedACL
GetExtendedACL returns Extended ACL table and signature from container
smart-contract storage.
Message DeleteRequest
Field |
Type |
Label |
Description |
body |
DeleteRequest.Body |
|
Body of container delete request message. |
meta_header |
service.RequestMetaHeader |
|
Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.RequestVerificationHeader |
|
Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message DeleteRequest.Body
Field |
Type |
Label |
Description |
container_id |
refs.ContainerID |
|
container_id carries identifier of the container to delete from NeoFS. |
signature |
bytes |
|
Signature of container id according to RFC-6979. |
Message DeleteResponse
DeleteResponse is empty because delete operation is asynchronous and done
via consensus in inner ring nodes
Field |
Type |
Label |
Description |
body |
DeleteResponse.Body |
|
Body of container delete response message. |
meta_header |
service.ResponseMetaHeader |
|
Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.ResponseVerificationHeader |
|
Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message DeleteResponse.Body
Message GetExtendedACLRequest
Field |
Type |
Label |
Description |
body |
GetExtendedACLRequest.Body |
|
Body of get extended acl request message. |
meta_header |
service.RequestMetaHeader |
|
Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.RequestVerificationHeader |
|
Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message GetExtendedACLRequest.Body
Field |
Type |
Label |
Description |
container_id |
refs.ContainerID |
|
container_id carries identifier of the container that has Extended ACL. |
Message GetExtendedACLResponse
Field |
Type |
Label |
Description |
body |
GetExtendedACLResponse.Body |
|
Body of get extended acl response message. |
meta_header |
service.ResponseMetaHeader |
|
Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.ResponseVerificationHeader |
|
Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message GetExtendedACLResponse.Body
Field |
Type |
Label |
Description |
eacl |
acl.EACLTable |
|
Extended ACL that has been requested if it was set up. |
signature |
bytes |
|
Signature of stable-marshalled Extended ACL according to RFC-6979. |
Message GetRequest
Field |
Type |
Label |
Description |
body |
GetRequest.Body |
|
Body of container get request message. |
meta_header |
service.RequestMetaHeader |
|
Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.RequestVerificationHeader |
|
Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message GetRequest.Body
Field |
Type |
Label |
Description |
container_id |
refs.ContainerID |
|
container_id carries identifier of the container to get. |
Message GetResponse
Field |
Type |
Label |
Description |
body |
GetResponse.Body |
|
Body of container get response message. |
meta_header |
service.ResponseMetaHeader |
|
Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.ResponseVerificationHeader |
|
Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message GetResponse.Body
Field |
Type |
Label |
Description |
container |
Container |
|
Container that has been requested. |
Message ListRequest
Field |
Type |
Label |
Description |
body |
ListRequest.Body |
|
Body of list containers request message. |
meta_header |
service.RequestMetaHeader |
|
Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.RequestVerificationHeader |
|
Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message ListRequest.Body
Field |
Type |
Label |
Description |
owner_id |
refs.OwnerID |
|
owner_id carries identifier of the container owner. |
Message ListResponse
Field |
Type |
Label |
Description |
body |
ListResponse.Body |
|
Body of list containers response message. |
meta_header |
service.ResponseMetaHeader |
|
Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.ResponseVerificationHeader |
|
Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message ListResponse.Body
Field |
Type |
Label |
Description |
container_ids |
refs.ContainerID |
repeated |
ContainerIDs carries list of identifiers of the containers that belong to the owner. |
Message PutRequest
Field |
Type |
Label |
Description |
body |
PutRequest.Body |
|
Body of container put request message. |
meta_header |
service.RequestMetaHeader |
|
Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.RequestVerificationHeader |
|
Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message PutRequest.Body
Field |
Type |
Label |
Description |
container |
Container |
|
Container to create in NeoFS. |
public_key |
bytes |
|
Public Key of container owner. It can be public key of the owner or it can be public key that bound in neofs.id smart-contract. |
signature |
bytes |
|
Signature of stable-marshalled container according to RFC-6979. |
Message PutResponse
Field |
Type |
Label |
Description |
body |
PutResponse.Body |
|
Body of container put response message. |
meta_header |
service.ResponseMetaHeader |
|
Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.ResponseVerificationHeader |
|
Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message PutResponse.Body
Field |
Type |
Label |
Description |
container_id |
refs.ContainerID |
|
container_id carries identifier of the new container. |
Message SetExtendedACLRequest
Field |
Type |
Label |
Description |
body |
SetExtendedACLRequest.Body |
|
Body of set extended acl request message. |
meta_header |
service.RequestMetaHeader |
|
Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.RequestVerificationHeader |
|
Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message SetExtendedACLRequest.Body
Field |
Type |
Label |
Description |
eacl |
acl.EACLTable |
|
Extended ACL to set for the container. |
signature |
bytes |
|
Signature of stable-marshalled Extended ACL according to RFC-6979. |
Message SetExtendedACLResponse
Field |
Type |
Label |
Description |
body |
SetExtendedACLResponse.Body |
|
Body of set extended acl response message. |
meta_header |
service.ResponseMetaHeader |
|
Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
verify_header |
service.ResponseVerificationHeader |
|
Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
Message SetExtendedACLResponse.Body
Top
container/types.proto
Message Container
Container is a structure that defines object placement behaviour. Objects
can be stored only within containers. They define placement rule, attributes
and access control information. ID of the container is a 32 byte long
SHA256 hash of stable-marshalled container message.
Field |
Type |
Label |
Description |
owner_id |
refs.OwnerID |
|
OwnerID carries identifier of the container owner. |
nonce |
bytes |
|
Nonce is a 16 byte UUID, used to avoid collisions of container id. |
basic_acl |
uint32 |
|
BasicACL contains access control rules for owner, system, others groups and permission bits for bearer token and Extended ACL. |
attributes |
Container.Attribute |
repeated |
Attributes define any immutable characteristics of container. |
rules |
netmap.PlacementRule |
|
Rules define storage policy for the object inside the container. |
Message Container.Attribute
Attribute is a key-value pair of strings.
Field |
Type |
Label |
Description |
key |
string |
|
Key of immutable container attribute. |
value |
string |
|
Value of immutable container attribute. |
Scalar Value Types
.proto Type |
Notes |
C++ Type |
Java Type |
Python Type |
double |
|
double |
double |
float |
float |
|
float |
float |
float |
int32 |
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. |
int32 |
int |
int |
int64 |
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. |
int64 |
long |
int/long |
uint32 |
Uses variable-length encoding. |
uint32 |
int |
int/long |
uint64 |
Uses variable-length encoding. |
uint64 |
long |
int/long |
sint32 |
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. |
int32 |
int |
int |
sint64 |
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. |
int64 |
long |
int/long |
fixed32 |
Always four bytes. More efficient than uint32 if values are often greater than 2^28. |
uint32 |
int |
int |
fixed64 |
Always eight bytes. More efficient than uint64 if values are often greater than 2^56. |
uint64 |
long |
int/long |
sfixed32 |
Always four bytes. |
int32 |
int |
int |
sfixed64 |
Always eight bytes. |
int64 |
long |
int/long |
bool |
|
bool |
boolean |
boolean |
string |
A string must always contain UTF-8 encoded or 7-bit ASCII text. |
string |
String |
str/unicode |
bytes |
May contain any arbitrary sequence of bytes. |
string |
ByteString |
str |