syntax = "proto3"; package object; option go_package = "github.com/nspcc-dev/neofs-api-go/object"; option csharp_namespace = "NeoFS.API.Object"; import "refs/types.proto"; import "service/verify.proto"; import "storagegroup/types.proto"; // Attribute groups the parameters of the object attributes. message Attribute { // Key carries the string key to the object attribute. string Key = 1; // Value carries the string value of the object attribute. string Value = 2; } message ExtendedHeader { // Attribute is a set of K-V object attributes Attribute Attribute = 3; // Split carries the position of the object in the split hierarchy. SplitHeader SplitHeader = 4; // Tombstone header that set up in deleted objects Tombstone Tombstone = 5; // Token header contains token of the session within which the object was created service.Token Token = 6; // HomoHash is a homomorphic hash of original object payload bytes HomoHash = 7; // PayloadChecksum of actual object's payload bytes PayloadChecksum = 8; // Integrity header with checksum of all above headers in the object IntegrityHeader Integrity = 9; // StorageGroup contains meta information for the data audit storagegroup.StorageGroup StorageGroup = 10; } message Tombstone {} message SystemHeader { // PayloadLength is an object payload length uint64 PayloadLength = 1; // Address carries object address in the NeoFS system. // It encapsulates the object and the container identifiers. refs.Address Address = 2; // OwnerID is a wallet address bytes OwnerID = 3; // CreationEpoch carries number of NeoFS epoch on which the object was created. uint64 CreationEpoch = 4; } message IntegrityHeader { // HeadersChecksum is a checksum of all above headers in the object bytes HeadersChecksum = 1; // CreatorKey carries public key of the object creator in a binary format. bytes CreatorKey = 2; // ChecksumSignature is an user's signature of checksum to verify if it is correct bytes ChecksumSignature = 3; } // SplitHeader groups information about spawning the object through a payload splitting. message SplitHeader { // Parent carries identifier of the origin object. refs.ObjectID Parent = 1; // Previous carries identifier of the left split neighbor. refs.ObjectID Previous = 2; // Previous carries identifier of the right split neighbor. refs.ObjectID Next = 3; // Children carries list of identifiers of the objects generated by splitting the current. repeated refs.ObjectID Children = 4; // Origin carries the header of the origin object. Header Origin = 5; } // Header groups the information about the NeoFS object. message Header { // SystemHeader describes system header SystemHeader SystemHeader = 1; // ExtendedHeader carries the additional part of the header. ExtendedHeader ExtendedHeader = 2; } message Object { // Header carries the object header. Header Header = 1; // Payload is an object's payload bytes Payload = 2; }