1syntax = "proto3";
2
3package test;
4
5import "lint.proto";
6import "shared.proto";
7
8message ValidRequest {
9  gitaly.Repository destination = 1 [(gitaly.target_repository)=true];
10}
11
12message ValidRequestWithoutRepo {
13}
14
15message ValidStorageRequest {
16  string storage_name = 1 [(gitaly.storage)=true];
17}
18
19message ValidResponse{}
20
21message ValidNestedRequest{
22  ValidRequest inner_message = 1;
23}
24
25message ValidStorageNestedRequest{
26  ValidStorageRequest inner_message = 1;
27}
28
29message ValidNestedSharedRequest {
30  gitaly.ObjectPool nested_target_repo = 1 [(gitaly.target_repository)=true];
31}
32
33message ValidInnerNestedRequest {
34  message Header {
35    gitaly.Repository destination = 1 [(gitaly.target_repository)=true];
36  }
37
38  Header header = 1;
39}
40
41message ValidStorageInnerNestedRequest {
42  message Header {
43    string storage_name = 1 [(gitaly.storage) = true];
44  }
45
46  Header header = 1;
47}
48
49service InterceptedService {
50  // intercepted services do not need method operation and scope
51  // annotations.
52  option (gitaly.intercepted) = true;
53
54  rpc TestMethod(ValidRequest) returns (ValidResponse);
55}
56
57service ValidService {
58  rpc TestMethod(ValidRequest) returns (ValidResponse) {
59    option (gitaly.op_type) = {
60      op: ACCESSOR
61    };
62  }
63
64  rpc TestMethod2(ValidRequest) returns (ValidResponse) {
65    option (gitaly.op_type) = {
66      op: MUTATOR
67    };
68  }
69
70  rpc TestMethod3(ValidRequest) returns (ValidResponse) {
71    option (gitaly.op_type) = {
72      op: MUTATOR
73      scope_level: REPOSITORY // repo can be explicitly included
74    };
75  }
76
77  rpc TestMethod5(ValidNestedRequest) returns (ValidResponse) {
78    option (gitaly.op_type) = {
79      op: MUTATOR
80    };
81  }
82
83  rpc TestMethod6(ValidNestedSharedRequest) returns (ValidResponse) {
84    option (gitaly.op_type) = {
85      op: MUTATOR
86    };
87  }
88
89  rpc TestMethod7(ValidInnerNestedRequest) returns (ValidResponse) {
90    option (gitaly.op_type) = {
91      op: MUTATOR
92    };
93  }
94
95  rpc TestMethod8(ValidStorageRequest) returns (ValidResponse) {
96    option (gitaly.op_type) = {
97      op: MUTATOR
98      scope_level: STORAGE
99    };
100  }
101
102  rpc TestMethod9(ValidStorageNestedRequest) returns (ValidResponse) {
103    option (gitaly.op_type) = {
104      op: MUTATOR
105      scope_level: STORAGE
106    };
107  }
108}
109