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 |
ContainerID |
refs.ContainerID |
|
ContainerID 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
Message GetExtendedACLRequest
Field |
Type |
Label |
Description |
ContainerID |
refs.ContainerID |
|
ContainerID carries identifier of the container that has Extended ACL. |
Message GetExtendedACLResponse
Field |
Type |
Label |
Description |
EACL |
acl.EACLTable |
|
EACL 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 |
ContainerID |
refs.ContainerID |
|
ContainerID carries identifier of the container to get. |
Message GetResponse
Field |
Type |
Label |
Description |
Container |
Container |
|
Container that has been requested. |
Message ListRequest
Field |
Type |
Label |
Description |
OwnerID |
refs.OwnerID |
|
OwnerID carries identifier of the container owner. |
Message ListResponse
Field |
Type |
Label |
Description |
ContainerIDs |
refs.ContainerID |
repeated |
ContainerIDs carries list of identifiers of the containers that belong to the owner. |
Message PutRequest
Field |
Type |
Label |
Description |
Container |
Container |
|
Container to create in NeoFS. |
PublicKey |
bytes |
|
PublicKey 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 |
ContainerID |
refs.ContainerID |
|
ContainerID carries identifier of the new container. |
Message SetExtendedACLRequest
Field |
Type |
Label |
Description |
EACL |
acl.EACLTable |
|
EACL to set for the container. |
Signature |
bytes |
|
Signature of stable-marshalled Extended ACL according to RFC-6979. |
Message SetExtendedACLResponse
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 |
OwnerID |
refs.OwnerID |
|
OwnerID carries identifier of the container owner. |
Nonce |
bytes |
|
Nonce is a 16 byte UUID, used to avoid collisions of container id. |
BasicACL |
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 |