Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(protocol): add berty protocol proto #1385

Merged
merged 6 commits into from
Sep 27, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
231 changes: 231 additions & 0 deletions api/bertyprotocol.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
syntax = "proto3";

option go_package = "berty.tech/go/pkg/bertyprotocol";

import "google/protobuf/descriptor.proto";

// type Client struct

// c, err := ClientNew(&Config{})

service ClientManager {
rpc CurrentDeviceExportData (CurrentDeviceExportDataRequest) returns (CurrentDeviceExportDataReply);
rpc CurrentDeviceGetConfiguration (CurrentDeviceGetConfigurationRequest) returns (CurrentDeviceGetConfigurationReply);
}

service AccountManager {
rpc AccountGetConfiguration (AccountGetConfigurationRequest) returns (AccountGetConfigurationReply);
rpc AccountGetInformation (AccountGetInformationRequest) returns (AccountGetInformationReply);
rpc AccountLinkNewDevice (AccountLinkNewDeviceRequest) returns (AccountLinkNewDeviceReply);
rpc AccountDisableIncomingContactRequest (AccountDisableIncomingContactRequestRequest) returns (AccountDisableIncomingContactRequestReply);
rpc AccountEnableIncomingContactRequest (AccountEnableIncomingContactRequestRequest) returns (AccountEnableIncomingContactRequestReply);
rpc AccountResetIncomingContactRequestLink (AccountResetIncomingContactRequestLinkRequest) returns (AccountResetIncomingContactRequestLinkReply);
}

service EventManager {
rpc EventSubscribe (EventSubscribeRequest) returns (stream EventStream);
}

service ContactRequestManager {
rpc ContactRequestAccept (ContactRequestAcceptRequest) returns (ContactRequestAcceptReply);
rpc ContactRequestDiscard (ContactRequestDiscardRequest) returns (ContactRequestDiscardReply);
rpc ContactRequestListIncoming (ContactRequestListIncomingRequest) returns (stream ContactRequestListIncomingReply);
rpc ContactRequestListOutgoing (ContactRequestListOutgoingRequest) returns (stream ContactRequestListOutgoingReply);
rpc ContactRequestSend (ContactRequestSendRequest) returns (ContactRequestSendReply);
}

service ContactManager {
rpc ContactGet (ContactGetRequest) returns (ContactGetReply);
rpc ContactList (ContactListRequest) returns (stream ContactListReply);
rpc ContactRemove (ContactRemoveRequest) returns (ContactRemoveReply);
}

service StreamManager {
rpc StreamManagerRequestToContact (StreamManagerRequestToContactRequest) returns (StreamManagerRequestToContactReply);
rpc StreamManagerAccept (stream StreamManagerAcceptRequest) returns (stream StreamManagerAcceptReply);
}

// TODO: check comment below
// A Group is a set of Devices, which can be between a user own Devices or two or more individuals.
// All communication between devices except ContactRequests goes through a Group

service GroupManager {
rpc GroupCreate (GroupCreateRequest) returns (GroupCreateReply);
rpc GroupGenerateInviteLink (GroupGenerateInviteLinkRequest) returns (GroupGenerateInviteLinkReply);
rpc GroupLeave (GroupLeaveRequest) returns (GroupLeaveReply);
rpc GroupList (GroupListRequest) returns (stream GroupListReply);
rpc GroupMessageCreate (GroupMessageCreateRequest) returns (GroupMessageCreateReply);
rpc GroupMessageList (GroupMessageListRequest) returns (stream GroupMessageListReply);

// GroupPubSubTopic uses pub sub to send volatile updates to other group members
rpc GroupPubSubTopicInit (stream GroupPubSubTopicInitRequest) returns (GroupPubSubTopicInitReply);
rpc GroupPubSubTopicSubscribe (GroupPubSubTopicSubscribeRequest) returns (stream GroupPubSubTopicSubscribeReply);
}

service GroupInvitationManager {
rpc GroupInvitationAccept (GroupInvitationAcceptRequest) returns (GroupInvitationAcceptReply);
rpc GroupInvitationCreate (GroupInvitationCreateRequest) returns (GroupInvitationCreateReply);
rpc GroupInvitationDiscard (GroupInvitationDiscardRequest) returns (GroupInvitationDiscardReply);
rpc GroupInvitationList (GroupInvitationListRequest) returns (stream GroupInvitationListReply);
}

message SigChainEntry {

}

message SigChain {
repeated SigChainEntry entries = 1;
}

message Contact {
enum ContactStatus {
Unknown = 0;
Myself = 1;
Contact = 2;
Trusted = 3;
Blocked = 4;
RequestIn = 5;
RequestOut = 6;
}

// AccountID = sig_chain.entries[0].pub_key
SigChain sig_chain = 1;
bytes metadata = 2; // Display name, profile picture etc.
bytes rendezvous_point_seed = 3;
bytes shared_secret = 4;
ContactStatus contact_status = 5;
}

