meshtrade 1.0.1__py3-none-any.whl → 1.29.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. meshtrade/common/__init__.py +2 -4
  2. meshtrade/common/config.py +3 -4
  3. meshtrade/common/grpc_client.py +140 -0
  4. meshtrade/common/service_options.py +46 -0
  5. meshtrade/compliance/client/v1/__init__.py +0 -2
  6. meshtrade/compliance/client/v1/client_pb2.py +15 -4
  7. meshtrade/compliance/client/v1/client_pb2.pyi +1 -0
  8. meshtrade/compliance/client/v1/company_pb2.py +25 -8
  9. meshtrade/compliance/client/v1/company_pb2.pyi +1 -0
  10. meshtrade/compliance/client/v1/company_representative_pb2.py +9 -4
  11. meshtrade/compliance/client/v1/company_representative_pb2.pyi +1 -0
  12. meshtrade/compliance/client/v1/company_representative_role_pb2.py +2 -2
  13. meshtrade/compliance/client/v1/fund_pb2.py +13 -4
  14. meshtrade/compliance/client/v1/fund_pb2.pyi +1 -0
  15. meshtrade/compliance/client/v1/identification_document_type_pb2.py +2 -2
  16. meshtrade/compliance/client/v1/industry_classification_pb2.py +2 -2
  17. meshtrade/compliance/client/v1/natural_person_connection_type_pb2.py +2 -2
  18. meshtrade/compliance/client/v1/natural_person_pb2.py +19 -4
  19. meshtrade/compliance/client/v1/natural_person_pb2.pyi +1 -0
  20. meshtrade/compliance/client/v1/pep_status_pb2.py +2 -2
  21. meshtrade/compliance/client/v1/service_meshpy.py +2 -1
  22. meshtrade/compliance/client/v1/service_pb2.py +21 -17
  23. meshtrade/compliance/client/v1/service_pb2.pyi +2 -2
  24. meshtrade/compliance/client/v1/source_of_income_and_wealth_pb2.py +2 -2
  25. meshtrade/compliance/client/v1/tax_residency_pb2.py +9 -4
  26. meshtrade/compliance/client/v1/tax_residency_pb2.pyi +1 -0
  27. meshtrade/compliance/client/v1/trust_pb2.py +13 -4
  28. meshtrade/compliance/client/v1/trust_pb2.pyi +1 -0
  29. meshtrade/compliance/client/v1/verification_status_pb2.py +2 -2
  30. meshtrade/iam/api_user/v1/__init__.py +34 -26
  31. meshtrade/iam/api_user/v1/api_credentials_pb2.py +5 -5
  32. meshtrade/iam/api_user/v1/api_user_pb2.py +13 -9
  33. meshtrade/iam/api_user/v1/api_user_pb2.pyi +2 -4
  34. meshtrade/iam/api_user/v1/api_user_state_machine.py +104 -0
  35. meshtrade/iam/api_user/v1/service_meshpy.py +96 -61
  36. meshtrade/iam/api_user/v1/service_pb2.py +61 -40
  37. meshtrade/iam/api_user/v1/service_pb2.pyi +26 -11
  38. meshtrade/iam/api_user/v1/service_pb2_grpc.py +179 -135
  39. meshtrade/iam/group/v1/__init__.py +4 -2
  40. meshtrade/iam/group/v1/group_pb2.py +13 -4
  41. meshtrade/iam/group/v1/group_pb2.pyi +9 -2
  42. meshtrade/iam/group/v1/service_meshpy.py +41 -6
  43. meshtrade/iam/group/v1/service_pb2.py +47 -20
  44. meshtrade/iam/group/v1/service_pb2.pyi +46 -13
  45. meshtrade/iam/group/v1/service_pb2_grpc.py +151 -16
  46. meshtrade/iam/role/v1/__init__.py +17 -4
  47. meshtrade/iam/role/v1/role.py +162 -11
  48. meshtrade/iam/role/v1/role_pb2.py +4 -7
  49. meshtrade/iam/role/v1/role_pb2.pyi +53 -23
  50. meshtrade/iam/user/v1/__init__.py +22 -4
  51. meshtrade/iam/user/v1/service_meshpy.py +129 -7
  52. meshtrade/iam/user/v1/service_pb2.py +66 -16
  53. meshtrade/iam/user/v1/service_pb2.pyi +81 -9
  54. meshtrade/iam/user/v1/service_pb2_grpc.py +385 -14
  55. meshtrade/iam/user/v1/user_pb2.py +13 -4
  56. meshtrade/iam/user/v1/user_pb2.pyi +7 -2
  57. meshtrade/ledger/transaction/v1/__init__.py +25 -1
  58. meshtrade/ledger/transaction/v1/service_meshpy.py +176 -0
  59. meshtrade/ledger/transaction/v1/service_pb2.py +56 -0
  60. meshtrade/ledger/transaction/v1/service_pb2.pyi +32 -0
  61. meshtrade/ledger/transaction/v1/service_pb2_grpc.py +131 -0
  62. meshtrade/ledger/transaction/v1/transaction_action_pb2.py +2 -2
  63. meshtrade/ledger/transaction/v1/transaction_state_machine.py +75 -0
  64. meshtrade/ledger/transaction/v1/transaction_state_pb2.py +2 -2
  65. meshtrade/{reporting/income_report → market_data/price}/v1/__init__.py +11 -20
  66. meshtrade/market_data/price/v1/price_pb2.py +40 -0
  67. meshtrade/market_data/price/v1/price_pb2.pyi +23 -0
  68. meshtrade/market_data/price/v1/service_meshpy.py +152 -0
  69. meshtrade/market_data/price/v1/service_pb2.py +49 -0
  70. meshtrade/market_data/price/v1/service_pb2.pyi +18 -0
  71. meshtrade/market_data/price/v1/service_pb2_grpc.py +84 -0
  72. meshtrade/option/method_options/v1/__init__.py +41 -0
  73. meshtrade/option/method_options/v1/method_options_pb2.py +43 -0
  74. meshtrade/option/method_options/v1/method_options_pb2.pyi +40 -0
  75. meshtrade/reporting/account_report/v1/__init__.py +66 -0
  76. meshtrade/reporting/account_report/v1/account_report_pb2.py +46 -0
  77. meshtrade/reporting/account_report/v1/account_report_pb2.pyi +49 -0
  78. meshtrade/reporting/{income_report → account_report}/v1/disclaimer_pb2.py +7 -7
  79. meshtrade/reporting/account_report/v1/fee_entry_pb2.py +39 -0
  80. meshtrade/reporting/account_report/v1/fee_entry_pb2.pyi +26 -0
  81. meshtrade/reporting/account_report/v1/fee_entry_pb2_grpc.py +4 -0
  82. meshtrade/reporting/account_report/v1/income_entry.py +35 -0
  83. meshtrade/reporting/account_report/v1/income_entry_pb2.py +42 -0
  84. meshtrade/reporting/{income_report/v1/entry_pb2.pyi → account_report/v1/income_entry_pb2.pyi} +18 -10
  85. meshtrade/reporting/account_report/v1/income_entry_pb2_grpc.py +4 -0
  86. meshtrade/reporting/{income_report → account_report}/v1/service_meshpy.py +37 -36
  87. meshtrade/reporting/account_report/v1/service_pb2.py +72 -0
  88. meshtrade/reporting/account_report/v1/service_pb2.pyi +43 -0
  89. meshtrade/reporting/account_report/v1/service_pb2_grpc.py +161 -0
  90. meshtrade/reporting/account_report/v1/trading_statement_entry_pb2.py +39 -0
  91. meshtrade/reporting/account_report/v1/trading_statement_entry_pb2.pyi +30 -0
  92. meshtrade/reporting/account_report/v1/trading_statement_entry_pb2_grpc.py +4 -0
  93. meshtrade/studio/instrument/v1/__init__.py +43 -0
  94. meshtrade/studio/instrument/v1/instrument_pb2.py +45 -0
  95. meshtrade/studio/instrument/v1/instrument_pb2.pyi +20 -0
  96. meshtrade/studio/instrument/v1/instrument_pb2_grpc.py +4 -0
  97. meshtrade/studio/instrument/v1/instrument_type_pb2.py +37 -0
  98. meshtrade/studio/instrument/v1/instrument_type_pb2.pyi +64 -0
  99. meshtrade/studio/instrument/v1/instrument_type_pb2_grpc.py +4 -0
  100. meshtrade/studio/instrument/v1/unit_pb2.py +37 -0
  101. meshtrade/studio/instrument/v1/unit_pb2.pyi +46 -0
  102. meshtrade/studio/instrument/v1/unit_pb2_grpc.py +4 -0
  103. meshtrade/trading/limit_order/v1/__init__.py +22 -4
  104. meshtrade/trading/limit_order/v1/limit_order_pb2.py +24 -4
  105. meshtrade/trading/limit_order/v1/limit_order_pb2.pyi +55 -5
  106. meshtrade/trading/limit_order/v1/service_meshpy.py +113 -2
  107. meshtrade/trading/limit_order/v1/service_pb2.py +49 -9
  108. meshtrade/trading/limit_order/v1/service_pb2.pyi +67 -7
  109. meshtrade/trading/limit_order/v1/service_pb2_grpc.py +321 -4
  110. meshtrade/trading/market_order/v1/__init__.py +0 -2
  111. meshtrade/trading/market_order/v1/market_order_pb2.py +2 -2
  112. meshtrade/trading/market_order/v1/service_meshpy.py +3 -2
  113. meshtrade/trading/market_order/v1/service_pb2.py +8 -9
  114. meshtrade/trading/market_order/v1/service_pb2.pyi +1 -2
  115. meshtrade/type/v1/__init__.py +82 -12
  116. meshtrade/type/v1/address_pb2.py +2 -2
  117. meshtrade/type/v1/amount.py +429 -5
  118. meshtrade/type/v1/amount_pb2.py +2 -2
  119. meshtrade/type/v1/contact_details_pb2.py +2 -2
  120. meshtrade/type/v1/date_pb2.py +2 -2
  121. meshtrade/type/v1/decimal_built_in_conversions.py +8 -3
  122. meshtrade/type/v1/decimal_operations.py +354 -0
  123. meshtrade/type/v1/decimal_pb2.py +2 -2
  124. meshtrade/type/v1/ledger.py +76 -1
  125. meshtrade/type/v1/ledger_pb2.py +2 -2
  126. meshtrade/type/v1/sorting_pb2.py +2 -2
  127. meshtrade/type/v1/time_of_day_pb2.py +2 -2
  128. meshtrade/type/v1/token.py +144 -0
  129. meshtrade/type/v1/token_pb2.py +2 -2
  130. meshtrade/wallet/account/v1/__init__.py +21 -3
  131. meshtrade/wallet/account/v1/account_pb2.py +28 -4
  132. meshtrade/wallet/account/v1/account_pb2.pyi +57 -3
  133. meshtrade/wallet/account/v1/service_meshpy.py +72 -1
  134. meshtrade/wallet/account/v1/service_pb2.py +67 -23
  135. meshtrade/wallet/account/v1/service_pb2.pyi +81 -21
  136. meshtrade/wallet/account/v1/service_pb2_grpc.py +242 -8
  137. {meshtrade-1.0.1.dist-info → meshtrade-1.29.0.dist-info}/METADATA +1 -1
  138. meshtrade-1.29.0.dist-info/RECORD +217 -0
  139. meshtrade/compliance/client/v1/service_options_meshpy.py +0 -65
  140. meshtrade/iam/api_user/v1/service.py +0 -58
  141. meshtrade/iam/api_user/v1/service_options_meshpy.py +0 -65
  142. meshtrade/iam/group/v1/service_options_meshpy.py +0 -65
  143. meshtrade/iam/user/v1/service_options_meshpy.py +0 -65
  144. meshtrade/option/v1/method_type_pb2.py +0 -38
  145. meshtrade/option/v1/method_type_pb2.pyi +0 -17
  146. meshtrade/reporting/income_report/v1/entry_pb2.py +0 -42
  147. meshtrade/reporting/income_report/v1/income_report_pb2.py +0 -44
  148. meshtrade/reporting/income_report/v1/income_report_pb2.pyi +0 -42
  149. meshtrade/reporting/income_report/v1/service_options_meshpy.py +0 -65
  150. meshtrade/reporting/income_report/v1/service_pb2.py +0 -58
  151. meshtrade/reporting/income_report/v1/service_pb2.pyi +0 -37
  152. meshtrade/reporting/income_report/v1/service_pb2_grpc.py +0 -170
  153. meshtrade/trading/limit_order/v1/service_options_meshpy.py +0 -65
  154. meshtrade/trading/market_order/v1/service_options_meshpy.py +0 -65
  155. meshtrade/wallet/account/v1/service_options_meshpy.py +0 -65
  156. meshtrade-1.0.1.dist-info/RECORD +0 -191
  157. /meshtrade/{option/v1/method_type_pb2_grpc.py → market_data/price/v1/price_pb2_grpc.py} +0 -0
  158. /meshtrade/{reporting/income_report/v1/disclaimer_pb2_grpc.py → option/method_options/v1/method_options_pb2_grpc.py} +0 -0
  159. /meshtrade/reporting/{income_report/v1/entry_pb2_grpc.py → account_report/v1/account_report_pb2_grpc.py} +0 -0
  160. /meshtrade/reporting/{income_report → account_report}/v1/disclaimer_pb2.pyi +0 -0
  161. /meshtrade/reporting/{income_report/v1/income_report_pb2_grpc.py → account_report/v1/disclaimer_pb2_grpc.py} +0 -0
  162. {meshtrade-1.0.1.dist-info → meshtrade-1.29.0.dist-info}/WHEEL +0 -0
  163. {meshtrade-1.0.1.dist-info → meshtrade-1.29.0.dist-info}/top_level.txt +0 -0
