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.
- meshtrade/common/__init__.py +2 -4
- meshtrade/common/config.py +3 -4
- meshtrade/common/grpc_client.py +140 -0
- meshtrade/common/service_options.py +46 -0
- meshtrade/compliance/client/v1/__init__.py +0 -2
- meshtrade/compliance/client/v1/client_pb2.py +15 -4
- meshtrade/compliance/client/v1/client_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/company_pb2.py +25 -8
- meshtrade/compliance/client/v1/company_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/company_representative_pb2.py +9 -4
- meshtrade/compliance/client/v1/company_representative_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/company_representative_role_pb2.py +2 -2
- meshtrade/compliance/client/v1/fund_pb2.py +13 -4
- meshtrade/compliance/client/v1/fund_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/identification_document_type_pb2.py +2 -2
- meshtrade/compliance/client/v1/industry_classification_pb2.py +2 -2
- meshtrade/compliance/client/v1/natural_person_connection_type_pb2.py +2 -2
- meshtrade/compliance/client/v1/natural_person_pb2.py +19 -4
- meshtrade/compliance/client/v1/natural_person_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/pep_status_pb2.py +2 -2
- meshtrade/compliance/client/v1/service_meshpy.py +2 -1
- meshtrade/compliance/client/v1/service_pb2.py +21 -17
- meshtrade/compliance/client/v1/service_pb2.pyi +2 -2
- meshtrade/compliance/client/v1/source_of_income_and_wealth_pb2.py +2 -2
- meshtrade/compliance/client/v1/tax_residency_pb2.py +9 -4
- meshtrade/compliance/client/v1/tax_residency_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/trust_pb2.py +13 -4
- meshtrade/compliance/client/v1/trust_pb2.pyi +1 -0
- meshtrade/compliance/client/v1/verification_status_pb2.py +2 -2
- meshtrade/iam/api_user/v1/__init__.py +34 -26
- meshtrade/iam/api_user/v1/api_credentials_pb2.py +5 -5
- meshtrade/iam/api_user/v1/api_user_pb2.py +13 -9
- meshtrade/iam/api_user/v1/api_user_pb2.pyi +2 -4
- meshtrade/iam/api_user/v1/api_user_state_machine.py +104 -0
- meshtrade/iam/api_user/v1/service_meshpy.py +96 -61
- meshtrade/iam/api_user/v1/service_pb2.py +61 -40
- meshtrade/iam/api_user/v1/service_pb2.pyi +26 -11
- meshtrade/iam/api_user/v1/service_pb2_grpc.py +179 -135
- meshtrade/iam/group/v1/__init__.py +4 -2
- meshtrade/iam/group/v1/group_pb2.py +13 -4
- meshtrade/iam/group/v1/group_pb2.pyi +9 -2
- meshtrade/iam/group/v1/service_meshpy.py +41 -6
- meshtrade/iam/group/v1/service_pb2.py +47 -20
- meshtrade/iam/group/v1/service_pb2.pyi +46 -13
- meshtrade/iam/group/v1/service_pb2_grpc.py +151 -16
- meshtrade/iam/role/v1/__init__.py +17 -4
- meshtrade/iam/role/v1/role.py +162 -11
- meshtrade/iam/role/v1/role_pb2.py +4 -7
- meshtrade/iam/role/v1/role_pb2.pyi +53 -23
- meshtrade/iam/user/v1/__init__.py +22 -4
- meshtrade/iam/user/v1/service_meshpy.py +129 -7
- meshtrade/iam/user/v1/service_pb2.py +66 -16
- meshtrade/iam/user/v1/service_pb2.pyi +81 -9
- meshtrade/iam/user/v1/service_pb2_grpc.py +385 -14
- meshtrade/iam/user/v1/user_pb2.py +13 -4
- meshtrade/iam/user/v1/user_pb2.pyi +7 -2
- meshtrade/ledger/transaction/v1/__init__.py +25 -1
- meshtrade/ledger/transaction/v1/service_meshpy.py +176 -0
- meshtrade/ledger/transaction/v1/service_pb2.py +56 -0
- meshtrade/ledger/transaction/v1/service_pb2.pyi +32 -0
- meshtrade/ledger/transaction/v1/service_pb2_grpc.py +131 -0
- meshtrade/ledger/transaction/v1/transaction_action_pb2.py +2 -2
- meshtrade/ledger/transaction/v1/transaction_state_machine.py +75 -0
- meshtrade/ledger/transaction/v1/transaction_state_pb2.py +2 -2
- meshtrade/{reporting/income_report → market_data/price}/v1/__init__.py +11 -20
- meshtrade/market_data/price/v1/price_pb2.py +40 -0
- meshtrade/market_data/price/v1/price_pb2.pyi +23 -0
- meshtrade/market_data/price/v1/service_meshpy.py +152 -0
- meshtrade/market_data/price/v1/service_pb2.py +49 -0
- meshtrade/market_data/price/v1/service_pb2.pyi +18 -0
- meshtrade/market_data/price/v1/service_pb2_grpc.py +84 -0
- meshtrade/option/method_options/v1/__init__.py +41 -0
- meshtrade/option/method_options/v1/method_options_pb2.py +43 -0
- meshtrade/option/method_options/v1/method_options_pb2.pyi +40 -0
- meshtrade/reporting/account_report/v1/__init__.py +66 -0
- meshtrade/reporting/account_report/v1/account_report_pb2.py +46 -0
- meshtrade/reporting/account_report/v1/account_report_pb2.pyi +49 -0
- meshtrade/reporting/{income_report → account_report}/v1/disclaimer_pb2.py +7 -7
- meshtrade/reporting/account_report/v1/fee_entry_pb2.py +39 -0
- meshtrade/reporting/account_report/v1/fee_entry_pb2.pyi +26 -0
- meshtrade/reporting/account_report/v1/fee_entry_pb2_grpc.py +4 -0
- meshtrade/reporting/account_report/v1/income_entry.py +35 -0
- meshtrade/reporting/account_report/v1/income_entry_pb2.py +42 -0
- meshtrade/reporting/{income_report/v1/entry_pb2.pyi → account_report/v1/income_entry_pb2.pyi} +18 -10
- meshtrade/reporting/account_report/v1/income_entry_pb2_grpc.py +4 -0
- meshtrade/reporting/{income_report → account_report}/v1/service_meshpy.py +37 -36
- meshtrade/reporting/account_report/v1/service_pb2.py +72 -0
- meshtrade/reporting/account_report/v1/service_pb2.pyi +43 -0
- meshtrade/reporting/account_report/v1/service_pb2_grpc.py +161 -0
- meshtrade/reporting/account_report/v1/trading_statement_entry_pb2.py +39 -0
- meshtrade/reporting/account_report/v1/trading_statement_entry_pb2.pyi +30 -0
- meshtrade/reporting/account_report/v1/trading_statement_entry_pb2_grpc.py +4 -0
- meshtrade/studio/instrument/v1/__init__.py +43 -0
- meshtrade/studio/instrument/v1/instrument_pb2.py +45 -0
- meshtrade/studio/instrument/v1/instrument_pb2.pyi +20 -0
- meshtrade/studio/instrument/v1/instrument_pb2_grpc.py +4 -0
- meshtrade/studio/instrument/v1/instrument_type_pb2.py +37 -0
- meshtrade/studio/instrument/v1/instrument_type_pb2.pyi +64 -0
- meshtrade/studio/instrument/v1/instrument_type_pb2_grpc.py +4 -0
- meshtrade/studio/instrument/v1/unit_pb2.py +37 -0
- meshtrade/studio/instrument/v1/unit_pb2.pyi +46 -0
- meshtrade/studio/instrument/v1/unit_pb2_grpc.py +4 -0
- meshtrade/trading/limit_order/v1/__init__.py +22 -4
- meshtrade/trading/limit_order/v1/limit_order_pb2.py +24 -4
- meshtrade/trading/limit_order/v1/limit_order_pb2.pyi +55 -5
- meshtrade/trading/limit_order/v1/service_meshpy.py +113 -2
- meshtrade/trading/limit_order/v1/service_pb2.py +49 -9
- meshtrade/trading/limit_order/v1/service_pb2.pyi +67 -7
- meshtrade/trading/limit_order/v1/service_pb2_grpc.py +321 -4
- meshtrade/trading/market_order/v1/__init__.py +0 -2
- meshtrade/trading/market_order/v1/market_order_pb2.py +2 -2
- meshtrade/trading/market_order/v1/service_meshpy.py +3 -2
- meshtrade/trading/market_order/v1/service_pb2.py +8 -9
- meshtrade/trading/market_order/v1/service_pb2.pyi +1 -2
- meshtrade/type/v1/__init__.py +82 -12
- meshtrade/type/v1/address_pb2.py +2 -2
- meshtrade/type/v1/amount.py +429 -5
- meshtrade/type/v1/amount_pb2.py +2 -2
- meshtrade/type/v1/contact_details_pb2.py +2 -2
- meshtrade/type/v1/date_pb2.py +2 -2
- meshtrade/type/v1/decimal_built_in_conversions.py +8 -3
- meshtrade/type/v1/decimal_operations.py +354 -0
- meshtrade/type/v1/decimal_pb2.py +2 -2
- meshtrade/type/v1/ledger.py +76 -1
- meshtrade/type/v1/ledger_pb2.py +2 -2
- meshtrade/type/v1/sorting_pb2.py +2 -2
- meshtrade/type/v1/time_of_day_pb2.py +2 -2
- meshtrade/type/v1/token.py +144 -0
- meshtrade/type/v1/token_pb2.py +2 -2
- meshtrade/wallet/account/v1/__init__.py +21 -3
- meshtrade/wallet/account/v1/account_pb2.py +28 -4
- meshtrade/wallet/account/v1/account_pb2.pyi +57 -3
- meshtrade/wallet/account/v1/service_meshpy.py +72 -1
- meshtrade/wallet/account/v1/service_pb2.py +67 -23
- meshtrade/wallet/account/v1/service_pb2.pyi +81 -21
- meshtrade/wallet/account/v1/service_pb2_grpc.py +242 -8
- {meshtrade-1.0.1.dist-info → meshtrade-1.29.0.dist-info}/METADATA +1 -1
- meshtrade-1.29.0.dist-info/RECORD +217 -0
- meshtrade/compliance/client/v1/service_options_meshpy.py +0 -65
- meshtrade/iam/api_user/v1/service.py +0 -58
- meshtrade/iam/api_user/v1/service_options_meshpy.py +0 -65
- meshtrade/iam/group/v1/service_options_meshpy.py +0 -65
- meshtrade/iam/user/v1/service_options_meshpy.py +0 -65
- meshtrade/option/v1/method_type_pb2.py +0 -38
- meshtrade/option/v1/method_type_pb2.pyi +0 -17
- meshtrade/reporting/income_report/v1/entry_pb2.py +0 -42
- meshtrade/reporting/income_report/v1/income_report_pb2.py +0 -44
- meshtrade/reporting/income_report/v1/income_report_pb2.pyi +0 -42
- meshtrade/reporting/income_report/v1/service_options_meshpy.py +0 -65
- meshtrade/reporting/income_report/v1/service_pb2.py +0 -58
- meshtrade/reporting/income_report/v1/service_pb2.pyi +0 -37
- meshtrade/reporting/income_report/v1/service_pb2_grpc.py +0 -170
- meshtrade/trading/limit_order/v1/service_options_meshpy.py +0 -65
- meshtrade/trading/market_order/v1/service_options_meshpy.py +0 -65
- meshtrade/wallet/account/v1/service_options_meshpy.py +0 -65
- meshtrade-1.0.1.dist-info/RECORD +0 -191
- /meshtrade/{option/v1/method_type_pb2_grpc.py → market_data/price/v1/price_pb2_grpc.py} +0 -0
- /meshtrade/{reporting/income_report/v1/disclaimer_pb2_grpc.py → option/method_options/v1/method_options_pb2_grpc.py} +0 -0
- /meshtrade/reporting/{income_report/v1/entry_pb2_grpc.py → account_report/v1/account_report_pb2_grpc.py} +0 -0
- /meshtrade/reporting/{income_report → account_report}/v1/disclaimer_pb2.pyi +0 -0
- /meshtrade/reporting/{income_report/v1/income_report_pb2_grpc.py → account_report/v1/disclaimer_pb2_grpc.py} +0 -0
- {meshtrade-1.0.1.dist-info → meshtrade-1.29.0.dist-info}/WHEEL +0 -0
- {meshtrade-1.0.1.dist-info → meshtrade-1.29.0.dist-info}/top_level.txt +0 -0
meshtrade/iam/role/v1/role.py
CHANGED
|
@@ -1,23 +1,174 @@
|
|
|
1
|
-
"""Role
|
|
1
|
+
"""Role utility functions for Mesh API.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This module provides helper functions for working with Role enums and their resource names.
|
|
4
|
+
All functions use the 4-part integer format: groups/{groupID}/roles/{roleNumber}
|
|
5
|
+
for cross-language compatibility.
|
|
6
|
+
"""
|
|
4
7
|
|
|
8
|
+
from meshtrade.iam.role.v1.role_pb2 import Role
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
|
|
11
|
+
def role_is_valid(role: Role) -> bool:
|
|
12
|
+
"""Check if role value is valid (within enum range).
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
role: Role enum value (integer)
|
|
16
|
+
|
|
17
|
+
Returns:
|
|
18
|
+
True if role is a valid enum value
|
|
19
|
+
|
|
20
|
+
Example:
|
|
21
|
+
>>> role_is_valid(Role.ROLE_IAM_ADMIN)
|
|
22
|
+
True
|
|
23
|
+
>>> role_is_valid(99999999)
|
|
24
|
+
False
|
|
25
|
+
"""
|
|
26
|
+
return role in Role.values()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def role_is_valid_and_specified(role: Role) -> bool:
|
|
30
|
+
"""Check if role is valid and not UNSPECIFIED.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
role: Role enum value (integer)
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
True if role is valid and not ROLE_UNSPECIFIED
|
|
37
|
+
|
|
38
|
+
Example:
|
|
39
|
+
>>> role_is_valid_and_specified(Role.ROLE_IAM_ADMIN)
|
|
40
|
+
True
|
|
41
|
+
>>> role_is_valid_and_specified(Role.ROLE_UNSPECIFIED)
|
|
42
|
+
False
|
|
43
|
+
"""
|
|
44
|
+
return role_is_valid(role) and role != Role.ROLE_UNSPECIFIED
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def role_full_resource_name_from_group_id(role: Role, group_id: str) -> str:
|
|
48
|
+
"""Generate full resource name from role and group ID.
|
|
49
|
+
|
|
50
|
+
Format: groups/{group_id}/roles/{role_int}
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
role: Role enum value (integer)
|
|
54
|
+
group_id: Group ID (UUID)
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
Full resource name string using integer format
|
|
58
|
+
|
|
59
|
+
Example:
|
|
60
|
+
>>> role_full_resource_name_from_group_id(Role.ROLE_IAM_ADMIN, "01DD32GZ7R0000000000000001")
|
|
61
|
+
'groups/01DD32GZ7R0000000000000001/roles/3000000'
|
|
62
|
+
"""
|
|
63
|
+
return f"groups/{group_id}/roles/{int(role)}"
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def role_full_resource_name_from_group(role: Role, group: str) -> str:
|
|
67
|
+
"""Generate full resource name from role and group resource name.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
role: Role enum value (integer)
|
|
71
|
+
group: Group resource name (e.g., "groups/{id}")
|
|
72
|
+
|
|
73
|
+
Returns:
|
|
74
|
+
Full resource name string using integer format
|
|
75
|
+
|
|
76
|
+
Raises:
|
|
77
|
+
ValueError: If group format is invalid
|
|
78
|
+
|
|
79
|
+
Example:
|
|
80
|
+
>>> role_full_resource_name_from_group(Role.ROLE_IAM_ADMIN, "groups/01DD32GZ7R0000000000000001")
|
|
81
|
+
'groups/01DD32GZ7R0000000000000001/roles/3000000'
|
|
7
82
|
"""
|
|
8
|
-
|
|
83
|
+
if not group.startswith("groups/"):
|
|
84
|
+
raise ValueError(f"invalid group format, expected groups/{{groupID}}, got: {group}")
|
|
85
|
+
|
|
86
|
+
group_id = group[len("groups/") :]
|
|
87
|
+
if not group_id:
|
|
88
|
+
raise ValueError(f"group ID cannot be empty in group resource name: {group}")
|
|
89
|
+
|
|
90
|
+
return role_full_resource_name_from_group_id(role, group_id)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def role_from_full_resource_name(full_resource_name: str) -> Role:
|
|
94
|
+
"""Extract Role from full resource name.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
full_resource_name: Full resource name (e.g., "groups/{id}/roles/{role_int}")
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
Role enum value (integer), or ROLE_UNSPECIFIED if parsing fails
|
|
101
|
+
|
|
102
|
+
Example:
|
|
103
|
+
>>> role_from_full_resource_name("groups/01DD32GZ7R0000000000000001/roles/3000000")
|
|
104
|
+
3000000
|
|
105
|
+
>>> role_from_full_resource_name("invalid/format")
|
|
106
|
+
0
|
|
107
|
+
"""
|
|
108
|
+
from typing import cast
|
|
109
|
+
|
|
110
|
+
try:
|
|
111
|
+
_, role_int = parse_role_parts(full_resource_name)
|
|
112
|
+
# Python protobuf enums are integers, safe to cast
|
|
113
|
+
return cast(Role, role_int)
|
|
114
|
+
except ValueError:
|
|
115
|
+
return Role.ROLE_UNSPECIFIED
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def parse_role_parts(role_full_resource_name: str) -> tuple[str, int]:
|
|
119
|
+
"""Parse full resource name into group ID and Role.
|
|
9
120
|
|
|
10
|
-
|
|
121
|
+
Expected format: groups/{group_id}/roles/{role_int}
|
|
11
122
|
|
|
12
123
|
Args:
|
|
13
|
-
|
|
14
|
-
group_name: The group name (e.g., "groups/01DD32GZ7R0000000000000001")
|
|
124
|
+
role_full_resource_name: Full resource name
|
|
15
125
|
|
|
16
126
|
Returns:
|
|
17
|
-
|
|
127
|
+
Tuple of (group_id, role_int)
|
|
128
|
+
|
|
129
|
+
Raises:
|
|
130
|
+
ValueError: If format is invalid or role number cannot be parsed
|
|
131
|
+
|
|
132
|
+
Example:
|
|
133
|
+
>>> parse_role_parts("groups/01DD32GZ7R0000000000000001/roles/3000000")
|
|
134
|
+
('01DD32GZ7R0000000000000001', 3000000)
|
|
135
|
+
"""
|
|
136
|
+
parts = role_full_resource_name.split("/")
|
|
137
|
+
if len(parts) != 4 or parts[0] != "groups" or parts[2] != "roles":
|
|
138
|
+
raise ValueError(f"invalid role format, expected groups/{{groupID}}/roles/{{role}}, got {role_full_resource_name}")
|
|
139
|
+
|
|
140
|
+
group_id = parts[1]
|
|
141
|
+
if not group_id:
|
|
142
|
+
raise ValueError("group ID cannot be empty")
|
|
143
|
+
|
|
144
|
+
try:
|
|
145
|
+
role_int = int(parts[3])
|
|
146
|
+
except ValueError as e:
|
|
147
|
+
raise ValueError(f"error parsing role enum value '{parts[3]}'") from e
|
|
148
|
+
|
|
149
|
+
if role_int < 0:
|
|
150
|
+
raise ValueError(f"invalid role number in full resource name: {role_full_resource_name}")
|
|
151
|
+
|
|
152
|
+
return group_id, role_int
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def must_parse_role_parts(role_full_resource_name: str) -> tuple[str, int]:
|
|
156
|
+
"""Parse role parts, raising error on failure.
|
|
157
|
+
|
|
158
|
+
This is an alias for parse_role_parts.
|
|
159
|
+
Both functions raise ValueError on parsing errors.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
role_full_resource_name: Full resource name
|
|
163
|
+
|
|
164
|
+
Returns:
|
|
165
|
+
Tuple of (group_id, role_int)
|
|
166
|
+
|
|
167
|
+
Raises:
|
|
168
|
+
ValueError: If format is invalid
|
|
18
169
|
|
|
19
170
|
Example:
|
|
20
|
-
>>>
|
|
21
|
-
|
|
171
|
+
>>> must_parse_role_parts("groups/01DD32GZ7R0000000000000001/roles/3000000")
|
|
172
|
+
('01DD32GZ7R0000000000000001', 3000000)
|
|
22
173
|
"""
|
|
23
|
-
return
|
|
174
|
+
return parse_role_parts(role_full_resource_name)
|
|
@@ -22,19 +22,16 @@ _runtime_version.ValidateProtobufRuntimeVersion(
|
|
|
22
22
|
_sym_db = _symbol_database.Default()
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
|
|
26
25
|
|
|
27
26
|
|
|
28
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/role/v1/role.proto\x12\x15meshtrade.iam.role.v1\
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtrade/iam/role/v1/role.proto\x12\x15meshtrade.iam.role.v1*\xc7\x08\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%\n\x1eROLE_TRADING_LIMIT_ORDER_ADMIN\x10\xc2\x96\xb1\x02\x12&\n\x1fROLE_TRADING_LIMIT_ORDER_VIEWER\x10\xc3\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\x12\x1d\n\x16ROLE_MARKET_DATA_ADMIN\x10\x80\xa4\xe8\x03\x12\x1e\n\x17ROLE_MARKET_DATA_VIEWER\x10\x81\xa4\xe8\x03\x12#\n\x1cROLE_MARKET_DATA_PRICE_ADMIN\x10\x82\xa4\xe8\x03\x12$\n\x1dROLE_MARKET_DATA_PRICE_VIEWER\x10\x83\xa4\xe8\x03\x42O\n\x1c\x63o.meshtrade.api.iam.role.v1Z/github.com/meshtrade/api/go/iam/role/v1;role_v1b\x06proto3')
|
|
29
28
|
|
|
30
29
|
_globals = globals()
|
|
31
30
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
32
31
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtrade.iam.role.v1.role_pb2', _globals)
|
|
33
32
|
if not _descriptor._USE_C_DESCRIPTORS:
|
|
34
33
|
_globals['DESCRIPTOR']._loaded_options = None
|
|
35
|
-
_globals['DESCRIPTOR']._serialized_options = b'\n\034co.meshtrade.api.iam.role.v1Z
|
|
36
|
-
_globals['_ROLE']._serialized_start=
|
|
37
|
-
_globals['_ROLE']._serialized_end=
|
|
38
|
-
_globals['_ROLELIST']._serialized_start=93
|
|
39
|
-
_globals['_ROLELIST']._serialized_end=154
|
|
34
|
+
_globals['DESCRIPTOR']._serialized_options = b'\n\034co.meshtrade.api.iam.role.v1Z/github.com/meshtrade/api/go/iam/role/v1;role_v1'
|
|
35
|
+
_globals['_ROLE']._serialized_start=60
|
|
36
|
+
_globals['_ROLE']._serialized_end=1155
|
|
40
37
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
from google.protobuf import descriptor_pb2 as _descriptor_pb2
|
|
2
|
-
from google.protobuf.internal import containers as _containers
|
|
3
1
|
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
4
2
|
from google.protobuf import descriptor as _descriptor
|
|
5
|
-
from
|
|
6
|
-
from collections.abc import Iterable as _Iterable
|
|
7
|
-
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
|
|
3
|
+
from typing import ClassVar as _ClassVar
|
|
8
4
|
|
|
9
5
|
DESCRIPTOR: _descriptor.FileDescriptor
|
|
10
6
|
|
|
@@ -13,36 +9,70 @@ class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
13
9
|
ROLE_UNSPECIFIED: _ClassVar[Role]
|
|
14
10
|
ROLE_WALLET_ADMIN: _ClassVar[Role]
|
|
15
11
|
ROLE_WALLET_VIEWER: _ClassVar[Role]
|
|
12
|
+
ROLE_WALLET_ACCOUNT_ADMIN: _ClassVar[Role]
|
|
13
|
+
ROLE_WALLET_ACCOUNT_VIEWER: _ClassVar[Role]
|
|
16
14
|
ROLE_COMPLIANCE_ADMIN: _ClassVar[Role]
|
|
17
15
|
ROLE_COMPLIANCE_VIEWER: _ClassVar[Role]
|
|
16
|
+
ROLE_COMPLIANCE_CLIENT_ADMIN: _ClassVar[Role]
|
|
17
|
+
ROLE_COMPLIANCE_CLIENT_VIEWER: _ClassVar[Role]
|
|
18
18
|
ROLE_IAM_ADMIN: _ClassVar[Role]
|
|
19
19
|
ROLE_IAM_VIEWER: _ClassVar[Role]
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
ROLE_IAM_API_USER_ADMIN: _ClassVar[Role]
|
|
21
|
+
ROLE_IAM_API_USER_VIEWER: _ClassVar[Role]
|
|
22
|
+
ROLE_IAM_GROUP_ADMIN: _ClassVar[Role]
|
|
23
|
+
ROLE_IAM_GROUP_VIEWER: _ClassVar[Role]
|
|
24
|
+
ROLE_IAM_USER_ADMIN: _ClassVar[Role]
|
|
25
|
+
ROLE_IAM_USER_VIEWER: _ClassVar[Role]
|
|
26
|
+
ROLE_STUDIO_ADMIN: _ClassVar[Role]
|
|
27
|
+
ROLE_STUDIO_VIEWER: _ClassVar[Role]
|
|
28
|
+
ROLE_STUDIO_INSTRUMENT_ADMIN: _ClassVar[Role]
|
|
29
|
+
ROLE_STUDIO_INSTRUMENT_VIEWER: _ClassVar[Role]
|
|
22
30
|
ROLE_TRADING_ADMIN: _ClassVar[Role]
|
|
23
31
|
ROLE_TRADING_VIEWER: _ClassVar[Role]
|
|
24
|
-
|
|
25
|
-
|
|
32
|
+
ROLE_TRADING_LIMIT_ORDER_ADMIN: _ClassVar[Role]
|
|
33
|
+
ROLE_TRADING_LIMIT_ORDER_VIEWER: _ClassVar[Role]
|
|
34
|
+
ROLE_REPORTING_ADMIN: _ClassVar[Role]
|
|
35
|
+
ROLE_REPORTING_VIEWER: _ClassVar[Role]
|
|
36
|
+
ROLE_LEDGER_ADMIN: _ClassVar[Role]
|
|
37
|
+
ROLE_LEDGER_VIEWER: _ClassVar[Role]
|
|
38
|
+
ROLE_LEDGER_TRANSACTION_ADMIN: _ClassVar[Role]
|
|
39
|
+
ROLE_LEDGER_TRANSACTION_VIEWER: _ClassVar[Role]
|
|
40
|
+
ROLE_MARKET_DATA_ADMIN: _ClassVar[Role]
|
|
41
|
+
ROLE_MARKET_DATA_VIEWER: _ClassVar[Role]
|
|
42
|
+
ROLE_MARKET_DATA_PRICE_ADMIN: _ClassVar[Role]
|
|
43
|
+
ROLE_MARKET_DATA_PRICE_VIEWER: _ClassVar[Role]
|
|
26
44
|
ROLE_UNSPECIFIED: Role
|
|
27
45
|
ROLE_WALLET_ADMIN: Role
|
|
28
46
|
ROLE_WALLET_VIEWER: Role
|
|
47
|
+
ROLE_WALLET_ACCOUNT_ADMIN: Role
|
|
48
|
+
ROLE_WALLET_ACCOUNT_VIEWER: Role
|
|
29
49
|
ROLE_COMPLIANCE_ADMIN: Role
|
|
30
50
|
ROLE_COMPLIANCE_VIEWER: Role
|
|
51
|
+
ROLE_COMPLIANCE_CLIENT_ADMIN: Role
|
|
52
|
+
ROLE_COMPLIANCE_CLIENT_VIEWER: Role
|
|
31
53
|
ROLE_IAM_ADMIN: Role
|
|
32
54
|
ROLE_IAM_VIEWER: Role
|
|
33
|
-
|
|
34
|
-
|
|
55
|
+
ROLE_IAM_API_USER_ADMIN: Role
|
|
56
|
+
ROLE_IAM_API_USER_VIEWER: Role
|
|
57
|
+
ROLE_IAM_GROUP_ADMIN: Role
|
|
58
|
+
ROLE_IAM_GROUP_VIEWER: Role
|
|
59
|
+
ROLE_IAM_USER_ADMIN: Role
|
|
60
|
+
ROLE_IAM_USER_VIEWER: Role
|
|
61
|
+
ROLE_STUDIO_ADMIN: Role
|
|
62
|
+
ROLE_STUDIO_VIEWER: Role
|
|
63
|
+
ROLE_STUDIO_INSTRUMENT_ADMIN: Role
|
|
64
|
+
ROLE_STUDIO_INSTRUMENT_VIEWER: Role
|
|
35
65
|
ROLE_TRADING_ADMIN: Role
|
|
36
66
|
ROLE_TRADING_VIEWER: Role
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
67
|
+
ROLE_TRADING_LIMIT_ORDER_ADMIN: Role
|
|
68
|
+
ROLE_TRADING_LIMIT_ORDER_VIEWER: Role
|
|
69
|
+
ROLE_REPORTING_ADMIN: Role
|
|
70
|
+
ROLE_REPORTING_VIEWER: Role
|
|
71
|
+
ROLE_LEDGER_ADMIN: Role
|
|
72
|
+
ROLE_LEDGER_VIEWER: Role
|
|
73
|
+
ROLE_LEDGER_TRANSACTION_ADMIN: Role
|
|
74
|
+
ROLE_LEDGER_TRANSACTION_VIEWER: Role
|
|
75
|
+
ROLE_MARKET_DATA_ADMIN: Role
|
|
76
|
+
ROLE_MARKET_DATA_VIEWER: Role
|
|
77
|
+
ROLE_MARKET_DATA_PRICE_ADMIN: Role
|
|
78
|
+
ROLE_MARKET_DATA_PRICE_VIEWER: Role
|
|
@@ -14,7 +14,18 @@
|
|
|
14
14
|
|
|
15
15
|
# Generated protobuf imports
|
|
16
16
|
from .user_pb2 import User
|
|
17
|
-
from .service_pb2 import
|
|
17
|
+
from .service_pb2 import (
|
|
18
|
+
AssignRolesToUserRequest,
|
|
19
|
+
CreateUserRequest,
|
|
20
|
+
GetUserByEmailRequest,
|
|
21
|
+
GetUserRequest,
|
|
22
|
+
ListUsersRequest,
|
|
23
|
+
ListUsersResponse,
|
|
24
|
+
RevokeRolesFromUserRequest,
|
|
25
|
+
SearchUsersRequest,
|
|
26
|
+
SearchUsersResponse,
|
|
27
|
+
UpdateUserRequest,
|
|
28
|
+
)
|
|
18
29
|
|
|
19
30
|
# Generated service imports
|
|
20
31
|
from .service_meshpy import (
|
|
@@ -22,7 +33,6 @@ from .service_meshpy import (
|
|
|
22
33
|
UserServiceGRPCClient,
|
|
23
34
|
UserServiceGRPCClientInterface,
|
|
24
35
|
)
|
|
25
|
-
from .service_options_meshpy import ClientOptions
|
|
26
36
|
|
|
27
37
|
# ===================================================================
|
|
28
38
|
# END OF AUTO-GENERATED SECTION
|
|
@@ -44,8 +54,16 @@ from .service_options_meshpy import ClientOptions
|
|
|
44
54
|
# Combined auto-generated and manual exports
|
|
45
55
|
__all__ = [
|
|
46
56
|
# Generated exports
|
|
47
|
-
"
|
|
48
|
-
"
|
|
57
|
+
"AssignRolesToUserRequest",
|
|
58
|
+
"CreateUserRequest",
|
|
59
|
+
"GetUserByEmailRequest",
|
|
60
|
+
"GetUserRequest",
|
|
61
|
+
"ListUsersRequest",
|
|
62
|
+
"ListUsersResponse",
|
|
63
|
+
"RevokeRolesFromUserRequest",
|
|
64
|
+
"SearchUsersRequest",
|
|
65
|
+
"SearchUsersResponse",
|
|
66
|
+
"UpdateUserRequest",
|
|
49
67
|
"User",
|
|
50
68
|
"UserService",
|
|
51
69
|
"UserServiceGRPCClient",
|
|
@@ -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,9 +17,18 @@ from meshtrade.common import BaseGRPCClient
|
|
|
16
17
|
from meshtrade.iam.api_user.v1.api_credentials import find_credentials
|
|
17
18
|
|
|
18
19
|
from .user_pb2 import User
|
|
19
|
-
from .
|
|
20
|
+
from meshtrade.common.service_options import ServiceOptions
|
|
20
21
|
from .service_pb2 import (
|
|
21
|
-
|
|
22
|
+
AssignRolesToUserRequest,
|
|
23
|
+
CreateUserRequest,
|
|
24
|
+
GetUserByEmailRequest,
|
|
25
|
+
GetUserRequest,
|
|
26
|
+
ListUsersRequest,
|
|
27
|
+
ListUsersResponse,
|
|
28
|
+
RevokeRolesFromUserRequest,
|
|
29
|
+
SearchUsersRequest,
|
|
30
|
+
SearchUsersResponse,
|
|
31
|
+
UpdateUserRequest,
|
|
22
32
|
)
|
|
23
33
|
from .service_pb2_grpc import UserServiceStub
|
|
24
34
|
|
|
@@ -129,21 +139,133 @@ class UserService(BaseGRPCClient):
|
|
|
129
139
|
tls=options.tls,
|
|
130
140
|
)
|
|
131
141
|
|
|
132
|
-
def
|
|
133
|
-
"""
|
|
142
|
+
def assign_roles_to_user(self, request: AssignRolesToUserRequest, timeout: Optional[timedelta] = None) -> User:
|
|
143
|
+
"""AssignRolesToUser method.
|
|
134
144
|
|
|
135
145
|
Args:
|
|
136
|
-
request: The
|
|
146
|
+
request: The AssignRolesToUser request message
|
|
137
147
|
timeout: Optional timeout override for this call
|
|
138
148
|
|
|
139
149
|
Returns:
|
|
140
|
-
The
|
|
150
|
+
The AssignRolesToUser response message
|
|
141
151
|
|
|
142
152
|
Raises:
|
|
143
153
|
grpc.RpcError: If the gRPC call fails
|
|
144
154
|
ValueError: If authentication credentials are missing
|
|
145
155
|
"""
|
|
146
|
-
return self._execute_method("
|
|
156
|
+
return self._execute_method("AssignRolesToUser", request, timeout)
|
|
157
|
+
|
|
158
|
+
def revoke_roles_from_user(self, request: RevokeRolesFromUserRequest, timeout: Optional[timedelta] = None) -> User:
|
|
159
|
+
"""RevokeRolesFromUser method.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
request: The RevokeRolesFromUser request message
|
|
163
|
+
timeout: Optional timeout override for this call
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
The RevokeRolesFromUser response message
|
|
167
|
+
|
|
168
|
+
Raises:
|
|
169
|
+
grpc.RpcError: If the gRPC call fails
|
|
170
|
+
ValueError: If authentication credentials are missing
|
|
171
|
+
"""
|
|
172
|
+
return self._execute_method("RevokeRolesFromUser", request, timeout)
|
|
173
|
+
|
|
174
|
+
def get_user(self, request: GetUserRequest, timeout: Optional[timedelta] = None) -> User:
|
|
175
|
+
"""GetUser method.
|
|
176
|
+
|
|
177
|
+
Args:
|
|
178
|
+
request: The GetUser request message
|
|
179
|
+
timeout: Optional timeout override for this call
|
|
180
|
+
|
|
181
|
+
Returns:
|
|
182
|
+
The GetUser response message
|
|
183
|
+
|
|
184
|
+
Raises:
|
|
185
|
+
grpc.RpcError: If the gRPC call fails
|
|
186
|
+
ValueError: If authentication credentials are missing
|
|
187
|
+
"""
|
|
188
|
+
return self._execute_method("GetUser", request, timeout)
|
|
189
|
+
|
|
190
|
+
def get_user_by_email(self, request: GetUserByEmailRequest, timeout: Optional[timedelta] = None) -> User:
|
|
191
|
+
"""GetUserByEmail method.
|
|
192
|
+
|
|
193
|
+
Args:
|
|
194
|
+
request: The GetUserByEmail request message
|
|
195
|
+
timeout: Optional timeout override for this call
|
|
196
|
+
|
|
197
|
+
Returns:
|
|
198
|
+
The GetUserByEmail 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("GetUserByEmail", request, timeout)
|
|
205
|
+
|
|
206
|
+
def list_users(self, request: ListUsersRequest, timeout: Optional[timedelta] = None) -> ListUsersResponse:
|
|
207
|
+
"""ListUsers method.
|
|
208
|
+
|
|
209
|
+
Args:
|
|
210
|
+
request: The ListUsers request message
|
|
211
|
+
timeout: Optional timeout override for this call
|
|
212
|
+
|
|
213
|
+
Returns:
|
|
214
|
+
The ListUsers response message
|
|
215
|
+
|
|
216
|
+
Raises:
|
|
217
|
+
grpc.RpcError: If the gRPC call fails
|
|
218
|
+
ValueError: If authentication credentials are missing
|
|
219
|
+
"""
|
|
220
|
+
return self._execute_method("ListUsers", request, timeout)
|
|
221
|
+
|
|
222
|
+
def search_users(self, request: SearchUsersRequest, timeout: Optional[timedelta] = None) -> SearchUsersResponse:
|
|
223
|
+
"""SearchUsers method.
|
|
224
|
+
|
|
225
|
+
Args:
|
|
226
|
+
request: The SearchUsers request message
|
|
227
|
+
timeout: Optional timeout override for this call
|
|
228
|
+
|
|
229
|
+
Returns:
|
|
230
|
+
The SearchUsers response message
|
|
231
|
+
|
|
232
|
+
Raises:
|
|
233
|
+
grpc.RpcError: If the gRPC call fails
|
|
234
|
+
ValueError: If authentication credentials are missing
|
|
235
|
+
"""
|
|
236
|
+
return self._execute_method("SearchUsers", request, timeout)
|
|
237
|
+
|
|
238
|
+
def create_user(self, request: CreateUserRequest, timeout: Optional[timedelta] = None) -> User:
|
|
239
|
+
"""CreateUser method.
|
|
240
|
+
|
|
241
|
+
Args:
|
|
242
|
+
request: The CreateUser request message
|
|
243
|
+
timeout: Optional timeout override for this call
|
|
244
|
+
|
|
245
|
+
Returns:
|
|
246
|
+
The CreateUser response message
|
|
247
|
+
|
|
248
|
+
Raises:
|
|
249
|
+
grpc.RpcError: If the gRPC call fails
|
|
250
|
+
ValueError: If authentication credentials are missing
|
|
251
|
+
"""
|
|
252
|
+
return self._execute_method("CreateUser", request, timeout)
|
|
253
|
+
|
|
254
|
+
def update_user(self, request: UpdateUserRequest, timeout: Optional[timedelta] = None) -> User:
|
|
255
|
+
"""UpdateUser method.
|
|
256
|
+
|
|
257
|
+
Args:
|
|
258
|
+
request: The UpdateUser request message
|
|
259
|
+
timeout: Optional timeout override for this call
|
|
260
|
+
|
|
261
|
+
Returns:
|
|
262
|
+
The UpdateUser response message
|
|
263
|
+
|
|
264
|
+
Raises:
|
|
265
|
+
grpc.RpcError: If the gRPC call fails
|
|
266
|
+
ValueError: If authentication credentials are missing
|
|
267
|
+
"""
|
|
268
|
+
return self._execute_method("UpdateUser", request, timeout)
|
|
147
269
|
|
|
148
270
|
|
|
149
271
|
# Create aliases to match expected exports
|
|
@@ -23,29 +23,79 @@ _sym_db = _symbol_database.Default()
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
|
|
26
|
-
from meshtrade.iam.role.v1 import role_pb2 as meshtrade_dot_iam_dot_role_dot_v1_dot_role__pb2
|
|
27
26
|
from meshtrade.iam.user.v1 import user_pb2 as meshtrade_dot_iam_dot_user_dot_v1_dot_user__pb2
|
|
28
|
-
from meshtrade.option.v1 import
|
|
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
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
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/
|
|
31
|
+
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/user/v1/user.proto\x1a\x37meshtrade/option/method_options/v1/method_options.proto\x1a\x1fmeshtrade/type/v1/sorting.proto\"\xdb\x01\n\x18\x41ssignRolesToUserRequest\x12O\n\x04name\x18\x01 \x01(\tB;\xbaH8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 \xc8\x01\x01R\x04name\x12n\n\x05roles\x18\x02 \x03(\tBX\xbaHU\x92\x01O\"MrK\x10/\x18\x30\x32\x45^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/roles/[1-9][0-9]{6,7}$\xc8\x01\x01R\x05roles\"\xdd\x01\n\x1aRevokeRolesFromUserRequest\x12O\n\x04name\x18\x01 \x01(\tB;\xbaH8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 \xc8\x01\x01R\x04name\x12n\n\x05roles\x18\x02 \x03(\tBX\xbaHU\x92\x01O\"MrK\x10/\x18\x30\x32\x45^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/roles/[1-9][0-9]{6,7}$\xc8\x01\x01R\x05roles\"a\n\x0eGetUserRequest\x12O\n\x04name\x18\x01 \x01(\tB;\xbaH8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\x98\x01 \xc8\x01\x01R\x04name\"9\n\x15GetUserByEmailRequest\x12 \n\x05\x65mail\x18\x01 \x01(\tB\n\xbaH\x07r\x02`\x01\xc8\x01\x01R\x05\x65mail\"\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\xb4\x07\n\x0bUserService\x12u\n\x11\x41ssignRolesToUser\x12/.meshtrade.iam.user.v1.AssignRolesToUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xb2\xb5\x18\x0e\x08\x02\x10\x02\x1a\x08\xc0\x8d\xb7\x01\xc6\x8d\xb7\x01\x12y\n\x13RevokeRolesFromUser\x12\x31.meshtrade.iam.user.v1.RevokeRolesFromUserRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x12\xb2\xb5\x18\x0e\x08\x02\x10\x02\x1a\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\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\x10\xc0\x8d\xb7\x01\xc1\x8d\xb7\x01\xc6\x8d\xb7\x01\xc7\x8d\xb7\x01\x12w\n\x0eGetUserByEmail\x12,.meshtrade.iam.user.v1.GetUserByEmailRequest\x1a\x1b.meshtrade.iam.user.v1.User\"\x1a\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\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\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\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\xb2\xb5\x18\x16\x08\x01\x10\x02\x1a\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\xb2\xb5\x18\x0e\x08\x02\x10\x02\x1a\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\xb2\xb5\x18\x0e\x08\x02\x10\x02\x1a\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
32
|
|
|
33
33
|
_globals = globals()
|
|
34
34
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
35
35
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtrade.iam.user.v1.service_pb2', _globals)
|
|
36
36
|
if not _descriptor._USE_C_DESCRIPTORS:
|
|
37
37
|
_globals['DESCRIPTOR']._loaded_options = None
|
|
38
|
-
_globals['DESCRIPTOR']._serialized_options = b'\n\034co.meshtrade.api.iam.user.v1Z
|
|
39
|
-
_globals['
|
|
40
|
-
_globals['
|
|
41
|
-
_globals['
|
|
42
|
-
_globals['
|
|
43
|
-
_globals['
|
|
44
|
-
_globals['
|
|
45
|
-
_globals['
|
|
46
|
-
_globals['
|
|
47
|
-
_globals['
|
|
48
|
-
_globals['
|
|
49
|
-
_globals['
|
|
50
|
-
_globals['
|
|
38
|
+
_globals['DESCRIPTOR']._serialized_options = b'\n\034co.meshtrade.api.iam.user.v1Z/github.com/meshtrade/api/go/iam/user/v1;user_v1'
|
|
39
|
+
_globals['_ASSIGNROLESTOUSERREQUEST'].fields_by_name['name']._loaded_options = None
|
|
40
|
+
_globals['_ASSIGNROLESTOUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001 \310\001\001'
|
|
41
|
+
_globals['_ASSIGNROLESTOUSERREQUEST'].fields_by_name['roles']._loaded_options = None
|
|
42
|
+
_globals['_ASSIGNROLESTOUSERREQUEST'].fields_by_name['roles']._serialized_options = b'\272HU\222\001O\"MrK\020/\03002E^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/roles/[1-9][0-9]{6,7}$\310\001\001'
|
|
43
|
+
_globals['_REVOKEROLESFROMUSERREQUEST'].fields_by_name['name']._loaded_options = None
|
|
44
|
+
_globals['_REVOKEROLESFROMUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001 \310\001\001'
|
|
45
|
+
_globals['_REVOKEROLESFROMUSERREQUEST'].fields_by_name['roles']._loaded_options = None
|
|
46
|
+
_globals['_REVOKEROLESFROMUSERREQUEST'].fields_by_name['roles']._serialized_options = b'\272HU\222\001O\"MrK\020/\03002E^groups/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}/roles/[1-9][0-9]{6,7}$\310\001\001'
|
|
47
|
+
_globals['_GETUSERREQUEST'].fields_by_name['name']._loaded_options = None
|
|
48
|
+
_globals['_GETUSERREQUEST'].fields_by_name['name']._serialized_options = b'\272H8r32.^users/[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$\230\001 \310\001\001'
|
|
49
|
+
_globals['_GETUSERBYEMAILREQUEST'].fields_by_name['email']._loaded_options = None
|
|
50
|
+
_globals['_GETUSERBYEMAILREQUEST'].fields_by_name['email']._serialized_options = b'\272H\007r\002`\001\310\001\001'
|
|
51
|
+
_globals['_LISTUSERSREQUEST_SORTING'].fields_by_name['field']._loaded_options = None
|
|
52
|
+
_globals['_LISTUSERSREQUEST_SORTING'].fields_by_name['field']._serialized_options = b'\272HYr\tR\000R\005email\272\001K\n\013field.valid\022%field must be one of: email, or empty\032\025this in [\'\', \'email\']'
|
|
53
|
+
_globals['_SEARCHUSERSREQUEST_SORTING'].fields_by_name['field']._loaded_options = None
|
|
54
|
+
_globals['_SEARCHUSERSREQUEST_SORTING'].fields_by_name['field']._serialized_options = b'\272HYr\tR\000R\005email\272\001K\n\013field.valid\022%field must be one of: email, or empty\032\025this in [\'\', \'email\']'
|
|
55
|
+
_globals['_CREATEUSERREQUEST'].fields_by_name['user']._loaded_options = None
|
|
56
|
+
_globals['_CREATEUSERREQUEST'].fields_by_name['user']._serialized_options = b'\272H\003\310\001\001'
|
|
57
|
+
_globals['_UPDATEUSERREQUEST'].fields_by_name['user']._loaded_options = None
|
|
58
|
+
_globals['_UPDATEUSERREQUEST'].fields_by_name['user']._serialized_options = b'\272H\003\310\001\001'
|
|
59
|
+
_globals['_USERSERVICE'].methods_by_name['AssignRolesToUser']._loaded_options = None
|
|
60
|
+
_globals['_USERSERVICE'].methods_by_name['AssignRolesToUser']._serialized_options = b'\262\265\030\016\010\002\020\002\032\010\300\215\267\001\306\215\267\001'
|
|
61
|
+
_globals['_USERSERVICE'].methods_by_name['RevokeRolesFromUser']._loaded_options = None
|
|
62
|
+
_globals['_USERSERVICE'].methods_by_name['RevokeRolesFromUser']._serialized_options = b'\262\265\030\016\010\002\020\002\032\010\300\215\267\001\306\215\267\001'
|
|
63
|
+
_globals['_USERSERVICE'].methods_by_name['GetUser']._loaded_options = None
|
|
64
|
+
_globals['_USERSERVICE'].methods_by_name['GetUser']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\306\215\267\001\307\215\267\001'
|
|
65
|
+
_globals['_USERSERVICE'].methods_by_name['GetUserByEmail']._loaded_options = None
|
|
66
|
+
_globals['_USERSERVICE'].methods_by_name['GetUserByEmail']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\306\215\267\001\307\215\267\001'
|
|
67
|
+
_globals['_USERSERVICE'].methods_by_name['ListUsers']._loaded_options = None
|
|
68
|
+
_globals['_USERSERVICE'].methods_by_name['ListUsers']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\306\215\267\001\307\215\267\001'
|
|
69
|
+
_globals['_USERSERVICE'].methods_by_name['SearchUsers']._loaded_options = None
|
|
70
|
+
_globals['_USERSERVICE'].methods_by_name['SearchUsers']._serialized_options = b'\262\265\030\026\010\001\020\002\032\020\300\215\267\001\301\215\267\001\306\215\267\001\307\215\267\001'
|
|
71
|
+
_globals['_USERSERVICE'].methods_by_name['CreateUser']._loaded_options = None
|
|
72
|
+
_globals['_USERSERVICE'].methods_by_name['CreateUser']._serialized_options = b'\262\265\030\016\010\002\020\002\032\010\300\215\267\001\306\215\267\001'
|
|
73
|
+
_globals['_USERSERVICE'].methods_by_name['UpdateUser']._loaded_options = None
|
|
74
|
+
_globals['_USERSERVICE'].methods_by_name['UpdateUser']._serialized_options = b'\262\265\030\016\010\002\020\002\032\010\300\215\267\001\306\215\267\001'
|
|
75
|
+
_globals['_ASSIGNROLESTOUSERREQUEST']._serialized_start=216
|
|
76
|
+
_globals['_ASSIGNROLESTOUSERREQUEST']._serialized_end=435
|
|
77
|
+
_globals['_REVOKEROLESFROMUSERREQUEST']._serialized_start=438
|
|
78
|
+
_globals['_REVOKEROLESFROMUSERREQUEST']._serialized_end=659
|
|
79
|
+
_globals['_GETUSERREQUEST']._serialized_start=661
|
|
80
|
+
_globals['_GETUSERREQUEST']._serialized_end=758
|
|
81
|
+
_globals['_GETUSERBYEMAILREQUEST']._serialized_start=760
|
|
82
|
+
_globals['_GETUSERBYEMAILREQUEST']._serialized_end=817
|
|
83
|
+
_globals['_LISTUSERSREQUEST']._serialized_start=820
|
|
84
|
+
_globals['_LISTUSERSREQUEST']._serialized_end=1096
|
|
85
|
+
_globals['_LISTUSERSREQUEST_SORTING']._serialized_start=916
|
|
86
|
+
_globals['_LISTUSERSREQUEST_SORTING']._serialized_end=1096
|
|
87
|
+
_globals['_LISTUSERSRESPONSE']._serialized_start=1098
|
|
88
|
+
_globals['_LISTUSERSRESPONSE']._serialized_end=1168
|
|
89
|
+
_globals['_SEARCHUSERSREQUEST']._serialized_start=1171
|
|
90
|
+
_globals['_SEARCHUSERSREQUEST']._serialized_end=1473
|
|
91
|
+
_globals['_SEARCHUSERSREQUEST_SORTING']._serialized_start=916
|
|
92
|
+
_globals['_SEARCHUSERSREQUEST_SORTING']._serialized_end=1096
|
|
93
|
+
_globals['_SEARCHUSERSRESPONSE']._serialized_start=1475
|
|
94
|
+
_globals['_SEARCHUSERSRESPONSE']._serialized_end=1547
|
|
95
|
+
_globals['_CREATEUSERREQUEST']._serialized_start=1549
|
|
96
|
+
_globals['_CREATEUSERREQUEST']._serialized_end=1625
|
|
97
|
+
_globals['_UPDATEUSERREQUEST']._serialized_start=1627
|
|
98
|
+
_globals['_UPDATEUSERREQUEST']._serialized_end=1703
|
|
99
|
+
_globals['_USERSERVICE']._serialized_start=1706
|
|
100
|
+
_globals['_USERSERVICE']._serialized_end=2654
|
|
51
101
|
# @@protoc_insertion_point(module_scope)
|