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
bytes
ContainerID of 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
bytes
ContainerID 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
bytes
ContainerID 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
bytes
OwnerID is a 25 byte NEO3.0 wallet address.
Message ListResponse
Field
Type
Label
Description
ContainerIDs
bytes
repeated
ContainerIDs of 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
bytes
ContainerID 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 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.
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
bytes
OwnerID is a 25 byte NEO3.0 wallet address.
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
Attribute
repeated
Attributes define any immutable characteristics of container.
Rules
netmap.PlacementRule
Rules define storage policy for the object inside the container.
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