@@ -9,6 +9,7 @@ the service interface with resource management capabilities, providing authentic
9
9
  timeouts, and proper connection handling.
10
10
  """
11
11
 
12
+ from collections.abc import Iterator
12
13
  from datetime import timedelta
13
14
  from typing import Optional
14
15
 
@@ -16,13 +17,15 @@ from meshtrade.common import BaseGRPCClient
16
17
  from meshtrade.iam.api_user.v1.api_credentials import find_credentials
17
18
 
18
19
  from .group_pb2 import Group
19
- from .service_options_meshpy import ServiceOptions
20
+ from meshtrade.common.service_options import ServiceOptions
20
21
  from .service_pb2 import (
22
+ CreateGroupRequest,
21
23
  GetGroupRequest,
22
24
  ListGroupsRequest,
23
25
  ListGroupsResponse,
24
26
  SearchGroupsRequest,
25
27
  SearchGroupsResponse,
28
+ UpdateGroupRequest,
26
29
  )
27
30
  from .service_pb2_grpc import GroupServiceStub
28
31
 
@@ -133,21 +136,37 @@ class GroupService(BaseGRPCClient):
133
136
  tls=options.tls,
134
137
  )
135
138
 
136
- def get_group(self, request: GetGroupRequest, timeout: Optional[timedelta] = None) -> Group:
137
- """GetGroup method.
139
+ def create_group(self, request: CreateGroupRequest, timeout: Optional[timedelta] = None) -> Group:
140
+ """CreateGroup method.
138
141
 
139
142
  Args:
140
- request: The GetGroup request message
143
+ request: The CreateGroup request message
141
144
  timeout: Optional timeout override for this call
142
145
 
143
146
  Returns:
144
- The GetGroup response message
147
+ The CreateGroup response message
145
148
 
146
149
  Raises:
147
150
  grpc.RpcError: If the gRPC call fails
148
151
  ValueError: If authentication credentials are missing
149
152
  """
