meshtrade 1.12.0__py3-none-any.whl → 1.19.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.

Potentially problematic release.


This version of meshtrade might be problematic. Click here for more details.

Files changed (33) hide show
  1. meshtrade/common/grpc_client.py +47 -0
  2. meshtrade/iam/api_user/v1/__init__.py +2 -0
  3. meshtrade/iam/api_user/v1/api_user_pb2.py +7 -7
  4. meshtrade/iam/api_user/v1/service_meshpy.py +17 -0
  5. meshtrade/iam/api_user/v1/service_pb2.py +25 -17
  6. meshtrade/iam/api_user/v1/service_pb2.pyi +8 -0
  7. meshtrade/iam/api_user/v1/service_pb2_grpc.py +49 -0
  8. meshtrade/iam/role/v1/role_pb2.py +2 -2
  9. meshtrade/iam/role/v1/role_pb2.pyi +8 -0
  10. meshtrade/iam/user/v1/service_pb2.py +23 -23
  11. meshtrade/iam/user/v1/user_pb2.py +3 -3
  12. meshtrade/ledger/transaction/v1/__init__.py +23 -1
  13. meshtrade/ledger/transaction/v1/service_meshpy.py +175 -0
  14. meshtrade/ledger/transaction/v1/service_options_meshpy.py +65 -0
  15. meshtrade/ledger/transaction/v1/service_pb2.py +57 -0
  16. meshtrade/ledger/transaction/v1/service_pb2.pyi +33 -0
  17. meshtrade/ledger/transaction/v1/service_pb2_grpc.py +131 -0
  18. meshtrade/studio/instrument/v1/__init__.py +1 -1
  19. meshtrade/studio/instrument/v1/instrument_type_pb2.py +37 -0
  20. meshtrade/studio/instrument/v1/{type_pb2.pyi → instrument_type_pb2.pyi} +6 -0
  21. meshtrade/wallet/account/v1/__init__.py +0 -4
  22. meshtrade/wallet/account/v1/account_pb2.py +10 -10
  23. meshtrade/wallet/account/v1/account_pb2.pyi +3 -3
  24. meshtrade/wallet/account/v1/service_meshpy.py +0 -18
  25. meshtrade/wallet/account/v1/service_pb2.py +19 -27
  26. meshtrade/wallet/account/v1/service_pb2.pyi +0 -14
  27. meshtrade/wallet/account/v1/service_pb2_grpc.py +0 -49
  28. {meshtrade-1.12.0.dist-info → meshtrade-1.19.0.dist-info}/METADATA +1 -1
  29. {meshtrade-1.12.0.dist-info → meshtrade-1.19.0.dist-info}/RECORD +32 -27
  30. meshtrade/studio/instrument/v1/type_pb2.py +0 -37
  31. /meshtrade/studio/instrument/v1/{type_pb2_grpc.py → instrument_type_pb2_grpc.py} +0 -0
  32. {meshtrade-1.12.0.dist-info → meshtrade-1.19.0.dist-info}/WHEEL +0 -0
  33. {meshtrade-1.12.0.dist-info → meshtrade-1.19.0.dist-info}/top_level.txt +0 -0
@@ -200,3 +200,50 @@ class BaseGRPCClient(GRPCClient):
200
200
 
201
201
  # Make the authenticated call
202
202
  return method(request, metadata=metadata, timeout=timeout_seconds)
203
+
204
+ def _execute_streaming_method(self, method_name: str, request: Any, timeout: timedelta | None = None) -> Any:
205
+ """Execute a server-side streaming gRPC method with authentication and error handling.
206
+
207
+ This is the streaming equivalent of _execute_method() - it handles validation,
208
+ authentication metadata injection, and timeout handling for server-side streaming calls.
209
+
210
+ Args:
211
+ method_name: The name of the gRPC stub streaming method to call
212
+ request: The request message
213
+ timeout: Optional timeout override
214
+
215
+ Returns:
216
+ Iterator yielding response messages from the stream
217
+
218
+ Raises:
219
+ grpc.RpcError: If the gRPC call fails
220
+ ValueError: If authentication credentials are missing or request validation fails
221
+ """
222
+ # Validate request using protovalidate BEFORE initiating stream
223
+ try:
224
+ self._validator.validate(request)
225
+ except Exception as e:
226
+ raise ValueError(f"Request validation failed: {e}") from e
227
+
228
+ self._ensure_connected()
229
+
230
+ if not self._api_key or not self._group:
231
+ raise ValueError(
232
+ "API key and group are required for authentication. Provide them via constructor or set MESH_API_CREDENTIALS environment variable."
233
+ )
234
+
235
+ if self._stub is None:
236
+ raise RuntimeError("gRPC stub not initialized. Call _ensure_connected() first.")
237
+
238
+ # Get the streaming method from the stub
239
+ method = getattr(self._stub, method_name)
240
+
241
+ # Create authentication metadata (x-api-key, x-group headers)
242
+ metadata = create_auth_metadata(self._api_key, self._group)
243
+
244
+ # Use provided timeout or default
245
+ call_timeout = timeout or self._timeout
246
+ timeout_seconds = call_timeout.total_seconds()
247
+
248
+ # Make the authenticated streaming call with metadata
249
+ return method(request, metadata=metadata, timeout=timeout_seconds)
@@ -24,6 +24,7 @@ from .service_pb2 import (
24
24
  GetApiUserRequest,
25
25
  ListApiUsersRequest,
26
26
  ListApiUsersResponse,
27
+ RevokeRoleFromAPIUserRequest,
27
28
  SearchApiUsersRequest,
28
29
  SearchApiUsersResponse,
29
30
  )
