// Copyright (C) 2019 Storj Labs, Inc. // See LICENSE for copying information. syntax = "proto3"; option go_package = "pb"; package metainfo; import "encryption.proto"; import "gogo.proto"; import "google/protobuf/timestamp.proto"; import "node.proto"; import "pointerdb.proto"; import "orders.proto"; // Metainfo it's a satellite RPC service service Metainfo { rpc CreateBucket(BucketCreateRequest) returns (BucketCreateResponse); rpc GetBucket(BucketGetRequest) returns (BucketGetResponse); rpc DeleteBucket(BucketDeleteRequest) returns (BucketDeleteResponse); rpc ListBuckets(BucketListRequest) returns (BucketListResponse); rpc SetBucketAttribution(BucketSetAttributionRequest) returns (BucketSetAttributionResponse); rpc CreateSegment(SegmentWriteRequest) returns (SegmentWriteResponse); rpc CommitSegment(SegmentCommitRequest) returns (SegmentCommitResponse); rpc SegmentInfo(SegmentInfoRequest) returns (SegmentInfoResponse); rpc DownloadSegment(SegmentDownloadRequest) returns (SegmentDownloadResponse); rpc DeleteSegment(SegmentDeleteRequest) returns (SegmentDeleteResponse); rpc ListSegments(ListSegmentsRequest) returns (ListSegmentsResponse); rpc SetAttribution(SetAttributionRequest) returns (SetAttributionResponse); rpc ProjectInfo(ProjectInfoRequest) returns (ProjectInfoResponse); } message Bucket { bytes name = 1; encryption.CipherSuite path_cipher = 2; bytes attribution_id = 3; google.protobuf.Timestamp created_at = 4 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; int64 default_segment_size = 5; pointerdb.RedundancyScheme default_redundancy_scheme = 6; encryption.EncryptionParameters default_encryption_parameters = 7; } message BucketListItem { bytes name = 1; google.protobuf.Timestamp created_at = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message BucketCreateRequest { bytes name = 1; encryption.CipherSuite path_cipher = 2; bytes attribution_id = 3; int64 default_segment_size = 4; pointerdb.RedundancyScheme default_redundancy_scheme = 5; encryption.EncryptionParameters default_encryption_parameters = 6; } message BucketCreateResponse { Bucket bucket = 1; } message BucketGetRequest { bytes name = 1; } message BucketGetResponse { Bucket bucket = 1; } message BucketDeleteRequest { bytes name = 1; } message BucketDeleteResponse { } message BucketListRequest { bytes cursor = 1; int32 limit = 2; } message BucketListResponse { repeated BucketListItem items = 1; bool more = 2; } message BucketSetAttributionRequest { bytes name = 1; bytes attribution_id = 2; } message BucketSetAttributionResponse { } message AddressedOrderLimit { orders.OrderLimit limit = 1; node.NodeAddress storage_node_address = 2; } message SegmentWriteRequest { bytes bucket = 1; bytes path = 2; int64 segment = 3; pointerdb.RedundancyScheme redundancy = 4; int64 max_encrypted_segment_size = 5; google.protobuf.Timestamp expiration = 6; } message SegmentWriteResponse { repeated AddressedOrderLimit addressed_limits = 1; bytes root_piece_id = 2 [(gogoproto.customtype) = "PieceID", (gogoproto.nullable) = false]; } message SegmentCommitRequest { bytes bucket = 1; bytes path = 2; int64 segment = 3; pointerdb.Pointer pointer = 4; repeated orders.OrderLimit original_limits = 5; } message SegmentCommitResponse { pointerdb.Pointer pointer = 1; } message SegmentDownloadRequest { bytes bucket = 1; bytes path = 2; int64 segment = 3; } message SegmentDownloadResponse { repeated AddressedOrderLimit addressed_limits = 1; pointerdb.Pointer pointer = 2; } message SegmentInfoRequest { bytes bucket = 1; bytes path = 2; int64 segment = 3; } message SegmentInfoResponse { pointerdb.Pointer pointer = 2; } message SegmentDeleteRequest { bytes bucket = 1; bytes path = 2; int64 segment = 3; } message SegmentDeleteResponse { repeated AddressedOrderLimit addressed_limits = 1; } message ListSegmentsRequest { bytes bucket = 1; bytes prefix = 2; bytes start_after = 3; bytes end_before = 4; bool recursive = 5; int32 limit = 6; fixed32 meta_flags = 7; } message ListSegmentsResponse { message Item { bytes path = 1; pointerdb.Pointer pointer = 2; bool is_prefix = 3; } repeated Item items = 1; bool more = 2; } message SetAttributionRequest{ bytes bucket_name = 1; bytes partner_id = 2 ; } message SetAttributionResponse { } message ProjectInfoRequest { } message ProjectInfoResponse { bytes project_salt = 1; }