1// Copyright (C) 2019 Storj Labs, Inc.
2// See LICENSE for copying information.
3
4syntax = "proto3";
5option go_package = "storj.io/common/pb";
6
7package node;
8
9import "gogo.proto";
10import "google/protobuf/timestamp.proto";
11
12// Node represents a node in the overlay network.
13// Node is info for a updating a single storagenode, used in the Update rpc calls.
14message Node {
15    bytes id = 1 [(gogoproto.customtype) = "NodeID", (gogoproto.nullable) = false];
16    NodeAddress address = 2;
17    reserved 3 to 13;
18    string deprecated_last_ip = 14 [deprecated=true];
19    reserved "type", "restrictions", "reputation", "metadata", "latency_list", "audit_success", "is_up", "update_latency", "update_audit_success", "update_uptime", "version";
20}
21
22// NodeType is an enum of possible node types.
23enum NodeType {
24    INVALID = 0;
25    SATELLITE = 1;
26    STORAGE = 2;
27    UPLINK = 3;
28    BOOTSTRAP = 4 [deprecated=true];
29}
30
31// NodeAddress contains the information needed to communicate with a node on the network.
32message NodeAddress {
33    NodeTransport transport = 1;
34    string address = 2;
35}
36
37// NodeTransport is an enum of possible transports for the overlay network.
38enum NodeTransport {
39    TCP_TLS_GRPC = 0;
40}
41
42// NodeOperator contains info about the storage node operator.
43message NodeOperator {
44    string email = 1;
45    string wallet = 2;
46    repeated string wallet_features = 3;
47}
48
49// NodeCapacity contains all relevant data about a nodes ability to store data.
50message NodeCapacity {
51    int64 free_bandwidth = 1 [deprecated=true];
52    int64 free_disk = 2;
53}
54
55// Deprecated: use NodeOperator instead.
56message NodeMetadata {
57    string email = 1;
58    string wallet = 2;
59}
60
61// Deprecated: use NodeCapacity instead.
62message NodeRestrictions {
63    int64 free_bandwidth = 1;
64    int64 free_disk = 2;
65}
66
67// NodeVersion contains version information about a node.
68message NodeVersion {
69    string version = 1; // must be semver formatted
70    string commit_hash = 2;
71    google.protobuf.Timestamp timestamp = 3 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
72    bool release = 4;
73}
74