150
- return self._execute_method("GetGroup", request, timeout)
153
+ return self._execute_method("CreateGroup", request, timeout)
154
+
155
+ def update_group(self, request: UpdateGroupRequest, timeout: Optional[timedelta] = None) -> Group:
156
+ """UpdateGroup method.
157
+
158
+ Args:
159
+ request: The UpdateGroup request message
160
+ timeout: Optional timeout override for this call
161
+
162
+ Returns:
163
+ The UpdateGroup response message
164
+
165
+ Raises:
166
+ grpc.RpcError: If the gRPC call fails
167
+ ValueError: If authentication credentials are missing
168
+ """
169
+ return self._execute_method("UpdateGroup", request, timeout)
151
170
 
152
171
  def list_groups(self, request: ListGroupsRequest, timeout: Optional[timedelta] = None) -> ListGroupsResponse:
153
172
  """ListGroups method.
@@ -181,6 +200,22 @@ class GroupService(BaseGRPCClient):
181
200
  """
182
201
  return self._execute_method("SearchGroups", request, timeout)
183
202
 
203
+ def get_group(self, request: GetGroupRequest, timeout: Optional[timedelta] = None) -> Group:
204
+ """GetGroup method.
205
+
206
+ Args:
207
+ request: The GetGroup request message
208
+ timeout: Optional timeout override for this call
209
+
210
+ Returns:
211
+ The GetGroup response message
212
+
213
+ Raises:
214
+ grpc.RpcError: If the gRPC call fails
215
+ ValueError: If authentication credentials are missing
216
+ """
217
+ return self._execute_method("GetGroup", request, timeout)
218
+
184
219
 
185
220
  # Create aliases to match expected exports
186
221
  GroupServiceGRPCClient = GroupService
@@ -22,35 +22,62 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
25
26
  from meshtrade.iam.group.v1 import group_pb2 as meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2
26
- from meshtrade.iam.role.v1 import role_pb2 as meshtrade_dot_iam_dot_role_dot_v1_dot_role__pb2
27
- from meshtrade.option.v1 import method_type_pb2 as meshtrade_dot_option_dot_v1_dot_method__type__pb2
27
+ from meshtrade.option.method_options.v1 import method_options_pb2 as meshtrade_dot_option_dot_method__options_dot_v1_dot_method__options__pb2
28
+ from meshtrade.type.v1 import sorting_pb2 as meshtrade_dot_type_dot_v1_dot_sorting__pb2
28
29
 