@@ -87,6 +88,7 @@ __all__ = [
87
88
  "GetApiUserRequest",
88
89
  "ListApiUsersRequest",
89
90
  "ListApiUsersResponse",
91
+ "RevokeRoleFromAPIUserRequest",
90
92
  "SearchApiUsersRequest",
91
93
  "SearchApiUsersResponse",
92
94
  # Manual exports
@@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
25
25
  from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
26
26
 
27
27
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(meshtrade/iam/api_user/v1/api_user.proto\x12\x19meshtrade.iam.api_user.v1\x1a\x1b\x62uf/validate/validate.proto\"\x9a\x06\n\x07\x41PIUser\x12\xc2\x01\n\x04name\x18\x01 \x01(\tB\xad\x01\xbaH\xa9\x01\xba\x01\xa5\x01\n\x14name.format.optional\x12\x36name must be empty or in the format api_users/{ULIDv2}\x1aUsize(this) == 0 || this.matches(\'^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\')R\x04name\x12R\n\x05owner\x18\x02 \x01(\tB<\xbaH9r42/^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01!\xc8\x01\x01R\x05owner\x12\xb4\x01\n\x0c\x64isplay_name\x18\x04 \x01(\tB\x90\x01\xbaH\x8c\x01r\x05\x10\x01\x18\xff\x01\xba\x01\x7f\n\x15\x64isplay_name.required\x12\x41\x64isplay name is required and must be between 1 and 255 characters\x1a#size(this) > 0 && size(this) <= 255\xc8\x01\x01R\x0b\x64isplayName\x12\xbe\x01\n\x05state\x18\x05 \x01(\x0e\x32\'.meshtrade.iam.api_user.v1.APIUserStateB\x7f\xbaH|\x82\x01\x02\x10\x01\xba\x01t\n\x0bstate.valid\x12/state must be a valid APIUserState if specified\x1a\x34int(this) == 0 || (int(this) >= 1 && int(this) <= 2)R\x05state\x12\x65\n\x05roles\x18\x06 \x03(\tBO\xbaHL\x92\x01I\"GrE2@^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[123456][0-9]{6}$\x98\x01)R\x05roles\x12\x17\n\x07\x61pi_key\x18\x07 \x01(\tR\x06\x61piKey*f\n\x0c\x41PIUserState\x12\x1e\n\x1a\x41PI_USER_STATE_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41PI_USER_STATE_ACTIVE\x10\x01\x12\x1b\n\x17\x41PI_USER_STATE_INACTIVE\x10\x02*\xa6\x01\n\rAPIUserAction\x12\x1f\n\x1b\x41PI_USER_ACTION_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41PI_USER_ACTION_ACTIVATE\x10\x01\x12\x1e\n\x1a\x41PI_USER_ACTION_DEACTIVATE\x10\x02\x12\x1a\n\x16\x41PI_USER_ACTION_CREATE\x10\x03\x12\x1a\n\x16\x41PI_USER_ACTION_UPDATE\x10\x04\x42[\n co.meshtrade.api.iam.api_user.v1Z7github.com/meshtrade/api/go/iam/api_user/v1;api_user_v1b\x06proto3')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(meshtrade/iam/api_user/v1/api_user.proto\x12\x19meshtrade.iam.api_user.v1\x1a\x1b\x62uf/validate/validate.proto\"\x97\x06\n\x07\x41PIUser\x12\xc2\x01\n\x04name\x18\x01 \x01(\tB\xad\x01\xbaH\xa9\x01\xba\x01\xa5\x01\n\x14name.format.optional\x12\x36name must be empty or in the format api_users/{ULIDv2}\x1aUsize(this) == 0 || this.matches(\'^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\')R\x04name\x12R\n\x05owner\x18\x02 \x01(\tB<\xbaH9r42/^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01!\xc8\x01\x01R\x05owner\x12\xb4\x01\n\x0c\x64isplay_name\x18\x04 \x01(\tB\x90\x01\xbaH\x8c\x01r\x05\x10\x01\x18\xff\x01\xba\x01\x7f\n\x15\x64isplay_name.required\x12\x41\x64isplay name is required and must be between 1 and 255 characters\x1a#size(this) > 0 && size(this) <= 255\xc8\x01\x01R\x0b\x64isplayName\x12\xbe\x01\n\x05state\x18\x05 \x01(\x0e\x32\'.meshtrade.iam.api_user.v1.APIUserStateB\x7f\xbaH|\x82\x01\x02\x10\x01\xba\x01t\n\x0bstate.valid\x12/state must be a valid APIUserState if specified\x1a\x34int(this) == 0 || (int(this) >= 1 && int(this) <= 2)R\x05state\x12\x62\n\x05roles\x18\x06 \x03(\tBL\xbaHI\x92\x01\x46\"DrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\x98\x01)R\x05roles\x12\x17\n\x07\x61pi_key\x18\x07 \x01(\tR\x06\x61piKey*f\n\x0c\x41PIUserState\x12\x1e\n\x1a\x41PI_USER_STATE_UNSPECIFIED\x10\x00\x12\x19\n\x15\x41PI_USER_STATE_ACTIVE\x10\x01\x12\x1b\n\x17\x41PI_USER_STATE_INACTIVE\x10\x02*\xa6\x01\n\rAPIUserAction\x12\x1f\n\x1b\x41PI_USER_ACTION_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41PI_USER_ACTION_ACTIVATE\x10\x01\x12\x1e\n\x1a\x41PI_USER_ACTION_DEACTIVATE\x10\x02\x12\x1a\n\x16\x41PI_USER_ACTION_CREATE\x10\x03\x12\x1a\n\x16\x41PI_USER_ACTION_UPDATE\x10\x04\x42[\n co.meshtrade.api.iam.api_user.v1Z7github.com/meshtrade/api/go/iam/api_user/v1;api_user_v1b\x06proto3')
29
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -42,11 +42,11 @@ if not _descriptor._USE_C_DESCRIPTORS:
42
42
  _globals['_APIUSER'].fields_by_name['state']._loaded_options = None
43
43
  _globals['_APIUSER'].fields_by_name['state']._serialized_options = b'\272H|\202\001\002\020\001\272\001t\n\013state.valid\022/state must be a valid APIUserState if specified\0324int(this) == 0 || (int(this) >= 1 && int(this) <= 2)'
44
44
  _globals['_APIUSER'].fields_by_name['roles']._loaded_options = None
45
- _globals['_APIUSER'].fields_by_name['roles']._serialized_options = b'\272HL\222\001I\"GrE2@^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[123456][0-9]{6}$\230\001)'
46
- _globals['_APIUSERSTATE']._serialized_start=897
47
- _globals['_APIUSERSTATE']._serialized_end=999
48
- _globals['_APIUSERACTION']._serialized_start=1002
49
- _globals['_APIUSERACTION']._serialized_end=1168
45
+ _globals['_APIUSER'].fields_by_name['roles']._serialized_options = b'\272HI\222\001F\"DrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\230\001)'
46
+ _globals['_APIUSERSTATE']._serialized_start=894
47
+ _globals['_APIUSERSTATE']._serialized_end=996
48
+ _globals['_APIUSERACTION']._serialized_start=999
49
+ _globals['_APIUSERACTION']._serialized_end=1165
50
50
  _globals['_APIUSER']._serialized_start=101
51
- _globals['_APIUSER']._serialized_end=895
51
+ _globals['_APIUSER']._serialized_end=892
52
52
  # @@protoc_insertion_point(module_scope)
@@ -26,6 +26,7 @@ GetApiUserByKeyHashRequest,
26
26
  GetApiUserRequest,
27
27
  ListApiUsersRequest,
28
28
  ListApiUsersResponse,
29
+ RevokeRoleFromAPIUserRequest,
29
30
  SearchApiUsersRequest,
30
31
  SearchApiUsersResponse,
31
32
  )
@@ -186,6 +187,22 @@ class ApiUserService(BaseGRPCClient):
186
187
  """
187
188
  return self._execute_method("AssignRoleToAPIUser", request, timeout)
188
189
 
190
+ def revoke_role_from_apiuser(self, request: RevokeRoleFromAPIUserRequest, timeout: Optional[timedelta] = None) -> APIUser:
191
+ """RevokeRoleFromAPIUser method.
192
+
193
+ Args:
194
+ request: The RevokeRoleFromAPIUser request message
195
+ timeout: Optional timeout override for this call
196
+
197
+ Returns:
198
+ The RevokeRoleFromAPIUser response message
199
+
200
+ Raises:
201
+ grpc.RpcError: If the gRPC call fails
202
+ ValueError: If authentication credentials are missing
203
+ """
204
+ return self._execute_method("RevokeRoleFromAPIUser", request, timeout)
205
+
189
206
  def list_api_users(self, request: ListApiUsersRequest, timeout: Optional[timedelta] = None) -> ListApiUsersResponse:
190
207
  """ListApiUsers method.
191
208
 
@@ -28,7 +28,7 @@ from meshtrade.iam.role.v1 import role_pb2 as meshtrade_dot_iam_dot_role_dot_v1_
28
28
  from meshtrade.option.v1 import method_type_pb2 as meshtrade_dot_option_dot_v1_dot_method__type__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtrade/iam/api_user/v1/service.proto\x12\x19meshtrade.iam.api_user.v1\x1a\x1b\x62uf/validate/validate.proto\x1a(meshtrade/iam/api_user/v1/api_user.proto\x1a meshtrade/iam/role/v1/role.proto\x1a%meshtrade/option/v1/method_type.proto\"h\n\x11GetApiUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name\"Z\n\x1aGetApiUserByKeyHashRequest\x12<\n\x08key_hash\x18\x01 \x01(\tB!\xbaH\x1er\x19\x32\x14^[A-Za-z0-9+/]{43}=$\x98\x01,\xc8\x01\x01R\x07keyHash\"]\n\x14\x43reateApiUserRequest\x12\x45\n\x08\x61pi_user\x18\x01 \x01(\x0b\x32\".meshtrade.iam.api_user.v1.APIUserB\x06\xbaH\x03\xc8\x01\x01R\x07\x61piUser\"\xd1\x01\n\x1a\x41ssignRoleToAPIUserRequest\x12P\n\x04name\x18\x01 \x01(\tB<\xbaH9r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$R\x04name\x12\x61\n\x04role\x18\x04 \x01(\tBM\xbaHJrE2@^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[123456][0-9]{6}$\x98\x01)\xc8\x01\x01R\x04role\"\x15\n\x13ListApiUsersRequest\"W\n\x14ListApiUsersResponse\x12?\n\tapi_users\x18\x01 \x03(\x0b\x32\".meshtrade.iam.api_user.v1.APIUserR\x08\x61piUsers\":\n\x15SearchApiUsersRequest\x12!\n\x0c\x64isplay_name\x18\x01 \x01(\tR\x0b\x64isplayName\"Y\n\x16SearchApiUsersResponse\x12?\n\tapi_users\x18\x01 \x03(\x0b\x32\".meshtrade.iam.api_user.v1.APIUserR\x08\x61piUsers\"m\n\x16\x41\x63tivateApiUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name\"o\n\x18\x44\x65\x61\x63tivateApiUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name2\xbf\x08\n\x0e\x41piUserService\x12z\n\nGetApiUser\x12,.meshtrade.iam.api_user.v1.GetApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x12x\n\rCreateApiUser\x12/.meshtrade.iam.api_user.v1.CreateApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x84\x01\n\x13\x41ssignRoleToAPIUser\x12\x35.meshtrade.iam.api_user.v1.AssignRoleToAPIUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x8b\x01\n\x0cListApiUsers\x12..meshtrade.iam.api_user.v1.ListApiUsersRequest\x1a/.meshtrade.iam.api_user.v1.ListApiUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x12\x91\x01\n\x0eSearchApiUsers\x12\x30.meshtrade.iam.api_user.v1.SearchApiUsersRequest\x1a\x31.meshtrade.iam.api_user.v1.SearchApiUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x12|\n\x0f\x41\x63tivateApiUser\x12\x31.meshtrade.iam.api_user.v1.ActivateApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x80\x01\n\x11\x44\x65\x61\x63tivateApiUser\x12\x33.meshtrade.iam.api_user.v1.DeactivateApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x8c\x01\n\x13GetApiUserByKeyHash\x12\x35.meshtrade.iam.api_user.v1.GetApiUserByKeyHashRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x42[\n co.meshtrade.api.iam.api_user.v1Z7github.com/meshtrade/api/go/iam/api_user/v1;api_user_v1b\x06proto3')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtrade/iam/api_user/v1/service.proto\x12\x19meshtrade.iam.api_user.v1\x1a\x1b\x62uf/validate/validate.proto\x1a(meshtrade/iam/api_user/v1/api_user.proto\x1a meshtrade/iam/role/v1/role.proto\x1a%meshtrade/option/v1/method_type.proto\"h\n\x11GetApiUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name\"Z\n\x1aGetApiUserByKeyHashRequest\x12<\n\x08key_hash\x18\x01 \x01(\tB!\xbaH\x1er\x19\x32\x14^[A-Za-z0-9+/]{43}=$\x98\x01,\xc8\x01\x01R\x07keyHash\"]\n\x14\x43reateApiUserRequest\x12\x45\n\x08\x61pi_user\x18\x01 \x01(\x0b\x32\".meshtrade.iam.api_user.v1.APIUserB\x06\xbaH\x03\xc8\x01\x01R\x07\x61piUser\"\xd1\x01\n\x1a\x41ssignRoleToAPIUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name\x12^\n\x04role\x18\x04 \x01(\tBJ\xbaHGrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\x98\x01)\xc8\x01\x01R\x04role\"\xd3\x01\n\x1cRevokeRoleFromAPIUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name\x12^\n\x04role\x18\x02 \x01(\tBJ\xbaHGrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\x98\x01)\xc8\x01\x01R\x04role\"\x15\n\x13ListApiUsersRequest\"W\n\x14ListApiUsersResponse\x12?\n\tapi_users\x18\x01 \x03(\x0b\x32\".meshtrade.iam.api_user.v1.APIUserR\x08\x61piUsers\":\n\x15SearchApiUsersRequest\x12!\n\x0c\x64isplay_name\x18\x01 \x01(\tR\x0b\x64isplayName\"Y\n\x16SearchApiUsersResponse\x12?\n\tapi_users\x18\x01 \x03(\x0b\x32\".meshtrade.iam.api_user.v1.APIUserR\x08\x61piUsers\"m\n\x16\x41\x63tivateApiUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name\"o\n\x18\x44\x65\x61\x63tivateApiUserRequest\x12S\n\x04name\x18\x01 \x01(\tB?\xbaH<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01$\xc8\x01\x01R\x04name2\xca\t\n\x0e\x41piUserService\x12z\n\nGetApiUser\x12,.meshtrade.iam.api_user.v1.GetApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x12x\n\rCreateApiUser\x12/.meshtrade.iam.api_user.v1.CreateApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x84\x01\n\x13\x41ssignRoleToAPIUser\x12\x35.meshtrade.iam.api_user.v1.AssignRoleToAPIUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x88\x01\n\x15RevokeRoleFromAPIUser\x12\x37.meshtrade.iam.api_user.v1.RevokeRoleFromAPIUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x8b\x01\n\x0cListApiUsers\x12..meshtrade.iam.api_user.v1.ListApiUsersRequest\x1a/.meshtrade.iam.api_user.v1.ListApiUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x12\x91\x01\n\x0eSearchApiUsers\x12\x30.meshtrade.iam.api_user.v1.SearchApiUsersRequest\x1a\x31.meshtrade.iam.api_user.v1.SearchApiUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x12|\n\x0f\x41\x63tivateApiUser\x12\x31.meshtrade.iam.api_user.v1.ActivateApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x80\x01\n\x11\x44\x65\x61\x63tivateApiUser\x12\x33.meshtrade.iam.api_user.v1.DeactivateApiUserRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc2\x8d\xb7\x01\x12\x8c\x01\n\x13GetApiUserByKeyHash\x12\x35.meshtrade.iam.api_user.v1.GetApiUserByKeyHashRequest\x1a\".meshtrade.iam.api_user.v1.APIUser\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc2\x8d\xb7\x01\xc3\x8d\xb7\x01\x42[\n co.meshtrade.api.iam.api_user.v1Z7github.com/meshtrade/api/go/iam/api_user/v1;api_user_v1b\x06proto3')
32
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -43,9 +43,13 @@ if not _descriptor._USE_C_DESCRIPTORS:
43
43
  _globals['_CREATEAPIUSERREQUEST'].fields_by_name['api_user']._loaded_options = None
44
44
  _globals['_CREATEAPIUSERREQUEST'].fields_by_name['api_user']._serialized_options = b'\272H\003\310\001\001'
45
45
  _globals['_ASSIGNROLETOAPIUSERREQUEST'].fields_by_name['name']._loaded_options = None
46
- _globals['_ASSIGNROLETOAPIUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H9r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001$'
46
+ _globals['_ASSIGNROLETOAPIUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001$\310\001\001'
47
47
  _globals['_ASSIGNROLETOAPIUSERREQUEST'].fields_by_name['role']._loaded_options = None
48
- _globals['_ASSIGNROLETOAPIUSERREQUEST'].fields_by_name['role']._serialized_options = b'\272HJrE2@^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[123456][0-9]{6}$\230\001)\310\001\001'
48
+ _globals['_ASSIGNROLETOAPIUSERREQUEST'].fields_by_name['role']._serialized_options = b'\272HGrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\230\001)\310\001\001'
49
+ _globals['_REVOKEROLEFROMAPIUSERREQUEST'].fields_by_name['name']._loaded_options = None
50
+ _globals['_REVOKEROLEFROMAPIUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001$\310\001\001'
51
+ _globals['_REVOKEROLEFROMAPIUSERREQUEST'].fields_by_name['role']._loaded_options = None
52
+ _globals['_REVOKEROLEFROMAPIUSERREQUEST'].fields_by_name['role']._serialized_options = b'\272HGrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\230\001)\310\001\001'
49
53
  _globals['_ACTIVATEAPIUSERREQUEST'].fields_by_name['name']._loaded_options = None
50
54
  _globals['_ACTIVATEAPIUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H<r722^api_users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001$\310\001\001'
51
55
  _globals['_DEACTIVATEAPIUSERREQUEST'].fields_by_name['name']._loaded_options = None
@@ -56,6 +60,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
56
60
  _globals['_APIUSERSERVICE'].methods_by_name['CreateApiUser']._serialized_options = b'\240\265\030\002\252\265\030\n\n\010\300\215\267\001\302\215\267\001'
57
61
  _globals['_APIUSERSERVICE'].methods_by_name['AssignRoleToAPIUser']._loaded_options = None
58
62
  _globals['_APIUSERSERVICE'].methods_by_name['AssignRoleToAPIUser']._serialized_options = b'\240\265\030\002\252\265\030\n\n\010\300\215\267\001\302\215\267\001'
63
+ _globals['_APIUSERSERVICE'].methods_by_name['RevokeRoleFromAPIUser']._loaded_options = None
64
+ _globals['_APIUSERSERVICE'].methods_by_name['RevokeRoleFromAPIUser']._serialized_options = b'\240\265\030\002\252\265\030\n\n\010\300\215\267\001\302\215\267\001'
59
65
  _globals['_APIUSERSERVICE'].methods_by_name['ListApiUsers']._loaded_options = None
60
66
  _globals['_APIUSERSERVICE'].methods_by_name['ListApiUsers']._serialized_options = b'\240\265\030\001\252\265\030\022\n\020\300\215\267\001\301\215\267\001\302\215\267\001\303\215\267\001'
61
67
  _globals['_APIUSERSERVICE'].methods_by_name['SearchApiUsers']._loaded_options = None
@@ -74,18 +80,20 @@ if not _descriptor._USE_C_DESCRIPTORS:
74
80
  _globals['_CREATEAPIUSERREQUEST']._serialized_end=505
75
81
  _globals['_ASSIGNROLETOAPIUSERREQUEST']._serialized_start=508
76
82
  _globals['_ASSIGNROLETOAPIUSERREQUEST']._serialized_end=717
77
- _globals['_LISTAPIUSERSREQUEST']._serialized_start=719
78
- _globals['_LISTAPIUSERSREQUEST']._serialized_end=740
79
- _globals['_LISTAPIUSERSRESPONSE']._serialized_start=742
80
- _globals['_LISTAPIUSERSRESPONSE']._serialized_end=829
81
- _globals['_SEARCHAPIUSERSREQUEST']._serialized_start=831
82
- _globals['_SEARCHAPIUSERSREQUEST']._serialized_end=889
83
- _globals['_SEARCHAPIUSERSRESPONSE']._serialized_start=891
84
- _globals['_SEARCHAPIUSERSRESPONSE']._serialized_end=980
85
- _globals['_ACTIVATEAPIUSERREQUEST']._serialized_start=982
86
- _globals['_ACTIVATEAPIUSERREQUEST']._serialized_end=1091
87
- _globals['_DEACTIVATEAPIUSERREQUEST']._serialized_start=1093
88
- _globals['_DEACTIVATEAPIUSERREQUEST']._serialized_end=1204
89
- _globals['_APIUSERSERVICE']._serialized_start=1207
90
- _globals['_APIUSERSERVICE']._serialized_end=2294
83
+ _globals['_REVOKEROLEFROMAPIUSERREQUEST']._serialized_start=720
84
+ _globals['_REVOKEROLEFROMAPIUSERREQUEST']._serialized_end=931
85
+ _globals['_LISTAPIUSERSREQUEST']._serialized_start=933
86
+ _globals['_LISTAPIUSERSREQUEST']._serialized_end=954
87
+ _globals['_LISTAPIUSERSRESPONSE']._serialized_start=956
88
+ _globals['_LISTAPIUSERSRESPONSE']._serialized_end=1043
89
+ _globals['_SEARCHAPIUSERSREQUEST']._serialized_start=1045
90
+ _globals['_SEARCHAPIUSERSREQUEST']._serialized_end=1103
91
+ _globals['_SEARCHAPIUSERSRESPONSE']._serialized_start=1105
92
+ _globals['_SEARCHAPIUSERSRESPONSE']._serialized_end=1194
93
+ _globals['_ACTIVATEAPIUSERREQUEST']._serialized_start=1196
94
+ _globals['_ACTIVATEAPIUSERREQUEST']._serialized_end=1305
95
+ _globals['_DEACTIVATEAPIUSERREQUEST']._serialized_start=1307
96
+ _globals['_DEACTIVATEAPIUSERREQUEST']._serialized_end=1418
97
+ _globals['_APIUSERSERVICE']._serialized_start=1421
98
+ _globals['_APIUSERSERVICE']._serialized_end=2647
91
99
  # @@protoc_insertion_point(module_scope)
@@ -36,6 +36,14 @@ class AssignRoleToAPIUserRequest(_message.Message):
36
36
  role: str
37
37
  def __init__(self, name: _Optional[str] = ..., role: _Optional[str] = ...) -> None: ...
38
38
 
39
+ class RevokeRoleFromAPIUserRequest(_message.Message):
40
+ __slots__ = ("name", "role")
41
+ NAME_FIELD_NUMBER: _ClassVar[int]
42
+ ROLE_FIELD_NUMBER: _ClassVar[int]
43
+ name: str
44
+ role: str
45
+ def __init__(self, name: _Optional[str] = ..., role: _Optional[str] = ...) -> None: ...
46
+
39
47
  class ListApiUsersRequest(_message.Message):
40
48
  __slots__ = ()
41
49
  def __init__(self) -> None: ...
@@ -42,6 +42,11 @@ class ApiUserServiceStub(object):
42
42
  request_serializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.AssignRoleToAPIUserRequest.SerializeToString,
43
43
  response_deserializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_api__user__pb2.APIUser.FromString,
44
44
  _registered_method=True)
45
+ self.RevokeRoleFromAPIUser = channel.unary_unary(
46
+ '/meshtrade.iam.api_user.v1.ApiUserService/RevokeRoleFromAPIUser',
47
+ request_serializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.RevokeRoleFromAPIUserRequest.SerializeToString,
48
+ response_deserializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_api__user__pb2.APIUser.FromString,
49
+ _registered_method=True)
45
50
  self.ListApiUsers = channel.unary_unary(
46
51
  '/meshtrade.iam.api_user.v1.ApiUserService/ListApiUsers',
47
52
  request_serializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.ListApiUsersRequest.SerializeToString,
@@ -115,6 +120,18 @@ class ApiUserServiceServicer(object):
115
120
  context.set_details('Method not implemented!')
116
121
  raise NotImplementedError('Method not implemented!')
117
122
 
123
+ def RevokeRoleFromAPIUser(self, request, context):
124
+ """
125
+ Revokes a role from an existing API user within the authenticated group context.
126
+
127
+ The role revocation removes the permissions associated with that role from
128
+ the API user within the group hierarchy. The API user will no longer be able
129
+ to perform operations that require the revoked role.
130
+ """
131
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
132
+ context.set_details('Method not implemented!')
133
+ raise NotImplementedError('Method not implemented!')
134
+
118
135
  def ListApiUsers(self, request, context):
119
136
  """
120
137
  Lists all API users in the authenticated group context.
@@ -188,6 +205,11 @@ def add_ApiUserServiceServicer_to_server(servicer, server):
188
205
  request_deserializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.AssignRoleToAPIUserRequest.FromString,
189
206
  response_serializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_api__user__pb2.APIUser.SerializeToString,
190
207
  ),
208
+ 'RevokeRoleFromAPIUser': grpc.unary_unary_rpc_method_handler(
209
+ servicer.RevokeRoleFromAPIUser,
210
+ request_deserializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.RevokeRoleFromAPIUserRequest.FromString,
211
+ response_serializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_api__user__pb2.APIUser.SerializeToString,
212
+ ),
191
213
  'ListApiUsers': grpc.unary_unary_rpc_method_handler(
192
214
  servicer.ListApiUsers,
193
215
  request_deserializer=meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.ListApiUsersRequest.FromString,
@@ -317,6 +339,33 @@ class ApiUserService(object):
317
339
  metadata,
318
340
  _registered_method=True)
319
341
 
342
+ @staticmethod
343
+ def RevokeRoleFromAPIUser(request,
344
+ target,
345
+ options=(),
346
+ channel_credentials=None,
347
+ call_credentials=None,
348
+ insecure=False,
349
+ compression=None,
350
+ wait_for_ready=None,
351
+ timeout=None,
352
+ metadata=None):
353
+ return grpc.experimental.unary_unary(
354
+ request,
355
+ target,
356
+ '/meshtrade.iam.api_user.v1.ApiUserService/RevokeRoleFromAPIUser',
357
+ meshtrade_dot_iam_dot_api__user_dot_v1_dot_service__pb2.RevokeRoleFromAPIUserRequest.SerializeToString,
358
+ meshtrade_dot_iam_dot_api__user_dot_v1_dot_api__user__pb2.APIUser.FromString,
359
+ options,
360
+ channel_credentials,
361
+ insecure,
362
+ call_credentials,
363
+ compression,
364
+ wait_for_ready,
365
+ timeout,
366
+ metadata,
367
+ _registered_method=True)
368
+
320
369
  @staticmethod
321
370
  def ListApiUsers(request,
322
371
  target,
@@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
25
25
  from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
26
26
 
27
27
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/role/v1/role.proto\x12\x15meshtrade.iam.role.v1\x1a google/protobuf/descriptor.proto\"=\n\x08RoleList\x12\x31\n\x05roles\x18\x01 \x03(\x0e\x32\x1b.meshtrade.iam.role.v1.RoleR\x05roles*\xec\x05\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\x17\n\x11ROLE_WALLET_ADMIN\x10\xc0\x84=\x12\x18\n\x12ROLE_WALLET_VIEWER\x10\xc1\x84=\x12\x1f\n\x19ROLE_WALLET_ACCOUNT_ADMIN\x10\xc2\x84=\x12 \n\x1aROLE_WALLET_ACCOUNT_VIEWER\x10\xc3\x84=\x12\x1b\n\x15ROLE_COMPLIANCE_ADMIN\x10\x80\x89z\x12\x1c\n\x16ROLE_COMPLIANCE_VIEWER\x10\x81\x89z\x12\"\n\x1cROLE_COMPLIANCE_CLIENT_ADMIN\x10\x82\x89z\x12#\n\x1dROLE_COMPLIANCE_CLIENT_VIEWER\x10\x83\x89z\x12\x15\n\x0eROLE_IAM_ADMIN\x10\xc0\x8d\xb7\x01\x12\x16\n\x0fROLE_IAM_VIEWER\x10\xc1\x8d\xb7\x01\x12\x1e\n\x17ROLE_IAM_API_USER_ADMIN\x10\xc2\x8d\xb7\x01\x12\x1f\n\x18ROLE_IAM_API_USER_VIEWER\x10\xc3\x8d\xb7\x01\x12\x1b\n\x14ROLE_IAM_GROUP_ADMIN\x10\xc4\x8d\xb7\x01\x12\x1c\n\x15ROLE_IAM_GROUP_VIEWER\x10\xc5\x8d\xb7\x01\x12\x1a\n\x13ROLE_IAM_USER_ADMIN\x10\xc6\x8d\xb7\x01\x12\x1b\n\x14ROLE_IAM_USER_VIEWER\x10\xc7\x8d\xb7\x01\x12\x18\n\x11ROLE_STUDIO_ADMIN\x10\x80\x92\xf4\x01\x12\x19\n\x12ROLE_STUDIO_VIEWER\x10\x81\x92\xf4\x01\x12#\n\x1cROLE_STUDIO_INSTRUMENT_ADMIN\x10\x82\x92\xf4\x01\x12$\n\x1dROLE_STUDIO_INSTRUMENT_VIEWER\x10\x83\x92\xf4\x01\x12\x19\n\x12ROLE_TRADING_ADMIN\x10\xc0\x96\xb1\x02\x12\x1a\n\x13ROLE_TRADING_VIEWER\x10\xc1\x96\xb1\x02\x12\x1b\n\x14ROLE_REPORTING_ADMIN\x10\x80\x9b\xee\x02\x12\x1c\n\x15ROLE_REPORTING_VIEWER\x10\x81\x9b\xee\x02:g\n\rmessage_roles\x12\x1f.google.protobuf.MessageOptions\x18\xd6\x86\x03 \x01(\x0b\x32\x1f.meshtrade.iam.role.v1.RoleListR\x0cmessageRoles:W\n\x05roles\x12\x1e.google.protobuf.MethodOptions\x18\xd5\x86\x03 \x01(\x0b\x32\x1f.meshtrade.iam.role.v1.RoleListR\x05rolesBO\n\x1c\x63o.meshtrade.api.iam.role.v1Z/github.com/meshtrade/api/go/iam/role/v1;role_v1b\x06proto3')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/role/v1/role.proto\x12\x15meshtrade.iam.role.v1\x1a google/protobuf/descriptor.proto\"=\n\x08RoleList\x12\x31\n\x05roles\x18\x01 \x03(\x0e\x32\x1b.meshtrade.iam.role.v1.RoleR\x05roles*\xee\x06\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\x17\n\x11ROLE_WALLET_ADMIN\x10\xc0\x84=\x12\x18\n\x12ROLE_WALLET_VIEWER\x10\xc1\x84=\x12\x1f\n\x19ROLE_WALLET_ACCOUNT_ADMIN\x10\xc2\x84=\x12 \n\x1aROLE_WALLET_ACCOUNT_VIEWER\x10\xc3\x84=\x12\x1b\n\x15ROLE_COMPLIANCE_ADMIN\x10\x80\x89z\x12\x1c\n\x16ROLE_COMPLIANCE_VIEWER\x10\x81\x89z\x12\"\n\x1cROLE_COMPLIANCE_CLIENT_ADMIN\x10\x82\x89z\x12#\n\x1dROLE_COMPLIANCE_CLIENT_VIEWER\x10\x83\x89z\x12\x15\n\x0eROLE_IAM_ADMIN\x10\xc0\x8d\xb7\x01\x12\x16\n\x0fROLE_IAM_VIEWER\x10\xc1\x8d\xb7\x01\x12\x1e\n\x17ROLE_IAM_API_USER_ADMIN\x10\xc2\x8d\xb7\x01\x12\x1f\n\x18ROLE_IAM_API_USER_VIEWER\x10\xc3\x8d\xb7\x01\x12\x1b\n\x14ROLE_IAM_GROUP_ADMIN\x10\xc4\x8d\xb7\x01\x12\x1c\n\x15ROLE_IAM_GROUP_VIEWER\x10\xc5\x8d\xb7\x01\x12\x1a\n\x13ROLE_IAM_USER_ADMIN\x10\xc6\x8d\xb7\x01\x12\x1b\n\x14ROLE_IAM_USER_VIEWER\x10\xc7\x8d\xb7\x01\x12\x18\n\x11ROLE_STUDIO_ADMIN\x10\x80\x92\xf4\x01\x12\x19\n\x12ROLE_STUDIO_VIEWER\x10\x81\x92\xf4\x01\x12#\n\x1cROLE_STUDIO_INSTRUMENT_ADMIN\x10\x82\x92\xf4\x01\x12$\n\x1dROLE_STUDIO_INSTRUMENT_VIEWER\x10\x83\x92\xf4\x01\x12\x19\n\x12ROLE_TRADING_ADMIN\x10\xc0\x96\xb1\x02\x12\x1a\n\x13ROLE_TRADING_VIEWER\x10\xc1\x96\xb1\x02\x12\x1b\n\x14ROLE_REPORTING_ADMIN\x10\x80\x9b\xee\x02\x12\x1c\n\x15ROLE_REPORTING_VIEWER\x10\x81\x9b\xee\x02\x12\x18\n\x11ROLE_LEDGER_ADMIN\x10\xc0\x9f\xab\x03\x12\x19\n\x12ROLE_LEDGER_VIEWER\x10\xc1\x9f\xab\x03\x12$\n\x1dROLE_LEDGER_TRANSACTION_ADMIN\x10\xc2\x9f\xab\x03\x12%\n\x1eROLE_LEDGER_TRANSACTION_VIEWER\x10\xc3\x9f\xab\x03:g\n\rmessage_roles\x12\x1f.google.protobuf.MessageOptions\x18\xd6\x86\x03 \x01(\x0b\x32\x1f.meshtrade.iam.role.v1.RoleListR\x0cmessageRoles:W\n\x05roles\x12\x1e.google.protobuf.MethodOptions\x18\xd5\x86\x03 \x01(\x0b\x32\x1f.meshtrade.iam.role.v1.RoleListR\x05rolesBO\n\x1c\x63o.meshtrade.api.iam.role.v1Z/github.com/meshtrade/api/go/iam/role/v1;role_v1b\x06proto3')
29
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,7 +34,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
34
34
  _globals['DESCRIPTOR']._loaded_options = None
35
35
  _globals['DESCRIPTOR']._serialized_options = b'\n\034co.meshtrade.api.iam.role.v1Z/github.com/meshtrade/api/go/iam/role/v1;role_v1'
36
36
  _globals['_ROLE']._serialized_start=157
37
- _globals['_ROLE']._serialized_end=905
37
+ _globals['_ROLE']._serialized_end=1035
38
38
  _globals['_ROLELIST']._serialized_start=93
39
39
  _globals['_ROLELIST']._serialized_end=154
40
40
  # @@protoc_insertion_point(module_scope)
@@ -35,6 +35,10 @@ class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
35
35
  ROLE_TRADING_VIEWER: _ClassVar[Role]
36
36
  ROLE_REPORTING_ADMIN: _ClassVar[Role]
37
37
  ROLE_REPORTING_VIEWER: _ClassVar[Role]
38
+ ROLE_LEDGER_ADMIN: _ClassVar[Role]
39
+ ROLE_LEDGER_VIEWER: _ClassVar[Role]
40
+ ROLE_LEDGER_TRANSACTION_ADMIN: _ClassVar[Role]
41
+ ROLE_LEDGER_TRANSACTION_VIEWER: _ClassVar[Role]
38
42
  ROLE_UNSPECIFIED: Role
39
43
  ROLE_WALLET_ADMIN: Role
40
44
  ROLE_WALLET_VIEWER: Role
@@ -60,6 +64,10 @@ ROLE_TRADING_ADMIN: Role
60
64
  ROLE_TRADING_VIEWER: Role
61
65
  ROLE_REPORTING_ADMIN: Role
62
66
  ROLE_REPORTING_VIEWER: Role
67
+ ROLE_LEDGER_ADMIN: Role
68
+ ROLE_LEDGER_VIEWER: Role
69
+ ROLE_LEDGER_TRANSACTION_ADMIN: Role
70
+ ROLE_LEDGER_TRANSACTION_VIEWER: Role
63
71
  MESSAGE_ROLES_FIELD_NUMBER: _ClassVar[int]
64
72
  message_roles: _descriptor.FieldDescriptor
65
73
  ROLES_FIELD_NUMBER: _ClassVar[int]
@@ -29,7 +29,7 @@ from meshtrade.option.v1 import method_type_pb2 as meshtrade_dot_option_dot_v1_d
29
29
  from meshtrade.type.v1 import sorting_pb2 as meshtrade_dot_type_dot_v1_dot_sorting__pb2
30
30
 
31
31
 
32
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtrade/iam/user/v1/service.proto\x12\x15meshtrade.iam.user.v1\x1a\x1b\x62uf/validate/validate.proto\x1a meshtrade/iam/role/v1/role.proto\x1a meshtrade/iam/user/v1/user.proto\x1a%meshtrade/option/v1/method_type.proto\x1a\x1fmeshtrade/type/v1/sorting.proto\"\xc3\x01\n\x17\x41ssignRoleToUserRequest\x12L\n\x04name\x18\x01 \x01(\tB8\xbaH5r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 R\x04name\x12Z\n\x04role\x18\x04 \x01(\tBF\xbaHCr>29^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/1[0-9]{6}$\x98\x01)\xc8\x01\x01R\x04role\"a\n\x0eGetUserRequest\x12O\n\x04name\x18\x01 \x01(\tB;\xbaH8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 \xc8\x01\x01R\x04name\"\x94\x02\n\x10ListUsersRequest\x12I\n\x07sorting\x18\x01 \x01(\x0b\x32/.meshtrade.iam.user.v1.ListUsersRequest.SortingR\x07sorting\x1a\xb4\x01\n\x07Sorting\x12r\n\x05\x66ield\x18\x01 \x01(\tB\\\xbaHYr\tR\x00R\x05\x65mail\xba\x01K\n\x0b\x66ield.valid\x12%field must be one of: email, or empty\x1a\x15this in [\'\', \'email\']R\x05\x66ield\x12\x35\n\x05order\x18\x02 \x01(\x0e\x32\x1f.meshtrade.type.v1.SortingOrderR\x05order\"F\n\x11ListUsersResponse\x12\x31\n\x05users\x18\x01 \x03(\x0b\x32\x1b.meshtrade.iam.user.v1.UserR\x05users\"\xae\x02\n\x12SearchUsersRequest\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12K\n\x07sorting\x18\x02 \x01(\x0b\x32\x31.meshtrade.iam.user.v1.SearchUsersRequest.SortingR\x07sorting\x1a\xb4\x01\n\x07Sorting\x12r\n\x05\x66ield\x18\x01 \x01(\tB\\\xbaHYr\tR\x00R\x05\x65mail\xba\x01K\n\x0b\x66ield.valid\x12%field must be one of: email, or empty\x1a\x15this in [\'\', \'email\']R\x05\x66ield\x12\x35\n\x05order\x18\x02 \x01(\x0e\x32\x1f.meshtrade.type.v1.SortingOrderR\x05order\"H\n\x13SearchUsersResponse\x12\x31\n\x05users\x18\x01 \x03(\x0b\x32\x1b.meshtrade.iam.user.v1.UserR\x05users\"L\n\x11\x43reateUserRequest\x12\x37\n\x04user\x18\x01 \x01(\x0b\x32\x1b.meshtrade.iam.user.v1.UserB\x06\xbaH\x03\xc8\x01\x01R\x04user\"L\n\x11UpdateUserRequest\x12\x37\n\x04user\x18\x01 \x01(\x0b\x32\x1b.meshtrade.iam.user.v1.UserB\x06\xbaH\x03\xc8\x01\x01R\x04user2\xbe\x05\n\x0bUserService\x12s\n\x10\x41ssignRoleToUser\x12..meshtrade.iam.user.v1.AssignRoleToUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x12i\n\x07GetUser\x12%.meshtrade.iam.user.v1.GetUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12z\n\tListUsers\x12\'.meshtrade.iam.user.v1.ListUsersRequest\x1a(.meshtrade.iam.user.v1.ListUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12\x80\x01\n\x0bSearchUsers\x12).meshtrade.iam.user.v1.SearchUsersRequest\x1a*.meshtrade.iam.user.v1.SearchUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12g\n\nCreateUser\x12(.meshtrade.iam.user.v1.CreateUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x12g\n\nUpdateUser\x12(.meshtrade.iam.user.v1.UpdateUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x42O\n\x1c\x63o.meshtrade.api.iam.user.v1Z/github.com/meshtrade/api/go/iam/user/v1;user_v1b\x06proto3')
32
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtrade/iam/user/v1/service.proto\x12\x15meshtrade.iam.user.v1\x1a\x1b\x62uf/validate/validate.proto\x1a meshtrade/iam/role/v1/role.proto\x1a meshtrade/iam/user/v1/user.proto\x1a%meshtrade/option/v1/method_type.proto\x1a\x1fmeshtrade/type/v1/sorting.proto\"\xc7\x01\n\x17\x41ssignRoleToUserRequest\x12L\n\x04name\x18\x01 \x01(\tB8\xbaH5r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 R\x04name\x12^\n\x04role\x18\x04 \x01(\tBJ\xbaHGrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\x98\x01)\xc8\x01\x01R\x04role\"a\n\x0eGetUserRequest\x12O\n\x04name\x18\x01 \x01(\tB;\xbaH8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 \xc8\x01\x01R\x04name\"\x94\x02\n\x10ListUsersRequest\x12I\n\x07sorting\x18\x01 \x01(\x0b\x32/.meshtrade.iam.user.v1.ListUsersRequest.SortingR\x07sorting\x1a\xb4\x01\n\x07Sorting\x12r\n\x05\x66ield\x18\x01 \x01(\tB\\\xbaHYr\tR\x00R\x05\x65mail\xba\x01K\n\x0b\x66ield.valid\x12%field must be one of: email, or empty\x1a\x15this in [\'\', \'email\']R\x05\x66ield\x12\x35\n\x05order\x18\x02 \x01(\x0e\x32\x1f.meshtrade.type.v1.SortingOrderR\x05order\"F\n\x11ListUsersResponse\x12\x31\n\x05users\x18\x01 \x03(\x0b\x32\x1b.meshtrade.iam.user.v1.UserR\x05users\"\xae\x02\n\x12SearchUsersRequest\x12\x14\n\x05\x65mail\x18\x01 \x01(\tR\x05\x65mail\x12K\n\x07sorting\x18\x02 \x01(\x0b\x32\x31.meshtrade.iam.user.v1.SearchUsersRequest.SortingR\x07sorting\x1a\xb4\x01\n\x07Sorting\x12r\n\x05\x66ield\x18\x01 \x01(\tB\\\xbaHYr\tR\x00R\x05\x65mail\xba\x01K\n\x0b\x66ield.valid\x12%field must be one of: email, or empty\x1a\x15this in [\'\', \'email\']R\x05\x66ield\x12\x35\n\x05order\x18\x02 \x01(\x0e\x32\x1f.meshtrade.type.v1.SortingOrderR\x05order\"H\n\x13SearchUsersResponse\x12\x31\n\x05users\x18\x01 \x03(\x0b\x32\x1b.meshtrade.iam.user.v1.UserR\x05users\"L\n\x11\x43reateUserRequest\x12\x37\n\x04user\x18\x01 \x01(\x0b\x32\x1b.meshtrade.iam.user.v1.UserB\x06\xbaH\x03\xc8\x01\x01R\x04user\"L\n\x11UpdateUserRequest\x12\x37\n\x04user\x18\x01 \x01(\x0b\x32\x1b.meshtrade.iam.user.v1.UserB\x06\xbaH\x03\xc8\x01\x01R\x04user2\xbe\x05\n\x0bUserService\x12s\n\x10\x41ssignRoleToUser\x12..meshtrade.iam.user.v1.AssignRoleToUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x12i\n\x07GetUser\x12%.meshtrade.iam.user.v1.GetUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12z\n\tListUsers\x12\'.meshtrade.iam.user.v1.ListUsersRequest\x1a(.meshtrade.iam.user.v1.ListUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12\x80\x01\n\x0bSearchUsers\x12).meshtrade.iam.user.v1.SearchUsersRequest\x1a*.meshtrade.iam.user.v1.SearchUsersResponse\"\x1a\xa0\xb5\x18\x01\xaa\xb5\x18\x12\n\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12g\n\nCreateUser\x12(.meshtrade.iam.user.v1.CreateUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x12g\n\nUpdateUser\x12(.meshtrade.iam.user.v1.UpdateUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xa0\xb5\x18\x02\xaa\xb5\x18\n\n\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x42O\n\x1c\x63o.meshtrade.api.iam.user.v1Z/github.com/meshtrade/api/go/iam/user/v1;user_v1b\x06proto3')
33
33
 
34
34
  _globals = globals()
35
35
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -40,7 +40,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
40
40
  _globals['_ASSIGNROLETOUSERREQUEST'].fields_by_name['name']._loaded_options = None
41
41
  _globals['_ASSIGNROLETOUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H5r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001 '
42
42
  _globals['_ASSIGNROLETOUSERREQUEST'].fields_by_name['role']._loaded_options = None
43
- _globals['_ASSIGNROLETOUSERREQUEST'].fields_by_name['role']._serialized_options = b'\272HCr>29^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/1[0-9]{6}$\230\001)\310\001\001'
43
+ _globals['_ASSIGNROLETOUSERREQUEST'].fields_by_name['role']._serialized_options = b'\272HGrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\230\001)\310\001\001'
44
44
  _globals['_GETUSERREQUEST'].fields_by_name['name']._loaded_options = None
45
45
  _globals['_GETUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001 \310\001\001'
46
46
  _globals['_LISTUSERSREQUEST_SORTING'].fields_by_name['field']._loaded_options = None
@@ -64,25 +64,25 @@ if not _descriptor._USE_C_DESCRIPTORS:
64
64
  _globals['_USERSERVICE'].methods_by_name['UpdateUser']._loaded_options = None
65
65
  _globals['_USERSERVICE'].methods_by_name['UpdateUser']._serialized_options = b'\240\265\030\002\252\265\030\n\n\010\300\215\267\001\306\215\267\001'
66
66
  _globals['_ASSIGNROLETOUSERREQUEST']._serialized_start=232
67
- _globals['_ASSIGNROLETOUSERREQUEST']._serialized_end=427
68
- _globals['_GETUSERREQUEST']._serialized_start=429
69
- _globals['_GETUSERREQUEST']._serialized_end=526
70
- _globals['_LISTUSERSREQUEST']._serialized_start=529
71
- _globals['_LISTUSERSREQUEST']._serialized_end=805
72
- _globals['_LISTUSERSREQUEST_SORTING']._serialized_start=625
73
- _globals['_LISTUSERSREQUEST_SORTING']._serialized_end=805
74
- _globals['_LISTUSERSRESPONSE']._serialized_start=807
75
- _globals['_LISTUSERSRESPONSE']._serialized_end=877
76
- _globals['_SEARCHUSERSREQUEST']._serialized_start=880
77
- _globals['_SEARCHUSERSREQUEST']._serialized_end=1182
78
- _globals['_SEARCHUSERSREQUEST_SORTING']._serialized_start=625
79
- _globals['_SEARCHUSERSREQUEST_SORTING']._serialized_end=805
80
- _globals['_SEARCHUSERSRESPONSE']._serialized_start=1184
81
- _globals['_SEARCHUSERSRESPONSE']._serialized_end=1256
82
- _globals['_CREATEUSERREQUEST']._serialized_start=1258
83
- _globals['_CREATEUSERREQUEST']._serialized_end=1334
84
- _globals['_UPDATEUSERREQUEST']._serialized_start=1336
85
- _globals['_UPDATEUSERREQUEST']._serialized_end=1412
86
- _globals['_USERSERVICE']._serialized_start=1415
87
- _globals['_USERSERVICE']._serialized_end=2117
67
+ _globals['_ASSIGNROLETOUSERREQUEST']._serialized_end=431
68
+ _globals['_GETUSERREQUEST']._serialized_start=433
69
+ _globals['_GETUSERREQUEST']._serialized_end=530
70
+ _globals['_LISTUSERSREQUEST']._serialized_start=533
71
+ _globals['_LISTUSERSREQUEST']._serialized_end=809
72
+ _globals['_LISTUSERSREQUEST_SORTING']._serialized_start=629
73
+ _globals['_LISTUSERSREQUEST_SORTING']._serialized_end=809
74
+ _globals['_LISTUSERSRESPONSE']._serialized_start=811
75
+ _globals['_LISTUSERSRESPONSE']._serialized_end=881
76
+ _globals['_SEARCHUSERSREQUEST']._serialized_start=884
77
+ _globals['_SEARCHUSERSREQUEST']._serialized_end=1186
78
+ _globals['_SEARCHUSERSREQUEST_SORTING']._serialized_start=629
79
+ _globals['_SEARCHUSERSREQUEST_SORTING']._serialized_end=809
80
+ _globals['_SEARCHUSERSRESPONSE']._serialized_start=1188
81
+ _globals['_SEARCHUSERSRESPONSE']._serialized_end=1260
82
+ _globals['_CREATEUSERREQUEST']._serialized_start=1262
83
+ _globals['_CREATEUSERREQUEST']._serialized_end=1338
84
+ _globals['_UPDATEUSERREQUEST']._serialized_start=1340
85
+ _globals['_UPDATEUSERREQUEST']._serialized_end=1416
86
+ _globals['_USERSERVICE']._serialized_start=1419
87
+ _globals['_USERSERVICE']._serialized_end=2121
88
88
  # @@protoc_insertion_point(module_scope)
@@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
25
25
  from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
26
26
 
27
27
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/user/v1/user.proto\x12\x15meshtrade.iam.user.v1\x1a\x1b\x62uf/validate/validate.proto\"\x99\x03\n\x04User\x12\xba\x01\n\x04name\x18\x01 \x01(\tB\xa5\x01\xbaH\xa1\x01\xba\x01\x9d\x01\n\x14name.format.optional\x12\x32name must be empty or in the format users/{ULIDv2}\x1aQsize(this) == 0 || this.matches(\'^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\')R\x04name\x12R\n\x05owner\x18\x02 \x01(\tB<\xbaH9r42/^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01!\xc8\x01\x01R\x05owner\x12 \n\x05\x65mail\x18\x04 \x01(\tB\n\xbaH\x07r\x02`\x01\xc8\x01\x01R\x05\x65mail\x12^\n\x05roles\x18\x06 \x03(\tBH\xbaHE\x92\x01\x42\"@r>29^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/1[0-9]{6}$\x98\x01)R\x05rolesBO\n\x1c\x63o.meshtrade.api.iam.user.v1Z/github.com/meshtrade/api/go/iam/user/v1;user_v1b\x06proto3')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/user/v1/user.proto\x12\x15meshtrade.iam.user.v1\x1a\x1b\x62uf/validate/validate.proto\"\x9d\x03\n\x04User\x12\xba\x01\n\x04name\x18\x01 \x01(\tB\xa5\x01\xbaH\xa1\x01\xba\x01\x9d\x01\n\x14name.format.optional\x12\x32name must be empty or in the format users/{ULIDv2}\x1aQsize(this) == 0 || this.matches(\'^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\')R\x04name\x12R\n\x05owner\x18\x02 \x01(\tB<\xbaH9r42/^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01!\xc8\x01\x01R\x05owner\x12 \n\x05\x65mail\x18\x04 \x01(\tB\n\xbaH\x07r\x02`\x01\xc8\x01\x01R\x05\x65mail\x12\x62\n\x05roles\x18\x06 \x03(\tBL\xbaHI\x92\x01\x46\"DrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\x98\x01)R\x05rolesBO\n\x1c\x63o.meshtrade.api.iam.user.v1Z/github.com/meshtrade/api/go/iam/user/v1;user_v1b\x06proto3')
29
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -40,7 +40,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
40
40
  _globals['_USER'].fields_by_name['email']._loaded_options = None
41
41
  _globals['_USER'].fields_by_name['email']._serialized_options = b'\272H\007r\002`\001\310\001\001'
42
42
  _globals['_USER'].fields_by_name['roles']._loaded_options = None
43
- _globals['_USER'].fields_by_name['roles']._serialized_options = b'\272HE\222\001B\"@r>29^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/1[0-9]{6}$\230\001)'
43
+ _globals['_USER'].fields_by_name['roles']._serialized_options = b'\272HI\222\001F\"DrB2=^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/[1-9][0-9]{6}$\230\001)'
44
44
  _globals['_USER']._serialized_start=89
45
- _globals['_USER']._serialized_end=498
45
+ _globals['_USER']._serialized_end=502
46
46
  # @@protoc_insertion_point(module_scope)
@@ -13,8 +13,22 @@
13
13
  # ===================================================================
14
14
 
15
15
  # Generated protobuf imports
16
- from .transaction_action_pb2 import TransactionAction
17
16
  from .transaction_state_pb2 import TransactionState
17
+ from .service_pb2 import (
18
+ GetTransactionStateRequest,
19
+ GetTransactionStateResponse,
20
+ MonitorTransactionStateRequest,
21
+ MonitorTransactionStateResponse,
22
+ )
23
+ from .transaction_action_pb2 import TransactionAction
24
+
25
+ # Generated service imports
26
+ from .service_meshpy import (
27
+ TransactionService,
28
+ TransactionServiceGRPCClient,
29
+ TransactionServiceGRPCClientInterface,
30
+ )
31
+ from .service_options_meshpy import ClientOptions
18
32
 
19
33
  # ===================================================================
20
34
  # END OF AUTO-GENERATED SECTION
@@ -36,6 +50,14 @@ from .transaction_state_pb2 import TransactionState
36
50
  # Combined auto-generated and manual exports
37
51
  __all__ = [
38
52
  # Generated exports
53
+ "ClientOptions",
54
+ "GetTransactionStateRequest",
55
+ "GetTransactionStateResponse",
56
+ "MonitorTransactionStateRequest",
57
+ "MonitorTransactionStateResponse",
39
58
  "TransactionAction",
59
+ "TransactionService",
60
+ "TransactionServiceGRPCClient",
61
+ "TransactionServiceGRPCClientInterface",
40
62
  "TransactionState",
41
63
  ]