moul marked this conversation as resolved.
Show resolved Hide resolved
message AccountConfig {
bool rendezvous_point_enabled = 1;
}

message DeviceConfig {
// ... net config
}

message Device {
bytes device_pub_key = 1;
bytes account_pub_key = 2;
}

message EventSubscribeRequest {}
message EventStream {}

// Account

message CurrentDeviceExportDataRequest {}
message CurrentDeviceExportDataReply {}

message AccountGetInformationRequest {}
message AccountGetInformationReply {
// account information
}

message CurrentDeviceGetConfigurationRequest {}
message CurrentDeviceGetConfigurationReply {}

message AccountGetConfigurationRequest {}
message AccountGetConfigurationReply {}

message AccountLinkNewDeviceRequest {}
message AccountLinkNewDeviceReply {}


// Account Public Contact Request

message AccountDisableIncomingContactRequestRequest {}
message AccountDisableIncomingContactRequestReply {}

message AccountEnableIncomingContactRequestRequest {}
message AccountEnableIncomingContactRequestReply {}

message AccountResetIncomingContactRequestLinkRequest {}
message AccountResetIncomingContactRequestLinkReply {}


// Contact Request

message ContactRequestAcceptRequest {}
message ContactRequestAcceptReply {}

message ContactRequestDiscardRequest {}
message ContactRequestDiscardReply {}

message ContactRequestListIncomingRequest {};
message ContactRequestListIncomingReply {};

message ContactRequestListOutgoingRequest {};
message ContactRequestListOutgoingReply {};

message ContactRequestSendRequest {};
message ContactRequestSendReply {};


// Contact

message ContactGetRequest {}
message ContactGetReply {}

message StreamManagerRequestToContactRequest {}
message StreamManagerRequestToContactReply {}

message ContactRemoveRequest {}
message ContactRemoveReply {}

message ContactListRequest {};
message ContactListReply {};


// Device

message StreamManagerAcceptRequest {}
message StreamManagerAcceptReply {}


// Group

message GroupCreateRequest {};
message GroupCreateReply {};

message GroupGenerateInviteLinkRequest {};
message GroupGenerateInviteLinkReply {};

message GroupLeaveRequest {};
message GroupLeaveReply {};

message GroupListRequest {};
message GroupListReply {};


// Group Message

message GroupMessageCreateRequest {};
message GroupMessageCreateReply {};

message GroupMessageListRequest {};
message GroupMessageListReply {};


// Group Request

message GroupInvitationAcceptRequest {};
message GroupInvitationAcceptReply {};

message GroupInvitationCreateRequest {};
message GroupInvitationCreateReply {};

message GroupInvitationDiscardRequest {};
message GroupInvitationDiscardReply {};

message GroupInvitationListRequest {};
message GroupInvitationListReply {};

message GroupPubSubTopicInitRequest {};
message GroupPubSubTopicInitReply {};

message GroupBroadcastSendRequest {};
message GroupBroadcastSendReply {};

message GroupPubSubTopicSubscribeRequest {};
message GroupPubSubTopicSubscribeReply {};
2 changes: 1 addition & 1 deletion go/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ generate: gen.sum
gen.sum: $(PROTOS_SRC) Makefile
md5sum -c $@ || ( \
set -e; \
go mod vendor; \
GO111MODULE=on go mod vendor; \
docker run \
--user=`id -u` \
--volume="$(PWD)/..:/go/src/berty.tech" \
Expand Down
1 change: 1 addition & 0 deletions go/gen.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
ce71d433e26b7f98222d8fa7705c5aee ../api/baz.proto
bfe896b442a61830b13cbf2f41c54440 ../api/bertyprotocol.proto
af88d1e57ab838dd3e1883667e8eb536 ../api/internal/bar.proto
943ccf5086a2cc88f02b603d04f5506d ../api/internal/foo.proto
1 change: 1 addition & 0 deletions go/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ require (
github.com/gogo/protobuf v1.3.0
github.com/golang/protobuf v1.3.2
github.com/peterbourgon/ff v1.6.0
google.golang.org/grpc v1.24.0
)
24 changes: 24 additions & 0 deletions go/go.sum
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/gogo/protobuf v1.3.0 h1:G8O7TerXerS4F6sx9OV7/nRfJdnXgHZu/S/7F2SN+UE=
github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/peterbourgon/ff v1.6.0 h1:DNnSOwtqmHfQ/yLgdOvtN4eFzP4ps+IjNhUEW9/ZkIg=
github.com/peterbourgon/ff v1.6.0/go.mod h1:8rO4i98n/oYmyP28qiK6V4jGB85nMNVr+qwSErTwFrs=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s=
google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=