29
30
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtrade/iam/group/v1/service.proto\x12\x16meshtrade.iam.group.v1\x1a\"meshtrade/iam/group/v1/group.proto\x1a meshtrade/iam/role/v1/role.proto\x1a%meshtrade/option/v1/method_type.proto\"%\n\x0fGetGroupRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\x13\n\x11ListGroupsRequest\"K\n\x12ListGroupsResponse\x12\x35\n\x06groups\x18\x01 \x03(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupR\x06groups\")\n\x13SearchGroupsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"M\n\x14SearchGroupsResponse\x12\x35\n\x06groups\x18\x01 \x03(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupR\x06groups2\xee\x02\n\x0cGroupService\x12\x66\n\x08GetGroup\x12\'.meshtrade.iam.group.v1.GetGroupRequest\x1a\x1d.meshtrade.iam.group.v1.Group\"\x12\xa0\xb5\x18\x01\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\x12w\n\nListGroups\x12).meshtrade.iam.group.v1.ListGroupsRequest\x1a*.meshtrade.iam.group.v1.ListGroupsResponse\"\x12\xa0\xb5\x18\x01\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\x12}\n\x0cSearchGroups\x12+.meshtrade.iam.group.v1.SearchGroupsRequest\x1a,.meshtrade.iam.group.v1.SearchGroupsResponse\"\x12\xa0\xb5\x18\x01\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\x42Q\n\x1d\x63o.meshtrade.api.iam.group.v1Z0github.com/meshtrade/api/go/iam/group/v1;groupv1b\x06proto3')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtrade/iam/group/v1/service.proto\x12\x16meshtrade.iam.group.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\"meshtrade/iam/group/v1/group.proto\x1a\x37meshtrade/option/method_options/v1/method_options.proto\x1a\x1fmeshtrade/type/v1/sorting.proto\"Q\n\x12\x43reateGroupRequest\x12;\n\x05group\x18\x01 \x01(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupB\x06\xbaH\x03\xc8\x01\x01R\x05group\"Q\n\x12UpdateGroupRequest\x12;\n\x05group\x18\x01 \x01(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupB\x06\xbaH\x03\xc8\x01\x01R\x05group\"\xc3\x02\n\x11ListGroupsRequest\x12K\n\x07sorting\x18\x01 \x01(\x0b\x32\x31.meshtrade.iam.group.v1.ListGroupsRequest.SortingR\x07sorting\x1a\xe0\x01\n\x07Sorting\x12\x9d\x01\n\x05\x66ield\x18\x01 \x01(\tB\x86\x01\xbaH\x82\x01r\x16R\x00R\x04nameR\x0c\x64isplay_name\xba\x01g\n\x0b\x66ield.valid\x12\x32\x66ield must be one of: name, display_name, or empty\x1a$this in [\'\', \'name\', \'display_name\']R\x05\x66ield\x12\x35\n\x05order\x18\x02 \x01(\x0e\x32\x1f.meshtrade.type.v1.SortingOrderR\x05order\"K\n\x12ListGroupsResponse\x12\x35\n\x06groups\x18\x01 \x03(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupR\x06groups\"\xf0\x04\n\x13SearchGroupsRequest\x12\x93\x01\n\x0c\x64isplay_name\x18\x01 \x01(\tBp\xbaHmr\x03\x18\xff\x01\xba\x01\x65\n\x17\x64isplay_name.max_length\x12\x37\x64isplay_name search term must not exceed 255 characters\x1a\x11size(this) <= 255R\x0b\x64isplayName\x12\x90\x01\n\x0b\x64\x65scription\x18\x02 \x01(\tBn\xbaHkr\x03\x18\xff\x01\xba\x01\x63\n\x16\x64\x65scription.max_length\x12\x36\x64\x65scription search term must not exceed 255 characters\x1a\x11size(this) <= 255R\x0b\x64\x65scription\x12M\n\x07sorting\x18\x03 \x01(\x0b\x32\x33.meshtrade.iam.group.v1.SearchGroupsRequest.SortingR\x07sorting\x1a\xe0\x01\n\x07Sorting\x12\x9d\x01\n\x05\x66ield\x18\x01 \x01(\tB\x86\x01\xbaH\x82\x01r\x16R\x00R\x04nameR\x0c\x64isplay_name\xba\x01g\n\x0b\x66ield.valid\x12\x32\x66ield must be one of: name, display_name, or empty\x1a$this in [\'\', \'name\', \'display_name\']R\x05\x66ield\x12\x35\n\x05order\x18\x02 \x01(\x0e\x32\x1f.meshtrade.type.v1.SortingOrderR\x05order\"M\n\x14SearchGroupsResponse\x12\x35\n\x06groups\x18\x01 \x03(\x0b\x32\x1d.meshtrade.iam.group.v1.GroupR\x06groups\"\xf6\x02\n\x0fGetGroupRequest\x12\xe2\x02\n\x04name\x18\x01 \x01(\tB\xcd\x02\xbaH\xc9\x02r3\x10\x01\x32/^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\xba\x01W\n\rname.required\x12\x36name is required and must be in format groups/{ULIDv2}\x1a\x0esize(this) > 0\xba\x01\xb3\x01\n\x0bname.format\x12\x63name must be in format groups/{ULIDv2} where ulidv2 is exactly 26 uppercase alphanumeric characters\x1a?this.matches(\'^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\')\xc8\x01\x01R\x04name2\xe3\x04\n\x0cGroupService\x12l\n\x0b\x43reateGroup\x12*.meshtrade.iam.group.v1.CreateGroupRequest\x1a\x1d.meshtrade.iam.group.v1.Group\"\x12\xb2\xb5\x18\x0e\x08\x02\x10\x02\x1a\x08\xc0\x8d\xb7\x01\xc4\x8d\xb7\x01\x12l\n\x0bUpdateGroup\x12*.meshtrade.iam.group.v1.UpdateGroupRequest\x1a\x1d.meshtrade.iam.group.v1.Group\"\x12\xb2\xb5\x18\x0e\x08\x02\x10\x02\x1a\x08\xc0\x8d\xb7\x01\xc4\x8d\xb7\x01\x12\x7f\n\nListGroups\x12).meshtrade.iam.group.v1.ListGroupsRequest\x1a*.meshtrade.iam.group.v1.ListGroupsResponse\"\x1a\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc4\x8d\xb7\x01\xc5\x8d\xb7\x01\x12\x85\x01\n\x0cSearchGroups\x12+.meshtrade.iam.group.v1.SearchGroupsRequest\x1a,.meshtrade.iam.group.v1.SearchGroupsResponse\"\x1a\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc4\x8d\xb7\x01\xc5\x8d\xb7\x01\x12n\n\x08GetGroup\x12\'.meshtrade.iam.group.v1.GetGroupRequest\x1a\x1d.meshtrade.iam.group.v1.Group\"\x1a\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc4\x8d\xb7\x01\xc5\x8d\xb7\x01\x42R\n\x1d\x63o.meshtrade.api.iam.group.v1Z1github.com/meshtrade/api/go/iam/group/v1;group_v1b\x06proto3')
31
32
 
