2020-01-30 11:41:24 +00:00
# Protocol Documentation
< a name = "top" > < / a >
## Table of Contents
- [service/meta.proto ](#service/meta.proto )
- Messages
2020-08-13 16:18:53 +00:00
- [BearerToken ](#neo.fs.v2.service.BearerToken )
- [BearerToken.Body ](#neo.fs.v2.service.BearerToken.Body )
2020-08-18 11:00:34 +00:00
- [ObjectSessionContext ](#neo.fs.v2.service.ObjectSessionContext )
2020-08-13 16:18:53 +00:00
- [RequestMetaHeader ](#neo.fs.v2.service.RequestMetaHeader )
- [ResponseMetaHeader ](#neo.fs.v2.service.ResponseMetaHeader )
- [SessionToken ](#neo.fs.v2.service.SessionToken )
- [SessionToken.Body ](#neo.fs.v2.service.SessionToken.Body )
- [TokenLifetime ](#neo.fs.v2.service.TokenLifetime )
- [Version ](#neo.fs.v2.service.Version )
- [XHeader ](#neo.fs.v2.service.XHeader )
2020-01-30 11:41:24 +00:00
- [service/verify.proto ](#service/verify.proto )
- Messages
2020-08-13 16:18:53 +00:00
- [RequestVerificationHeader ](#neo.fs.v2.service.RequestVerificationHeader )
- [ResponseVerificationHeader ](#neo.fs.v2.service.ResponseVerificationHeader )
- [Signature ](#neo.fs.v2.service.Signature )
2020-01-30 11:41:24 +00:00
- [Scalar Value Types ](#scalar-value-types )
< a name = "service/meta.proto" > < / a >
< p align = "right" > < a href = "#top" > Top< / a > < / p >
## service/meta.proto
<!-- end services -->
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.BearerToken" > < / a >
2020-06-18 08:49:10 +00:00
2020-08-11 15:49:56 +00:00
### Message BearerToken
BearerToken has information about request ACL rules with limited lifetime
2020-06-18 08:49:10 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| body | [BearerToken.Body ](#neo.fs.v2.service.BearerToken.Body ) | | Bearer Token body |
| signature | [Signature ](#neo.fs.v2.service.Signature ) | | Signature of BearerToken body |
2020-06-18 08:49:10 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.BearerToken.Body" > < / a >
2020-06-18 08:49:10 +00:00
2020-08-11 15:49:56 +00:00
### Message BearerToken.Body
2020-08-13 16:18:53 +00:00
Bearer Token body
2020-01-30 11:41:24 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| eacl_table | [neo.fs.v2.acl.EACLTable ](#neo.fs.v2.acl.EACLTable ) | | EACLTable carries table of extended ACL rules |
| owner_id | [neo.fs.v2.refs.OwnerID ](#neo.fs.v2.refs.OwnerID ) | | OwnerID carries identifier of the token owner |
| lifetime | [TokenLifetime ](#neo.fs.v2.service.TokenLifetime ) | | Token expiration and valid time period parameters |
2020-01-30 11:41:24 +00:00
2020-08-11 13:04:54 +00:00
2020-08-18 11:00:34 +00:00
< a name = "neo.fs.v2.service.ObjectSessionContext" > < / a >
2020-08-13 20:51:55 +00:00
2020-08-18 11:00:34 +00:00
### Message ObjectSessionContext
2020-08-13 20:51:55 +00:00
Context information for Session Tokens related to ObjectService requests
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-18 11:00:34 +00:00
| verb | [ObjectSessionContext.Verb ](#neo.fs.v2.service.ObjectSessionContext.Verb ) | | Verb is a type of request for which the token is issued |
2020-08-13 20:51:55 +00:00
| address | [neo.fs.v2.refs.Address ](#neo.fs.v2.refs.Address ) | | Related Object address |
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.RequestMetaHeader" > < / a >
2020-08-11 13:04:54 +00:00
2020-08-11 15:49:56 +00:00
### Message RequestMetaHeader
Information about the request
2020-08-11 13:04:54 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| version | [Version ](#neo.fs.v2.service.Version ) | | Client API version. |
2020-08-11 15:49:56 +00:00
| epoch | [uint64 ](#uint64 ) | | Client local epoch number. Set to 0 if unknown. |
| ttl | [uint32 ](#uint32 ) | | Maximum number of nodes in the request route. |
2020-08-13 16:18:53 +00:00
| x_headers | [XHeader ](#neo.fs.v2.service.XHeader ) | repeated | Request X-Headers. |
| session_token | [SessionToken ](#neo.fs.v2.service.SessionToken ) | | Token is a token of the session within which the request is sent |
| bearer_token | [BearerToken ](#neo.fs.v2.service.BearerToken ) | | Bearer is a Bearer token of the request |
| origin | [RequestMetaHeader ](#neo.fs.v2.service.RequestMetaHeader ) | | RequestMetaHeader of the origin request. |
2020-08-11 13:04:54 +00:00
2020-01-30 11:41:24 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.ResponseMetaHeader" > < / a >
2020-01-30 11:41:24 +00:00
2020-08-11 15:49:56 +00:00
### Message ResponseMetaHeader
Information about the response
2020-01-30 11:41:24 +00:00
2020-08-11 15:49:56 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| version | [Version ](#neo.fs.v2.service.Version ) | | Server API version. |
2020-08-11 15:49:56 +00:00
| epoch | [uint64 ](#uint64 ) | | Server local epoch number. |
| ttl | [uint32 ](#uint32 ) | | Maximum number of nodes in the response route. |
2020-08-13 16:18:53 +00:00
| x_headers | [XHeader ](#neo.fs.v2.service.XHeader ) | repeated | Response X-Headers. |
| origin | [ResponseMetaHeader ](#neo.fs.v2.service.ResponseMetaHeader ) | | Carries response meta header of the origin response. |
2020-01-30 11:41:24 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.SessionToken" > < / a >
2020-06-18 07:58:11 +00:00
2020-08-11 15:49:56 +00:00
### Message SessionToken
NeoFS session token.
2020-06-18 07:58:11 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| body | [SessionToken.Body ](#neo.fs.v2.service.SessionToken.Body ) | | Session Token body |
| signature | [Signature ](#neo.fs.v2.service.Signature ) | | Signature is a signature of session token information |
2020-06-18 07:58:11 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.SessionToken.Body" > < / a >
2020-06-18 07:58:11 +00:00
2020-08-11 15:49:56 +00:00
### Message SessionToken.Body
2020-08-13 16:18:53 +00:00
Session token body
2020-06-18 07:58:11 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-11 15:49:56 +00:00
| id | [bytes ](#bytes ) | | ID is a token identifier. valid UUIDv4 represented in bytes |
2020-08-13 16:18:53 +00:00
| owner_id | [neo.fs.v2.refs.OwnerID ](#neo.fs.v2.refs.OwnerID ) | | OwnerID carries identifier of the session initiator. |
| lifetime | [TokenLifetime ](#neo.fs.v2.service.TokenLifetime ) | | Lifetime is a lifetime of the session |
2020-08-11 15:49:56 +00:00
| session_key | [bytes ](#bytes ) | | SessionKey is a public key of session key |
2020-08-18 11:00:34 +00:00
| object | [ObjectSessionContext ](#neo.fs.v2.service.ObjectSessionContext ) | | ObjectService session context. |
2020-06-18 07:58:11 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.TokenLifetime" > < / a >
2020-01-30 11:41:24 +00:00
2020-08-11 15:49:56 +00:00
### Message TokenLifetime
Lifetime parameters of the token. Filed names taken from rfc7519.
2020-01-30 11:41:24 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-11 15:49:56 +00:00
| exp | [uint64 ](#uint64 ) | | Expiration Epoch |
| nbf | [uint64 ](#uint64 ) | | Not valid before Epoch |
| iat | [uint64 ](#uint64 ) | | Issued at Epoch |
2020-01-30 11:41:24 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.Version" > < / a >
2020-04-24 16:18:28 +00:00
2020-08-11 15:49:56 +00:00
### Message Version
Represents API version used by node.
2020-04-24 16:18:28 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-11 15:49:56 +00:00
| major | [uint32 ](#uint32 ) | | Major API version. |
| minor | [uint32 ](#uint32 ) | | Minor API version. |
2020-04-24 16:18:28 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.XHeader" > < / a >
2020-04-24 16:18:28 +00:00
2020-08-11 15:49:56 +00:00
### Message XHeader
2020-08-13 16:18:53 +00:00
Extended headers for Request/Response
2020-04-24 16:18:28 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-11 15:49:56 +00:00
| key | [string ](#string ) | | Key of the X-Header. |
| value | [string ](#string ) | | Value of the X-Header. |
2020-04-24 16:18:28 +00:00
2020-08-11 15:49:56 +00:00
<!-- end messages -->
2020-05-07 15:42:29 +00:00
2020-08-11 13:04:54 +00:00
2020-08-18 11:00:34 +00:00
< a name = "neo.fs.v2.service.ObjectSessionContext.Verb" > < / a >
2020-08-11 15:49:56 +00:00
2020-08-18 11:00:34 +00:00
### ObjectSessionContext.Verb
2020-08-13 20:51:55 +00:00
Object request verbs
2020-08-11 15:49:56 +00:00
| Name | Number | Description |
| ---- | ------ | ----------- |
2020-08-13 16:18:53 +00:00
| VERB_UNSPECIFIED | 0 | Unknown verb |
2020-08-13 20:51:55 +00:00
| PUT | 1 | Refers to object.Put RPC call |
| GET | 2 | Refers to object.Get RPC call |
| HEAD | 3 | Refers to object.Head RPC call |
| SEARCH | 4 | Refers to object.Search RPC call |
| DELETE | 5 | Refers to object.Delete RPC call |
| RANGE | 6 | Refers to object.GetRange RPC call |
| RANGEHASH | 7 | Refers to object.GetRangeHash RPC call |
2020-08-11 15:49:56 +00:00
<!-- end enums -->
2020-08-11 13:04:54 +00:00
2020-08-11 15:49:56 +00:00
< a name = "service/verify.proto" > < / a >
< p align = "right" > < a href = "#top" > Top< / a > < / p >
## service/verify.proto
<!-- end services -->
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.RequestVerificationHeader" > < / a >
2020-08-11 15:49:56 +00:00
### Message RequestVerificationHeader
Verification info for request signed by all intermediate nodes
2020-08-11 13:04:54 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| body_signature | [Signature ](#neo.fs.v2.service.Signature ) | | Request Body signature. Should be generated once by request initiator. |
| meta_signature | [Signature ](#neo.fs.v2.service.Signature ) | | Request Meta signature is added and signed by any intermediate node |
| origin_signature | [Signature ](#neo.fs.v2.service.Signature ) | | Sign previous hops |
| origin | [RequestVerificationHeader ](#neo.fs.v2.service.RequestVerificationHeader ) | | Chain of previous hops signatures |
2020-08-11 13:04:54 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.ResponseVerificationHeader" > < / a >
2020-05-07 15:42:29 +00:00
2020-08-11 15:49:56 +00:00
### Message ResponseVerificationHeader
Verification info for response signed by all intermediate nodes
2020-05-07 15:42:29 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
2020-08-13 16:18:53 +00:00
| body_signature | [Signature ](#neo.fs.v2.service.Signature ) | | Response Body signature. Should be generated once by answering node. |
| meta_signature | [Signature ](#neo.fs.v2.service.Signature ) | | Response Meta signature is added and signed by any intermediate node |
| origin_signature | [Signature ](#neo.fs.v2.service.Signature ) | | Sign previous hops |
| origin | [ResponseVerificationHeader ](#neo.fs.v2.service.ResponseVerificationHeader ) | | Chain of previous hops signatures |
2020-05-07 15:42:29 +00:00
2020-01-30 11:41:24 +00:00
2020-08-13 16:18:53 +00:00
< a name = "neo.fs.v2.service.Signature" > < / a >
2020-04-24 16:18:28 +00:00
2020-08-11 15:49:56 +00:00
### Message Signature
Signature of something in NeoFS
2020-04-24 16:18:28 +00:00
2020-08-11 15:49:56 +00:00
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| key | [bytes ](#bytes ) | | Public key used for signing. |
| sign | [bytes ](#bytes ) | | Signature |
2020-04-24 16:18:28 +00:00
2020-08-11 15:49:56 +00:00
<!-- end messages -->
2020-04-24 16:18:28 +00:00
2020-01-30 11:41:24 +00:00
<!-- end enums -->
## Scalar Value Types
| .proto Type | Notes | C++ Type | Java Type | Python Type |
| ----------- | ----- | -------- | --------- | ----------- |
| < a name = "double" / > double | | double | double | float |
| < a name = "float" / > float | | float | float | float |
| < a name = "int32" / > int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int |
| < a name = "int64" / > int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long |
| < a name = "uint32" / > uint32 | Uses variable-length encoding. | uint32 | int | int/long |
| < a name = "uint64" / > uint64 | Uses variable-length encoding. | uint64 | long | int/long |
| < a name = "sint32" / > sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int |
| < a name = "sint64" / > sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long |
| < a name = "fixed32" / > fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int |
| < a name = "fixed64" / > fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long |
| < a name = "sfixed32" / > sfixed32 | Always four bytes. | int32 | int | int |
| < a name = "sfixed64" / > sfixed64 | Always eight bytes. | int64 | long | int/long |
| < a name = "bool" / > bool | | bool | boolean | boolean |
| < a name = "string" / > string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode |
| < a name = "bytes" / > bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str |