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