32
33
  _globals = globals()
33
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
34
35
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtrade.iam.group.v1.service_pb2', _globals)
35
36
  if not _descriptor._USE_C_DESCRIPTORS:
36
37
  _globals['DESCRIPTOR']._loaded_options = None
37
- _globals['DESCRIPTOR']._serialized_options = b'\n\035co.meshtrade.api.iam.group.v1Z0github.com/meshtrade/api/go/iam/group/v1;groupv1'
38
- _globals['_GROUPSERVICE'].methods_by_name['GetGroup']._loaded_options = None
39
- _globals['_GROUPSERVICE'].methods_by_name['GetGroup']._serialized_options = b'\240\265\030\001\252\265\030\n\n\010\300\215\267\001\301\215\267\001'
38
+ _globals['DESCRIPTOR']._serialized_options = b'\n\035co.meshtrade.api.iam.group.v1Z1github.com/meshtrade/api/go/iam/group/v1;group_v1'
39
+ _globals['_CREATEGROUPREQUEST'].fields_by_name['group']._loaded_options = None
40
+ _globals['_CREATEGROUPREQUEST'].fields_by_name['group']._serialized_options = b'\272H\003\310\001\001'
41
+ _globals['_UPDATEGROUPREQUEST'].fields_by_name['group']._loaded_options = None
42
+ _globals['_UPDATEGROUPREQUEST'].fields_by_name['group']._serialized_options = b'\272H\003\310\001\001'
43
+ _globals['_LISTGROUPSREQUEST_SORTING'].fields_by_name['field']._loaded_options = None
44
+ _globals['_LISTGROUPSREQUEST_SORTING'].fields_by_name['field']._serialized_options = b'\272H\202\001r\026R\000R\004nameR\014display_name\272\001g\n\013field.valid\0222field must be one of: name, display_name, or empty\032$this in [\'\', \'name\', \'display_name\']'
45
+ _globals['_SEARCHGROUPSREQUEST_SORTING'].fields_by_name['field']._loaded_options = None
46
+ _globals['_SEARCHGROUPSREQUEST_SORTING'].fields_by_name['field']._serialized_options = b'\272H\202\001r\026R\000R\004nameR\014display_name\272\001g\n\013field.valid\0222field must be one of: name, display_name, or empty\032$this in [\'\', \'name\', \'display_name\']'
47
+ _globals['_SEARCHGROUPSREQUEST'].fields_by_name['display_name']._loaded_options = None
48
+ _globals['_SEARCHGROUPSREQUEST'].fields_by_name['display_name']._serialized_options = b'\272Hmr\003\030\377\001\272\001e\n\027display_name.max_length\0227display_name search term must not exceed 255 characters\032\021size(this) <= 255'
49
+ _globals['_SEARCHGROUPSREQUEST'].fields_by_name['description']._loaded_options = None
50
+ _globals['_SEARCHGROUPSREQUEST'].fields_by_name['description']._serialized_options = b'\272Hkr\003\030\377\001\272\001c\n\026description.max_length\0226description search term must not exceed 255 characters\032\021size(this) <= 255'
51
+ _globals['_GETGROUPREQUEST'].fields_by_name['name']._loaded_options = None
52
+ _globals['_GETGROUPREQUEST'].fields_by_name['name']._serialized_options = b'\272H\311\002r3\020\0012/^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\272\001W\n\rname.required\0226name is required and must be in format groups/{ULIDv2}\032\016size(this) > 0\272\001\263\001\n\013name.format\022cname must be in format groups/{ULIDv2} where ulidv2 is exactly 26 uppercase alphanumeric characters\032?this.matches(\'^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\')\310\001\001'
53
+ _globals['_GROUPSERVICE'].methods_by_name['CreateGroup']._loaded_options = None
54
+ _globals['_GROUPSERVICE'].methods_by_name['CreateGroup']._serialized_options = b'\262\265\030\016\010\002\020\002\032\010\300\215\267\001\304\215\267\001'
55
+ _globals['_GROUPSERVICE'].methods_by_name['UpdateGroup']._loaded_options = None
56
+ _globals['_GROUPSERVICE'].methods_by_name['UpdateGroup']._serialized_options = b'\262\265\030\016\010\002\020\002\032\010\300\215\267\001\304\215\267\001'
40
57
  _globals['_GROUPSERVICE'].methods_by_name['ListGroups']._loaded_options = None
41
- _globals['_GROUPSERVICE'].methods_by_name['ListGroups']._serialized_options = b'\240\265\030\001\252\265\030\n\n\010\300\215\267\001\301\215\267\001'
58
+ _globals['_GROUPSERVICE'].methods_by_name['ListGroups']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\304\215\267\001\305\215\267\001'
42
59
  _globals['_GROUPSERVICE'].methods_by_name['SearchGroups']._loaded_options = None
