kinde-python-sdk 2.0.5__py3-none-any.whl → 2.0.7__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.
- kinde_fastapi/examples/example_app.py +31 -0
- {kinde_python_sdk-2.0.5.dist-info → kinde_python_sdk-2.0.7.dist-info}/METADATA +1 -1
- {kinde_python_sdk-2.0.5.dist-info → kinde_python_sdk-2.0.7.dist-info}/RECORD +7 -7
- kinde_sdk/management/management_client.py +198 -2
- {kinde_python_sdk-2.0.5.dist-info → kinde_python_sdk-2.0.7.dist-info}/WHEEL +0 -0
- {kinde_python_sdk-2.0.5.dist-info → kinde_python_sdk-2.0.7.dist-info}/licenses/LICENSE +0 -0
- {kinde_python_sdk-2.0.5.dist-info → kinde_python_sdk-2.0.7.dist-info}/top_level.txt +0 -0
|
@@ -8,6 +8,7 @@ from dotenv import load_dotenv
|
|
|
8
8
|
import logging
|
|
9
9
|
from kinde_sdk.auth.oauth import OAuth
|
|
10
10
|
from kinde_sdk.auth import claims, feature_flags, permissions, tokens
|
|
11
|
+
from kinde_sdk.management import ManagementClient;
|
|
11
12
|
|
|
12
13
|
logger = logging.getLogger(__name__)
|
|
13
14
|
|
|
@@ -38,6 +39,35 @@ async def home(request: Request):
|
|
|
38
39
|
"""
|
|
39
40
|
if kinde_oauth.is_authenticated():
|
|
40
41
|
user = kinde_oauth.get_user_info()
|
|
42
|
+
|
|
43
|
+
# Validate environment variables
|
|
44
|
+
domain = os.getenv("KINDE_DOMAIN")
|
|
45
|
+
client_id = os.getenv("KINDE_MANAGEMENT_CLIENT_ID")
|
|
46
|
+
client_secret = os.getenv("KINDE_MANAGEMENT_CLIENT_SECRET")
|
|
47
|
+
|
|
48
|
+
if not all([domain, client_id, client_secret]):
|
|
49
|
+
return """
|
|
50
|
+
<html>
|
|
51
|
+
<body>
|
|
52
|
+
<h1>Configuration Error</h1>
|
|
53
|
+
<p>Missing required environment variables for management client.</p>
|
|
54
|
+
<a href="/logout">Logout</a>
|
|
55
|
+
</body>
|
|
56
|
+
</html>
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
management_client = ManagementClient(
|
|
60
|
+
domain=domain,
|
|
61
|
+
client_id=client_id,
|
|
62
|
+
client_secret=client_secret
|
|
63
|
+
)
|
|
64
|
+
try:
|
|
65
|
+
api_response = management_client.get_users()
|
|
66
|
+
user_count = len(api_response.users) if hasattr(api_response, 'users') else 0
|
|
67
|
+
except Exception as e:
|
|
68
|
+
logger.error(f"Failed to fetch users: {e}")
|
|
69
|
+
user_count = 0
|
|
70
|
+
|
|
41
71
|
return f"""
|
|
42
72
|
<html>
|
|
43
73
|
<body>
|
|
@@ -46,6 +76,7 @@ async def home(request: Request):
|
|
|
46
76
|
<p>feature flags: {await feature_flags.get_all_flags()}</p>
|
|
47
77
|
<p>permissions: {await permissions.get_permissions()}</p>
|
|
48
78
|
<p>tokens: {tokens.get_token_manager().get_access_token()}</p>
|
|
79
|
+
<p>users: {user_count} user(s) found</p>
|
|
49
80
|
<p>You are logged in.</p>
|
|
50
81
|
<a href="/logout">Logout</a>
|
|
51
82
|
</body>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
kinde_fastapi/__init__.py,sha256=FzB0zDBbzaLLvGZBPrBZN94I6LRZdkT4RSmGUsbh3mA,470
|
|
2
|
-
kinde_fastapi/examples/example_app.py,sha256=
|
|
2
|
+
kinde_fastapi/examples/example_app.py,sha256=OVJDFKzT3Qv_tA4GgizW2DmjoE0hm_9O4H_DKIGYNeQ,3057
|
|
3
3
|
kinde_fastapi/examples/session.py,sha256=WblGM7TM2JCKdSFsd2OmSP0daexZ7E6ZS1xgTQY_etY,2472
|
|
4
4
|
kinde_fastapi/framework/__init__.py,sha256=tpTI84q7HCHMlREslMrngIlKwC8CDog9bEMI_ydhCUs,181
|
|
5
5
|
kinde_fastapi/framework/fastapi_framework.py,sha256=-MiBFddfY3NiB9BE_b8BBYAxfGbhOQKO-RXUsCu4a3U,6767
|
|
@@ -13,7 +13,7 @@ kinde_flask/framework/flask_framework.py,sha256=I4dVWmkyd0FBqjAkOyftebm7_qpI9uxk
|
|
|
13
13
|
kinde_flask/framework/flask_framework_factory.py,sha256=ALpsj-cHBox3ktRxi-CyZ5Q6EOvacfdu4pvlTYkuviA,802
|
|
14
14
|
kinde_flask/middleware/framework_middleware.py,sha256=XFK6kgMDuHkrawDJ0_MMgLO7es0YQVjlVDDRDgwlCJ0,1012
|
|
15
15
|
kinde_flask/storage/flask_storage_factory.py,sha256=MitOUbfCbfvSQFFoUbbnbXLEOL_qajS29Mlsn0TyTsY,2562
|
|
16
|
-
kinde_python_sdk-2.0.
|
|
16
|
+
kinde_python_sdk-2.0.7.dist-info/licenses/LICENSE,sha256=iT6AIO6NJn_mo0kDD5mpz2zp9GpzH6YdhqOmkCBg-kQ,1385
|
|
17
17
|
kinde_sdk/__init__.py,sha256=Mh3eVcnJDk-KdQfxVUsF19NgBYexoJCwG5iAbD1LEdQ,1052
|
|
18
18
|
kinde_sdk/api_client.py,sha256=GEb1BIjvIrUe8mFIr7hppp2PO604BiSlAr0_TYBfuy4,58496
|
|
19
19
|
kinde_sdk/configuration.py,sha256=oqZGvKEf4kNNURbI1pip2ZVVcDyRTSmmnjXWziH4s80,15765
|
|
@@ -140,7 +140,7 @@ kinde_sdk/management/api_client.py,sha256=EOtJwSwec5DpyJ0_Hv8wqb0ZnEPMJDvbMx5dkp
|
|
|
140
140
|
kinde_sdk/management/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
141
141
|
kinde_sdk/management/configuration.py,sha256=icAfQBYmokmspDa_ELha2Qfeq_IkgAp6COdmw1ZpL2Q,18909
|
|
142
142
|
kinde_sdk/management/exceptions.py,sha256=I_xzvCXjHszPUrUr4dNsE9Pg-nH58YszF075NvjSRMA,6780
|
|
143
|
-
kinde_sdk/management/management_client.py,sha256=
|
|
143
|
+
kinde_sdk/management/management_client.py,sha256=_GErLV96nTbWw58fscCrDe_UOVk25u4Vlx0amFp3g6Y,31467
|
|
144
144
|
kinde_sdk/management/management_token_manager.py,sha256=uEYQBiN5mNqZujTSYcU2sl2Sk51YwSe9_b-XkDq4uAI,9853
|
|
145
145
|
kinde_sdk/management/rest.py,sha256=7kMCS7NAOYCI4hrThABWpV-AN0Y-LuCjMnJ404CJdq8,9783
|
|
146
146
|
kinde_sdk/management/schemas.py,sha256=6tg1tEh8IL-9UuZiWFVe-0Pu-TD-CYW37soeQ6AyspA,97671
|
|
@@ -722,7 +722,7 @@ kinde_sdk/test/test_models/test_user_profile_v2.py,sha256=QzYjvjtTGa1ktE5ruyGBm_
|
|
|
722
722
|
kinde_sdk/test/test_models/test_users.py,sha256=wJQR5K7dsfHQQsOQp4mrHWQynFPHwL-gDtbgVifNfMs,537
|
|
723
723
|
kinde_sdk/test/test_models/test_users_response.py,sha256=BCcKxe9GctDrOXOzw0Q7O1ijKy_93Oj3E2wHW00y624,869
|
|
724
724
|
kinde_sdk/test/test_models/test_webhook.py,sha256=KNfR8sKAK5H2vX_cXYGT5EfgaVP7_egC39uY6-s-4qo,544
|
|
725
|
-
kinde_python_sdk-2.0.
|
|
726
|
-
kinde_python_sdk-2.0.
|
|
727
|
-
kinde_python_sdk-2.0.
|
|
728
|
-
kinde_python_sdk-2.0.
|
|
725
|
+
kinde_python_sdk-2.0.7.dist-info/METADATA,sha256=hfaFwDNTTOdeJhG8N1f_T2cwvtq9UP_5pee2R_VZXvw,23482
|
|
726
|
+
kinde_python_sdk-2.0.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
727
|
+
kinde_python_sdk-2.0.7.dist-info/top_level.txt,sha256=TUU3EVjV6O4brF-mooQr6pnTk-jXJphmIWRHCIdyIgI,36
|
|
728
|
+
kinde_python_sdk-2.0.7.dist-info/RECORD,,
|
|
@@ -43,6 +43,28 @@ class ManagementClient:
|
|
|
43
43
|
'delete': ('DELETE', '/api/v1/organizations/{org_code}'),
|
|
44
44
|
},
|
|
45
45
|
|
|
46
|
+
# Organization Users API
|
|
47
|
+
'organization_users': {
|
|
48
|
+
'list': ('GET', '/api/v1/organizations/{org_code}/users'),
|
|
49
|
+
'add': ('POST', '/api/v1/organizations/{org_code}/users'),
|
|
50
|
+
'update': ('PATCH', '/api/v1/organizations/{org_code}/users'),
|
|
51
|
+
'remove': ('DELETE', '/api/v1/organizations/{org_code}/users/{user_id}'),
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
# Organization User Roles API
|
|
55
|
+
'organization_user_roles': {
|
|
56
|
+
'list': ('GET', '/api/v1/organizations/{org_code}/users/{user_id}/roles'),
|
|
57
|
+
'add': ('POST', '/api/v1/organizations/{org_code}/users/{user_id}/roles'),
|
|
58
|
+
'remove': ('DELETE', '/api/v1/organizations/{org_code}/users/{user_id}/roles/{role_id}'),
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
# Organization User Permissions API
|
|
62
|
+
'organization_user_permissions': {
|
|
63
|
+
'list': ('GET', '/api/v1/organizations/{org_code}/users/{user_id}/permissions'),
|
|
64
|
+
'add': ('POST', '/api/v1/organizations/{org_code}/users/{user_id}/permissions'),
|
|
65
|
+
'remove': ('DELETE', '/api/v1/organizations/{org_code}/users/{user_id}/permissions/{permission_id}'),
|
|
66
|
+
},
|
|
67
|
+
|
|
46
68
|
# Roles API
|
|
47
69
|
'roles': {
|
|
48
70
|
'list': ('GET', '/api/v1/roles'),
|
|
@@ -103,6 +125,94 @@ class ManagementClient:
|
|
|
103
125
|
'industries': {
|
|
104
126
|
'list': ('GET', '/api/v1/industries'),
|
|
105
127
|
},
|
|
128
|
+
|
|
129
|
+
# Properties API
|
|
130
|
+
'properties': {
|
|
131
|
+
'list': ('GET', '/api/v1/properties'),
|
|
132
|
+
'get': ('GET', '/api/v1/properties/{property_id}'),
|
|
133
|
+
'create': ('POST', '/api/v1/properties'),
|
|
134
|
+
'update': ('PATCH', '/api/v1/properties/{property_id}'),
|
|
135
|
+
'delete': ('DELETE', '/api/v1/properties/{property_id}'),
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
# User Properties API
|
|
139
|
+
'user_properties': {
|
|
140
|
+
'list': ('GET', '/api/v1/users/{user_id}/properties'),
|
|
141
|
+
'get': ('GET', '/api/v1/users/{user_id}/properties/{property_key}'),
|
|
142
|
+
'update': ('PUT', '/api/v1/users/{user_id}/properties/{property_key}'),
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
# Organization Properties API
|
|
146
|
+
'organization_properties': {
|
|
147
|
+
'list': ('GET', '/api/v1/organizations/{org_code}/properties'),
|
|
148
|
+
'get': ('GET', '/api/v1/organizations/{org_code}/properties/{property_key}'),
|
|
149
|
+
'update': ('PUT', '/api/v1/organizations/{org_code}/properties/{property_key}'),
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
# Webhooks API
|
|
153
|
+
'webhooks': {
|
|
154
|
+
'list': ('GET', '/api/v1/webhooks'),
|
|
155
|
+
'get': ('GET', '/api/v1/webhooks/{webhook_id}'),
|
|
156
|
+
'create': ('POST', '/api/v1/webhooks'),
|
|
157
|
+
'update': ('PATCH', '/api/v1/webhooks/{webhook_id}'),
|
|
158
|
+
'delete': ('DELETE', '/api/v1/webhooks/{webhook_id}'),
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
# Events API
|
|
162
|
+
'events': {
|
|
163
|
+
'get': ('GET', '/api/v1/events/{event_id}'),
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
# Event Types API
|
|
167
|
+
'event_types': {
|
|
168
|
+
'list': ('GET', '/api/v1/event_types'),
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
# Connections API
|
|
172
|
+
'connections': {
|
|
173
|
+
'list': ('GET', '/api/v1/connections'),
|
|
174
|
+
'get': ('GET', '/api/v1/connections/{connection_id}'),
|
|
175
|
+
'create': ('POST', '/api/v1/connections'),
|
|
176
|
+
'update': ('PATCH', '/api/v1/connections/{connection_id}'),
|
|
177
|
+
'delete': ('DELETE', '/api/v1/connections/{connection_id}'),
|
|
178
|
+
},
|
|
179
|
+
|
|
180
|
+
# Business API
|
|
181
|
+
'business': {
|
|
182
|
+
'get': ('GET', '/api/v1/business'),
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
# Environment Feature Flags API
|
|
186
|
+
'environment_feature_flags': {
|
|
187
|
+
'list': ('GET', '/api/v1/environment/feature_flags'),
|
|
188
|
+
'get': ('GET', '/api/v1/environment/feature_flags/{feature_flag_key}'),
|
|
189
|
+
'update': ('PATCH', '/api/v1/environment/feature_flags/{feature_flag_key}'),
|
|
190
|
+
'delete': ('DELETE', '/api/v1/environment/feature_flags/{feature_flag_key}'),
|
|
191
|
+
},
|
|
192
|
+
|
|
193
|
+
# Organization Feature Flags API
|
|
194
|
+
'organization_feature_flags': {
|
|
195
|
+
'list': ('GET', '/api/v1/organizations/{org_code}/feature_flags'),
|
|
196
|
+
'get': ('GET', '/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}'),
|
|
197
|
+
'update': ('PATCH', '/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}'),
|
|
198
|
+
'delete': ('DELETE', '/api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}'),
|
|
199
|
+
},
|
|
200
|
+
|
|
201
|
+
# User Feature Flags API
|
|
202
|
+
'user_feature_flags': {
|
|
203
|
+
'get': ('GET', '/api/v1/users/{user_id}/feature_flags/{feature_flag_key}'),
|
|
204
|
+
'update': ('PATCH', '/api/v1/users/{user_id}/feature_flags/{feature_flag_key}'),
|
|
205
|
+
},
|
|
206
|
+
|
|
207
|
+
# User Password API
|
|
208
|
+
'user_password': {
|
|
209
|
+
'update': ('PUT', '/api/v1/users/{user_id}/password'),
|
|
210
|
+
},
|
|
211
|
+
|
|
212
|
+
# User Refresh Claims API
|
|
213
|
+
'user_refresh_claims': {
|
|
214
|
+
'refresh': ('POST', '/api/v1/users/{user_id}/refresh_claims'),
|
|
215
|
+
},
|
|
106
216
|
}
|
|
107
217
|
|
|
108
218
|
# Define response types for each endpoint
|
|
@@ -121,6 +231,22 @@ class ManagementClient:
|
|
|
121
231
|
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
122
232
|
'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
123
233
|
},
|
|
234
|
+
'organization_users': {
|
|
235
|
+
'list': {'200': 'GetOrganizationUsersResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
236
|
+
'add': {'201': 'AddOrganizationUsersResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
237
|
+
'update': {'200': 'UpdateOrganizationUsersResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
238
|
+
'remove': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
239
|
+
},
|
|
240
|
+
'organization_user_roles': {
|
|
241
|
+
'list': {'200': 'GetOrganizationsUserRolesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
242
|
+
'add': {'201': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
243
|
+
'remove': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
244
|
+
},
|
|
245
|
+
'organization_user_permissions': {
|
|
246
|
+
'list': {'200': 'GetOrganizationsUserPermissionsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
247
|
+
'add': {'201': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
248
|
+
'remove': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
249
|
+
},
|
|
124
250
|
'roles': {
|
|
125
251
|
'list': {'200': 'GetRolesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
126
252
|
'get': {'200': 'GetRoleResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
@@ -166,6 +292,68 @@ class ManagementClient:
|
|
|
166
292
|
'industries': {
|
|
167
293
|
'list': {'200': 'GetIndustriesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
168
294
|
},
|
|
295
|
+
'properties': {
|
|
296
|
+
'list': {'200': 'GetPropertiesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
297
|
+
'get': {'200': 'GetPropertyResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
298
|
+
'create': {'201': 'CreatePropertyResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
299
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
300
|
+
'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
301
|
+
},
|
|
302
|
+
'user_properties': {
|
|
303
|
+
'list': {'200': 'GetUserPropertiesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
304
|
+
'get': {'200': 'GetUserPropertyResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
305
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
306
|
+
},
|
|
307
|
+
'organization_properties': {
|
|
308
|
+
'list': {'200': 'GetOrganizationPropertiesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
309
|
+
'get': {'200': 'GetOrganizationPropertyResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
310
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
311
|
+
},
|
|
312
|
+
'webhooks': {
|
|
313
|
+
'list': {'200': 'GetWebhooksResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
314
|
+
'get': {'200': 'GetWebhookResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
315
|
+
'create': {'201': 'CreateWebhookResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
316
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
317
|
+
'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
318
|
+
},
|
|
319
|
+
'events': {
|
|
320
|
+
'get': {'200': 'GetEventResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
321
|
+
},
|
|
322
|
+
'event_types': {
|
|
323
|
+
'list': {'200': 'GetEventTypesResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
324
|
+
},
|
|
325
|
+
'connections': {
|
|
326
|
+
'list': {'200': 'GetConnectionsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
327
|
+
'get': {'200': 'GetConnectionResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
328
|
+
'create': {'201': 'CreateConnectionResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
329
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
330
|
+
'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
331
|
+
},
|
|
332
|
+
'business': {
|
|
333
|
+
'get': {'200': 'GetBusinessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
334
|
+
},
|
|
335
|
+
'environment_feature_flags': {
|
|
336
|
+
'list': {'200': 'GetEnvironmentFeatureFlagsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
337
|
+
'get': {'200': 'GetEnvironmentFeatureFlagsResponseDataFeatureFlagsInner', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
338
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
339
|
+
'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
340
|
+
},
|
|
341
|
+
'organization_feature_flags': {
|
|
342
|
+
'list': {'200': 'GetOrganizationFeatureFlagsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
343
|
+
'get': {'200': 'GetOrganizationFeatureFlagsResponseDataFeatureFlagsInner', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
344
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
345
|
+
'delete': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
346
|
+
},
|
|
347
|
+
'user_feature_flags': {
|
|
348
|
+
'get': {'200': 'GetUserFeatureFlagsResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
349
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
350
|
+
},
|
|
351
|
+
'user_password': {
|
|
352
|
+
'update': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
353
|
+
},
|
|
354
|
+
'user_refresh_claims': {
|
|
355
|
+
'refresh': {'200': 'SuccessResponse', '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', '429': 'ErrorResponse'},
|
|
356
|
+
},
|
|
169
357
|
}
|
|
170
358
|
|
|
171
359
|
def __init__(self, domain: str, client_id: str, client_secret: str):
|
|
@@ -199,7 +387,11 @@ class ManagementClient:
|
|
|
199
387
|
def _generate_methods(self):
|
|
200
388
|
"""Generate dynamic methods for each API endpoint."""
|
|
201
389
|
for resource, endpoints in self.API_ENDPOINTS.items():
|
|
202
|
-
|
|
390
|
+
# Handle special cases for singularization
|
|
391
|
+
if resource == 'business':
|
|
392
|
+
resource_singular = 'business' # Don't remove 's' from 'business'
|
|
393
|
+
else:
|
|
394
|
+
resource_singular = resource[:-1] if resource.endswith('s') else resource
|
|
203
395
|
|
|
204
396
|
for action, (method, path) in endpoints.items():
|
|
205
397
|
# Create method name based on action and resource
|
|
@@ -229,7 +421,11 @@ class ManagementClient:
|
|
|
229
421
|
Returns:
|
|
230
422
|
A callable method that makes the API request
|
|
231
423
|
"""
|
|
232
|
-
|
|
424
|
+
# Handle special cases for singularization
|
|
425
|
+
if resource == 'business':
|
|
426
|
+
resource_singular = 'business' # Don't remove 's' from 'business'
|
|
427
|
+
else:
|
|
428
|
+
resource_singular = resource[:-1] if resource.endswith('s') else resource
|
|
233
429
|
|
|
234
430
|
def api_method(*args, **kwargs) -> Dict[str, Any]:
|
|
235
431
|
# Format path with any path parameters from args
|
|
File without changes
|
|
File without changes
|
|
File without changes
|