// Copyright (C) 2020 Storj Labs, Inc. // See LICENSE for copying information. syntax = "proto3"; option go_package = "storj.io/storj/private/multinodepb"; package multinode; import "gogo.proto"; import "google/protobuf/timestamp.proto"; message RequestHeader { bytes api_key = 1; } service Storage { rpc DiskSpace(DiskSpaceRequest) returns (DiskSpaceResponse); rpc Usage(StorageUsageRequest) returns (StorageUsageResponse); rpc UsageSatellite(StorageUsageSatelliteRequest) returns (StorageUsageSatelliteResponse); } message DiskSpaceRequest { RequestHeader header = 1; } message DiskSpaceResponse { int64 allocated = 1; int64 used_pieces = 2; int64 used_trash = 3; int64 free = 4; int64 available = 5; int64 overused = 6; } message StorageUsage { double at_rest_total = 1; google.protobuf.Timestamp interval_start = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message StorageUsageRequest { RequestHeader header = 1; google.protobuf.Timestamp from = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; google.protobuf.Timestamp to = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message StorageUsageResponse { repeated StorageUsage storage_usage = 1; double summary = 2; } message StorageUsageSatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; google.protobuf.Timestamp from = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; google.protobuf.Timestamp to = 4 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message StorageUsageSatelliteResponse { repeated StorageUsage storage_usage = 1; double summary = 2; } service Bandwidth { rpc MonthSummary(BandwidthMonthSummaryRequest) returns (BandwidthMonthSummaryResponse); rpc BandwidthSummarySatellite(BandwidthSummarySatelliteRequest) returns (BandwidthSummarySatelliteResponse); rpc BandwidthSummary(BandwidthSummaryRequest) returns (BandwidthSummaryResponse); rpc EgressSummarySatellite(EgressSummarySatelliteRequest) returns (EgressSummarySatelliteResponse); rpc EgressSummary(EgressSummaryRequest) returns (EgressSummaryResponse); rpc IngressSummarySatellite(IngressSummarySatelliteRequest) returns (IngressSummarySatelliteResponse); rpc IngressSummary(IngressSummaryRequest) returns (IngressSummaryResponse); rpc DailySatellite(DailySatelliteRequest) returns (DailySatelliteResponse); rpc Daily(DailyRequest) returns (DailyResponse); } message BandwidthMonthSummaryRequest { RequestHeader header = 1; } message BandwidthMonthSummaryResponse { int64 used = 1; } message BandwidthSummarySatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message BandwidthSummarySatelliteResponse { int64 summary = 1; } message BandwidthSummaryRequest { RequestHeader header = 1; } message BandwidthSummaryResponse { int64 summary = 1; } message EgressSummarySatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message EgressSummarySatelliteResponse { int64 summary = 1; } message EgressSummaryRequest { RequestHeader header = 1; } message EgressSummaryResponse { int64 summary = 1; } message IngressSummarySatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message IngressSummarySatelliteResponse { int64 summary = 1; } message IngressSummaryRequest { RequestHeader header = 1; } message IngressSummaryResponse { int64 summary = 1; } message DailySatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message DailySatelliteResponse { repeated UsageRollup usage_rollup = 1; } message DailyRequest { RequestHeader header = 1; } message DailyResponse { repeated UsageRollup usage_rollup = 1; } message UsageRollup { Egress egress = 1; Ingress ingress = 2; int64 delete = 3; google.protobuf.Timestamp interval_start = 4 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message Egress { int64 repair = 1; int64 audit = 2; int64 usage = 3; } message Ingress { int64 repaid = 1; int64 usage = 2; } service Node { rpc Version(VersionRequest) returns (VersionResponse); rpc LastContact(LastContactRequest) returns (LastContactResponse); rpc Reputation(ReputationRequest) returns (ReputationResponse); rpc TrustedSatellites(TrustedSatellitesRequest) returns (TrustedSatellitesResponse); rpc Operator(OperatorRequest) returns (OperatorResponse); } message VersionRequest { RequestHeader header = 1; } message VersionResponse { string version = 1; // must be semver formatted } message LastContactRequest { RequestHeader header = 1; } message LastContactResponse { google.protobuf.Timestamp last_contact = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message ReputationRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message AuditWindow { google.protobuf.Timestamp window_start = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; int32 online_count = 2; int32 total_count = 3; } message ReputationResponse { message Online { double score = 1; } message Audit { double score = 1; double suspension_score = 2; int64 total_count = 3; int64 success_count = 4; double alpha = 5; double beta = 6; double unknown_alpha = 7; double unknown_beta = 8; repeated AuditWindow history = 9; } Online online = 1; Audit audit = 2; google.protobuf.Timestamp disqualified_at = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = true]; google.protobuf.Timestamp suspended_at = 4 [(gogoproto.stdtime) = true, (gogoproto.nullable) = true]; google.protobuf.Timestamp offline_suspended_at = 5 [(gogoproto.stdtime) = true, (gogoproto.nullable) = true]; google.protobuf.Timestamp offline_under_review_at = 6 [(gogoproto.stdtime) = true, (gogoproto.nullable) = true]; google.protobuf.Timestamp updated_at = 7 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; google.protobuf.Timestamp joined_at = 8 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; } message TrustedSatellitesRequest { RequestHeader header = 1; } message TrustedSatellitesResponse { message NodeURL { bytes node_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; string address = 2; } repeated NodeURL trusted_satellites = 1; } message OperatorRequest { RequestHeader header = 1; } message OperatorResponse { string email = 1; string wallet = 2; repeated string wallet_features = 3; } service Payouts { rpc Summary(SummaryRequest) returns (SummaryResponse); rpc SummaryPeriod(SummaryPeriodRequest) returns (SummaryPeriodResponse); rpc SummarySatellite(SummarySatelliteRequest) returns (SummarySatelliteResponse); rpc SummarySatellitePeriod(SummarySatellitePeriodRequest) returns (SummarySatellitePeriodResponse); rpc Earned(EarnedRequest) returns (EarnedResponse); rpc EarnedSatellite(EarnedSatelliteRequest) returns (EarnedSatelliteResponse); rpc EstimatedPayoutSatellite(EstimatedPayoutSatelliteRequest) returns (EstimatedPayoutSatelliteResponse); rpc EstimatedPayout(EstimatedPayoutRequest) returns (EstimatedPayoutResponse); rpc Undistributed(UndistributedRequest) returns (UndistributedResponse); rpc PaystubSatellite(PaystubSatelliteRequest) returns (PaystubSatelliteResponse); rpc Paystub(PaystubRequest) returns (PaystubResponse); rpc PaystubPeriod(PaystubPeriodRequest) returns (PaystubPeriodResponse); rpc PaystubSatellitePeriod(PaystubSatellitePeriodRequest) returns (PaystubSatellitePeriodResponse); rpc HeldAmountHistory(HeldAmountHistoryRequest) returns (HeldAmountHistoryResponse); } message EstimatedPayoutSatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message EstimatedPayoutSatelliteResponse { int64 estimated_earnings = 1; } message EstimatedPayoutRequest { RequestHeader header = 1; } message EstimatedPayoutResponse { int64 estimated_earnings = 1; } message SummaryRequest { RequestHeader header = 1; } message SummaryResponse { PayoutInfo payout_info = 1; } message SummaryPeriodRequest { RequestHeader header = 1; string period = 2; } message SummaryPeriodResponse { PayoutInfo payout_info = 1; } message SummarySatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message SummarySatelliteResponse { PayoutInfo payout_info = 1; } message SummarySatellitePeriodRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; string period = 3; } message SummarySatellitePeriodResponse { PayoutInfo payout_info = 1; } message EarnedRequest { RequestHeader header = 1; } message EarnedResponse { int64 total = 1; } message EarnedSatelliteRequest { RequestHeader header = 1; } message EarnedSatelliteResponse { repeated EarnedSatellite earned_satellite = 1; } message EarnedSatellite { int64 total = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message UndistributedRequest { RequestHeader header = 1; } message UndistributedResponse { int64 total = 1; } message PaystubSatelliteRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message PaystubSatelliteResponse { Paystub paystub = 1; } message PaystubRequest { RequestHeader header = 1; } message PaystubResponse { Paystub paystub = 1; } message PaystubPeriodRequest { RequestHeader header = 1; string period = 2; } message PaystubPeriodResponse { Paystub paystub = 1; } message PaystubSatellitePeriodRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; string period = 3; } message PaystubSatellitePeriodResponse { Paystub paystub = 1; } message PayoutInfo { int64 held = 1; int64 paid = 2; } message Paystub { double usage_at_rest = 1; int64 usage_get = 2; int64 usage_get_repair = 3; int64 usage_get_audit = 4; int64 comp_at_rest = 5; int64 comp_get = 6; int64 comp_get_repair = 7; int64 comp_get_audit = 8; int64 held = 9; int64 paid = 10; int64 distributed = 11; int64 disposed = 12; } message HeldAmountHistoryRequest { RequestHeader header = 1; } message HeldAmountHistoryResponse { message HeldAmount { string period = 1; int64 amount = 2; } message HeldAmountHistory { bytes satellite_id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; repeated HeldAmount held_amounts = 2; } repeated HeldAmountHistory history = 1; } service Payout { rpc AllSatellitesSummary(AllSatellitesSummaryRequest) returns (AllSatellitesSummaryResponse); rpc AllSatellitesPeriodSummary(AllSatellitesPeriodSummaryRequest) returns (AllSatellitesPeriodSummaryResponse); rpc SatelliteSummary(SatelliteSummaryRequest) returns (SatelliteSummaryResponse); rpc SatellitePeriodSummary(SatellitePeriodSummaryRequest) returns (SatellitePeriodSummaryResponse); rpc Earned(EarnedRequest) returns (EarnedResponse); rpc EarnedPerSatellite(EarnedPerSatelliteRequest) returns (EarnedPerSatelliteResponse); rpc EstimatedPayoutSatellite(EstimatedPayoutSatelliteRequest) returns (EstimatedPayoutSatelliteResponse); rpc EstimatedPayoutTotal(EstimatedPayoutTotalRequest) returns (EstimatedPayoutTotalResponse); rpc Undistributed(UndistributedRequest) returns (UndistributedResponse); rpc SatellitePaystub(SatellitePaystubRequest) returns (SatellitePaystubResponse); rpc Paystub(PaystubRequest) returns (PaystubResponse); rpc PeriodPaystub(PeriodPaystubRequest) returns (PeriodPaystubResponse); rpc SatellitePeriodPaystub(SatellitePeriodPaystubRequest) returns (SatellitePeriodPaystubResponse); } message EstimatedPayoutTotalRequest { RequestHeader header = 1; } message EstimatedPayoutTotalResponse { int64 estimated_earnings = 1; } message AllSatellitesSummaryRequest { RequestHeader header = 1; } message AllSatellitesSummaryResponse { PayoutInfo payout_info = 1; } message AllSatellitesPeriodSummaryRequest { RequestHeader header = 1; string period = 2; } message AllSatellitesPeriodSummaryResponse { PayoutInfo payout_info = 1; } message SatelliteSummaryRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message SatelliteSummaryResponse { PayoutInfo payout_info = 1; } message SatellitePeriodSummaryRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; string period = 3; } message SatellitePeriodSummaryResponse { PayoutInfo payout_info = 1; } message EarnedPerSatelliteRequest { RequestHeader header = 1; } message EarnedPerSatelliteResponse { repeated EarnedSatellite earned_satellite = 1; } message SatellitePaystubRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; } message SatellitePaystubResponse { Paystub paystub = 1; } message PeriodPaystubRequest { RequestHeader header = 1; string period = 2; } message PeriodPaystubResponse { Paystub paystub = 1; } message SatellitePeriodPaystubRequest { RequestHeader header = 1; bytes satellite_id = 2 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false]; string period = 3; } message SatellitePeriodPaystubResponse { Paystub paystub = 1; }