43
- _globals['_GROUPSERVICE'].methods_by_name['SearchGroups']._serialized_options = b'\240\265\030\001\252\265\030\n\n\010\300\215\267\001\301\215\267\001'
44
- _globals['_GETGROUPREQUEST']._serialized_start=173
45
- _globals['_GETGROUPREQUEST']._serialized_end=210
46
- _globals['_LISTGROUPSREQUEST']._serialized_start=212
47
- _globals['_LISTGROUPSREQUEST']._serialized_end=231
48
- _globals['_LISTGROUPSRESPONSE']._serialized_start=233
49
- _globals['_LISTGROUPSRESPONSE']._serialized_end=308
50
- _globals['_SEARCHGROUPSREQUEST']._serialized_start=310
51
- _globals['_SEARCHGROUPSREQUEST']._serialized_end=351
52
- _globals['_SEARCHGROUPSRESPONSE']._serialized_start=353
53
- _globals['_SEARCHGROUPSRESPONSE']._serialized_end=430
54
- _globals['_GROUPSERVICE']._serialized_start=433
55
- _globals['_GROUPSERVICE']._serialized_end=799
60
+ _globals['_GROUPSERVICE'].methods_by_name['SearchGroups']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\304\215\267\001\305\215\267\001'
61
+ _globals['_GROUPSERVICE'].methods_by_name['GetGroup']._loaded_options = None
62
+ _globals['_GROUPSERVICE'].methods_by_name['GetGroup']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\304\215\267\001\305\215\267\001'
63
+ _globals['_CREATEGROUPREQUEST']._serialized_start=219
64
+ _globals['_CREATEGROUPREQUEST']._serialized_end=300
65
+ _globals['_UPDATEGROUPREQUEST']._serialized_start=302
66
+ _globals['_UPDATEGROUPREQUEST']._serialized_end=383
67
+ _globals['_LISTGROUPSREQUEST']._serialized_start=386
68
+ _globals['_LISTGROUPSREQUEST']._serialized_end=709
69
+ _globals['_LISTGROUPSREQUEST_SORTING']._serialized_start=485
70
+ _globals['_LISTGROUPSREQUEST_SORTING']._serialized_end=709
71
+ _globals['_LISTGROUPSRESPONSE']._serialized_start=711
72
+ _globals['_LISTGROUPSRESPONSE']._serialized_end=786
73
+ _globals['_SEARCHGROUPSREQUEST']._serialized_start=789
74
+ _globals['_SEARCHGROUPSREQUEST']._serialized_end=1413
75
+ _globals['_SEARCHGROUPSREQUEST_SORTING']._serialized_start=485
76
+ _globals['_SEARCHGROUPSREQUEST_SORTING']._serialized_end=709
77
+ _globals['_SEARCHGROUPSRESPONSE']._serialized_start=1415
78
+ _globals['_SEARCHGROUPSRESPONSE']._serialized_end=1492
79
+ _globals['_GETGROUPREQUEST']._serialized_start=1495
80
+ _globals['_GETGROUPREQUEST']._serialized_end=1869
81
+ _globals['_GROUPSERVICE']._serialized_start=1872
82
+ _globals['_GROUPSERVICE']._serialized_end=2483
56
83
  # @@protoc_insertion_point(module_scope)
@@ -1,6 +1,7 @@
1
+ from buf.validate import validate_pb2 as _validate_pb2
1
2
  from meshtrade.iam.group.v1 import group_pb2 as _group_pb2
2
- from meshtrade.iam.role.v1 import role_pb2 as _role_pb2
3
- from meshtrade.option.v1 import method_type_pb2 as _method_type_pb2
3
+ from meshtrade.option.method_options.v1 import method_options_pb2 as _method_options_pb2
4
+ from meshtrade.type.v1 import sorting_pb2 as _sorting_pb2
4
5
  from google.protobuf.internal import containers as _containers
5
6
  from google.protobuf import descriptor as _descriptor
6
7
  from google.protobuf import message as _message
@@ -9,15 +10,30 @@ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
9
10
 
10
11
  DESCRIPTOR: _descriptor.FileDescriptor
11
12
 
12
- class GetGroupRequest(_message.Message):
13
- __slots__ = ("name",)
14
- NAME_FIELD_NUMBER: _ClassVar[int]
15
- name: str
16
- def __init__(self, name: _Optional[str] = ...) -> None: ...
13
+ class CreateGroupRequest(_message.Message):
14
+ __slots__ = ("group",)
15
+ GROUP_FIELD_NUMBER: _ClassVar[int]
16
+ group: _group_pb2.Group
17
+ def __init__(self, group: _Optional[_Union[_group_pb2.Group, _Mapping]] = ...) -> None: ...
18
+
19
+ class UpdateGroupRequest(_message.Message):
20
+ __slots__ = ("group",)
21
+ GROUP_FIELD_NUMBER: _ClassVar[int]
22
+ group: _group_pb2.Group
23
+ def __init__(self, group: _Optional[_Union[_group_pb2.Group, _Mapping]] = ...) -> None: ...
17
24
 
18
25
  class ListGroupsRequest(_message.Message):
19
- __slots__ = ()
20
- def __init__(self) -> None: ...
26
+ __slots__ = ("sorting",)
27
+ class Sorting(_message.Message):
28
+ __slots__ = ("field", "order")
29
+ FIELD_FIELD_NUMBER: _ClassVar[int]
30
+ ORDER_FIELD_NUMBER: _ClassVar[int]
31
+ field: str
32
+ order: _sorting_pb2.SortingOrder
33
+ def __init__(self, field: _Optional[str] = ..., order: _Optional[_Union[_sorting_pb2.SortingOrder, str]] = ...) -> None: ...
34
+ SORTING_FIELD_NUMBER: _ClassVar[int]
35
+ sorting: ListGroupsRequest.Sorting
36
+ def __init__(self, sorting: _Optional[_Union[ListGroupsRequest.Sorting, _Mapping]] = ...) -> None: ...
21
37
 
22
38
  class ListGroupsResponse(_message.Message):
23
39
  __slots__ = ("groups",)
@@ -26,13 +42,30 @@ class ListGroupsResponse(_message.Message):
26
42
  def __init__(self, groups: _Optional[_Iterable[_Union[_group_pb2.Group, _Mapping]]] = ...) -> None: ...
27
43
 
28
44
  class SearchGroupsRequest(_message.Message):
29
- __slots__ = ("name",)
30
- NAME_FIELD_NUMBER: _ClassVar[int]
31
- name: str
32
- def __init__(self, name: _Optional[str] = ...) -> None: ...
45
+ __slots__ = ("display_name", "description", "sorting")
46
+ class Sorting(_message.Message):
47
+ __slots__ = ("field", "order")
48
+ FIELD_FIELD_NUMBER: _ClassVar[int]
49
+ ORDER_FIELD_NUMBER: _ClassVar[int]
50
+ field: str
51
+ order: _sorting_pb2.SortingOrder
52
+ def __init__(self, field: _Optional[str] = ..., order: _Optional[_Union[_sorting_pb2.SortingOrder, str]] = ...) -> None: ...
53
+ DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
54
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
55
+ SORTING_FIELD_NUMBER: _ClassVar[int]
56
+ display_name: str
57
+ description: str
58
+ sorting: SearchGroupsRequest.Sorting
59
+ def __init__(self, display_name: _Optional[str] = ..., description: _Optional[str] = ..., sorting: _Optional[_Union[SearchGroupsRequest.Sorting, _Mapping]] = ...) -> None: ...
33
60
 
