feature/compatibility #1

Closed
orikik wants to merge 2 commits from feature/compatibility into master
42 changed files with 1056 additions and 942 deletions

View file

@ -10,6 +10,8 @@ jobs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install deps
run: |
apt update

View file

@ -22,3 +22,13 @@ repos:
entry: make fmt
language: system
pass_filenames: false
- id: make-check-version
name: Run make check-version
entry: make check-version
language: system
pass_filenames: false
- id: make-compatibility
name: Run make compatibility
entry: make compatibility
language: system
pass_filenames: false

View file

@ -1,5 +1,19 @@
# Changelog
## [3.0] - 2024-10-08 - Potanin Glacier
### Added
- Version compatibility information
- Linter for checking version update
- Linter for checking json files for version compatibility
### Changed
- Proto package path
- Versioning (semver like 2.14.0 to milestone with patch like 3.0)
### Removed
- Proto options for all languages
## [Unreleased]
### Changed

View file

@ -53,6 +53,13 @@ changes. Maybe you will find it convenient to name branch in the
$ git checkout -b feature/123-something_awesome
```
### Maintain version compatibility
After your code changes, make sure
- Increment the milestone version or patch version in case of bug fixes [Version information](version.json).
- To add information about compatibility with previous versions of the api for the new code
[Compatibility files](compatibility).
### Test your changes
After your code changes, make sure

View file

@ -3,7 +3,7 @@ SHELL=bash
include help.mk
.PHONY: doc fmt pre-commit unpre-commit pre-commit-run
.PHONY: doc fmt check-version compatibility pre-commit unpre-commit pre-commit-run
# Regenerate documentation for proto files:
doc:
@ -22,6 +22,46 @@ fmt:
clang-format -i $$f; \
done
# Run version update check in version.json file
check-version:
@version=$$(git show remotes/origin/master:version.json); \
if [ -z "$$version" ]; then \
exit; \
fi; \
masterMilestone=$$(jq -n --argjson data "$$version" '$$data.milestone'); \
masterPatch=$$(jq -n --argjson data "$$version" '$$data.patch'); \
milestone=$$(jq -r '.milestone' version.json); \
patch=$$(jq -r '.patch' version.json); \
if [ "$$masterMilestone" -eq "$$milestone" -a "$$masterPatch" -eq "$$patch" ]; then \
echo "⇒ You need to update the api version in the version.json file"; \
exit 1; \
elif [ "$$masterMilestone" -gt "$$milestone" ]; then \
echo "⇒ The milestone cannot be decrement in the version.json file"; \
exit 1; \
elif [ "$$masterMilestone" -eq "$$milestone" -a "$$masterPatch" -gt "$$patch" ]; then \
echo "⇒ The patch cannot be decrement without milestone increment in the version.json file"; \
exit 1; \
elif [ "$$masterMilestone" -lt "$$milestone" -a "$$patch" -ne 0 ]; then \
echo "⇒ The patch should be 0 after milestone increment in the version.json file"; \
exit 1; \
fi
# Run a compatibility information check \
Checks that the files that describe compatibility in the compatibility package \
have the current version information added in the version.json file
compatibility:
@version=$$(jq -r '.milestone' version.json).$$(jq -r '.patch' version.json); \
conflicts=0; \
for f in `ls **/*.json`; do \
for rpc in $$(jq -r '.[] | to_entries | .[].key' $$f); do \
if $$(jq -r '.[].'$$rpc' | has("v'$$version'") | not' $$f); then \
echo "⇒ No compatibility information found for version" $$version "in file" $$f "for rpc" $$rpc; \
conflicts=$$(($conflicts+1)); \
fi \
done \
done; \
exit $$conflicts;
# Activate pre-commit hooks
pre-commit:
pre-commit install --hook-type pre-commit

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.accounting;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting";
option csharp_namespace = "Neo.FileStorage.API.Accounting";
package frost.fs.accounting;
import "accounting/types.proto";
import "refs/types.proto";
@ -33,19 +30,19 @@ message BalanceRequest {
message Body {
// Valid user identifier in `OwnerID` format for which the balance is
// requested. Required field.
neo.fs.v2.refs.OwnerID owner_id = 1;
frost.fs.refs.OwnerID owner_id = 1;
}
// Body of the balance request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// BalanceResponse message
@ -62,10 +59,10 @@ message BalanceResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.accounting;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting";
option csharp_namespace = "Neo.FileStorage.API.Accounting";
package frost.fs.accounting;
// Standard floating point data type can't be used in FrostFS due to inexactness
// of the result when doing lots of small number operations. To solve the lost

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.acl;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc;acl";
option csharp_namespace = "Neo.FileStorage.API.Acl";
package frost.fs.acl;
import "refs/types.proto";
import "ape/types.proto";
@ -169,10 +166,10 @@ message EACLRecord {
message EACLTable {
// eACL format version. Effectively, the version of API library used to create
// eACL Table.
neo.fs.v2.refs.Version version = 1 [ json_name = "version" ];
frost.fs.refs.Version version = 1 [ json_name = "version" ];
// Identifier of the container that should use given access control rules
neo.fs.v2.refs.ContainerID container_id = 2 [ json_name = "containerID" ];
frost.fs.refs.ContainerID container_id = 2 [ json_name = "containerID" ];
// List of Extended ACL rules
repeated EACLRecord records = 3 [ json_name = "records" ];
@ -202,7 +199,7 @@ message BearerToken {
// `OwnerID` defines to whom the token was issued. It must match the request
// originator's `OwnerID`. If empty, any token bearer will be accepted.
neo.fs.v2.refs.OwnerID owner_id = 2 [ json_name = "ownerID" ];
frost.fs.refs.OwnerID owner_id = 2 [ json_name = "ownerID" ];
// Lifetime parameters of the token. Field names taken from
// [rfc7519](https://tools.ietf.org/html/rfc7519).
@ -232,10 +229,10 @@ message BearerToken {
// preventing unauthorized access through the APE mechanism.
message APEOverride {
// Target for which chains are applied.
frostfs.v2.ape.ChainTarget target = 1 [ json_name = "target" ];
frost.fs.ape.ChainTarget target = 1 [ json_name = "target" ];
// The list of APE chains.
repeated frostfs.v2.ape.Chain chains = 2 [ json_name = "chains" ];
repeated frost.fs.ape.Chain chains = 2 [ json_name = "chains" ];
}
// APE override for the target.
@ -245,5 +242,5 @@ message BearerToken {
Body body = 1 [ json_name = "body" ];
// Signature of BearerToken body
neo.fs.v2.refs.Signature signature = 2 [ json_name = "signature" ];
frost.fs.refs.Signature signature = 2 [ json_name = "signature" ];
}

View file

@ -1,8 +1,6 @@
syntax = "proto3";
package frostfs.v2.ape;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc;ape";
package frost.fs.ape;
// TargetType is a type target to which a rule chain is defined.
enum TargetType {

View file

@ -1,12 +1,10 @@
syntax = "proto3";
package frostfs.v2.apemanager;
package frost.fs.apemanager;
import "ape/types.proto";
import "session/types.proto";
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/grpc;apemanager";
// `APEManagerService` provides API to manage rule chains within sidechain's
// `Policy` smart contract.
service APEManagerService {
@ -52,10 +50,10 @@ service APEManagerService {
message AddChainRequest {
message Body {
// A target for which a rule chain is added.
frostfs.v2.ape.ChainTarget target = 1;
frost.fs.ape.ChainTarget target = 1;
// The chain to set for the target.
frostfs.v2.ape.Chain chain = 2;
frost.fs.ape.Chain chain = 2;
}
// The request's body.
@ -63,12 +61,12 @@ message AddChainRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
message AddChainResponse {
@ -84,18 +82,18 @@ message AddChainResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
message RemoveChainRequest {
message Body {
// Target for which a rule chain is removed.
frostfs.v2.ape.ChainTarget target = 1;
frost.fs.ape.ChainTarget target = 1;
// Chain ID assigned for the rule chain.
bytes chain_id = 2;
@ -106,12 +104,12 @@ message RemoveChainRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
message RemoveChainResponse {
@ -124,18 +122,18 @@ message RemoveChainResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
message ListChainsRequest {
message Body {
// Target for which rule chains are listed.
frostfs.v2.ape.ChainTarget target = 1;
frost.fs.ape.ChainTarget target = 1;
}
// The request's body.
@ -143,18 +141,18 @@ message ListChainsRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
message ListChainsResponse {
message Body {
// The list of chains defined for the reqeusted target.
repeated frostfs.v2.ape.Chain chains = 1;
repeated frost.fs.ape.Chain chains = 1;
}
// The response's body.
@ -162,10 +160,10 @@ message ListChainsResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -0,0 +1,9 @@
{
"compatibilityInfo": {
"Balance": {
"v3.0": {
"compatibility": "SUPPORTED"
}
}
}
}

View file

@ -0,0 +1,19 @@
{
"compatibilityInfo": {
"AddChain": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"RemoveChain": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"ListChains": {
"v3.0": {
"compatibility": "SUPPORTED"
}
}
}
}

View file

@ -0,0 +1,24 @@
{
"compatibilityInfo": {
"Put": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Delete": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Get": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"List": {
"v3.0": {
"compatibility": "SUPPORTED"
}
}
}
}

19
compatibility/netmap.json Normal file
View file

@ -0,0 +1,19 @@
{
"compatibilityInfo": {
"LocalNodeInfo": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"NetworkInfo": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"NetmapSnapshot": {
"v3.0": {
"compatibility": "SUPPORTED"
}
}
}
}

49
compatibility/object.json Normal file
View file

@ -0,0 +1,49 @@
{
"compatibilityInfo": {
"Get": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Put": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Delete": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Head": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Search": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"GetRange": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"GetRangeHash": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"PutSingle": {
"v3.0": {
"compatibility": "SUPPORTED"
}
},
"Patch": {
"v3.0": {
"compatibility": "SUPPORTED"
}
}
}
}

View file

@ -0,0 +1,9 @@
{
"compatibilityInfo": {
"Create": {
"v3.0": {
"compatibility": "SUPPORTED"
}
}
}
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.container;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc;container";
option csharp_namespace = "Neo.FileStorage.API.Container";
package frost.fs.container;
import "container/types.proto";
import "refs/types.proto";
@ -75,19 +72,19 @@ message PutRequest {
container.Container container = 1;
// Signature of a stable-marshalled container according to RFC-6979.
neo.fs.v2.refs.SignatureRFC6979 signature = 2;
frost.fs.refs.SignatureRFC6979 signature = 2;
}
// Body of container put request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// New FrostFS Container creation response
@ -98,19 +95,19 @@ message PutResponse {
// returned here to make sure everything has been done as expected.
message Body {
// Unique identifier of the newly created container
neo.fs.v2.refs.ContainerID container_id = 1;
frost.fs.refs.ContainerID container_id = 1;
}
// Body of container put response message.
Body body = 1;
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Container removal request
@ -120,23 +117,23 @@ message DeleteRequest {
// smart contract, so signing algorithm must be supported by NeoVM.
message Body {
// Identifier of the container to delete from FrostFS
neo.fs.v2.refs.ContainerID container_id = 1;
frost.fs.refs.ContainerID container_id = 1;
// `ContainerID` signed with the container owner's key according to
// RFC-6979.
neo.fs.v2.refs.SignatureRFC6979 signature = 2;
frost.fs.refs.SignatureRFC6979 signature = 2;
}
// Body of container delete request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// `DeleteResponse` has an empty body because delete operation is asynchronous
@ -150,12 +147,12 @@ message DeleteResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Get container structure
@ -163,19 +160,19 @@ message GetRequest {
// Get container structure request body.
message Body {
// Identifier of the container to get
neo.fs.v2.refs.ContainerID container_id = 1;
frost.fs.refs.ContainerID container_id = 1;
}
// Body of container get request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Get container structure
@ -187,22 +184,22 @@ message GetResponse {
Container container = 1;
// Signature of a stable-marshalled container according to RFC-6979.
neo.fs.v2.refs.SignatureRFC6979 signature = 2;
frost.fs.refs.SignatureRFC6979 signature = 2;
// Session token if the container has been created within the session
neo.fs.v2.session.SessionToken session_token = 3;
frost.fs.session.SessionToken session_token = 3;
}
// Body of container get response message.
Body body = 1;
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// List containers
@ -210,19 +207,19 @@ message ListRequest {
// List containers request body.
message Body {
// Identifier of the container owner
neo.fs.v2.refs.OwnerID owner_id = 1;
frost.fs.refs.OwnerID owner_id = 1;
}
// Body of list containers request message
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// List containers
@ -238,10 +235,10 @@ message ListResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.container;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc;container";
option csharp_namespace = "Neo.FileStorage.API.Container";
package frost.fs.container;
import "netmap/types.proto";
import "refs/types.proto";
@ -15,10 +12,10 @@ import "refs/types.proto";
message Container {
// Container format version. Effectively, the version of API library used to
// create the container.
neo.fs.v2.refs.Version version = 1 [ json_name = "version" ];
frost.fs.refs.Version version = 1 [ json_name = "version" ];
// Identifier of the container owner
neo.fs.v2.refs.OwnerID owner_id = 2 [ json_name = "ownerID" ];
frost.fs.refs.OwnerID owner_id = 2 [ json_name = "ownerID" ];
// Nonce is a 16 byte UUIDv4, used to avoid collisions of `ContainerID`s
bytes nonce = 3 [ json_name = "nonce" ];
@ -38,16 +35,13 @@ message Container {
// There are some "well-known" attributes affecting system behaviour:
//
// * [ __SYSTEM__NAME ] \
// (`__NEOFS__NAME` is deprecated) \
// String of a human-friendly container name registered as a domain in
// NNS contract.
// * [ __SYSTEM__ZONE ] \
// (`__NEOFS__ZONE` is deprecated) \
// String of a zone for `__SYSTEM__NAME` (`__NEOFS__NAME` is deprecated).
// String of a zone for `__SYSTEM__NAME`.
// Used as a TLD of a domain name in NNS contract. If no zone is specified,
// use default zone: `container`.
// * [ __SYSTEM__DISABLE_HOMOMORPHIC_HASHING ] \
// (`__NEOFS__DISABLE_HOMOMORPHIC_HASHING` is deprecated) \
// Disables homomorphic hashing for the container if the value equals "true"
// string. Any other values are interpreted as missing attribute. Container
// could be accepted in a FrostFS network only if the global network hashing
@ -71,6 +65,6 @@ message Container {
repeated Attribute attributes = 5 [ json_name = "attributes" ];
// Placement policy for the object inside the container
neo.fs.v2.netmap.PlacementPolicy placement_policy = 6
frost.fs.netmap.PlacementPolicy placement_policy = 6
[ json_name = "placementPolicy" ];
}

View file

@ -3,15 +3,17 @@
This documents outlines the frostfs-api release process and can be used as a TODO
list for a new release.
## Pre-release actions
Increment the milestone version or patch version in case of bug fixes.
To add information about compatibility with previous versions of the api for the new code.
This must be run:
* `make doc`
## Pre-release checks
This should run successfully:
* `make lint`
## Pre-release actions
This must be run:
* `make doc`
* `make pre-commit-run`
## Writing CHANGELOG
@ -30,13 +32,13 @@ Release commit summary should follow the template:
`Release v<Version> - <Codename island> (<Hangeul>, <Hanja>)`, e.g.:
```
Release v2.9.0 - Anmyeondo (안면도, 安眠島)
Release v3.0 - Anmyeondo (안면도, 安眠島)
```
## Tag the release
Use `vX.Y.Z` tag following the semantic versioning standard. For pre-release
versions use `vX.Y.Z-rc.N` scheme.
Use `vX.Y` tag (milestone version with patch). For pre-release
versions use `vX.Y-rc.N` scheme.
## Push changes and release tag to Github
@ -45,7 +47,7 @@ that releasing requires admin privileges for the project), both the `master`
branch update and tag must be pushed simultaneously like this:
```
$ git push origin master v2.7.0
$ git push origin master v2.7
```
## Make a proper Github release
@ -58,5 +60,5 @@ releases.
## Post-release actions
* Close corresponding X.Y.Z Github milestone
* Close corresponding X.Y Github milestone
* Make announcements in Matrix and Discord channels

View file

@ -1,19 +1,16 @@
syntax = "proto3";
package neo.fs.v2.lock;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/lock/grpc;lock";
option csharp_namespace = "Neo.FileStorage.API.Lock";
package frost.fs.lock;
import "refs/types.proto";
// Lock objects protects a list of objects from being deleted. The lifetime of a
// lock object is limited similar to regular objects in
// `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated)
// `__SYSTEM__EXPIRATION_EPOCH`
// attribute. Lock object MUST have expiration epoch. It is impossible to delete
// a lock object via ObjectService.Delete RPC call.
message Lock {
// List of objects to lock. Must not be empty or carry empty IDs.
// All members must be of the `REGULAR` type.
repeated neo.fs.v2.refs.ObjectID members = 1 [ json_name = "members" ];
repeated frost.fs.refs.ObjectID members = 1 [ json_name = "members" ];
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.netmap;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap";
option csharp_namespace = "Neo.FileStorage.API.Netmap";
package frost.fs.netmap;
import "netmap/types.proto";
import "refs/types.proto";
@ -53,12 +50,12 @@ message LocalNodeInfoRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Local Node Info, including API Version in use
@ -66,7 +63,7 @@ message LocalNodeInfoResponse {
// Local Node Info, including API Version in use.
message Body {
// Latest FrostFS API version in use
neo.fs.v2.refs.Version version = 1;
frost.fs.refs.Version version = 1;
// NodeInfo structure with recent information from node itself
NodeInfo node_info = 2;
@ -76,12 +73,12 @@ message LocalNodeInfoResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect response execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Get NetworkInfo structure with the network view from a particular node.
@ -93,12 +90,12 @@ message NetworkInfoRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Response with NetworkInfo structure including current epoch and
@ -114,12 +111,12 @@ message NetworkInfoResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect response execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Get netmap snapshot request
@ -132,12 +129,12 @@ message NetmapSnapshotRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Response with current netmap snapshot
@ -153,10 +150,10 @@ message NetmapSnapshotResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect response execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.netmap;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap";
option csharp_namespace = "Neo.FileStorage.API.Netmap";
package frost.fs.netmap;
// Operations on filters
enum Operation {

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.object;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc;object";
option csharp_namespace = "Neo.FileStorage.API.Object";
package frost.fs.object;
import "object/types.proto";
import "refs/types.proto";
@ -21,15 +18,12 @@ service ObjectService {
//
// Extended headers can change `Get` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requsted version of Network Map for object placement
// calculation.
// * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// Will try older versions (starting from `__SYSTEM__NETMAP_EPOCH`
// (`__NEOFS__NETMAP_EPOCH` is deprecated) if specified or the latest one
// otherwise) of Network Map to find an object until the depth limit is
// reached.
// if specified or the latest one otherwise) of Network Map
// to find an object until the depth limit is reached.
//
// Please refer to detailed `XHeader` description.
//
@ -60,7 +54,6 @@ service ObjectService {
//
// Extended headers can change `Put` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requsted version of Network Map for object placement
// calculation.
//
@ -95,7 +88,6 @@ service ObjectService {
//
// Extended headers can change `Delete` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation.
//
@ -126,7 +118,6 @@ service ObjectService {
//
// Extended headers can change `Head` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation.
//
@ -156,7 +147,6 @@ service ObjectService {
//
// Extended headers can change `Search` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation.
//
@ -183,11 +173,9 @@ service ObjectService {
//
// Extended headers can change `GetRange` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation.
// * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// Will try older versions of Network Map to find an object until the depth
// limit is reached.
//
@ -220,11 +208,9 @@ service ObjectService {
//
// Extended headers can change `GetRangeHash` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation.
// * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// Will try older versions of Network Map to find an object until the depth
// limit is reached.
//
@ -254,7 +240,6 @@ service ObjectService {
//
// Extended headers can change `Put` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requested version of Network Map for object placement
// calculation.
//
@ -304,7 +289,6 @@ service ObjectService {
//
// Extended headers can change `Patch` behaviour:
// * [ __SYSTEM__NETMAP_EPOCH \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Will use the requsted version of Network Map for object placement
// calculation.
//
@ -339,7 +323,7 @@ message GetRequest {
// GET Object request body
message Body {
// Address of the requested object
neo.fs.v2.refs.Address address = 1;
frost.fs.refs.Address address = 1;
// If `raw` flag is set, request will work only with objects that are
// physically stored on the peer node
@ -350,12 +334,12 @@ message GetRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// GET object response
@ -366,10 +350,10 @@ message GetResponse {
// set of all `Object` structure's fields except `payload`.
message Init {
// Object's unique identifier.
neo.fs.v2.refs.ObjectID object_id = 1;
frost.fs.refs.ObjectID object_id = 1;
// Signed `ObjectID`
neo.fs.v2.refs.Signature signature = 2;
frost.fs.refs.Signature signature = 2;
// Object metadata headers
Header header = 3;
@ -394,12 +378,12 @@ message GetResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// PUT object request
@ -410,10 +394,10 @@ message PutRequest {
// are not set, they will be calculated by a peer node.
message Init {
// ObjectID if available.
neo.fs.v2.refs.ObjectID object_id = 1;
frost.fs.refs.ObjectID object_id = 1;
// Object signature if available
neo.fs.v2.refs.Signature signature = 2;
frost.fs.refs.Signature signature = 2;
// Object's Header
Header header = 3;
@ -444,12 +428,12 @@ message PutRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// PUT Object response
@ -457,19 +441,19 @@ message PutResponse {
// PUT Object response body
message Body {
// Identifier of the saved object
neo.fs.v2.refs.ObjectID object_id = 1;
frost.fs.refs.ObjectID object_id = 1;
}
// Body of put object response message.
Body body = 1;
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Object DELETE request
@ -477,19 +461,19 @@ message DeleteRequest {
// Object DELETE request body
message Body {
// Address of the object to be deleted
neo.fs.v2.refs.Address address = 1;
frost.fs.refs.Address address = 1;
}
// Body of delete object request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// DeleteResponse body is empty because we cannot guarantee permanent object
@ -498,7 +482,7 @@ message DeleteResponse {
// Object DELETE Response has an empty body.
message Body {
// Address of the tombstone created for the deleted object
neo.fs.v2.refs.Address tombstone = 1;
frost.fs.refs.Address tombstone = 1;
}
// Body of delete object response message.
@ -506,12 +490,12 @@ message DeleteResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Object HEAD request
@ -519,7 +503,7 @@ message HeadRequest {
// Object HEAD request body
message Body {
// Address of the object with the requested Header
neo.fs.v2.refs.Address address = 1;
frost.fs.refs.Address address = 1;
// Return only minimal header subset
bool main_only = 2;
@ -533,12 +517,12 @@ message HeadRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Tuple of a full object header and signature of an `ObjectID`. \
@ -553,7 +537,7 @@ message HeaderWithSignature {
Header header = 1 [ json_name = "header" ];
// Signed `ObjectID` to verify full header's authenticity
neo.fs.v2.refs.Signature signature = 2 [ json_name = "signature" ];
frost.fs.refs.Signature signature = 2 [ json_name = "signature" ];
}
// Object HEAD response
@ -581,12 +565,12 @@ message HeadResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Object Search request
@ -594,7 +578,7 @@ message SearchRequest {
// Object Search request body
message Body {
// Container identifier were to search
neo.fs.v2.refs.ContainerID container_id = 1;
frost.fs.refs.ContainerID container_id = 1;
// Version of the Query Language used
uint32 version = 2;
@ -673,12 +657,12 @@ message SearchRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Search response
@ -686,19 +670,19 @@ message SearchResponse {
// Object Search response body
message Body {
// List of `ObjectID`s that match the search query
repeated neo.fs.v2.refs.ObjectID id_list = 1;
repeated frost.fs.refs.ObjectID id_list = 1;
}
// Body of search object response message.
Body body = 1;
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Object payload range.Ranges of zero length SHOULD be considered as invalid.
@ -715,7 +699,7 @@ message GetRangeRequest {
// Byte range of object's payload request body
message Body {
// Address of the object containing the requested payload range
neo.fs.v2.refs.Address address = 1;
frost.fs.refs.Address address = 1;
// Requested payload range
Range range = 2;
@ -730,12 +714,12 @@ message GetRangeRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Get part of object's payload
@ -763,12 +747,12 @@ message GetRangeResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Get hash of object's payload part
@ -776,7 +760,7 @@ message GetRangeHashRequest {
// Get hash of object's payload part request body.
message Body {
// Address of the object that containing the requested payload range
neo.fs.v2.refs.Address address = 1;
frost.fs.refs.Address address = 1;
// List of object's payload ranges to calculate homomorphic hash
repeated Range ranges = 2;
@ -785,19 +769,19 @@ message GetRangeHashRequest {
bytes salt = 3;
// Checksum algorithm type
neo.fs.v2.refs.ChecksumType type = 4;
frost.fs.refs.ChecksumType type = 4;
}
// Body of get range hash object request message.
Body body = 1;
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Get hash of object's payload part
@ -805,7 +789,7 @@ message GetRangeHashResponse {
// Get hash of object's payload part response body.
message Body {
// Checksum algorithm type
neo.fs.v2.refs.ChecksumType type = 1;
frost.fs.refs.ChecksumType type = 1;
// List of range hashes in a binary format
repeated bytes hash_list = 2;
@ -815,12 +799,12 @@ message GetRangeHashResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Object PUT Single request
@ -842,12 +826,12 @@ message PutSingleRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Object PUT Single response
@ -859,12 +843,12 @@ message PutSingleResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}
// Object PATCH request
@ -872,11 +856,11 @@ message PatchRequest {
// PATCH request body
message Body {
// The address of the object that is requested to get patched.
neo.fs.v2.refs.Address address = 1;
frost.fs.refs.Address address = 1;
// New attributes for the object. See `replace_attributes` flag usage to
// define how new attributes should be set.
repeated neo.fs.v2.object.Header.Attribute new_attributes = 2;
repeated frost.fs.object.Header.Attribute new_attributes = 2;
// If this flag is set, then the object's attributes will be entirely
// replaced by `new_attributes` list. The empty `new_attributes` list with
@ -909,12 +893,12 @@ message PatchRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Object PATCH response
@ -922,7 +906,7 @@ message PatchResponse {
// PATCH response body
message Body {
// The object ID of the saved patched object.
neo.fs.v2.refs.ObjectID object_id = 1;
frost.fs.refs.ObjectID object_id = 1;
}
// Body for patch response message.
@ -930,10 +914,10 @@ message PatchResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.object;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc;object";
option csharp_namespace = "Neo.FileStorage.API.Object";
package frost.fs.object;
import "refs/types.proto";
import "session/types.proto";
@ -52,13 +49,13 @@ enum MatchType {
message ShortHeader {
// Object format version. Effectively, the version of API library used to
// create particular object.
neo.fs.v2.refs.Version version = 1 [ json_name = "version" ];
frost.fs.refs.Version version = 1 [ json_name = "version" ];
// Epoch when the object was created
uint64 creation_epoch = 2 [ json_name = "creationEpoch" ];
// Object's owner
neo.fs.v2.refs.OwnerID owner_id = 3 [ json_name = "ownerID" ];
frost.fs.refs.OwnerID owner_id = 3 [ json_name = "ownerID" ];
// Type of the object payload content
ObjectType object_type = 4 [ json_name = "objectType" ];
@ -68,24 +65,23 @@ message ShortHeader {
uint64 payload_length = 5 [ json_name = "payloadLength" ];
// Hash of payload bytes
neo.fs.v2.refs.Checksum payload_hash = 6 [ json_name = "payloadHash" ];
frost.fs.refs.Checksum payload_hash = 6 [ json_name = "payloadHash" ];
// Homomorphic hash of the object payload
neo.fs.v2.refs.Checksum homomorphic_hash = 7
[ json_name = "homomorphicHash" ];
frost.fs.refs.Checksum homomorphic_hash = 7 [ json_name = "homomorphicHash" ];
}
// Object Header
message Header {
// Object format version. Effectively, the version of API library used to
// create particular object
neo.fs.v2.refs.Version version = 1 [ json_name = "version" ];
frost.fs.refs.Version version = 1 [ json_name = "version" ];
// Object's container
neo.fs.v2.refs.ContainerID container_id = 2 [ json_name = "containerID" ];
frost.fs.refs.ContainerID container_id = 2 [ json_name = "containerID" ];
// Object's owner
neo.fs.v2.refs.OwnerID owner_id = 3 [ json_name = "ownerID" ];
frost.fs.refs.OwnerID owner_id = 3 [ json_name = "ownerID" ];
// Object creation Epoch
uint64 creation_epoch = 4 [ json_name = "creationEpoch" ];
@ -95,18 +91,17 @@ message Header {
uint64 payload_length = 5 [ json_name = "payloadLength" ];
// Hash of payload bytes
neo.fs.v2.refs.Checksum payload_hash = 6 [ json_name = "payloadHash" ];
frost.fs.refs.Checksum payload_hash = 6 [ json_name = "payloadHash" ];
// Type of the object payload content
ObjectType object_type = 7 [ json_name = "objectType" ];
// Homomorphic hash of the object payload
neo.fs.v2.refs.Checksum homomorphic_hash = 8
[ json_name = "homomorphicHash" ];
frost.fs.refs.Checksum homomorphic_hash = 8 [ json_name = "homomorphicHash" ];
// Session token, if it was used during Object creation. Need it to verify
// integrity and authenticity out of Request scope.
neo.fs.v2.session.SessionToken session_token = 9
frost.fs.session.SessionToken session_token = 9
[ json_name = "sessionToken" ];
// `Attribute` is a user-defined Key-Value metadata pair attached to an
@ -117,23 +112,19 @@ message Header {
// will be considered invalid.
//
// There are some "well-known" attributes starting with `__SYSTEM__`
// (`__NEOFS__` is deprecated) prefix that affect system behaviour:
// prefix that affect system behaviour:
//
// * [ __SYSTEM__UPLOAD_ID ] \
// (`__NEOFS__UPLOAD_ID` is deprecated) \
// Marks smaller parts of a split bigger object
// * [ __SYSTEM__EXPIRATION_EPOCH ] \
// (`__NEOFS__EXPIRATION_EPOCH` is deprecated) \
// The epoch after which object with no LOCKs on it becomes unavailable.
// Locked object continues to be available until each of the LOCKs expire.
// * [ __SYSTEM__TICK_EPOCH ] \
// (`__NEOFS__TICK_EPOCH` is deprecated) \
// Decimal number that defines what epoch must produce
// object notification with UTF-8 object address in a
// body (`0` value produces notification right after
// object put)
// * [ __SYSTEM__TICK_TOPIC ] \
// (`__NEOFS__TICK_TOPIC` is deprecated) \
// UTF-8 string topic ID that is used for object notification
//
// And some well-known attributes used by applications only:
@ -171,20 +162,20 @@ message Header {
// must be within the same container.
message Split {
// Identifier of the origin object. Known only to the minor child.
neo.fs.v2.refs.ObjectID parent = 1 [ json_name = "parent" ];
frost.fs.refs.ObjectID parent = 1 [ json_name = "parent" ];
// Identifier of the left split neighbor
neo.fs.v2.refs.ObjectID previous = 2 [ json_name = "previous" ];
frost.fs.refs.ObjectID previous = 2 [ json_name = "previous" ];
// `signature` field of the parent object. Used to reconstruct parent.
neo.fs.v2.refs.Signature parent_signature = 3
frost.fs.refs.Signature parent_signature = 3
[ json_name = "parentSignature" ];
// `header` field of the parent object. Used to reconstruct parent.
Header parent_header = 4 [ json_name = "parentHeader" ];
// List of identifiers of the objects generated by splitting current one.
repeated neo.fs.v2.refs.ObjectID children = 5 [ json_name = "children" ];
repeated frost.fs.refs.ObjectID children = 5 [ json_name = "children" ];
// 16 byte UUIDv4 used to identify the split object hierarchy parts. Must be
// unique inside container. All objects participating in the split must have
@ -199,7 +190,7 @@ message Header {
// All objects belonging to a single EC group have the same `parent` field.
message EC {
// Identifier of the origin object. Known to all chunks.
neo.fs.v2.refs.ObjectID parent = 1 [ json_name = "parent" ];
frost.fs.refs.ObjectID parent = 1 [ json_name = "parent" ];
// Index of this chunk.
uint32 index = 2 [ json_name = "index" ];
// Total number of chunks in this split.
@ -216,7 +207,7 @@ message Header {
// itself, is a part of Split and if an object ID of its parent is
// presented. The field allows to determine how EC-chunk is placed in Split
// hierarchy.
neo.fs.v2.refs.ObjectID parent_split_parent_id = 7
frost.fs.refs.ObjectID parent_split_parent_id = 7
[ json_name = "parentSplitParentID" ];
// EC parent's attributes.
repeated Attribute parent_attributes = 8 [ json_name = "parentAttributes" ];
@ -233,10 +224,10 @@ message Header {
// in the header.
message Object {
// Object's unique identifier.
neo.fs.v2.refs.ObjectID object_id = 1 [ json_name = "objectID" ];
frost.fs.refs.ObjectID object_id = 1 [ json_name = "objectID" ];
// Signed object_id
neo.fs.v2.refs.Signature signature = 2 [ json_name = "signature" ];
frost.fs.refs.Signature signature = 2 [ json_name = "signature" ];
// Object metadata headers
Header header = 3 [ json_name = "header" ];
@ -255,19 +246,19 @@ message SplitInfo {
// The identifier of the last object in split hierarchy parts. It contains
// split header with the original object header.
neo.fs.v2.refs.ObjectID last_part = 2;
frost.fs.refs.ObjectID last_part = 2;
// The identifier of a linking object for split hierarchy parts. It contains
// split header with the original object header and a sorted list of
// object parts.
neo.fs.v2.refs.ObjectID link = 3;
frost.fs.refs.ObjectID link = 3;
}
// Meta information for the erasure-encoded object.
message ECInfo {
message Chunk {
// Object ID of the chunk.
neo.fs.v2.refs.ObjectID id = 1;
frost.fs.refs.ObjectID id = 1;
// Index of the chunk.
uint32 index = 2;
// Total number of chunks in this split.

View file

@ -5,19 +5,19 @@
- [accounting/service.proto](#accounting/service.proto)
- Services
- [AccountingService](#neo.fs.v2.accounting.AccountingService)
- [AccountingService](#frost.fs.accounting.AccountingService)
- Messages
- [BalanceRequest](#neo.fs.v2.accounting.BalanceRequest)
- [BalanceRequest.Body](#neo.fs.v2.accounting.BalanceRequest.Body)
- [BalanceResponse](#neo.fs.v2.accounting.BalanceResponse)
- [BalanceResponse.Body](#neo.fs.v2.accounting.BalanceResponse.Body)
- [BalanceRequest](#frost.fs.accounting.BalanceRequest)
- [BalanceRequest.Body](#frost.fs.accounting.BalanceRequest.Body)
- [BalanceResponse](#frost.fs.accounting.BalanceResponse)
- [BalanceResponse.Body](#frost.fs.accounting.BalanceResponse.Body)
- [accounting/types.proto](#accounting/types.proto)
- Messages
- [Decimal](#neo.fs.v2.accounting.Decimal)
- [Decimal](#frost.fs.accounting.Decimal)
- [Scalar Value Types](#scalar-value-types)
@ -32,9 +32,9 @@
<a name="neo.fs.v2.accounting.AccountingService"></a>
<a name="frost.fs.accounting.AccountingService"></a>
### Service "neo.fs.v2.accounting.AccountingService"
### Service "frost.fs.accounting.AccountingService"
Accounting service provides methods for interaction with FrostFS sidechain
via other FrostFS nodes to get information about the account balance. Deposit
and Withdraw operations can't be implemented here, as they require Mainnet
@ -57,11 +57,11 @@ balance has been successfully read;
| Name | Input | Output |
| ---- | ----- | ------ |
| Balance | [BalanceRequest](#neo.fs.v2.accounting.BalanceRequest) | [BalanceResponse](#neo.fs.v2.accounting.BalanceResponse) |
| Balance | [BalanceRequest](#frost.fs.accounting.BalanceRequest) | [BalanceResponse](#frost.fs.accounting.BalanceResponse) |
<!-- end services -->
<a name="neo.fs.v2.accounting.BalanceRequest"></a>
<a name="frost.fs.accounting.BalanceRequest"></a>
### Message BalanceRequest
BalanceRequest message
@ -69,12 +69,12 @@ BalanceRequest message
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [BalanceRequest.Body](#neo.fs.v2.accounting.BalanceRequest.Body) | | Body of the balance request message. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [BalanceRequest.Body](#frost.fs.accounting.BalanceRequest.Body) | | Body of the balance request message. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.accounting.BalanceRequest.Body"></a>
<a name="frost.fs.accounting.BalanceRequest.Body"></a>
### Message BalanceRequest.Body
To indicate the account for which the balance is requested, its identifier
@ -85,10 +85,10 @@ request's signer `OwnerID`.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | Valid user identifier in `OwnerID` format for which the balance is requested. Required field. |
| owner_id | [frost.fs.refs.OwnerID](#frost.fs.refs.OwnerID) | | Valid user identifier in `OwnerID` format for which the balance is requested. Required field. |
<a name="neo.fs.v2.accounting.BalanceResponse"></a>
<a name="frost.fs.accounting.BalanceResponse"></a>
### Message BalanceResponse
BalanceResponse message
@ -96,12 +96,12 @@ BalanceResponse message
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [BalanceResponse.Body](#neo.fs.v2.accounting.BalanceResponse.Body) | | Body of the balance response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [BalanceResponse.Body](#frost.fs.accounting.BalanceResponse.Body) | | Body of the balance response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.accounting.BalanceResponse.Body"></a>
<a name="frost.fs.accounting.BalanceResponse.Body"></a>
### Message BalanceResponse.Body
The amount of funds in GAS token for the `OwnerID`'s account requested.
@ -111,7 +111,7 @@ rounding.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| balance | [Decimal](#neo.fs.v2.accounting.Decimal) | | Amount of funds in GAS token for the requested account. |
| balance | [Decimal](#frost.fs.accounting.Decimal) | | Amount of funds in GAS token for the requested account. |
<!-- end messages -->
@ -128,7 +128,7 @@ rounding.
<!-- end services -->
<a name="neo.fs.v2.accounting.Decimal"></a>
<a name="frost.fs.accounting.Decimal"></a>
### Message Decimal
Standard floating point data type can't be used in FrostFS due to inexactness

View file

@ -6,14 +6,14 @@
- [acl/types.proto](#acl/types.proto)
- Messages
- [BearerToken](#neo.fs.v2.acl.BearerToken)
- [BearerToken.Body](#neo.fs.v2.acl.BearerToken.Body)
- [BearerToken.Body.APEOverride](#neo.fs.v2.acl.BearerToken.Body.APEOverride)
- [BearerToken.Body.TokenLifetime](#neo.fs.v2.acl.BearerToken.Body.TokenLifetime)
- [EACLRecord](#neo.fs.v2.acl.EACLRecord)
- [EACLRecord.Filter](#neo.fs.v2.acl.EACLRecord.Filter)
- [EACLRecord.Target](#neo.fs.v2.acl.EACLRecord.Target)
- [EACLTable](#neo.fs.v2.acl.EACLTable)
- [BearerToken](#frost.fs.acl.BearerToken)
- [BearerToken.Body](#frost.fs.acl.BearerToken.Body)
- [BearerToken.Body.APEOverride](#frost.fs.acl.BearerToken.Body.APEOverride)
- [BearerToken.Body.TokenLifetime](#frost.fs.acl.BearerToken.Body.TokenLifetime)
- [EACLRecord](#frost.fs.acl.EACLRecord)
- [EACLRecord.Filter](#frost.fs.acl.EACLRecord.Filter)
- [EACLRecord.Target](#frost.fs.acl.EACLRecord.Target)
- [EACLTable](#frost.fs.acl.EACLTable)
- [Scalar Value Types](#scalar-value-types)
@ -29,7 +29,7 @@
<!-- end services -->
<a name="neo.fs.v2.acl.BearerToken"></a>
<a name="frost.fs.acl.BearerToken"></a>
### Message BearerToken
BearerToken allows to attach signed Extended ACL rules to the request in
@ -45,11 +45,11 @@ using the key associated with the container's `OwnerID`.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [BearerToken.Body](#neo.fs.v2.acl.BearerToken.Body) | | Bearer Token body |
| signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Signature of BearerToken body |
| body | [BearerToken.Body](#frost.fs.acl.BearerToken.Body) | | Bearer Token body |
| signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Signature of BearerToken body |
<a name="neo.fs.v2.acl.BearerToken.Body"></a>
<a name="frost.fs.acl.BearerToken.Body"></a>
### Message BearerToken.Body
Bearer Token body structure contains Extended ACL table issued by the
@ -58,16 +58,16 @@ container owner with additional information preventing token abuse.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| eacl_table | [EACLTable](#neo.fs.v2.acl.EACLTable) | | Table of Extended ACL rules to use instead of the ones attached to the container. If it contains `container_id` field, bearer token is only valid for this specific container. Otherwise, any container of the same owner is allowed.
| eacl_table | [EACLTable](#frost.fs.acl.EACLTable) | | Table of Extended ACL rules to use instead of the ones attached to the container. If it contains `container_id` field, bearer token is only valid for this specific container. Otherwise, any container of the same owner is allowed.
Deprecated: eACL tables are no longer relevant - `APEOverrides` should be used instead. |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | `OwnerID` defines to whom the token was issued. It must match the request originator's `OwnerID`. If empty, any token bearer will be accepted. |
| lifetime | [BearerToken.Body.TokenLifetime](#neo.fs.v2.acl.BearerToken.Body.TokenLifetime) | | Token expiration and valid time period parameters |
| owner_id | [frost.fs.refs.OwnerID](#frost.fs.refs.OwnerID) | | `OwnerID` defines to whom the token was issued. It must match the request originator's `OwnerID`. If empty, any token bearer will be accepted. |
| lifetime | [BearerToken.Body.TokenLifetime](#frost.fs.acl.BearerToken.Body.TokenLifetime) | | Token expiration and valid time period parameters |
| allow_impersonate | [bool](#bool) | | AllowImpersonate flag to consider token signer as request owner. If this field is true extended ACL table in token body isn't processed. |
| ape_override | [BearerToken.Body.APEOverride](#neo.fs.v2.acl.BearerToken.Body.APEOverride) | | APE override for the target. |
| ape_override | [BearerToken.Body.APEOverride](#frost.fs.acl.BearerToken.Body.APEOverride) | | APE override for the target. |
<a name="neo.fs.v2.acl.BearerToken.Body.APEOverride"></a>
<a name="frost.fs.acl.BearerToken.Body.APEOverride"></a>
### Message BearerToken.Body.APEOverride
APEOverride is the list of APE chains defined for a target.
@ -81,11 +81,11 @@ preventing unauthorized access through the APE mechanism.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| target | [frostfs.v2.ape.ChainTarget](#frostfs.v2.ape.ChainTarget) | | Target for which chains are applied. |
| chains | [frostfs.v2.ape.Chain](#frostfs.v2.ape.Chain) | repeated | The list of APE chains. |
| target | [frost.fs.ape.ChainTarget](#frost.fs.ape.ChainTarget) | | Target for which chains are applied. |
| chains | [frost.fs.ape.Chain](#frost.fs.ape.Chain) | repeated | The list of APE chains. |
<a name="neo.fs.v2.acl.BearerToken.Body.TokenLifetime"></a>
<a name="frost.fs.acl.BearerToken.Body.TokenLifetime"></a>
### Message BearerToken.Body.TokenLifetime
Lifetime parameters of the token. Field names taken from
@ -99,7 +99,7 @@ Lifetime parameters of the token. Field names taken from
| iat | [uint64](#uint64) | | Issued at Epoch |
<a name="neo.fs.v2.acl.EACLRecord"></a>
<a name="frost.fs.acl.EACLRecord"></a>
### Message EACLRecord
Describes a single eACL rule.
@ -107,13 +107,13 @@ Describes a single eACL rule.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| operation | [Operation](#neo.fs.v2.acl.Operation) | | FrostFS request Verb to match |
| action | [Action](#neo.fs.v2.acl.Action) | | Rule execution result. Either allows or denies access if filters match. |
| filters | [EACLRecord.Filter](#neo.fs.v2.acl.EACLRecord.Filter) | repeated | List of filters to match and see if rule is applicable |
| targets | [EACLRecord.Target](#neo.fs.v2.acl.EACLRecord.Target) | repeated | List of target subjects to apply ACL rule to |
| operation | [Operation](#frost.fs.acl.Operation) | | FrostFS request Verb to match |
| action | [Action](#frost.fs.acl.Action) | | Rule execution result. Either allows or denies access if filters match. |
| filters | [EACLRecord.Filter](#frost.fs.acl.EACLRecord.Filter) | repeated | List of filters to match and see if rule is applicable |
| targets | [EACLRecord.Target](#frost.fs.acl.EACLRecord.Target) | repeated | List of target subjects to apply ACL rule to |
<a name="neo.fs.v2.acl.EACLRecord.Filter"></a>
<a name="frost.fs.acl.EACLRecord.Filter"></a>
### Message EACLRecord.Filter
Filter to check particular properties of the request or the object.
@ -150,13 +150,13 @@ it's possible to take that information from the requested address.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| header_type | [HeaderType](#neo.fs.v2.acl.HeaderType) | | Define if Object or Request header will be used |
| match_type | [MatchType](#neo.fs.v2.acl.MatchType) | | Match operation type |
| header_type | [HeaderType](#frost.fs.acl.HeaderType) | | Define if Object or Request header will be used |
| match_type | [MatchType](#frost.fs.acl.MatchType) | | Match operation type |
| key | [string](#string) | | Name of the Header to use |
| value | [string](#string) | | Expected Header Value or pattern to match |
<a name="neo.fs.v2.acl.EACLRecord.Target"></a>
<a name="frost.fs.acl.EACLRecord.Target"></a>
### Message EACLRecord.Target
Target to apply ACL rule. Can be a subject's role class or a list of public
@ -165,11 +165,11 @@ keys to match.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| role | [Role](#neo.fs.v2.acl.Role) | | Target subject's role class |
| role | [Role](#frost.fs.acl.Role) | | Target subject's role class |
| keys | [bytes](#bytes) | repeated | List of public keys to identify target subject |
<a name="neo.fs.v2.acl.EACLTable"></a>
<a name="frost.fs.acl.EACLTable"></a>
### Message EACLTable
Extended ACL rules table. A list of ACL rules defined additionally to Basic
@ -180,14 +180,14 @@ FrostFS Technical Specification section for detailed description.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| version | [neo.fs.v2.refs.Version](#neo.fs.v2.refs.Version) | | eACL format version. Effectively, the version of API library used to create eACL Table. |
| container_id | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Identifier of the container that should use given access control rules |
| records | [EACLRecord](#neo.fs.v2.acl.EACLRecord) | repeated | List of Extended ACL rules |
| version | [frost.fs.refs.Version](#frost.fs.refs.Version) | | eACL format version. Effectively, the version of API library used to create eACL Table. |
| container_id | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | | Identifier of the container that should use given access control rules |
| records | [EACLRecord](#frost.fs.acl.EACLRecord) | repeated | List of Extended ACL rules |
<!-- end messages -->
<a name="neo.fs.v2.acl.Action"></a>
<a name="frost.fs.acl.Action"></a>
### Action
Rule execution result action. Either allows or denies access if the rule's
@ -201,7 +201,7 @@ filters match.
<a name="neo.fs.v2.acl.HeaderType"></a>
<a name="frost.fs.acl.HeaderType"></a>
### HeaderType
Enumeration of possible sources of Headers to apply filters.
@ -215,7 +215,7 @@ Enumeration of possible sources of Headers to apply filters.
<a name="neo.fs.v2.acl.MatchType"></a>
<a name="frost.fs.acl.MatchType"></a>
### MatchType
MatchType is an enumeration of match types.
@ -228,7 +228,7 @@ MatchType is an enumeration of match types.
<a name="neo.fs.v2.acl.Operation"></a>
<a name="frost.fs.acl.Operation"></a>
### Operation
Request's operation type to match if the rule is applicable to a particular
@ -247,7 +247,7 @@ request.
<a name="neo.fs.v2.acl.Role"></a>
<a name="frost.fs.acl.Role"></a>
### Role
Target role of the access control rule in access control list.

View file

@ -6,8 +6,8 @@
- [ape/types.proto](#ape/types.proto)
- Messages
- [Chain](#frostfs.v2.ape.Chain)
- [ChainTarget](#frostfs.v2.ape.ChainTarget)
- [Chain](#frost.fs.ape.Chain)
- [ChainTarget](#frost.fs.ape.ChainTarget)
- [Scalar Value Types](#scalar-value-types)
@ -23,7 +23,7 @@
<!-- end services -->
<a name="frostfs.v2.ape.Chain"></a>
<a name="frost.fs.ape.Chain"></a>
### Message Chain
Chain is a chain of rules defined for a specific target.
@ -34,7 +34,7 @@ Chain is a chain of rules defined for a specific target.
| raw | [bytes](#bytes) | | Raw representation of a serizalized rule chain. |
<a name="frostfs.v2.ape.ChainTarget"></a>
<a name="frost.fs.ape.ChainTarget"></a>
### Message ChainTarget
ChainTarget is an object to which a rule chain is defined.
@ -42,13 +42,13 @@ ChainTarget is an object to which a rule chain is defined.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| type | [TargetType](#frostfs.v2.ape.TargetType) | | |
| type | [TargetType](#frost.fs.ape.TargetType) | | |
| name | [string](#string) | | |
<!-- end messages -->
<a name="frostfs.v2.ape.TargetType"></a>
<a name="frost.fs.ape.TargetType"></a>
### TargetType
TargetType is a type target to which a rule chain is defined.

View file

@ -5,21 +5,21 @@
- [apemanager/service.proto](#apemanager/service.proto)
- Services
- [APEManagerService](#frostfs.v2.apemanager.APEManagerService)
- [APEManagerService](#frost.fs.apemanager.APEManagerService)
- Messages
- [AddChainRequest](#frostfs.v2.apemanager.AddChainRequest)
- [AddChainRequest.Body](#frostfs.v2.apemanager.AddChainRequest.Body)
- [AddChainResponse](#frostfs.v2.apemanager.AddChainResponse)
- [AddChainResponse.Body](#frostfs.v2.apemanager.AddChainResponse.Body)
- [ListChainsRequest](#frostfs.v2.apemanager.ListChainsRequest)
- [ListChainsRequest.Body](#frostfs.v2.apemanager.ListChainsRequest.Body)
- [ListChainsResponse](#frostfs.v2.apemanager.ListChainsResponse)
- [ListChainsResponse.Body](#frostfs.v2.apemanager.ListChainsResponse.Body)
- [RemoveChainRequest](#frostfs.v2.apemanager.RemoveChainRequest)
- [RemoveChainRequest.Body](#frostfs.v2.apemanager.RemoveChainRequest.Body)
- [RemoveChainResponse](#frostfs.v2.apemanager.RemoveChainResponse)
- [RemoveChainResponse.Body](#frostfs.v2.apemanager.RemoveChainResponse.Body)
- [AddChainRequest](#frost.fs.apemanager.AddChainRequest)
- [AddChainRequest.Body](#frost.fs.apemanager.AddChainRequest.Body)
- [AddChainResponse](#frost.fs.apemanager.AddChainResponse)
- [AddChainResponse.Body](#frost.fs.apemanager.AddChainResponse.Body)
- [ListChainsRequest](#frost.fs.apemanager.ListChainsRequest)
- [ListChainsRequest.Body](#frost.fs.apemanager.ListChainsRequest.Body)
- [ListChainsResponse](#frost.fs.apemanager.ListChainsResponse)
- [ListChainsResponse.Body](#frost.fs.apemanager.ListChainsResponse.Body)
- [RemoveChainRequest](#frost.fs.apemanager.RemoveChainRequest)
- [RemoveChainRequest.Body](#frost.fs.apemanager.RemoveChainRequest.Body)
- [RemoveChainResponse](#frost.fs.apemanager.RemoveChainResponse)
- [RemoveChainResponse.Body](#frost.fs.apemanager.RemoveChainResponse.Body)
- [Scalar Value Types](#scalar-value-types)
@ -34,9 +34,9 @@
<a name="frostfs.v2.apemanager.APEManagerService"></a>
<a name="frost.fs.apemanager.APEManagerService"></a>
### Service "frostfs.v2.apemanager.APEManagerService"
### Service "frost.fs.apemanager.APEManagerService"
`APEManagerService` provides API to manage rule chains within sidechain's
`Policy` smart contract.
@ -62,7 +62,7 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| AddChain | [AddChainRequest](#frostfs.v2.apemanager.AddChainRequest) | [AddChainResponse](#frostfs.v2.apemanager.AddChainResponse) |
| AddChain | [AddChainRequest](#frost.fs.apemanager.AddChainRequest) | [AddChainResponse](#frost.fs.apemanager.AddChainResponse) |
#### Method RemoveChain
Remove a rule chain for a specific target from `Policy` smart contract.
@ -80,7 +80,7 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| RemoveChain | [RemoveChainRequest](#frostfs.v2.apemanager.RemoveChainRequest) | [RemoveChainResponse](#frostfs.v2.apemanager.RemoveChainResponse) |
| RemoveChain | [RemoveChainRequest](#frost.fs.apemanager.RemoveChainRequest) | [RemoveChainResponse](#frost.fs.apemanager.RemoveChainResponse) |
#### Method ListChains
List chains defined for a specific target from `Policy` smart contract.
@ -96,11 +96,11 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| ListChains | [ListChainsRequest](#frostfs.v2.apemanager.ListChainsRequest) | [ListChainsResponse](#frostfs.v2.apemanager.ListChainsResponse) |
| ListChains | [ListChainsRequest](#frost.fs.apemanager.ListChainsRequest) | [ListChainsResponse](#frost.fs.apemanager.ListChainsResponse) |
<!-- end services -->
<a name="frostfs.v2.apemanager.AddChainRequest"></a>
<a name="frost.fs.apemanager.AddChainRequest"></a>
### Message AddChainRequest
@ -108,12 +108,12 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [AddChainRequest.Body](#frostfs.v2.apemanager.AddChainRequest.Body) | | The request's body. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [AddChainRequest.Body](#frost.fs.apemanager.AddChainRequest.Body) | | The request's body. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="frostfs.v2.apemanager.AddChainRequest.Body"></a>
<a name="frost.fs.apemanager.AddChainRequest.Body"></a>
### Message AddChainRequest.Body
@ -121,11 +121,11 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| target | [frostfs.v2.ape.ChainTarget](#frostfs.v2.ape.ChainTarget) | | A target for which a rule chain is added. |
| chain | [frostfs.v2.ape.Chain](#frostfs.v2.ape.Chain) | | The chain to set for the target. |
| target | [frost.fs.ape.ChainTarget](#frost.fs.ape.ChainTarget) | | A target for which a rule chain is added. |
| chain | [frost.fs.ape.Chain](#frost.fs.ape.Chain) | | The chain to set for the target. |
<a name="frostfs.v2.apemanager.AddChainResponse"></a>
<a name="frost.fs.apemanager.AddChainResponse"></a>
### Message AddChainResponse
@ -133,12 +133,12 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [AddChainResponse.Body](#frostfs.v2.apemanager.AddChainResponse.Body) | | The response's body. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [AddChainResponse.Body](#frost.fs.apemanager.AddChainResponse.Body) | | The response's body. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="frostfs.v2.apemanager.AddChainResponse.Body"></a>
<a name="frost.fs.apemanager.AddChainResponse.Body"></a>
### Message AddChainResponse.Body
@ -149,7 +149,7 @@ Statuses:
| chain_id | [bytes](#bytes) | | Chain ID assigned for the added rule chain. If chain ID is left empty in the request, then it will be generated. |
<a name="frostfs.v2.apemanager.ListChainsRequest"></a>
<a name="frost.fs.apemanager.ListChainsRequest"></a>
### Message ListChainsRequest
@ -157,12 +157,12 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [ListChainsRequest.Body](#frostfs.v2.apemanager.ListChainsRequest.Body) | | The request's body. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [ListChainsRequest.Body](#frost.fs.apemanager.ListChainsRequest.Body) | | The request's body. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="frostfs.v2.apemanager.ListChainsRequest.Body"></a>
<a name="frost.fs.apemanager.ListChainsRequest.Body"></a>
### Message ListChainsRequest.Body
@ -170,10 +170,10 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| target | [frostfs.v2.ape.ChainTarget](#frostfs.v2.ape.ChainTarget) | | Target for which rule chains are listed. |
| target | [frost.fs.ape.ChainTarget](#frost.fs.ape.ChainTarget) | | Target for which rule chains are listed. |
<a name="frostfs.v2.apemanager.ListChainsResponse"></a>
<a name="frost.fs.apemanager.ListChainsResponse"></a>
### Message ListChainsResponse
@ -181,12 +181,12 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [ListChainsResponse.Body](#frostfs.v2.apemanager.ListChainsResponse.Body) | | The response's body. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [ListChainsResponse.Body](#frost.fs.apemanager.ListChainsResponse.Body) | | The response's body. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="frostfs.v2.apemanager.ListChainsResponse.Body"></a>
<a name="frost.fs.apemanager.ListChainsResponse.Body"></a>
### Message ListChainsResponse.Body
@ -194,10 +194,10 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| chains | [frostfs.v2.ape.Chain](#frostfs.v2.ape.Chain) | repeated | The list of chains defined for the reqeusted target. |
| chains | [frost.fs.ape.Chain](#frost.fs.ape.Chain) | repeated | The list of chains defined for the reqeusted target. |
<a name="frostfs.v2.apemanager.RemoveChainRequest"></a>
<a name="frost.fs.apemanager.RemoveChainRequest"></a>
### Message RemoveChainRequest
@ -205,12 +205,12 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [RemoveChainRequest.Body](#frostfs.v2.apemanager.RemoveChainRequest.Body) | | The request's body. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [RemoveChainRequest.Body](#frost.fs.apemanager.RemoveChainRequest.Body) | | The request's body. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="frostfs.v2.apemanager.RemoveChainRequest.Body"></a>
<a name="frost.fs.apemanager.RemoveChainRequest.Body"></a>
### Message RemoveChainRequest.Body
@ -218,11 +218,11 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| target | [frostfs.v2.ape.ChainTarget](#frostfs.v2.ape.ChainTarget) | | Target for which a rule chain is removed. |
| target | [frost.fs.ape.ChainTarget](#frost.fs.ape.ChainTarget) | | Target for which a rule chain is removed. |
| chain_id | [bytes](#bytes) | | Chain ID assigned for the rule chain. |
<a name="frostfs.v2.apemanager.RemoveChainResponse"></a>
<a name="frost.fs.apemanager.RemoveChainResponse"></a>
### Message RemoveChainResponse
@ -230,12 +230,12 @@ Statuses:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [RemoveChainResponse.Body](#frostfs.v2.apemanager.RemoveChainResponse.Body) | | The response's body. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [RemoveChainResponse.Body](#frost.fs.apemanager.RemoveChainResponse.Body) | | The response's body. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="frostfs.v2.apemanager.RemoveChainResponse.Body"></a>
<a name="frost.fs.apemanager.RemoveChainResponse.Body"></a>
### Message RemoveChainResponse.Body
Since RemoveChain is an idempotent operation, then the only indicator that

View file

@ -5,32 +5,32 @@
- [container/service.proto](#container/service.proto)
- Services
- [ContainerService](#neo.fs.v2.container.ContainerService)
- [ContainerService](#frost.fs.container.ContainerService)
- Messages
- [DeleteRequest](#neo.fs.v2.container.DeleteRequest)
- [DeleteRequest.Body](#neo.fs.v2.container.DeleteRequest.Body)
- [DeleteResponse](#neo.fs.v2.container.DeleteResponse)
- [DeleteResponse.Body](#neo.fs.v2.container.DeleteResponse.Body)
- [GetRequest](#neo.fs.v2.container.GetRequest)
- [GetRequest.Body](#neo.fs.v2.container.GetRequest.Body)
- [GetResponse](#neo.fs.v2.container.GetResponse)
- [GetResponse.Body](#neo.fs.v2.container.GetResponse.Body)
- [ListRequest](#neo.fs.v2.container.ListRequest)
- [ListRequest.Body](#neo.fs.v2.container.ListRequest.Body)
- [ListResponse](#neo.fs.v2.container.ListResponse)
- [ListResponse.Body](#neo.fs.v2.container.ListResponse.Body)
- [PutRequest](#neo.fs.v2.container.PutRequest)
- [PutRequest.Body](#neo.fs.v2.container.PutRequest.Body)
- [PutResponse](#neo.fs.v2.container.PutResponse)
- [PutResponse.Body](#neo.fs.v2.container.PutResponse.Body)
- [DeleteRequest](#frost.fs.container.DeleteRequest)
- [DeleteRequest.Body](#frost.fs.container.DeleteRequest.Body)
- [DeleteResponse](#frost.fs.container.DeleteResponse)
- [DeleteResponse.Body](#frost.fs.container.DeleteResponse.Body)
- [GetRequest](#frost.fs.container.GetRequest)
- [GetRequest.Body](#frost.fs.container.GetRequest.Body)
- [GetResponse](#frost.fs.container.GetResponse)
- [GetResponse.Body](#frost.fs.container.GetResponse.Body)
- [ListRequest](#frost.fs.container.ListRequest)
- [ListRequest.Body](#frost.fs.container.ListRequest.Body)
- [ListResponse](#frost.fs.container.ListResponse)
- [ListResponse.Body](#frost.fs.container.ListResponse.Body)
- [PutRequest](#frost.fs.container.PutRequest)
- [PutRequest.Body](#frost.fs.container.PutRequest.Body)
- [PutResponse](#frost.fs.container.PutResponse)
- [PutResponse.Body](#frost.fs.container.PutResponse.Body)
- [container/types.proto](#container/types.proto)
- Messages
- [Container](#neo.fs.v2.container.Container)
- [Container.Attribute](#neo.fs.v2.container.Container.Attribute)
- [Container](#frost.fs.container.Container)
- [Container.Attribute](#frost.fs.container.Container.Attribute)
- [Scalar Value Types](#scalar-value-types)
@ -45,9 +45,9 @@
<a name="neo.fs.v2.container.ContainerService"></a>
<a name="frost.fs.container.ContainerService"></a>
### Service "neo.fs.v2.container.ContainerService"
### Service "frost.fs.container.ContainerService"
`ContainerService` provides API to interact with `Container` smart contract
in FrostFS sidechain via other FrostFS nodes. All of those actions can be
done equivalently by directly issuing transactions and RPC calls to sidechain
@ -77,7 +77,7 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| Put | [PutRequest](#neo.fs.v2.container.PutRequest) | [PutResponse](#neo.fs.v2.container.PutResponse) |
| Put | [PutRequest](#frost.fs.container.PutRequest) | [PutResponse](#frost.fs.container.PutResponse) |
#### Method Delete
`Delete` invokes `Container` smart contract's `Delete` method and returns
@ -94,7 +94,7 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| Delete | [DeleteRequest](#neo.fs.v2.container.DeleteRequest) | [DeleteResponse](#neo.fs.v2.container.DeleteResponse) |
| Delete | [DeleteRequest](#frost.fs.container.DeleteRequest) | [DeleteResponse](#frost.fs.container.DeleteResponse) |
#### Method Get
Returns container structure from `Container` smart contract storage.
@ -110,7 +110,7 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| Get | [GetRequest](#neo.fs.v2.container.GetRequest) | [GetResponse](#neo.fs.v2.container.GetResponse) |
| Get | [GetRequest](#frost.fs.container.GetRequest) | [GetResponse](#frost.fs.container.GetResponse) |
#### Method List
Returns all owner's containers from 'Container` smart contract' storage.
@ -124,11 +124,11 @@ Statuses:
| Name | Input | Output |
| ---- | ----- | ------ |
| List | [ListRequest](#neo.fs.v2.container.ListRequest) | [ListResponse](#neo.fs.v2.container.ListResponse) |
| List | [ListRequest](#frost.fs.container.ListRequest) | [ListResponse](#frost.fs.container.ListResponse) |
<!-- end services -->
<a name="neo.fs.v2.container.DeleteRequest"></a>
<a name="frost.fs.container.DeleteRequest"></a>
### Message DeleteRequest
Container removal request
@ -136,12 +136,12 @@ Container removal request
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [DeleteRequest.Body](#neo.fs.v2.container.DeleteRequest.Body) | | Body of container delete request message. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [DeleteRequest.Body](#frost.fs.container.DeleteRequest.Body) | | Body of container delete request message. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.DeleteRequest.Body"></a>
<a name="frost.fs.container.DeleteRequest.Body"></a>
### Message DeleteRequest.Body
Container removal request body has signed `ContainerID` as a proof of
@ -151,11 +151,11 @@ smart contract, so signing algorithm must be supported by NeoVM.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container_id | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Identifier of the container to delete from FrostFS |
| signature | [neo.fs.v2.refs.SignatureRFC6979](#neo.fs.v2.refs.SignatureRFC6979) | | `ContainerID` signed with the container owner's key according to RFC-6979. |
| container_id | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | | Identifier of the container to delete from FrostFS |
| signature | [frost.fs.refs.SignatureRFC6979](#frost.fs.refs.SignatureRFC6979) | | `ContainerID` signed with the container owner's key according to RFC-6979. |
<a name="neo.fs.v2.container.DeleteResponse"></a>
<a name="frost.fs.container.DeleteResponse"></a>
### Message DeleteResponse
`DeleteResponse` has an empty body because delete operation is asynchronous
@ -164,12 +164,12 @@ and done via consensus in Inner Ring nodes.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [DeleteResponse.Body](#neo.fs.v2.container.DeleteResponse.Body) | | Body of container delete response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [DeleteResponse.Body](#frost.fs.container.DeleteResponse.Body) | | Body of container delete response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.DeleteResponse.Body"></a>
<a name="frost.fs.container.DeleteResponse.Body"></a>
### Message DeleteResponse.Body
`DeleteResponse` has an empty body because delete operation is asynchronous
@ -177,7 +177,7 @@ and done via consensus in Inner Ring nodes.
<a name="neo.fs.v2.container.GetRequest"></a>
<a name="frost.fs.container.GetRequest"></a>
### Message GetRequest
Get container structure
@ -185,12 +185,12 @@ Get container structure
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [GetRequest.Body](#neo.fs.v2.container.GetRequest.Body) | | Body of container get request message. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [GetRequest.Body](#frost.fs.container.GetRequest.Body) | | Body of container get request message. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.GetRequest.Body"></a>
<a name="frost.fs.container.GetRequest.Body"></a>
### Message GetRequest.Body
Get container structure request body.
@ -198,10 +198,10 @@ Get container structure request body.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container_id | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Identifier of the container to get |
| container_id | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | | Identifier of the container to get |
<a name="neo.fs.v2.container.GetResponse"></a>
<a name="frost.fs.container.GetResponse"></a>
### Message GetResponse
Get container structure
@ -209,12 +209,12 @@ Get container structure
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [GetResponse.Body](#neo.fs.v2.container.GetResponse.Body) | | Body of container get response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [GetResponse.Body](#frost.fs.container.GetResponse.Body) | | Body of container get response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.GetResponse.Body"></a>
<a name="frost.fs.container.GetResponse.Body"></a>
### Message GetResponse.Body
Get container response body does not have container structure signature. It
@ -223,12 +223,12 @@ has been already verified upon container creation.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container | [Container](#neo.fs.v2.container.Container) | | Requested container structure |
| signature | [neo.fs.v2.refs.SignatureRFC6979](#neo.fs.v2.refs.SignatureRFC6979) | | Signature of a stable-marshalled container according to RFC-6979. |
| session_token | [neo.fs.v2.session.SessionToken](#neo.fs.v2.session.SessionToken) | | Session token if the container has been created within the session |
| container | [Container](#frost.fs.container.Container) | | Requested container structure |
| signature | [frost.fs.refs.SignatureRFC6979](#frost.fs.refs.SignatureRFC6979) | | Signature of a stable-marshalled container according to RFC-6979. |
| session_token | [frost.fs.session.SessionToken](#frost.fs.session.SessionToken) | | Session token if the container has been created within the session |
<a name="neo.fs.v2.container.ListRequest"></a>
<a name="frost.fs.container.ListRequest"></a>
### Message ListRequest
List containers
@ -236,12 +236,12 @@ List containers
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [ListRequest.Body](#neo.fs.v2.container.ListRequest.Body) | | Body of list containers request message |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [ListRequest.Body](#frost.fs.container.ListRequest.Body) | | Body of list containers request message |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.ListRequest.Body"></a>
<a name="frost.fs.container.ListRequest.Body"></a>
### Message ListRequest.Body
List containers request body.
@ -249,10 +249,10 @@ List containers request body.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | Identifier of the container owner |
| owner_id | [frost.fs.refs.OwnerID](#frost.fs.refs.OwnerID) | | Identifier of the container owner |
<a name="neo.fs.v2.container.ListResponse"></a>
<a name="frost.fs.container.ListResponse"></a>
### Message ListResponse
List containers
@ -260,12 +260,12 @@ List containers
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [ListResponse.Body](#neo.fs.v2.container.ListResponse.Body) | | Body of list containers response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [ListResponse.Body](#frost.fs.container.ListResponse.Body) | | Body of list containers response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.ListResponse.Body"></a>
<a name="frost.fs.container.ListResponse.Body"></a>
### Message ListResponse.Body
List containers response body.
@ -273,10 +273,10 @@ List containers response body.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container_ids | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | repeated | List of `ContainerID`s belonging to the requested `OwnerID` |
| container_ids | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | repeated | List of `ContainerID`s belonging to the requested `OwnerID` |
<a name="neo.fs.v2.container.PutRequest"></a>
<a name="frost.fs.container.PutRequest"></a>
### Message PutRequest
New FrostFS Container creation request
@ -284,12 +284,12 @@ New FrostFS Container creation request
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [PutRequest.Body](#neo.fs.v2.container.PutRequest.Body) | | Body of container put request message. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [PutRequest.Body](#frost.fs.container.PutRequest.Body) | | Body of container put request message. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.PutRequest.Body"></a>
<a name="frost.fs.container.PutRequest.Body"></a>
### Message PutRequest.Body
Container creation request has container structure's signature as a
@ -301,11 +301,11 @@ additional signature checks.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container | [Container](#neo.fs.v2.container.Container) | | Container structure to register in FrostFS |
| signature | [neo.fs.v2.refs.SignatureRFC6979](#neo.fs.v2.refs.SignatureRFC6979) | | Signature of a stable-marshalled container according to RFC-6979. |
| container | [Container](#frost.fs.container.Container) | | Container structure to register in FrostFS |
| signature | [frost.fs.refs.SignatureRFC6979](#frost.fs.refs.SignatureRFC6979) | | Signature of a stable-marshalled container according to RFC-6979. |
<a name="neo.fs.v2.container.PutResponse"></a>
<a name="frost.fs.container.PutResponse"></a>
### Message PutResponse
New FrostFS Container creation response
@ -313,12 +313,12 @@ New FrostFS Container creation response
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [PutResponse.Body](#neo.fs.v2.container.PutResponse.Body) | | Body of container put response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [PutResponse.Body](#frost.fs.container.PutResponse.Body) | | Body of container put response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.container.PutResponse.Body"></a>
<a name="frost.fs.container.PutResponse.Body"></a>
### Message PutResponse.Body
Container put response body contains information about the newly registered
@ -329,7 +329,7 @@ returned here to make sure everything has been done as expected.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container_id | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Unique identifier of the newly created container |
| container_id | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | | Unique identifier of the newly created container |
<!-- end messages -->
@ -346,7 +346,7 @@ returned here to make sure everything has been done as expected.
<!-- end services -->
<a name="neo.fs.v2.container.Container"></a>
<a name="frost.fs.container.Container"></a>
### Message Container
Container is a structure that defines object placement behaviour. Objects can
@ -357,15 +357,15 @@ hash of stable-marshalled container message.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| version | [neo.fs.v2.refs.Version](#neo.fs.v2.refs.Version) | | Container format version. Effectively, the version of API library used to create the container. |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | Identifier of the container owner |
| version | [frost.fs.refs.Version](#frost.fs.refs.Version) | | Container format version. Effectively, the version of API library used to create the container. |
| owner_id | [frost.fs.refs.OwnerID](#frost.fs.refs.OwnerID) | | Identifier of the container owner |
| nonce | [bytes](#bytes) | | Nonce is a 16 byte UUIDv4, used to avoid collisions of `ContainerID`s |
| basic_acl | [uint32](#uint32) | | `BasicACL` contains access control rules for the owner, system and others groups, as well as permission bits for `BearerToken` and `Extended ACL` |
| attributes | [Container.Attribute](#neo.fs.v2.container.Container.Attribute) | repeated | Attributes represent immutable container's meta data |
| placement_policy | [neo.fs.v2.netmap.PlacementPolicy](#neo.fs.v2.netmap.PlacementPolicy) | | Placement policy for the object inside the container |
| attributes | [Container.Attribute](#frost.fs.container.Container.Attribute) | repeated | Attributes represent immutable container's meta data |
| placement_policy | [frost.fs.netmap.PlacementPolicy](#frost.fs.netmap.PlacementPolicy) | | Placement policy for the object inside the container |
<a name="neo.fs.v2.container.Container.Attribute"></a>
<a name="frost.fs.container.Container.Attribute"></a>
### Message Container.Attribute
`Attribute` is a user-defined Key-Value metadata pair attached to the
@ -379,16 +379,13 @@ values will be considered invalid.
There are some "well-known" attributes affecting system behaviour:
* [ __SYSTEM__NAME ] \
(`__NEOFS__NAME` is deprecated) \
String of a human-friendly container name registered as a domain in
NNS contract.
* [ __SYSTEM__ZONE ] \
(`__NEOFS__ZONE` is deprecated) \
String of a zone for `__SYSTEM__NAME` (`__NEOFS__NAME` is deprecated).
String of a zone for `__SYSTEM__NAME`.
Used as a TLD of a domain name in NNS contract. If no zone is specified,
use default zone: `container`.
* [ __SYSTEM__DISABLE_HOMOMORPHIC_HASHING ] \
(`__NEOFS__DISABLE_HOMOMORPHIC_HASHING` is deprecated) \
Disables homomorphic hashing for the container if the value equals "true"
string. Any other values are interpreted as missing attribute. Container
could be accepted in a FrostFS network only if the global network hashing

View file

@ -6,7 +6,7 @@
- [lock/types.proto](#lock/types.proto)
- Messages
- [Lock](#neo.fs.v2.lock.Lock)
- [Lock](#frost.fs.lock.Lock)
- [Scalar Value Types](#scalar-value-types)
@ -22,19 +22,19 @@
<!-- end services -->
<a name="neo.fs.v2.lock.Lock"></a>
<a name="frost.fs.lock.Lock"></a>
### Message Lock
Lock objects protects a list of objects from being deleted. The lifetime of a
lock object is limited similar to regular objects in
`__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated)
`__SYSTEM__EXPIRATION_EPOCH`
attribute. Lock object MUST have expiration epoch. It is impossible to delete
a lock object via ObjectService.Delete RPC call.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| members | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | List of objects to lock. Must not be empty or carry empty IDs. All members must be of the `REGULAR` type. |
| members | [frost.fs.refs.ObjectID](#frost.fs.refs.ObjectID) | repeated | List of objects to lock. Must not be empty or carry empty IDs. All members must be of the `REGULAR` type. |
<!-- end messages -->

View file

@ -5,36 +5,36 @@
- [netmap/service.proto](#netmap/service.proto)
- Services
- [NetmapService](#neo.fs.v2.netmap.NetmapService)
- [NetmapService](#frost.fs.netmap.NetmapService)
- Messages
- [LocalNodeInfoRequest](#neo.fs.v2.netmap.LocalNodeInfoRequest)
- [LocalNodeInfoRequest.Body](#neo.fs.v2.netmap.LocalNodeInfoRequest.Body)
- [LocalNodeInfoResponse](#neo.fs.v2.netmap.LocalNodeInfoResponse)
- [LocalNodeInfoResponse.Body](#neo.fs.v2.netmap.LocalNodeInfoResponse.Body)
- [NetmapSnapshotRequest](#neo.fs.v2.netmap.NetmapSnapshotRequest)
- [NetmapSnapshotRequest.Body](#neo.fs.v2.netmap.NetmapSnapshotRequest.Body)
- [NetmapSnapshotResponse](#neo.fs.v2.netmap.NetmapSnapshotResponse)
- [NetmapSnapshotResponse.Body](#neo.fs.v2.netmap.NetmapSnapshotResponse.Body)
- [NetworkInfoRequest](#neo.fs.v2.netmap.NetworkInfoRequest)
- [NetworkInfoRequest.Body](#neo.fs.v2.netmap.NetworkInfoRequest.Body)
- [NetworkInfoResponse](#neo.fs.v2.netmap.NetworkInfoResponse)
- [NetworkInfoResponse.Body](#neo.fs.v2.netmap.NetworkInfoResponse.Body)
- [LocalNodeInfoRequest](#frost.fs.netmap.LocalNodeInfoRequest)
- [LocalNodeInfoRequest.Body](#frost.fs.netmap.LocalNodeInfoRequest.Body)
- [LocalNodeInfoResponse](#frost.fs.netmap.LocalNodeInfoResponse)
- [LocalNodeInfoResponse.Body](#frost.fs.netmap.LocalNodeInfoResponse.Body)
- [NetmapSnapshotRequest](#frost.fs.netmap.NetmapSnapshotRequest)
- [NetmapSnapshotRequest.Body](#frost.fs.netmap.NetmapSnapshotRequest.Body)
- [NetmapSnapshotResponse](#frost.fs.netmap.NetmapSnapshotResponse)
- [NetmapSnapshotResponse.Body](#frost.fs.netmap.NetmapSnapshotResponse.Body)
- [NetworkInfoRequest](#frost.fs.netmap.NetworkInfoRequest)
- [NetworkInfoRequest.Body](#frost.fs.netmap.NetworkInfoRequest.Body)
- [NetworkInfoResponse](#frost.fs.netmap.NetworkInfoResponse)
- [NetworkInfoResponse.Body](#frost.fs.netmap.NetworkInfoResponse.Body)
- [netmap/types.proto](#netmap/types.proto)
- Messages
- [Filter](#neo.fs.v2.netmap.Filter)
- [Netmap](#neo.fs.v2.netmap.Netmap)
- [NetworkConfig](#neo.fs.v2.netmap.NetworkConfig)
- [NetworkConfig.Parameter](#neo.fs.v2.netmap.NetworkConfig.Parameter)
- [NetworkInfo](#neo.fs.v2.netmap.NetworkInfo)
- [NodeInfo](#neo.fs.v2.netmap.NodeInfo)
- [NodeInfo.Attribute](#neo.fs.v2.netmap.NodeInfo.Attribute)
- [PlacementPolicy](#neo.fs.v2.netmap.PlacementPolicy)
- [Replica](#neo.fs.v2.netmap.Replica)
- [Selector](#neo.fs.v2.netmap.Selector)
- [Filter](#frost.fs.netmap.Filter)
- [Netmap](#frost.fs.netmap.Netmap)
- [NetworkConfig](#frost.fs.netmap.NetworkConfig)
- [NetworkConfig.Parameter](#frost.fs.netmap.NetworkConfig.Parameter)
- [NetworkInfo](#frost.fs.netmap.NetworkInfo)
- [NodeInfo](#frost.fs.netmap.NodeInfo)
- [NodeInfo.Attribute](#frost.fs.netmap.NodeInfo.Attribute)
- [PlacementPolicy](#frost.fs.netmap.PlacementPolicy)
- [Replica](#frost.fs.netmap.Replica)
- [Selector](#frost.fs.netmap.Selector)
- [Scalar Value Types](#scalar-value-types)
@ -49,9 +49,9 @@
<a name="neo.fs.v2.netmap.NetmapService"></a>
<a name="frost.fs.netmap.NetmapService"></a>
### Service "neo.fs.v2.netmap.NetmapService"
### Service "frost.fs.netmap.NetmapService"
`NetmapService` provides methods to work with `Network Map` and the
information required to build it. The resulting `Network Map` is stored in
sidechain `Netmap` smart contract, while related information can be obtained
@ -80,7 +80,7 @@ information about the server has been successfully read;
| Name | Input | Output |
| ---- | ----- | ------ |
| LocalNodeInfo | [LocalNodeInfoRequest](#neo.fs.v2.netmap.LocalNodeInfoRequest) | [LocalNodeInfoResponse](#neo.fs.v2.netmap.LocalNodeInfoResponse) |
| LocalNodeInfo | [LocalNodeInfoRequest](#frost.fs.netmap.LocalNodeInfoRequest) | [LocalNodeInfoResponse](#frost.fs.netmap.LocalNodeInfoResponse) |
#### Method NetworkInfo
Read recent information about the FrostFS network.
@ -92,7 +92,7 @@ information about the current network state has been successfully read;
| Name | Input | Output |
| ---- | ----- | ------ |
| NetworkInfo | [NetworkInfoRequest](#neo.fs.v2.netmap.NetworkInfoRequest) | [NetworkInfoResponse](#neo.fs.v2.netmap.NetworkInfoResponse) |
| NetworkInfo | [NetworkInfoRequest](#frost.fs.netmap.NetworkInfoRequest) | [NetworkInfoResponse](#frost.fs.netmap.NetworkInfoResponse) |
#### Method NetmapSnapshot
Returns network map snapshot of the current FrostFS epoch.
@ -104,11 +104,11 @@ information about the current network map has been successfully read;
| Name | Input | Output |
| ---- | ----- | ------ |
| NetmapSnapshot | [NetmapSnapshotRequest](#neo.fs.v2.netmap.NetmapSnapshotRequest) | [NetmapSnapshotResponse](#neo.fs.v2.netmap.NetmapSnapshotResponse) |
| NetmapSnapshot | [NetmapSnapshotRequest](#frost.fs.netmap.NetmapSnapshotRequest) | [NetmapSnapshotResponse](#frost.fs.netmap.NetmapSnapshotResponse) |
<!-- end services -->
<a name="neo.fs.v2.netmap.LocalNodeInfoRequest"></a>
<a name="frost.fs.netmap.LocalNodeInfoRequest"></a>
### Message LocalNodeInfoRequest
Get NodeInfo structure directly from a particular node
@ -116,19 +116,19 @@ Get NodeInfo structure directly from a particular node
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [LocalNodeInfoRequest.Body](#neo.fs.v2.netmap.LocalNodeInfoRequest.Body) | | Body of the LocalNodeInfo request message |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [LocalNodeInfoRequest.Body](#frost.fs.netmap.LocalNodeInfoRequest.Body) | | Body of the LocalNodeInfo request message |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.netmap.LocalNodeInfoRequest.Body"></a>
<a name="frost.fs.netmap.LocalNodeInfoRequest.Body"></a>
### Message LocalNodeInfoRequest.Body
LocalNodeInfo request body is empty.
<a name="neo.fs.v2.netmap.LocalNodeInfoResponse"></a>
<a name="frost.fs.netmap.LocalNodeInfoResponse"></a>
### Message LocalNodeInfoResponse
Local Node Info, including API Version in use
@ -136,12 +136,12 @@ Local Node Info, including API Version in use
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [LocalNodeInfoResponse.Body](#neo.fs.v2.netmap.LocalNodeInfoResponse.Body) | | Body of the balance response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [LocalNodeInfoResponse.Body](#frost.fs.netmap.LocalNodeInfoResponse.Body) | | Body of the balance response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.netmap.LocalNodeInfoResponse.Body"></a>
<a name="frost.fs.netmap.LocalNodeInfoResponse.Body"></a>
### Message LocalNodeInfoResponse.Body
Local Node Info, including API Version in use.
@ -149,11 +149,11 @@ Local Node Info, including API Version in use.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| version | [neo.fs.v2.refs.Version](#neo.fs.v2.refs.Version) | | Latest FrostFS API version in use |
| node_info | [NodeInfo](#neo.fs.v2.netmap.NodeInfo) | | NodeInfo structure with recent information from node itself |
| version | [frost.fs.refs.Version](#frost.fs.refs.Version) | | Latest FrostFS API version in use |
| node_info | [NodeInfo](#frost.fs.netmap.NodeInfo) | | NodeInfo structure with recent information from node itself |
<a name="neo.fs.v2.netmap.NetmapSnapshotRequest"></a>
<a name="frost.fs.netmap.NetmapSnapshotRequest"></a>
### Message NetmapSnapshotRequest
Get netmap snapshot request
@ -161,19 +161,19 @@ Get netmap snapshot request
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [NetmapSnapshotRequest.Body](#neo.fs.v2.netmap.NetmapSnapshotRequest.Body) | | Body of get netmap snapshot request message. |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [NetmapSnapshotRequest.Body](#frost.fs.netmap.NetmapSnapshotRequest.Body) | | Body of get netmap snapshot request message. |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.netmap.NetmapSnapshotRequest.Body"></a>
<a name="frost.fs.netmap.NetmapSnapshotRequest.Body"></a>
### Message NetmapSnapshotRequest.Body
Get netmap snapshot request body.
<a name="neo.fs.v2.netmap.NetmapSnapshotResponse"></a>
<a name="frost.fs.netmap.NetmapSnapshotResponse"></a>
### Message NetmapSnapshotResponse
Response with current netmap snapshot
@ -181,12 +181,12 @@ Response with current netmap snapshot
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [NetmapSnapshotResponse.Body](#neo.fs.v2.netmap.NetmapSnapshotResponse.Body) | | Body of get netmap snapshot response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [NetmapSnapshotResponse.Body](#frost.fs.netmap.NetmapSnapshotResponse.Body) | | Body of get netmap snapshot response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.netmap.NetmapSnapshotResponse.Body"></a>
<a name="frost.fs.netmap.NetmapSnapshotResponse.Body"></a>
### Message NetmapSnapshotResponse.Body
Get netmap snapshot response body
@ -194,10 +194,10 @@ Get netmap snapshot response body
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| netmap | [Netmap](#neo.fs.v2.netmap.Netmap) | | Structure of the requested network map. |
| netmap | [Netmap](#frost.fs.netmap.Netmap) | | Structure of the requested network map. |
<a name="neo.fs.v2.netmap.NetworkInfoRequest"></a>
<a name="frost.fs.netmap.NetworkInfoRequest"></a>
### Message NetworkInfoRequest
Get NetworkInfo structure with the network view from a particular node.
@ -205,19 +205,19 @@ Get NetworkInfo structure with the network view from a particular node.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [NetworkInfoRequest.Body](#neo.fs.v2.netmap.NetworkInfoRequest.Body) | | Body of the NetworkInfo request message |
| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [NetworkInfoRequest.Body](#frost.fs.netmap.NetworkInfoRequest.Body) | | Body of the NetworkInfo request message |
| meta_header | [frost.fs.session.RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [frost.fs.session.RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.netmap.NetworkInfoRequest.Body"></a>
<a name="frost.fs.netmap.NetworkInfoRequest.Body"></a>
### Message NetworkInfoRequest.Body
NetworkInfo request body is empty.
<a name="neo.fs.v2.netmap.NetworkInfoResponse"></a>
<a name="frost.fs.netmap.NetworkInfoResponse"></a>
### Message NetworkInfoResponse
Response with NetworkInfo structure including current epoch and
@ -226,12 +226,12 @@ sidechain magic number.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [NetworkInfoResponse.Body](#neo.fs.v2.netmap.NetworkInfoResponse.Body) | | Body of the NetworkInfo response message. |
| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. |
| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [NetworkInfoResponse.Body](#frost.fs.netmap.NetworkInfoResponse.Body) | | Body of the NetworkInfo response message. |
| meta_header | [frost.fs.session.ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. |
| verify_header | [frost.fs.session.ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.netmap.NetworkInfoResponse.Body"></a>
<a name="frost.fs.netmap.NetworkInfoResponse.Body"></a>
### Message NetworkInfoResponse.Body
Information about the network.
@ -239,7 +239,7 @@ Information about the network.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| network_info | [NetworkInfo](#neo.fs.v2.netmap.NetworkInfo) | | NetworkInfo structure with recent information. |
| network_info | [NetworkInfo](#frost.fs.netmap.NetworkInfo) | | NetworkInfo structure with recent information. |
<!-- end messages -->
@ -256,7 +256,7 @@ Information about the network.
<!-- end services -->
<a name="neo.fs.v2.netmap.Filter"></a>
<a name="frost.fs.netmap.Filter"></a>
### Message Filter
This filter will return the subset of nodes from `NetworkMap` or another
@ -267,12 +267,12 @@ filter's results that will satisfy filter's conditions.
| ----- | ---- | ----- | ----------- |
| name | [string](#string) | | Name of the filter or a reference to a named filter. '*' means application to the whole unfiltered NetworkMap. At top level it's used as a filter name. At lower levels it's considered to be a reference to another named filter |
| key | [string](#string) | | Key to filter |
| op | [Operation](#neo.fs.v2.netmap.Operation) | | Filtering operation |
| op | [Operation](#frost.fs.netmap.Operation) | | Filtering operation |
| value | [string](#string) | | Value to match |
| filters | [Filter](#neo.fs.v2.netmap.Filter) | repeated | List of inner filters. Top level operation will be applied to the whole list. |
| filters | [Filter](#frost.fs.netmap.Filter) | repeated | List of inner filters. Top level operation will be applied to the whole list. |
<a name="neo.fs.v2.netmap.Netmap"></a>
<a name="frost.fs.netmap.Netmap"></a>
### Message Netmap
Network map structure
@ -281,10 +281,10 @@ Network map structure
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| epoch | [uint64](#uint64) | | Network map revision number. |
| nodes | [NodeInfo](#neo.fs.v2.netmap.NodeInfo) | repeated | Nodes presented in network. |
| nodes | [NodeInfo](#frost.fs.netmap.NodeInfo) | repeated | Nodes presented in network. |
<a name="neo.fs.v2.netmap.NetworkConfig"></a>
<a name="frost.fs.netmap.NetworkConfig"></a>
### Message NetworkConfig
FrostFS network configuration
@ -292,10 +292,10 @@ FrostFS network configuration
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| parameters | [NetworkConfig.Parameter](#neo.fs.v2.netmap.NetworkConfig.Parameter) | repeated | List of parameter values |
| parameters | [NetworkConfig.Parameter](#frost.fs.netmap.NetworkConfig.Parameter) | repeated | List of parameter values |
<a name="neo.fs.v2.netmap.NetworkConfig.Parameter"></a>
<a name="frost.fs.netmap.NetworkConfig.Parameter"></a>
### Message NetworkConfig.Parameter
Single configuration parameter. Key MUST be network-unique.
@ -377,7 +377,7 @@ System parameters:
| value | [bytes](#bytes) | | Parameter value |
<a name="neo.fs.v2.netmap.NetworkInfo"></a>
<a name="frost.fs.netmap.NetworkInfo"></a>
### Message NetworkInfo
Information about FrostFS network
@ -388,10 +388,10 @@ Information about FrostFS network
| current_epoch | [uint64](#uint64) | | Number of the current epoch in the FrostFS network |
| magic_number | [uint64](#uint64) | | Magic number of the sidechain of the FrostFS network |
| ms_per_block | [int64](#int64) | | MillisecondsPerBlock network parameter of the sidechain of the FrostFS network |
| network_config | [NetworkConfig](#neo.fs.v2.netmap.NetworkConfig) | | FrostFS network configuration |
| network_config | [NetworkConfig](#frost.fs.netmap.NetworkConfig) | | FrostFS network configuration |
<a name="neo.fs.v2.netmap.NodeInfo"></a>
<a name="frost.fs.netmap.NodeInfo"></a>
### Message NodeInfo
FrostFS node description
@ -401,11 +401,11 @@ FrostFS node description
| ----- | ---- | ----- | ----------- |
| public_key | [bytes](#bytes) | | Public key of the FrostFS node in a binary format |
| addresses | [string](#string) | repeated | Ways to connect to a node |
| attributes | [NodeInfo.Attribute](#neo.fs.v2.netmap.NodeInfo.Attribute) | repeated | Carries list of the FrostFS node attributes in a key-value form. Key name must be a node-unique valid UTF-8 string. Value can't be empty. NodeInfo structures with duplicated attribute names or attributes with empty values will be considered invalid. |
| state | [NodeInfo.State](#neo.fs.v2.netmap.NodeInfo.State) | | Carries state of the FrostFS node |
| attributes | [NodeInfo.Attribute](#frost.fs.netmap.NodeInfo.Attribute) | repeated | Carries list of the FrostFS node attributes in a key-value form. Key name must be a node-unique valid UTF-8 string. Value can't be empty. NodeInfo structures with duplicated attribute names or attributes with empty values will be considered invalid. |
| state | [NodeInfo.State](#frost.fs.netmap.NodeInfo.State) | | Carries state of the FrostFS node |
<a name="neo.fs.v2.netmap.NodeInfo.Attribute"></a>
<a name="frost.fs.netmap.NodeInfo.Attribute"></a>
### Message NodeInfo.Attribute
Administrator-defined Attributes of the FrostFS Storage Node.
@ -484,7 +484,7 @@ corresponding section in FrostFS Technical Specification.
| parents | [string](#string) | repeated | Parent keys, if any. For example for `City` it could be `Region` and `Country`. |
<a name="neo.fs.v2.netmap.PlacementPolicy"></a>
<a name="frost.fs.netmap.PlacementPolicy"></a>
### Message PlacementPolicy
Set of rules to select a subset of nodes from `NetworkMap` able to store
@ -494,14 +494,14 @@ storage policy definition languages.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| replicas | [Replica](#neo.fs.v2.netmap.Replica) | repeated | Rules to set number of object replicas and place each one into a named bucket |
| replicas | [Replica](#frost.fs.netmap.Replica) | repeated | Rules to set number of object replicas and place each one into a named bucket |
| container_backup_factor | [uint32](#uint32) | | Container backup factor controls how deep FrostFS will search for nodes alternatives to include into container's nodes subset |
| selectors | [Selector](#neo.fs.v2.netmap.Selector) | repeated | Set of Selectors to form the container's nodes subset |
| filters | [Filter](#neo.fs.v2.netmap.Filter) | repeated | List of named filters to reference in selectors |
| selectors | [Selector](#frost.fs.netmap.Selector) | repeated | Set of Selectors to form the container's nodes subset |
| filters | [Filter](#frost.fs.netmap.Filter) | repeated | List of named filters to reference in selectors |
| unique | [bool](#bool) | | Unique flag defines non-overlapping application for replicas |
<a name="neo.fs.v2.netmap.Replica"></a>
<a name="frost.fs.netmap.Replica"></a>
### Message Replica
Number of object replicas in a set of nodes from the defined selector. If no
@ -517,7 +517,7 @@ default.
| ec_parity_count | [uint32](#uint32) | | Parity shards count |
<a name="neo.fs.v2.netmap.Selector"></a>
<a name="frost.fs.netmap.Selector"></a>
### Message Selector
Selector chooses a number of nodes from the bucket taking the nearest nodes
@ -528,14 +528,14 @@ to the provided `ContainerID` by hash distance.
| ----- | ---- | ----- | ----------- |
| name | [string](#string) | | Selector name to reference in object placement section |
| count | [uint32](#uint32) | | How many nodes to select from the bucket |
| clause | [Clause](#neo.fs.v2.netmap.Clause) | | Selector modifier showing how to form a bucket |
| clause | [Clause](#frost.fs.netmap.Clause) | | Selector modifier showing how to form a bucket |
| attribute | [string](#string) | | Bucket attribute to select from |
| filter | [string](#string) | | Filter reference to select from |
<!-- end messages -->
<a name="neo.fs.v2.netmap.Clause"></a>
<a name="frost.fs.netmap.Clause"></a>
### Clause
Selector modifier shows how the node set will be formed. By default selector
@ -550,7 +550,7 @@ hash distance.
<a name="neo.fs.v2.netmap.NodeInfo.State"></a>
<a name="frost.fs.netmap.NodeInfo.State"></a>
### NodeInfo.State
Represents the enumeration of various states of the FrostFS node.
@ -564,7 +564,7 @@ Represents the enumeration of various states of the FrostFS node.
<a name="neo.fs.v2.netmap.Operation"></a>
<a name="frost.fs.netmap.Operation"></a>
### Operation
Operations on filters

File diff suppressed because it is too large Load diff

View file

@ -6,14 +6,14 @@
- [refs/types.proto](#refs/types.proto)
- Messages
- [Address](#neo.fs.v2.refs.Address)
- [Checksum](#neo.fs.v2.refs.Checksum)
- [ContainerID](#neo.fs.v2.refs.ContainerID)
- [ObjectID](#neo.fs.v2.refs.ObjectID)
- [OwnerID](#neo.fs.v2.refs.OwnerID)
- [Signature](#neo.fs.v2.refs.Signature)
- [SignatureRFC6979](#neo.fs.v2.refs.SignatureRFC6979)
- [Version](#neo.fs.v2.refs.Version)
- [Address](#frost.fs.refs.Address)
- [Checksum](#frost.fs.refs.Checksum)
- [ContainerID](#frost.fs.refs.ContainerID)
- [ObjectID](#frost.fs.refs.ObjectID)
- [OwnerID](#frost.fs.refs.OwnerID)
- [Signature](#frost.fs.refs.Signature)
- [SignatureRFC6979](#frost.fs.refs.SignatureRFC6979)
- [Version](#frost.fs.refs.Version)
- [Scalar Value Types](#scalar-value-types)
@ -29,7 +29,7 @@
<!-- end services -->
<a name="neo.fs.v2.refs.Address"></a>
<a name="frost.fs.refs.Address"></a>
### Message Address
Objects in FrostFS are addressed by their ContainerID and ObjectID.
@ -40,11 +40,11 @@ String presentation of `Address` is a concatenation of string encoded
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container_id | [ContainerID](#neo.fs.v2.refs.ContainerID) | | Container identifier |
| object_id | [ObjectID](#neo.fs.v2.refs.ObjectID) | | Object identifier |
| container_id | [ContainerID](#frost.fs.refs.ContainerID) | | Container identifier |
| object_id | [ObjectID](#frost.fs.refs.ObjectID) | | Object identifier |
<a name="neo.fs.v2.refs.Checksum"></a>
<a name="frost.fs.refs.Checksum"></a>
### Message Checksum
Checksum message.
@ -58,11 +58,11 @@ Depending on checksum algorithm type, the string presentation may vary:
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| type | [ChecksumType](#neo.fs.v2.refs.ChecksumType) | | Checksum algorithm type |
| type | [ChecksumType](#frost.fs.refs.ChecksumType) | | Checksum algorithm type |
| sum | [bytes](#bytes) | | Checksum itself |
<a name="neo.fs.v2.refs.ContainerID"></a>
<a name="frost.fs.refs.ContainerID"></a>
### Message ContainerID
FrostFS container identifier. Container structures are immutable and
@ -87,7 +87,7 @@ with/without paddings are accepted.
| value | [bytes](#bytes) | | Container identifier in a binary format. |
<a name="neo.fs.v2.refs.ObjectID"></a>
<a name="frost.fs.refs.ObjectID"></a>
### Message ObjectID
FrostFS Object unique identifier. Objects are immutable and
@ -114,7 +114,7 @@ with/without paddings are accepted.
| value | [bytes](#bytes) | | Object identifier in a binary format |
<a name="neo.fs.v2.refs.OwnerID"></a>
<a name="frost.fs.refs.OwnerID"></a>
### Message OwnerID
`OwnerID` is a derivative of a user's main public key. The transformation
@ -139,7 +139,7 @@ with/without paddings are accepted.
| value | [bytes](#bytes) | | Identifier of the container owner in a binary format |
<a name="neo.fs.v2.refs.Signature"></a>
<a name="frost.fs.refs.Signature"></a>
### Message Signature
Signature of something in FrostFS.
@ -149,10 +149,10 @@ Signature of something in FrostFS.
| ----- | ---- | ----- | ----------- |
| key | [bytes](#bytes) | | Public key used for signing |
| sign | [bytes](#bytes) | | Signature |
| scheme | [SignatureScheme](#neo.fs.v2.refs.SignatureScheme) | | Scheme contains digital signature scheme identifier |
| scheme | [SignatureScheme](#frost.fs.refs.SignatureScheme) | | Scheme contains digital signature scheme identifier |
<a name="neo.fs.v2.refs.SignatureRFC6979"></a>
<a name="frost.fs.refs.SignatureRFC6979"></a>
### Message SignatureRFC6979
RFC 6979 signature.
@ -164,7 +164,7 @@ RFC 6979 signature.
| sign | [bytes](#bytes) | | Deterministic ECDSA with SHA-256 hashing |
<a name="neo.fs.v2.refs.Version"></a>
<a name="frost.fs.refs.Version"></a>
### Message Version
API version used by a node.
@ -182,7 +182,7 @@ number.
<!-- end messages -->
<a name="neo.fs.v2.refs.ChecksumType"></a>
<a name="frost.fs.refs.ChecksumType"></a>
### ChecksumType
Checksum algorithm type.
@ -195,7 +195,7 @@ Checksum algorithm type.
<a name="neo.fs.v2.refs.SignatureScheme"></a>
<a name="frost.fs.refs.SignatureScheme"></a>
### SignatureScheme
Signature scheme describes digital signing scheme used for (key, signature)

View file

@ -5,29 +5,29 @@
- [session/service.proto](#session/service.proto)
- Services
- [SessionService](#neo.fs.v2.session.SessionService)
- [SessionService](#frost.fs.session.SessionService)
- Messages
- [CreateRequest](#neo.fs.v2.session.CreateRequest)
- [CreateRequest.Body](#neo.fs.v2.session.CreateRequest.Body)
- [CreateResponse](#neo.fs.v2.session.CreateResponse)
- [CreateResponse.Body](#neo.fs.v2.session.CreateResponse.Body)
- [CreateRequest](#frost.fs.session.CreateRequest)
- [CreateRequest.Body](#frost.fs.session.CreateRequest.Body)
- [CreateResponse](#frost.fs.session.CreateResponse)
- [CreateResponse.Body](#frost.fs.session.CreateResponse.Body)
- [session/types.proto](#session/types.proto)
- Messages
- [ContainerSessionContext](#neo.fs.v2.session.ContainerSessionContext)
- [ObjectSessionContext](#neo.fs.v2.session.ObjectSessionContext)
- [ObjectSessionContext.Target](#neo.fs.v2.session.ObjectSessionContext.Target)
- [RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader)
- [RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader)
- [ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader)
- [ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader)
- [SessionToken](#neo.fs.v2.session.SessionToken)
- [SessionToken.Body](#neo.fs.v2.session.SessionToken.Body)
- [SessionToken.Body.TokenLifetime](#neo.fs.v2.session.SessionToken.Body.TokenLifetime)
- [XHeader](#neo.fs.v2.session.XHeader)
- [ContainerSessionContext](#frost.fs.session.ContainerSessionContext)
- [ObjectSessionContext](#frost.fs.session.ObjectSessionContext)
- [ObjectSessionContext.Target](#frost.fs.session.ObjectSessionContext.Target)
- [RequestMetaHeader](#frost.fs.session.RequestMetaHeader)
- [RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader)
- [ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader)
- [ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader)
- [SessionToken](#frost.fs.session.SessionToken)
- [SessionToken.Body](#frost.fs.session.SessionToken.Body)
- [SessionToken.Body.TokenLifetime](#frost.fs.session.SessionToken.Body.TokenLifetime)
- [XHeader](#frost.fs.session.XHeader)
- [Scalar Value Types](#scalar-value-types)
@ -42,9 +42,9 @@
<a name="neo.fs.v2.session.SessionService"></a>
<a name="frost.fs.session.SessionService"></a>
### Service "neo.fs.v2.session.SessionService"
### Service "frost.fs.session.SessionService"
`SessionService` allows to establish a temporary trust relationship between
two peer nodes and generate a `SessionToken` as the proof of trust to be
attached in requests for further verification. Please see corresponding
@ -66,11 +66,11 @@ session has been successfully opened;
| Name | Input | Output |
| ---- | ----- | ------ |
| Create | [CreateRequest](#neo.fs.v2.session.CreateRequest) | [CreateResponse](#neo.fs.v2.session.CreateResponse) |
| Create | [CreateRequest](#frost.fs.session.CreateRequest) | [CreateResponse](#frost.fs.session.CreateResponse) |
<!-- end services -->
<a name="neo.fs.v2.session.CreateRequest"></a>
<a name="frost.fs.session.CreateRequest"></a>
### Message CreateRequest
Information necessary for opening a session.
@ -78,12 +78,12 @@ Information necessary for opening a session.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [CreateRequest.Body](#neo.fs.v2.session.CreateRequest.Body) | | Body of a create session token request message. |
| meta_header | [RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [CreateRequest.Body](#frost.fs.session.CreateRequest.Body) | | Body of a create session token request message. |
| meta_header | [RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.session.CreateRequest.Body"></a>
<a name="frost.fs.session.CreateRequest.Body"></a>
### Message CreateRequest.Body
Session creation request body
@ -91,11 +91,11 @@ Session creation request body
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | Session initiating user's or node's key derived `OwnerID` |
| owner_id | [frost.fs.refs.OwnerID](#frost.fs.refs.OwnerID) | | Session initiating user's or node's key derived `OwnerID` |
| expiration | [uint64](#uint64) | | Session expiration `Epoch` |
<a name="neo.fs.v2.session.CreateResponse"></a>
<a name="frost.fs.session.CreateResponse"></a>
### Message CreateResponse
Information about the opened session.
@ -103,12 +103,12 @@ Information about the opened session.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [CreateResponse.Body](#neo.fs.v2.session.CreateResponse.Body) | | Body of create session token response message. |
| meta_header | [ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
| body | [CreateResponse.Body](#frost.fs.session.CreateResponse.Body) | | Body of create session token response message. |
| meta_header | [ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect request execution. |
| verify_header | [ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. |
<a name="neo.fs.v2.session.CreateResponse.Body"></a>
<a name="frost.fs.session.CreateResponse.Body"></a>
### Message CreateResponse.Body
Session creation response body
@ -134,7 +134,7 @@ Session creation response body
<!-- end services -->
<a name="neo.fs.v2.session.ContainerSessionContext"></a>
<a name="frost.fs.session.ContainerSessionContext"></a>
### Message ContainerSessionContext
Context information for Session Tokens related to ContainerService requests.
@ -142,12 +142,12 @@ Context information for Session Tokens related to ContainerService requests.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| verb | [ContainerSessionContext.Verb](#neo.fs.v2.session.ContainerSessionContext.Verb) | | Type of request for which the token is issued |
| verb | [ContainerSessionContext.Verb](#frost.fs.session.ContainerSessionContext.Verb) | | Type of request for which the token is issued |
| wildcard | [bool](#bool) | | Spreads the action to all owner containers. If set, container_id field is ignored. |
| container_id | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Particular container to which the action applies. Ignored if wildcard flag is set. |
| container_id | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | | Particular container to which the action applies. Ignored if wildcard flag is set. |
<a name="neo.fs.v2.session.ObjectSessionContext"></a>
<a name="frost.fs.session.ObjectSessionContext"></a>
### Message ObjectSessionContext
Context information for Session Tokens related to ObjectService requests
@ -155,11 +155,11 @@ Context information for Session Tokens related to ObjectService requests
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| verb | [ObjectSessionContext.Verb](#neo.fs.v2.session.ObjectSessionContext.Verb) | | Type of request for which the token is issued |
| target | [ObjectSessionContext.Target](#neo.fs.v2.session.ObjectSessionContext.Target) | | Object session target. MUST be correctly formed and set. If `objects` field is not empty, then the session applies only to these elements, otherwise, to all objects from the specified container. |
| verb | [ObjectSessionContext.Verb](#frost.fs.session.ObjectSessionContext.Verb) | | Type of request for which the token is issued |
| target | [ObjectSessionContext.Target](#frost.fs.session.ObjectSessionContext.Target) | | Object session target. MUST be correctly formed and set. If `objects` field is not empty, then the session applies only to these elements, otherwise, to all objects from the specified container. |
<a name="neo.fs.v2.session.ObjectSessionContext.Target"></a>
<a name="frost.fs.session.ObjectSessionContext.Target"></a>
### Message ObjectSessionContext.Target
Carries objects involved in the object session.
@ -167,11 +167,11 @@ Carries objects involved in the object session.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| container | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Indicates which container the session is spread to. Field MUST be set and correct. |
| objects | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | Indicates which objects the session is spread to. Objects are expected to be stored in the FrostFS container referenced by `container` field. Each element MUST have correct format. |
| container | [frost.fs.refs.ContainerID](#frost.fs.refs.ContainerID) | | Indicates which container the session is spread to. Field MUST be set and correct. |
| objects | [frost.fs.refs.ObjectID](#frost.fs.refs.ObjectID) | repeated | Indicates which objects the session is spread to. Objects are expected to be stored in the FrostFS container referenced by `container` field. Each element MUST have correct format. |
<a name="neo.fs.v2.session.RequestMetaHeader"></a>
<a name="frost.fs.session.RequestMetaHeader"></a>
### Message RequestMetaHeader
Meta information attached to the request. When forwarded between peers,
@ -180,17 +180,17 @@ request meta headers are folded in matryoshka style.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| version | [neo.fs.v2.refs.Version](#neo.fs.v2.refs.Version) | | Peer's API version used |
| version | [frost.fs.refs.Version](#frost.fs.refs.Version) | | Peer's API version used |
| epoch | [uint64](#uint64) | | Peer's local epoch number. Set to 0 if unknown. |
| ttl | [uint32](#uint32) | | Maximum number of intermediate nodes in the request route |
| x_headers | [XHeader](#neo.fs.v2.session.XHeader) | repeated | Request X-Headers |
| session_token | [SessionToken](#neo.fs.v2.session.SessionToken) | | Session token within which the request is sent |
| bearer_token | [neo.fs.v2.acl.BearerToken](#neo.fs.v2.acl.BearerToken) | | `BearerToken` with eACL overrides for the request |
| origin | [RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | `RequestMetaHeader` of the origin request |
| x_headers | [XHeader](#frost.fs.session.XHeader) | repeated | Request X-Headers |
| session_token | [SessionToken](#frost.fs.session.SessionToken) | | Session token within which the request is sent |
| bearer_token | [frost.fs.acl.BearerToken](#frost.fs.acl.BearerToken) | | `BearerToken` with eACL overrides for the request |
| origin | [RequestMetaHeader](#frost.fs.session.RequestMetaHeader) | | `RequestMetaHeader` of the origin request |
| magic_number | [uint64](#uint64) | | FrostFS network magic. Must match the value for the network that the server belongs to. |
<a name="neo.fs.v2.session.RequestVerificationHeader"></a>
<a name="frost.fs.session.RequestVerificationHeader"></a>
### Message RequestVerificationHeader
Verification info for the request signed by all intermediate nodes.
@ -198,13 +198,13 @@ Verification info for the request signed by all intermediate nodes.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Request Body signature. Should be generated once by the request initiator. |
| meta_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Request Meta signature is added and signed by each intermediate node |
| origin_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Signature of previous hops |
| origin | [RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Chain of previous hops signatures |
| body_signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Request Body signature. Should be generated once by the request initiator. |
| meta_signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Request Meta signature is added and signed by each intermediate node |
| origin_signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Signature of previous hops |
| origin | [RequestVerificationHeader](#frost.fs.session.RequestVerificationHeader) | | Chain of previous hops signatures |
<a name="neo.fs.v2.session.ResponseMetaHeader"></a>
<a name="frost.fs.session.ResponseMetaHeader"></a>
### Message ResponseMetaHeader
Information about the response
@ -212,15 +212,15 @@ Information about the response
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| version | [neo.fs.v2.refs.Version](#neo.fs.v2.refs.Version) | | Peer's API version used |
| version | [frost.fs.refs.Version](#frost.fs.refs.Version) | | Peer's API version used |
| epoch | [uint64](#uint64) | | Peer's local epoch number |
| ttl | [uint32](#uint32) | | Maximum number of intermediate nodes in the request route |
| x_headers | [XHeader](#neo.fs.v2.session.XHeader) | repeated | Response X-Headers |
| origin | [ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | `ResponseMetaHeader` of the origin request |
| status | [neo.fs.v2.status.Status](#neo.fs.v2.status.Status) | | Status return |
| x_headers | [XHeader](#frost.fs.session.XHeader) | repeated | Response X-Headers |
| origin | [ResponseMetaHeader](#frost.fs.session.ResponseMetaHeader) | | `ResponseMetaHeader` of the origin request |
| status | [frost.fs.status.Status](#frost.fs.status.Status) | | Status return |
<a name="neo.fs.v2.session.ResponseVerificationHeader"></a>
<a name="frost.fs.session.ResponseVerificationHeader"></a>
### Message ResponseVerificationHeader
Verification info for the response signed by all intermediate nodes
@ -228,13 +228,13 @@ Verification info for the response signed by all intermediate nodes
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Response Body signature. Should be generated once by an answering node. |
| meta_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Response Meta signature is added and signed by each intermediate node |
| origin_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Signature of previous hops |
| origin | [ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Chain of previous hops signatures |
| body_signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Response Body signature. Should be generated once by an answering node. |
| meta_signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Response Meta signature is added and signed by each intermediate node |
| origin_signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Signature of previous hops |
| origin | [ResponseVerificationHeader](#frost.fs.session.ResponseVerificationHeader) | | Chain of previous hops signatures |
<a name="neo.fs.v2.session.SessionToken"></a>
<a name="frost.fs.session.SessionToken"></a>
### Message SessionToken
FrostFS Session Token.
@ -242,11 +242,11 @@ FrostFS Session Token.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| body | [SessionToken.Body](#neo.fs.v2.session.SessionToken.Body) | | Session Token contains the proof of trust between peers to be attached in requests for further verification. Please see corresponding section of FrostFS Technical Specification for details. |
| signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Signature of `SessionToken` information |
| body | [SessionToken.Body](#frost.fs.session.SessionToken.Body) | | Session Token contains the proof of trust between peers to be attached in requests for further verification. Please see corresponding section of FrostFS Technical Specification for details. |
| signature | [frost.fs.refs.Signature](#frost.fs.refs.Signature) | | Signature of `SessionToken` information |
<a name="neo.fs.v2.session.SessionToken.Body"></a>
<a name="frost.fs.session.SessionToken.Body"></a>
### Message SessionToken.Body
Session Token body
@ -255,14 +255,14 @@ Session Token body
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id | [bytes](#bytes) | | Token identifier is a valid UUIDv4 in binary form |
| owner_id | [neo.fs.v2.refs.OwnerID](#neo.fs.v2.refs.OwnerID) | | Identifier of the session initiator |
| lifetime | [SessionToken.Body.TokenLifetime](#neo.fs.v2.session.SessionToken.Body.TokenLifetime) | | Lifetime of the session |
| owner_id | [frost.fs.refs.OwnerID](#frost.fs.refs.OwnerID) | | Identifier of the session initiator |
| lifetime | [SessionToken.Body.TokenLifetime](#frost.fs.session.SessionToken.Body.TokenLifetime) | | Lifetime of the session |
| session_key | [bytes](#bytes) | | Public key used in session |
| object | [ObjectSessionContext](#neo.fs.v2.session.ObjectSessionContext) | | ObjectService session context |
| container | [ContainerSessionContext](#neo.fs.v2.session.ContainerSessionContext) | | ContainerService session context |
| object | [ObjectSessionContext](#frost.fs.session.ObjectSessionContext) | | ObjectService session context |
| container | [ContainerSessionContext](#frost.fs.session.ContainerSessionContext) | | ContainerService session context |
<a name="neo.fs.v2.session.SessionToken.Body.TokenLifetime"></a>
<a name="frost.fs.session.SessionToken.Body.TokenLifetime"></a>
### Message SessionToken.Body.TokenLifetime
Lifetime parameters of the token. Field names taken from rfc7519.
@ -275,7 +275,7 @@ Lifetime parameters of the token. Field names taken from rfc7519.
| iat | [uint64](#uint64) | | Issued at Epoch |
<a name="neo.fs.v2.session.XHeader"></a>
<a name="frost.fs.session.XHeader"></a>
### Message XHeader
Extended headers for Request/Response. They may contain any user-defined
@ -285,16 +285,14 @@ Key name must be a unique valid UTF-8 string. Value can't be empty. Requests
or Responses with duplicated header names or headers with empty values will
be considered invalid.
There are some "well-known" headers starting with `__SYSTEM__` (`__NEOFS__`
is deprecated) prefix that affect system behaviour:
There are some "well-known" headers starting with
`__SYSTEM__` prefix that affect system behaviour:
* [ __SYSTEM__NETMAP_EPOCH ] \
(`__NEOFS__NETMAP_EPOCH` is deprecated) \
Netmap epoch to use for object placement calculation. The `value` is string
encoded `uint64` in decimal presentation. If set to '0' or not set, the
current epoch only will be used.
* [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
(`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
If object can't be found using current epoch's netmap, this header limits
how many past epochs the node can look up through. The `value` is string
encoded `uint64` in decimal presentation. If set to '0' or not set, only
@ -309,7 +307,7 @@ is deprecated) prefix that affect system behaviour:
<!-- end messages -->
<a name="neo.fs.v2.session.ContainerSessionContext.Verb"></a>
<a name="frost.fs.session.ContainerSessionContext.Verb"></a>
### ContainerSessionContext.Verb
Container request verbs
@ -323,7 +321,7 @@ Container request verbs
<a name="neo.fs.v2.session.ObjectSessionContext.Verb"></a>
<a name="frost.fs.session.ObjectSessionContext.Verb"></a>
### ObjectSessionContext.Verb
Object request verbs

View file

@ -6,8 +6,8 @@
- [status/types.proto](#status/types.proto)
- Messages
- [Status](#neo.fs.v2.status.Status)
- [Status.Detail](#neo.fs.v2.status.Status.Detail)
- [Status](#frost.fs.status.Status)
- [Status.Detail](#frost.fs.status.Status.Detail)
- [Scalar Value Types](#scalar-value-types)
@ -23,7 +23,7 @@
<!-- end services -->
<a name="neo.fs.v2.status.Status"></a>
<a name="frost.fs.status.Status"></a>
### Message Status
Declares the general format of the status returns of the FrostFS RPC
@ -59,10 +59,10 @@ should make the return more detailed.
| ----- | ---- | ----- | ----------- |
| code | [uint32](#uint32) | | The status code |
| message | [string](#string) | | Developer-facing error message |
| details | [Status.Detail](#neo.fs.v2.status.Status.Detail) | repeated | Data detailing the outcome of the operation. Must be unique by ID. |
| details | [Status.Detail](#frost.fs.status.Status.Detail) | repeated | Data detailing the outcome of the operation. Must be unique by ID. |
<a name="neo.fs.v2.status.Status.Detail"></a>
<a name="frost.fs.status.Status.Detail"></a>
### Message Status.Detail
Return detail. It contains additional information that can be used to
@ -79,7 +79,7 @@ covered by the code.
<!-- end messages -->
<a name="neo.fs.v2.status.APEManager"></a>
<a name="frost.fs.status.APEManager"></a>
### APEManager
Section of status for APE manager related operations.
@ -90,7 +90,7 @@ Section of status for APE manager related operations.
<a name="neo.fs.v2.status.CommonFail"></a>
<a name="frost.fs.status.CommonFail"></a>
### CommonFail
Section of failed statuses independent of the operation.
@ -105,7 +105,7 @@ Section of failed statuses independent of the operation.
<a name="neo.fs.v2.status.Container"></a>
<a name="frost.fs.status.Container"></a>
### Container
Section of statuses for container-related operations.
@ -118,7 +118,7 @@ Section of statuses for container-related operations.
<a name="neo.fs.v2.status.Object"></a>
<a name="frost.fs.status.Object"></a>
### Object
Section of statuses for object-related operations.
@ -134,7 +134,7 @@ Section of statuses for object-related operations.
<a name="neo.fs.v2.status.Section"></a>
<a name="frost.fs.status.Section"></a>
### Section
Section identifiers.
@ -150,7 +150,7 @@ Section identifiers.
<a name="neo.fs.v2.status.Session"></a>
<a name="frost.fs.status.Session"></a>
### Session
Section of statuses for session-related operations.
@ -162,7 +162,7 @@ Section of statuses for session-related operations.
<a name="neo.fs.v2.status.Success"></a>
<a name="frost.fs.status.Success"></a>
### Success
Section of FrostFS successful return codes.

View file

@ -6,7 +6,7 @@
- [tombstone/types.proto](#tombstone/types.proto)
- Messages
- [Tombstone](#neo.fs.v2.tombstone.Tombstone)
- [Tombstone](#frost.fs.tombstone.Tombstone)
- [Scalar Value Types](#scalar-value-types)
@ -22,7 +22,7 @@
<!-- end services -->
<a name="neo.fs.v2.tombstone.Tombstone"></a>
<a name="frost.fs.tombstone.Tombstone"></a>
### Message Tombstone
Tombstone keeps record of deleted objects for a few epochs until they are
@ -31,9 +31,9 @@ purged from the FrostFS network.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| expiration_epoch | [uint64](#uint64) | | Last FrostFS epoch number of the tombstone lifetime. It's set by the tombstone creator depending on the current FrostFS network settings. A tombstone object must have the same expiration epoch value in `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated) attribute. Otherwise, the tombstone will be rejected by a storage node. |
| expiration_epoch | [uint64](#uint64) | | Last FrostFS epoch number of the tombstone lifetime. It's set by the tombstone creator depending on the current FrostFS network settings. A tombstone object must have the same expiration epoch value in `__SYSTEM__EXPIRATION_EPOCH` attribute. Otherwise, the tombstone will be rejected by a storage node. |
| split_id | [bytes](#bytes) | | 16 byte UUID used to identify the split object hierarchy parts. Must be unique inside a container. All objects participating in the split must have the same `split_id` value. |
| members | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | List of objects to be deleted. |
| members | [frost.fs.refs.ObjectID](#frost.fs.refs.ObjectID) | repeated | List of objects to be deleted. |
<!-- end messages -->

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.refs;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc;refs";
option csharp_namespace = "Neo.FileStorage.API.Refs";
package frost.fs.refs;
// Objects in FrostFS are addressed by their ContainerID and ObjectID.
//

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.session;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc;session";
option csharp_namespace = "Neo.FileStorage.API.Session";
package frost.fs.session;
import "refs/types.proto";
import "session/types.proto";
@ -27,7 +24,7 @@ message CreateRequest {
// Session creation request body
message Body {
// Session initiating user's or node's key derived `OwnerID`
neo.fs.v2.refs.OwnerID owner_id = 1;
frost.fs.refs.OwnerID owner_id = 1;
// Session expiration `Epoch`
uint64 expiration = 2;
}
@ -36,12 +33,12 @@ message CreateRequest {
// Carries request meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.RequestMetaHeader meta_header = 2;
frost.fs.session.RequestMetaHeader meta_header = 2;
// Carries request verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.RequestVerificationHeader verify_header = 3;
frost.fs.session.RequestVerificationHeader verify_header = 3;
}
// Information about the opened session.
@ -60,10 +57,10 @@ message CreateResponse {
// Carries response meta information. Header data is used only to regulate
// message transport and does not affect request execution.
neo.fs.v2.session.ResponseMetaHeader meta_header = 2;
frost.fs.session.ResponseMetaHeader meta_header = 2;
// Carries response verification information. This header is used to
// authenticate the nodes of the message route and check the correctness of
// transmission.
neo.fs.v2.session.ResponseVerificationHeader verify_header = 3;
frost.fs.session.ResponseVerificationHeader verify_header = 3;
}

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.session;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc;session";
option csharp_namespace = "Neo.FileStorage.API.Session";
package frost.fs.session;
import "refs/types.proto";
import "acl/types.proto";
@ -96,7 +93,7 @@ message SessionToken {
bytes id = 1 [ json_name = "id" ];
// Identifier of the session initiator
neo.fs.v2.refs.OwnerID owner_id = 2 [ json_name = "ownerID" ];
frost.fs.refs.OwnerID owner_id = 2 [ json_name = "ownerID" ];
// Lifetime parameters of the token. Field names taken from rfc7519.
message TokenLifetime {
@ -130,7 +127,7 @@ message SessionToken {
Body body = 1 [ json_name = "body" ];
// Signature of `SessionToken` information
neo.fs.v2.refs.Signature signature = 2 [ json_name = "signature" ];
frost.fs.refs.Signature signature = 2 [ json_name = "signature" ];
}
// Extended headers for Request/Response. They may contain any user-defined
@ -140,16 +137,14 @@ message SessionToken {
// or Responses with duplicated header names or headers with empty values will
// be considered invalid.
//
// There are some "well-known" headers starting with `__SYSTEM__` (`__NEOFS__`
// is deprecated) prefix that affect system behaviour:
// There are some "well-known" headers starting with
// `__SYSTEM__` prefix that affect system behaviour:
//
// * [ __SYSTEM__NETMAP_EPOCH ] \
// (`__NEOFS__NETMAP_EPOCH` is deprecated) \
// Netmap epoch to use for object placement calculation. The `value` is string
// encoded `uint64` in decimal presentation. If set to '0' or not set, the
// current epoch only will be used.
// * [ __SYSTEM__NETMAP_LOOKUP_DEPTH ] \
// (`__NEOFS__NETMAP_LOOKUP_DEPTH` is deprecated) \
// If object can't be found using current epoch's netmap, this header limits
// how many past epochs the node can look up through. The `value` is string
// encoded `uint64` in decimal presentation. If set to '0' or not set, only
@ -166,7 +161,7 @@ message XHeader {
// request meta headers are folded in matryoshka style.
message RequestMetaHeader {
// Peer's API version used
neo.fs.v2.refs.Version version = 1 [ json_name = "version" ];
frost.fs.refs.Version version = 1 [ json_name = "version" ];
// Peer's local epoch number. Set to 0 if unknown.
uint64 epoch = 2 [ json_name = "epoch" ];
@ -181,7 +176,7 @@ message RequestMetaHeader {
SessionToken session_token = 5 [ json_name = "sessionToken" ];
// `BearerToken` with eACL overrides for the request
neo.fs.v2.acl.BearerToken bearer_token = 6 [ json_name = "bearerToken" ];
frost.fs.acl.BearerToken bearer_token = 6 [ json_name = "bearerToken" ];
// `RequestMetaHeader` of the origin request
RequestMetaHeader origin = 7 [ json_name = "origin" ];
@ -194,7 +189,7 @@ message RequestMetaHeader {
// Information about the response
message ResponseMetaHeader {
// Peer's API version used
neo.fs.v2.refs.Version version = 1 [ json_name = "version" ];
frost.fs.refs.Version version = 1 [ json_name = "version" ];
// Peer's local epoch number
uint64 epoch = 2 [ json_name = "epoch" ];
@ -209,17 +204,17 @@ message ResponseMetaHeader {
ResponseMetaHeader origin = 5 [ json_name = "origin" ];
// Status return
neo.fs.v2.status.Status status = 6 [ json_name = "status" ];
frost.fs.status.Status status = 6 [ json_name = "status" ];
}
// Verification info for the request signed by all intermediate nodes.
message RequestVerificationHeader {
// Request Body signature. Should be generated once by the request initiator.
neo.fs.v2.refs.Signature body_signature = 1 [ json_name = "bodySignature" ];
frost.fs.refs.Signature body_signature = 1 [ json_name = "bodySignature" ];
// Request Meta signature is added and signed by each intermediate node
neo.fs.v2.refs.Signature meta_signature = 2 [ json_name = "metaSignature" ];
frost.fs.refs.Signature meta_signature = 2 [ json_name = "metaSignature" ];
// Signature of previous hops
neo.fs.v2.refs.Signature origin_signature = 3
frost.fs.refs.Signature origin_signature = 3
[ json_name = "originSignature" ];
// Chain of previous hops signatures
@ -229,11 +224,11 @@ message RequestVerificationHeader {
// Verification info for the response signed by all intermediate nodes
message ResponseVerificationHeader {
// Response Body signature. Should be generated once by an answering node.
neo.fs.v2.refs.Signature body_signature = 1 [ json_name = "bodySignature" ];
frost.fs.refs.Signature body_signature = 1 [ json_name = "bodySignature" ];
// Response Meta signature is added and signed by each intermediate node
neo.fs.v2.refs.Signature meta_signature = 2 [ json_name = "metaSignature" ];
frost.fs.refs.Signature meta_signature = 2 [ json_name = "metaSignature" ];
// Signature of previous hops
neo.fs.v2.refs.Signature origin_signature = 3
frost.fs.refs.Signature origin_signature = 3
[ json_name = "originSignature" ];
// Chain of previous hops signatures

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.status;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status/grpc;status";
option csharp_namespace = "Neo.FileStorage.API.Status";
package frost.fs.status;
// Declares the general format of the status returns of the FrostFS RPC
// protocol. Status is present in all response messages. Each RPC of FrostFS

View file

@ -1,9 +1,6 @@
syntax = "proto3";
package neo.fs.v2.tombstone;
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/tombstone/grpc;tombstone";
option csharp_namespace = "Neo.FileStorage.API.Tombstone";
package frost.fs.tombstone;
import "refs/types.proto";
@ -13,7 +10,7 @@ message Tombstone {
// Last FrostFS epoch number of the tombstone lifetime. It's set by the
// tombstone creator depending on the current FrostFS network settings. A
// tombstone object must have the same expiration epoch value in
// `__SYSTEM__EXPIRATION_EPOCH` (`__NEOFS__EXPIRATION_EPOCH` is deprecated)
// `__SYSTEM__EXPIRATION_EPOCH`
// attribute. Otherwise, the tombstone will be rejected by a storage node.
uint64 expiration_epoch = 1 [ json_name = "expirationEpoch" ];
@ -23,5 +20,5 @@ message Tombstone {
bytes split_id = 2 [ json_name = "splitID" ];
// List of objects to be deleted.
repeated neo.fs.v2.refs.ObjectID members = 3 [ json_name = "members" ];
repeated frost.fs.refs.ObjectID members = 3 [ json_name = "members" ];
}

5
version.json Normal file
View file

@ -0,0 +1,5 @@
{
"milestone": 3,
"patch": 0,
"date": "2024-10-08"
}