34
61
  class SearchGroupsResponse(_message.Message):
35
62
  __slots__ = ("groups",)
36
63
  GROUPS_FIELD_NUMBER: _ClassVar[int]
37
64
  groups: _containers.RepeatedCompositeFieldContainer[_group_pb2.Group]
38
65
  def __init__(self, groups: _Optional[_Iterable[_Union[_group_pb2.Group, _Mapping]]] = ...) -> None: ...
66
+
67
+ class GetGroupRequest(_message.Message):
68
+ __slots__ = ("name",)
69
+ NAME_FIELD_NUMBER: _ClassVar[int]
70
+ name: str
71
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
@@ -7,7 +7,17 @@ from meshtrade.iam.group.v1 import service_pb2 as meshtrade_dot_iam_dot_group_do
7
7
 
8
8
 
9
9
  class GroupServiceStub(object):
10
- """Missing associated documentation comment in .proto file."""
10
+ """
11
+ GroupService manages organizational group hierarchy and lifecycle operations.
12
+
13
+ Groups are the fundamental multi-tenancy units in Mesh that own resources,
14
+ define permission boundaries, and enable hierarchical access control.
15
+ Each group can own sub-groups, users, API users, and platform resources,
16
+ forming tree structures for inherited permissions and resource isolation.
17
+
18
+ All operations are scoped to the authenticated group's hierarchy and
19
+ require appropriate IAM domain permissions.
20
+ """
11
21
 
12
22
  def __init__(self, channel):
13
23
  """Constructor.
@@ -15,9 +25,14 @@ class GroupServiceStub(object):
15
25
  Args:
16
26
  channel: A grpc.Channel.
17
27
  """
18
- self.GetGroup = channel.unary_unary(
19
- '/meshtrade.iam.group.v1.GroupService/GetGroup',
20
- request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.SerializeToString,
28
+ self.CreateGroup = channel.unary_unary(
29
+ '/meshtrade.iam.group.v1.GroupService/CreateGroup',
30
+ request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.CreateGroupRequest.SerializeToString,
31
+ response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
32
+ _registered_method=True)
33
+ self.UpdateGroup = channel.unary_unary(
34
+ '/meshtrade.iam.group.v1.GroupService/UpdateGroup',
35
+ request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.UpdateGroupRequest.SerializeToString,
21
36
  response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
22
37
  _registered_method=True)
23
38
  self.ListGroups = channel.unary_unary(
@@ -30,14 +45,43 @@ class GroupServiceStub(object):
30
45
  request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsRequest.SerializeToString,
31
46
  response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsResponse.FromString,
32
47
  _registered_method=True)
48
+ self.GetGroup = channel.unary_unary(
49
+ '/meshtrade.iam.group.v1.GroupService/GetGroup',
50
+ request_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.SerializeToString,
51
+ response_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
52
+ _registered_method=True)
33
53
 
34
54
 
35
55
  class GroupServiceServicer(object):
36
- """Missing associated documentation comment in .proto file."""
56
+ """
57
+ GroupService manages organizational group hierarchy and lifecycle operations.
37
58
 
38
- def GetGroup(self, request, context):
59
+ Groups are the fundamental multi-tenancy units in Mesh that own resources,
60
+ define permission boundaries, and enable hierarchical access control.
61
+ Each group can own sub-groups, users, API users, and platform resources,
62
+ forming tree structures for inherited permissions and resource isolation.
63
+
64
+ All operations are scoped to the authenticated group's hierarchy and
65
+ require appropriate IAM domain permissions.
66
+ """
67
+
68
+ def CreateGroup(self, request, context):
69
+ """
70
+ Creates a new child group within the authenticated group's hierarchy.
71
+
72
+ The new group inherits access from its parent and becomes part of the
73
+ organizational structure. Group ownership must match the executing context.
74
+ """
75
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
76
+ context.set_details('Method not implemented!')
77
+ raise NotImplementedError('Method not implemented!')
78
+
79
+ def UpdateGroup(self, request, context):
39
80
  """
40
- Get Specific Group.
81
+ Updates an existing group's display name and description metadata.
82
+
83
+ Only mutable fields can be modified while preserving the group's
84
+ identity and ownership within the hierarchy.
41
85
  """
42
86
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
43
87
  context.set_details('Method not implemented!')
@@ -45,7 +89,10 @@ class GroupServiceServicer(object):
45
89
 
46
90
  def ListGroups(self, request, context):
47
91
  """
48
- Get all groups
92
+ Retrieves all groups within the authenticated group's hierarchical scope.
93
+
94
+ Returns the complete organizational structure accessible to the executing
95
+ context, including the root group and all descendant groups.
49
96
  """
50
97
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
51
98
  context.set_details('Method not implemented!')
@@ -53,7 +100,21 @@ class GroupServiceServicer(object):
53
100
 
54
101
  def SearchGroups(self, request, context):
55
102
  """
56
- Get all groups with search filtering options.
103
+ Searches groups using flexible text criteria within the hierarchy.
104
+
105
+ Performs case-insensitive substring matching on display names and
106
+ descriptions using OR logic across search terms.
107
+ """
108
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
109
+ context.set_details('Method not implemented!')
110
+ raise NotImplementedError('Method not implemented!')
111
+
112
+ def GetGroup(self, request, context):
113
+ """
114
+ Retrieves a specific group by its resource identifier within the hierarchy.
115
+
116
+ Provides access to a single group's complete metadata and organizational
117
+ context if accessible within the executing group's scope.
57
118
  """
58
119
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
59
120
  context.set_details('Method not implemented!')
@@ -62,9 +123,14 @@ class GroupServiceServicer(object):
62
123
 
63
124
  def add_GroupServiceServicer_to_server(servicer, server):
64
125
  rpc_method_handlers = {
65
- 'GetGroup': grpc.unary_unary_rpc_method_handler(
66
- servicer.GetGroup,
67
- request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.FromString,
126
+ 'CreateGroup': grpc.unary_unary_rpc_method_handler(
127
+ servicer.CreateGroup,
128
+ request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.CreateGroupRequest.FromString,
129
+ response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.SerializeToString,
130
+ ),
131
+ 'UpdateGroup': grpc.unary_unary_rpc_method_handler(
132
+ servicer.UpdateGroup,
133
+ request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.UpdateGroupRequest.FromString,
68
134
  response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.SerializeToString,
69
135
  ),
70
136
  'ListGroups': grpc.unary_unary_rpc_method_handler(
@@ -77,6 +143,11 @@ def add_GroupServiceServicer_to_server(servicer, server):
77
143
  request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsRequest.FromString,
78
144
  response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.SearchGroupsResponse.SerializeToString,
79
145
  ),
146
+ 'GetGroup': grpc.unary_unary_rpc_method_handler(
147
+ servicer.GetGroup,
148
+ request_deserializer=meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.FromString,
149
+ response_serializer=meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.SerializeToString,
150
+ ),
80
151
  }
81
152
  generic_handler = grpc.method_handlers_generic_handler(
82
153
  'meshtrade.iam.group.v1.GroupService', rpc_method_handlers)
@@ -86,10 +157,20 @@ def add_GroupServiceServicer_to_server(servicer, server):
86
157
 
87
158
  # This class is part of an EXPERIMENTAL API.
88
159
  class GroupService(object):
89
- """Missing associated documentation comment in .proto file."""
160
+ """
161
+ GroupService manages organizational group hierarchy and lifecycle operations.
162
+
163
+ Groups are the fundamental multi-tenancy units in Mesh that own resources,
164
+ define permission boundaries, and enable hierarchical access control.
165
+ Each group can own sub-groups, users, API users, and platform resources,
166
+ forming tree structures for inherited permissions and resource isolation.
167
+
168
+ All operations are scoped to the authenticated group's hierarchy and
169
+ require appropriate IAM domain permissions.
170
+ """
90
171
 
91
172
  @staticmethod
92
- def GetGroup(request,
173
+ def CreateGroup(request,
93
174
  target,
94
175
  options=(),
95
176
  channel_credentials=None,
@@ -102,8 +183,35 @@ class GroupService(object):
102
183
  return grpc.experimental.unary_unary(
103
184
  request,
104
185
  target,
105
- '/meshtrade.iam.group.v1.GroupService/GetGroup',
106
- meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.SerializeToString,
186
+ '/meshtrade.iam.group.v1.GroupService/CreateGroup',
187
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.CreateGroupRequest.SerializeToString,
188
+ meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
189
+ options,
190
+ channel_credentials,
191
+ insecure,
192
+ call_credentials,
193
+ compression,
194
+ wait_for_ready,
195
+ timeout,
196
+ metadata,
197
+ _registered_method=True)
198
+
199
+ @staticmethod
200
+ def UpdateGroup(request,
201
+ target,
202
+ options=(),
203
+ channel_credentials=None,
204
+ call_credentials=None,
205
+ insecure=False,
206
+ compression=None,
207
+ wait_for_ready=None,
208
+ timeout=None,
209
+ metadata=None):
210
+ return grpc.experimental.unary_unary(
211
+ request,
212
+ target,
213
+ '/meshtrade.iam.group.v1.GroupService/UpdateGroup',
214
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.UpdateGroupRequest.SerializeToString,
107
215
  meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
108
216
  options,
109
217
  channel_credentials,
@@ -168,3 +276,30 @@ class GroupService(object):
168
276
  timeout,
169
277
  metadata,
170
278
  _registered_method=True)
279
+
280
+ @staticmethod
281
+ def GetGroup(request,
282
+ target,
283
+ options=(),
284
+ channel_credentials=None,
285
+ call_credentials=None,
286
+ insecure=False,
287
+ compression=None,
288
+ wait_for_ready=None,
289
+ timeout=None,
290
+ metadata=None):
291
+ return grpc.experimental.unary_unary(
292
+ request,
293
+ target,
294
+ '/meshtrade.iam.group.v1.GroupService/GetGroup',
295
+ meshtrade_dot_iam_dot_group_dot_v1_dot_service__pb2.GetGroupRequest.SerializeToString,
296
+ meshtrade_dot_iam_dot_group_dot_v1_dot_group__pb2.Group.FromString,
297
+ options,
298
+ channel_credentials,
299
+ insecure,
300
+ call_credentials,
301
+ compression,
302
+ wait_for_ready,
303
+ timeout,
304
+ metadata,
305
+ _registered_method=True)
@@ -13,7 +13,7 @@
13
13
  # ===================================================================
14
14
 
15
15
  # Generated protobuf imports
16
- from .role_pb2 import Role, RoleList
16
+ from .role_pb2 import Role
17
17
 
18
18
  # ===================================================================
19
19
  # END OF AUTO-GENERATED SECTION
@@ -29,7 +29,15 @@ from .role_pb2 import Role, RoleList
29
29
  #
30
30
  # ===================================================================
31
31
 
32
- from .role import full_resource_name_from_group_name
32
+ from .role import (
33
+ must_parse_role_parts,
34
+ parse_role_parts,
35
+ role_from_full_resource_name,
36
+ role_full_resource_name_from_group,
37
+ role_full_resource_name_from_group_id,
38
+ role_is_valid,
39
+ role_is_valid_and_specified,
40
+ )
33
41
 
34
42
  # ===================================================================
35
43
  # MODULE EXPORTS
@@ -38,7 +46,12 @@ from .role import full_resource_name_from_group_name
38
46
  __all__ = [
39
47
  # Generated exports
40
48
  "Role",
41
- "RoleList",
42
49
  # Manual exports
43
- "full_resource_name_from_group_name",
50
+ "must_parse_role_parts",
51
+ "parse_role_parts",
52
+ "role_from_full_resource_name",
53
+ "role_full_resource_name_from_group",
54
+ "role_full_resource_name_from_group_id",
55
+ "role_is_valid",
56
+ "role_is_valid_and_specified",
44
57
  ]