workos 1.5.1__py3-none-any.whl → 5.38.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.
- workos/__about__.py +1 -1
- workos/__init__.py +3 -7
- workos/_base_client.py +138 -0
- workos/_client_configuration.py +10 -0
- workos/api_keys.py +53 -0
- workos/async_client.py +144 -0
- workos/audit_logs.py +125 -0
- workos/client.py +110 -18
- workos/directory_sync.py +379 -99
- workos/events.py +111 -0
- workos/exceptions.py +53 -26
- workos/fga.py +649 -0
- workos/mfa.py +205 -0
- workos/organization_domains.py +179 -0
- workos/organizations.py +403 -73
- workos/passwordless.py +67 -43
- workos/pipes.py +93 -0
- workos/portal.py +51 -28
- workos/session.py +337 -0
- workos/sso.py +311 -101
- workos/types/__init__.py +4 -0
- workos/types/api_keys/__init__.py +1 -0
- workos/types/api_keys/api_keys.py +20 -0
- workos/types/audit_logs/__init__.py +6 -0
- workos/types/audit_logs/audit_log_event.py +16 -0
- workos/types/audit_logs/audit_log_event_actor.py +12 -0
- workos/types/audit_logs/audit_log_event_context.py +8 -0
- workos/types/audit_logs/audit_log_event_target.py +12 -0
- workos/types/audit_logs/audit_log_export.py +18 -0
- workos/types/audit_logs/audit_log_metadata.py +4 -0
- workos/types/directory_sync/__init__.py +5 -0
- workos/types/directory_sync/directory.py +31 -0
- workos/types/directory_sync/directory_group.py +16 -0
- workos/types/directory_sync/directory_state.py +28 -0
- workos/types/directory_sync/directory_type.py +24 -0
- workos/types/directory_sync/directory_user.py +50 -0
- workos/types/directory_sync/list_filters.py +21 -0
- workos/types/events/__init__.py +13 -0
- workos/types/events/authentication_payload.py +70 -0
- workos/types/events/connection_payload_with_legacy_fields.py +5 -0
- workos/types/events/directory_group_membership_payload.py +9 -0
- workos/types/events/directory_group_with_previous_attributes.py +6 -0
- workos/types/events/directory_payload.py +16 -0
- workos/types/events/directory_payload_with_legacy_fields.py +29 -0
- workos/types/events/directory_user_with_previous_attributes.py +6 -0
- workos/types/events/event.py +324 -0
- workos/types/events/event_model.py +103 -0
- workos/types/events/event_type.py +59 -0
- workos/types/events/list_filters.py +10 -0
- workos/types/events/organization_domain_verification_failed_payload.py +14 -0
- workos/types/events/previous_attributes.py +3 -0
- workos/types/events/session_payload.py +27 -0
- workos/types/feature_flags/__init__.py +3 -0
- workos/types/feature_flags/feature_flag.py +12 -0
- workos/types/feature_flags/list_filters.py +5 -0
- workos/types/fga/__init__.py +5 -0
- workos/types/fga/authorization_resource_types.py +9 -0
- workos/types/fga/authorization_resources.py +10 -0
- workos/types/fga/check.py +51 -0
- workos/types/fga/list_filters.py +24 -0
- workos/types/fga/warnings.py +33 -0
- workos/types/fga/warrant.py +49 -0
- workos/types/list_resource.py +198 -0
- workos/types/metadata.py +4 -0
- workos/types/mfa/__init__.py +5 -0
- workos/types/mfa/authentication_challenge.py +14 -0
- workos/types/mfa/authentication_challenge_verification_response.py +9 -0
- workos/types/mfa/authentication_factor.py +70 -0
- workos/types/mfa/authentication_factor_totp_and_challenge_response.py +10 -0
- workos/types/mfa/enroll_authentication_factor_type.py +8 -0
- workos/types/organization_domains/__init__.py +1 -0
- workos/types/organization_domains/organization_domain.py +18 -0
- workos/types/organizations/__init__.py +6 -0
- workos/types/organizations/domain_data_input.py +7 -0
- workos/types/organizations/list_filters.py +6 -0
- workos/types/organizations/organization.py +13 -0
- workos/types/organizations/organization_common.py +12 -0
- workos/types/passwordless/__init__.py +2 -0
- workos/types/passwordless/passwordless_session.py +12 -0
- workos/types/passwordless/passwordless_session_type.py +3 -0
- workos/types/pipes/__init__.py +6 -0
- workos/types/pipes/pipes.py +34 -0
- workos/types/portal/__init__.py +2 -0
- workos/types/portal/portal_link.py +7 -0
- workos/types/portal/portal_link_intent.py +11 -0
- workos/types/portal/portal_link_intent_options.py +9 -0
- workos/types/roles/__init__.py +0 -0
- workos/types/roles/role.py +27 -0
- workos/types/sso/__init__.py +4 -0
- workos/types/sso/connection.py +70 -0
- workos/types/sso/connection_domain.py +8 -0
- workos/types/sso/profile.py +35 -0
- workos/types/sso/sso_provider_type.py +10 -0
- workos/types/user_management/__init__.py +12 -0
- workos/types/user_management/authenticate_with_common.py +66 -0
- workos/types/user_management/authentication_response.py +53 -0
- workos/types/user_management/email_verification.py +18 -0
- workos/types/user_management/impersonator.py +8 -0
- workos/types/user_management/invitation.py +26 -0
- workos/types/user_management/list_filters.py +29 -0
- workos/types/user_management/magic_auth.py +18 -0
- workos/types/user_management/oauth_tokens.py +21 -0
- workos/types/user_management/organization_membership.py +25 -0
- workos/types/user_management/password_hash_type.py +4 -0
- workos/types/user_management/password_reset.py +18 -0
- workos/types/user_management/screen_hint.py +3 -0
- workos/types/user_management/session.py +79 -0
- workos/types/user_management/user.py +22 -0
- workos/types/user_management/user_management_provider_type.py +11 -0
- workos/types/vault/__init__.py +2 -0
- workos/types/vault/key.py +25 -0
- workos/types/vault/object.py +38 -0
- workos/types/webhooks/__init__.py +0 -0
- workos/types/webhooks/webhook.py +330 -0
- workos/types/webhooks/webhook_model.py +14 -0
- workos/types/webhooks/webhook_payload.py +4 -0
- workos/types/widgets/__init__.py +2 -0
- workos/types/widgets/widget_scope.py +4 -0
- workos/types/widgets/widget_token_response.py +7 -0
- workos/types/workos_model.py +26 -0
- workos/typing/__init__.py +1 -0
- workos/typing/literals.py +32 -0
- workos/typing/sync_or_async.py +5 -0
- workos/typing/untyped_literal.py +37 -0
- workos/typing/webhooks.py +18 -0
- workos/user_management.py +2400 -0
- workos/utils/_base_http_client.py +252 -0
- workos/utils/crypto_provider.py +39 -0
- workos/utils/http_client.py +214 -0
- workos/utils/pagination_order.py +4 -0
- workos/utils/request_helper.py +27 -0
- workos/vault.py +544 -0
- workos/webhooks.py +96 -39
- workos/widgets.py +55 -0
- {workos-1.5.1.dist-info → workos-5.38.0.dist-info}/LICENSE +1 -1
- workos-5.38.0.dist-info/METADATA +107 -0
- workos-5.38.0.dist-info/RECORD +141 -0
- {workos-1.5.1.dist-info → workos-5.38.0.dist-info}/WHEEL +1 -1
- workos/audit_trail.py +0 -172
- workos/resources/base.py +0 -36
- workos/resources/event.py +0 -42
- workos/resources/event_action.py +0 -11
- workos/resources/sso.py +0 -53
- workos/utils/connection_types.py +0 -17
- workos/utils/request.py +0 -95
- workos/utils/validation.py +0 -45
- workos-1.5.1.dist-info/METADATA +0 -77
- workos-1.5.1.dist-info/RECORD +0 -25
- /workos/{resources/__init__.py → py.typed} +0 -0
- {workos-1.5.1.dist-info → workos-5.38.0.dist-info}/top_level.txt +0 -0
workos/webhooks.py
CHANGED
|
@@ -1,41 +1,88 @@
|
|
|
1
|
-
|
|
2
|
-
from workos.utils.validation import WEBHOOKS_MODULE, validate_settings
|
|
1
|
+
import hashlib
|
|
3
2
|
import hmac
|
|
4
|
-
import json
|
|
5
3
|
import time
|
|
6
|
-
from
|
|
7
|
-
import
|
|
4
|
+
from typing import Optional, Protocol
|
|
5
|
+
from workos.types.webhooks.webhook import Webhook
|
|
6
|
+
from workos.types.webhooks.webhook_payload import WebhookPayload
|
|
7
|
+
from workos.typing.webhooks import WebhookTypeAdapter
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class WebhooksModule(Protocol):
|
|
11
11
|
"""Offers methods through the WorkOS Webhooks service."""
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
def verify_event(
|
|
14
|
+
self,
|
|
15
|
+
*,
|
|
16
|
+
event_body: WebhookPayload,
|
|
17
|
+
event_signature: str,
|
|
18
|
+
secret: str,
|
|
19
|
+
tolerance: Optional[int] = None,
|
|
20
|
+
) -> Webhook:
|
|
21
|
+
"""Verify and deserialize the signature of a Webhook event.
|
|
22
|
+
|
|
23
|
+
Kwargs:
|
|
24
|
+
event_body (WebhookPayload): The Webhook body.
|
|
25
|
+
event_signature (str): The signature of the Webhook from the 'WorkOS-Signature' header.
|
|
26
|
+
secret (str): The secret for the webhook endpoint, you can find this in the WorkOS dashboard.
|
|
27
|
+
tolerance (int): The number of seconds the Webhook event is valid for. (Optional)
|
|
28
|
+
Returns:
|
|
29
|
+
Webhook: The deserialized Webhook.
|
|
30
|
+
"""
|
|
31
|
+
...
|
|
32
|
+
|
|
33
|
+
def verify_header(
|
|
34
|
+
self,
|
|
35
|
+
*,
|
|
36
|
+
event_body: WebhookPayload,
|
|
37
|
+
event_signature: str,
|
|
38
|
+
secret: str,
|
|
39
|
+
tolerance: Optional[int] = None,
|
|
40
|
+
) -> None:
|
|
41
|
+
"""Verify the signature of a Webhook, raise ValueError if the signature can't be verified.
|
|
42
|
+
|
|
43
|
+
Kwargs:
|
|
44
|
+
event_body (WebhookPayload): The Webhook body.
|
|
45
|
+
event_signature (str): The signature of the Webhook from the 'WorkOS-Signature' header.
|
|
46
|
+
secret (str): The secret for the webhook endpoint, you can find this in the WorkOS dashboard.
|
|
47
|
+
tolerance (int): The number of seconds the Webhook event is valid for. (Optional)
|
|
48
|
+
Returns:
|
|
49
|
+
None
|
|
50
|
+
"""
|
|
51
|
+
...
|
|
52
|
+
|
|
53
|
+
def _constant_time_compare(self, val1: str, val2: str) -> bool: ...
|
|
54
|
+
|
|
55
|
+
def _check_timestamp_range(self, time: float, max_range: float) -> None: ...
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class Webhooks(WebhooksModule):
|
|
23
59
|
DEFAULT_TOLERANCE = 180
|
|
24
60
|
|
|
25
|
-
def verify_event(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
61
|
+
def verify_event(
|
|
62
|
+
self,
|
|
63
|
+
*,
|
|
64
|
+
event_body: WebhookPayload,
|
|
65
|
+
event_signature: str,
|
|
66
|
+
secret: str,
|
|
67
|
+
tolerance: Optional[int] = DEFAULT_TOLERANCE,
|
|
68
|
+
) -> Webhook:
|
|
69
|
+
Webhooks.verify_header(
|
|
70
|
+
self,
|
|
71
|
+
event_body=event_body,
|
|
72
|
+
event_signature=event_signature,
|
|
73
|
+
secret=secret,
|
|
74
|
+
tolerance=tolerance,
|
|
75
|
+
)
|
|
76
|
+
return WebhookTypeAdapter.validate_json(event_body)
|
|
77
|
+
|
|
78
|
+
def verify_header(
|
|
79
|
+
self,
|
|
80
|
+
*,
|
|
81
|
+
event_body: WebhookPayload,
|
|
82
|
+
event_signature: str,
|
|
83
|
+
secret: str,
|
|
84
|
+
tolerance: Optional[int] = None,
|
|
85
|
+
) -> None:
|
|
39
86
|
try:
|
|
40
87
|
# Verify and define variables parsed from the event body
|
|
41
88
|
issued_timestamp, signature_hash = event_signature.split(", ")
|
|
@@ -47,18 +94,18 @@ class Webhooks(object):
|
|
|
47
94
|
|
|
48
95
|
issued_timestamp = issued_timestamp[2:]
|
|
49
96
|
signature_hash = signature_hash[3:]
|
|
50
|
-
max_seconds_since_issued = tolerance
|
|
97
|
+
max_seconds_since_issued = tolerance or Webhooks.DEFAULT_TOLERANCE
|
|
51
98
|
current_time = time.time()
|
|
52
99
|
timestamp_in_seconds = int(issued_timestamp) / 1000
|
|
53
100
|
seconds_since_issued = current_time - timestamp_in_seconds
|
|
54
101
|
|
|
55
102
|
# Check that the webhook timestamp is within the acceptable range
|
|
56
|
-
Webhooks.
|
|
103
|
+
Webhooks._check_timestamp_range(
|
|
57
104
|
self, seconds_since_issued, max_seconds_since_issued
|
|
58
105
|
)
|
|
59
106
|
|
|
60
107
|
# Set expected signature value based on env var secret
|
|
61
|
-
unhashed_string = "{0}.{1}".format(issued_timestamp, event_body)
|
|
108
|
+
unhashed_string = "{0}.{1}".format(issued_timestamp, event_body.decode("utf-8"))
|
|
62
109
|
expected_signature = hmac.new(
|
|
63
110
|
secret.encode("utf-8"),
|
|
64
111
|
unhashed_string.encode("utf-8"),
|
|
@@ -67,19 +114,29 @@ class Webhooks(object):
|
|
|
67
114
|
|
|
68
115
|
# Use constant time comparison function to ensure the sig hash matches
|
|
69
116
|
# the expected sig value
|
|
70
|
-
Webhooks.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if
|
|
117
|
+
secure_compare = Webhooks._constant_time_compare(
|
|
118
|
+
self, signature_hash, expected_signature
|
|
119
|
+
)
|
|
120
|
+
if not secure_compare:
|
|
74
121
|
raise ValueError(
|
|
75
122
|
"Signature hash does not match the expected signature hash for payload"
|
|
76
123
|
)
|
|
77
124
|
|
|
125
|
+
def _constant_time_compare(self, val1: str, val2: str) -> bool:
|
|
126
|
+
if len(val1) != len(val2):
|
|
127
|
+
return False
|
|
128
|
+
|
|
78
129
|
result = 0
|
|
79
130
|
for x, y in zip(val1, val2):
|
|
80
131
|
result |= ord(x) ^ ord(y)
|
|
81
|
-
|
|
132
|
+
if result != 0:
|
|
133
|
+
return False
|
|
134
|
+
|
|
135
|
+
if result == 0:
|
|
136
|
+
return True
|
|
137
|
+
|
|
138
|
+
return False
|
|
82
139
|
|
|
83
|
-
def
|
|
140
|
+
def _check_timestamp_range(self, time: float, max_range: float) -> None:
|
|
84
141
|
if time > max_range:
|
|
85
142
|
raise ValueError("Timestamp outside the tolerance zone")
|
workos/widgets.py
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from typing import Protocol, Sequence
|
|
2
|
+
from workos.types.widgets.widget_scope import WidgetScope
|
|
3
|
+
from workos.types.widgets.widget_token_response import WidgetTokenResponse
|
|
4
|
+
from workos.utils.http_client import SyncHTTPClient
|
|
5
|
+
from workos.utils.request_helper import REQUEST_METHOD_POST
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
WIDGETS_GENERATE_TOKEN_PATH = "widgets/token"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class WidgetsModule(Protocol):
|
|
12
|
+
def get_token(
|
|
13
|
+
self,
|
|
14
|
+
*,
|
|
15
|
+
organization_id: str,
|
|
16
|
+
user_id: str,
|
|
17
|
+
scopes: Sequence[WidgetScope],
|
|
18
|
+
) -> WidgetTokenResponse:
|
|
19
|
+
"""Generate a new widget token for the specified organization and user with the provided scopes.
|
|
20
|
+
|
|
21
|
+
Kwargs:
|
|
22
|
+
organization_id (str): The ID of the organization the widget token will be generated for.
|
|
23
|
+
user_id (str): The ID of the AuthKit user the widget token will be generated for.
|
|
24
|
+
scopes (Sequence[WidgetScope]): The widget scopes for the generated widget token.
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
WidgetTokenResponse: WidgetTokenResponse object with token string.
|
|
28
|
+
"""
|
|
29
|
+
...
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class Widgets(WidgetsModule):
|
|
33
|
+
|
|
34
|
+
_http_client: SyncHTTPClient
|
|
35
|
+
|
|
36
|
+
def __init__(self, http_client: SyncHTTPClient):
|
|
37
|
+
self._http_client = http_client
|
|
38
|
+
|
|
39
|
+
def get_token(
|
|
40
|
+
self,
|
|
41
|
+
*,
|
|
42
|
+
organization_id: str,
|
|
43
|
+
user_id: str,
|
|
44
|
+
scopes: Sequence[WidgetScope],
|
|
45
|
+
) -> WidgetTokenResponse:
|
|
46
|
+
json = {
|
|
47
|
+
"organization_id": organization_id,
|
|
48
|
+
"user_id": user_id,
|
|
49
|
+
"scopes": scopes,
|
|
50
|
+
}
|
|
51
|
+
response = self._http_client.request(
|
|
52
|
+
WIDGETS_GENERATE_TOKEN_PATH, method=REQUEST_METHOD_POST, json=json
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
return WidgetTokenResponse.model_validate(response)
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: workos
|
|
3
|
+
Version: 5.38.0
|
|
4
|
+
Summary: WorkOS Python Client
|
|
5
|
+
Home-page: https://github.com/workos-inc/workos-python
|
|
6
|
+
Author: WorkOS
|
|
7
|
+
Author-email: team@workos.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: cryptography >=44.0.2
|
|
23
|
+
Requires-Dist: httpx >=0.28.1
|
|
24
|
+
Requires-Dist: pydantic >=2.10.4
|
|
25
|
+
Requires-Dist: PyJWT <2.10,>=2.9.0 ; python_version == "3.8"
|
|
26
|
+
Requires-Dist: PyJWT >=2.10.0 ; python_version > "3.8"
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: black ==24.4.2 ; extra == 'dev'
|
|
29
|
+
Requires-Dist: flake8 ==7.1.1 ; extra == 'dev'
|
|
30
|
+
Requires-Dist: httpx ~=0.28.1 ; extra == 'dev'
|
|
31
|
+
Requires-Dist: mypy ==1.14.1 ; extra == 'dev'
|
|
32
|
+
Requires-Dist: pytest-asyncio ==0.23.8 ; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest-cov ==5.0.0 ; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest ==8.3.4 ; extra == 'dev'
|
|
35
|
+
Requires-Dist: six ==1.17.0 ; extra == 'dev'
|
|
36
|
+
Requires-Dist: twine ==5.1.1 ; extra == 'dev'
|
|
37
|
+
|
|
38
|
+
# WorkOS Python Library
|
|
39
|
+
|
|
40
|
+

|
|
41
|
+
[](https://workos.semaphoreci.com/projects/workos-python)
|
|
42
|
+
|
|
43
|
+
The WorkOS library for Python provides convenient access to the WorkOS API from applications written in Python, [hosted on PyPi](https://pypi.org/project/workos/)
|
|
44
|
+
|
|
45
|
+
## Documentation
|
|
46
|
+
|
|
47
|
+
See the [API Reference](https://workos.com/docs/reference/client-libraries) for Python usage examples.
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
To install from PyPi, run the following:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
pip install workos
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
To install from source, clone the repo and run the following:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
python setup.py install
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
The package will need to be configured with your [api key and client ID](https://dashboard.workos.com/api-keys).
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from workos import WorkOSClient
|
|
69
|
+
|
|
70
|
+
workos_client = WorkOSClient(
|
|
71
|
+
api_key="sk_1234", client_id="client_1234"
|
|
72
|
+
)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The SDK also provides asyncio support for some SDK methods, via the async client:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
from workos import AsyncWorkOSClient
|
|
79
|
+
|
|
80
|
+
async_workos_client = AsyncWorkOSClient(
|
|
81
|
+
api_key="sk_1234", client_id="client_1234"
|
|
82
|
+
)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## SDK Versioning
|
|
86
|
+
|
|
87
|
+
For our SDKs WorkOS follows a Semantic Versioning ([SemVer](https://semver.org/)) process where all releases will have a version X.Y.Z (like 1.0.0) pattern wherein Z would be a bug fix (e.g., 1.0.1), Y would be a minor release (1.1.0) and X would be a major release (2.0.0). We permit any breaking changes to only be released in major versions and strongly recommend reading changelogs before making any major version upgrades.
|
|
88
|
+
|
|
89
|
+
## Beta Releases
|
|
90
|
+
|
|
91
|
+
WorkOS has features in Beta that can be accessed via Beta releases. We would love for you to try these
|
|
92
|
+
and share feedback with us before these features reach general availability (GA). To install a Beta version,
|
|
93
|
+
please follow the [installation steps](#installation) above using the Beta release version.
|
|
94
|
+
|
|
95
|
+
> Note: there can be breaking changes between Beta versions. Therefore, we recommend pinning the package version to a
|
|
96
|
+
> specific version. This way you can install the same version each time without breaking changes unless you are
|
|
97
|
+
> intentionally looking for the latest Beta version.
|
|
98
|
+
|
|
99
|
+
We highly recommend keeping an eye on when the Beta feature you are interested in goes from Beta to stable so that you
|
|
100
|
+
can move to using the stable version.
|
|
101
|
+
|
|
102
|
+
## More Information
|
|
103
|
+
|
|
104
|
+
- [Single Sign-On Guide](https://workos.com/docs/sso/guide)
|
|
105
|
+
- [Directory Sync Guide](https://workos.com/docs/directory-sync/guide)
|
|
106
|
+
- [Admin Portal Guide](https://workos.com/docs/admin-portal/guide)
|
|
107
|
+
- [Magic Link Guide](https://workos.com/docs/magic-link/guide)
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
workos/__about__.py,sha256=RT-1dW0qSeGruGjO1CMI8AhOMunCYgLP7ACJtglzWm8,406
|
|
2
|
+
workos/__init__.py,sha256=hOdbO_MJCvpLx8EbRjQg-fvFAB-glJmrmxUZK8kWG0k,167
|
|
3
|
+
workos/_base_client.py,sha256=sAdBDiE12T7oUmdkdprsn1_KvOoHyKwS2mh_c4QYanM,3745
|
|
4
|
+
workos/_client_configuration.py,sha256=g3eXhtrEMN6CW0hZ5uHb2PmLurXjyBkWZeQYMPeJD6s,222
|
|
5
|
+
workos/api_keys.py,sha256=3AljcqAO1uJYP315AZymX184eJ9X_gH7xa_rKU6rMjw,1817
|
|
6
|
+
workos/async_client.py,sha256=39gwUgDJqYY6W7taKkcIjKSojEkq707WS1DLOW5ezqU,4809
|
|
7
|
+
workos/audit_logs.py,sha256=bYoAoNO4FRSaT34UxiVkgTXCVH8givcS2YGhH_9O3NA,3983
|
|
8
|
+
workos/client.py,sha256=FPp9Rb5l-evQk-SMqt108iVN7TReIcci6zyUHx3Xy_U,4766
|
|
9
|
+
workos/directory_sync.py,sha256=6Z1gHz1LWNy56EtkXwNm6jhRRcvsJ7ASeDLy_Q1oKM0,14601
|
|
10
|
+
workos/events.py,sha256=b4JIzMbd5LlVtpOMKVojC70RCHAgmLN3nJ62_2U0GwI,3892
|
|
11
|
+
workos/exceptions.py,sha256=wYDlbMLVxrKQTF0M6ExFlxS5YEkvNZ4BeWLryRxcAFs,2335
|
|
12
|
+
workos/fga.py,sha256=qjZrdkXKwJDLVTMMrOADxyXRDkswto4kGIdtTjtS3hw,21008
|
|
13
|
+
workos/mfa.py,sha256=J8eOr4ZEmK0TPFKD7pabSalgCFCyg3XJY1stu28_8Vw,6862
|
|
14
|
+
workos/organization_domains.py,sha256=um-dm54SIs2Kd2FxqxVjIlynlenAG9NamQmNVUGOQ0k,5464
|
|
15
|
+
workos/organizations.py,sha256=_kiS0KbFd6TjOqFxwA2gL2EaDO7cDPKwb3RWlw8sQi4,15285
|
|
16
|
+
workos/passwordless.py,sha256=NGXDoxomBkrIml8-VHXH1HvCFMqotQ-YhRobUQXpVZs,3203
|
|
17
|
+
workos/pipes.py,sha256=nfX1_n9aP4UygVqOb4ctkJ4YHX_-zndAHo8kp8fa67Q,2864
|
|
18
|
+
workos/portal.py,sha256=lzf3fnOor4AyVdHCHMuJzVSpAC9LWWdC5sZIRtCsb0c,2443
|
|
19
|
+
workos/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
workos/session.py,sha256=Fh9Y7fyjoX_cK2TayhNzpL725pwrNg-QClsgEfuMZsU,12412
|
|
21
|
+
workos/sso.py,sha256=ZBC3y-IRmxG0jPd0BOj7s7XQkXJoTLUg1fx-h3Gfy4g,13541
|
|
22
|
+
workos/user_management.py,sha256=OJ-_RiLUhjL662t6A3t_eOBKfqWW0_sX-HjfiUS6hsc,86028
|
|
23
|
+
workos/vault.py,sha256=2-Kd50cITPgGdF6SiGqtrAczEhwCai5yYOoUkljpdDY,16475
|
|
24
|
+
workos/webhooks.py,sha256=CuwBxh6va9VZFVSXOknveGt6CCGDF3em07a-J12DbXI,4790
|
|
25
|
+
workos/widgets.py,sha256=bfbR0hQOHZabbgGL2ekD5sY1sjiUoWBTdrBd_a6WmBc,1721
|
|
26
|
+
workos/types/__init__.py,sha256=aYScTXq5jOyp0AYvdWffaj5-zdDuNtCCJtbzt5GM19k,267
|
|
27
|
+
workos/types/list_resource.py,sha256=VcJaz8qE91y9t-PRI0mTjzPdtyoU8EGAo6-TJGjbqzg,6747
|
|
28
|
+
workos/types/metadata.py,sha256=uUqDkGJGyFY3H4JZObSiCfn4jKBue5CBhOqv79TI1n0,52
|
|
29
|
+
workos/types/workos_model.py,sha256=bV_p3baadcUJOU_7f6ysZ6KXhpt3E_93spuZnfJs9vc,735
|
|
30
|
+
workos/types/api_keys/__init__.py,sha256=CMjEAI6EAO2En9UUwvEQW6EAVuV6l5wWPvmuKH8oKhs,53
|
|
31
|
+
workos/types/api_keys/api_keys.py,sha256=eVpXS6hhLCFhIqJ_oQNIbwjL9u0blVykjpQxZEEKDS8,403
|
|
32
|
+
workos/types/audit_logs/__init__.py,sha256=daPn8wAVEnlM1fCpOsy3dVZV_0YEp8bA1T_nhk5-pU8,211
|
|
33
|
+
workos/types/audit_logs/audit_log_event.py,sha256=GVvbu3JJpXW-N16zdWi-0c3W9z_t3JB7Y6-Rc463upw,672
|
|
34
|
+
workos/types/audit_logs/audit_log_event_actor.py,sha256=vYojEwq4EPwAO01p_9FmVuKg6Cr7lycrWkldB_W26GA,320
|
|
35
|
+
workos/types/audit_logs/audit_log_event_context.py,sha256=Cc4a5oVrPf9PhydJfMBy5EiSxJqqLdb9D1pYm8T4Pp4,195
|
|
36
|
+
workos/types/audit_logs/audit_log_event_target.py,sha256=cCK13Ya1n-7QKQKiIW2SjkQLq9AM5JVoWp_Rpxuamfc,327
|
|
37
|
+
workos/types/audit_logs/audit_log_export.py,sha256=brU6HoNsq-H8jVDd9zRzCDkBnAD95yrFyrekhp3vSlE,466
|
|
38
|
+
workos/types/audit_logs/audit_log_metadata.py,sha256=GaJrSxYboUpdJPz2jJf2uc4za9zwUrgqwRnTCl1dbpw,71
|
|
39
|
+
workos/types/directory_sync/__init__.py,sha256=U26Aq1DCRicStFn7Y4OcPRVjy_03c0C0fAWNi_4_d4s,147
|
|
40
|
+
workos/types/directory_sync/directory.py,sha256=M7IvlTeKrLj-BpGeX-nafBM6BWUnHb3-1ninObWyuRY,902
|
|
41
|
+
workos/types/directory_sync/directory_group.py,sha256=4bRB3inN72GfsJEA17OpMEI-_6hhdXFVGpTL0PWaXL0,439
|
|
42
|
+
workos/types/directory_sync/directory_state.py,sha256=4qaD1Snonde1oVj1tDUITzXh0imPUKkacQnb2TcuAIY,607
|
|
43
|
+
workos/types/directory_sync/directory_type.py,sha256=NuHJzxI80WjxKiCSwMj1dfMpfB4o5JHErfLWfxCnKRs,443
|
|
44
|
+
workos/types/directory_sync/directory_user.py,sha256=ZIlhkR2afO5cvWxEXAWsYjOy_sBC9_GBFaa5B3ZYyBo,2135
|
|
45
|
+
workos/types/directory_sync/list_filters.py,sha256=Q4jlocRp4DguCm5e4Oo7udK7IfKmm3N1Rojtg4Eu96w,449
|
|
46
|
+
workos/types/events/__init__.py,sha256=RX4PyjatDLhmNOV_9I08TfY1KjQZWL4CX6LbxhrMxaQ,540
|
|
47
|
+
workos/types/events/authentication_payload.py,sha256=-4DhxWNxyd0Q01w2R4RyoQAwxNrRKMYJAdcRJUrzjEk,1779
|
|
48
|
+
workos/types/events/connection_payload_with_legacy_fields.py,sha256=d0x4BHDMQfrCehKlaU40FcufBiASOtN38idfR5d8hbY,139
|
|
49
|
+
workos/types/events/directory_group_membership_payload.py,sha256=PD81lhsRWUxQmugKo7pm_E6rVAaiBa2sjDYVAoSPGVU,300
|
|
50
|
+
workos/types/events/directory_group_with_previous_attributes.py,sha256=13VLNhdJZWsreWfozFEzhWY3ay4qEMEI8AStfqsk8gA,232
|
|
51
|
+
workos/types/events/directory_payload.py,sha256=tRo3f9g8VoYertSUPAR25iGDyGLr2Dtb2mTkl73PAeA,503
|
|
52
|
+
workos/types/events/directory_payload_with_legacy_fields.py,sha256=jk9nLmRqgllVkBG4EU3uTgcDOhCNptHgCh93U7aBAYE,1005
|
|
53
|
+
workos/types/events/directory_user_with_previous_attributes.py,sha256=PhnO3WakBxAvnlOGf0UB0bvoppUYlwLyU-g9X_pPdko,244
|
|
54
|
+
workos/types/events/event.py,sha256=oSNel0-Wom2sRyJki7fKokV95Py-ujzbz6mE3Yd1sB0,10249
|
|
55
|
+
workos/types/events/event_model.py,sha256=T7LhScyPfAFoOLJdRK_LsS3aEuePSa1kcH3IzwvNRCw,3778
|
|
56
|
+
workos/types/events/event_type.py,sha256=YgxVsHTau5TGlgDIvruS7NGX7buMWbCCYIF9bV9BAuM,1766
|
|
57
|
+
workos/types/events/list_filters.py,sha256=P04zmRynx9VPqNX_MBXA-3KA6flPZJogtIUqTI7w9Eg,305
|
|
58
|
+
workos/types/events/organization_domain_verification_failed_payload.py,sha256=b4wX8HVbL9Nx6fCjOXkZg9eLc-Bv6YqAjMap1f7UvFc,470
|
|
59
|
+
workos/types/events/previous_attributes.py,sha256=DxolwLwzcnG8r_W6rh5BT29iDfSVsIELvRYJ0NCrNn0,72
|
|
60
|
+
workos/types/events/session_payload.py,sha256=fErEOkbZtuJSAnbJPaUJg5ZsUj5u05w6WHQguo_fZEM,770
|
|
61
|
+
workos/types/feature_flags/__init__.py,sha256=zQpY624xaDw8t94ZbNrl_iH9bHPrSYYSKHVDnd7XTmc,91
|
|
62
|
+
workos/types/feature_flags/feature_flag.py,sha256=fS1RP_mOJKMmnaNqpSsePkixbJAExx-153IKb29kC-4,268
|
|
63
|
+
workos/types/feature_flags/list_filters.py,sha256=iTnz1KNzxXAJunBMg-ZE63Mh2DaCFmS4S_q6AoL3rbI,112
|
|
64
|
+
workos/types/fga/__init__.py,sha256=mVb3gvhvK93PAosSgO1RlNmxYX4zIxVDcZZQ8Jyejuw,151
|
|
65
|
+
workos/types/fga/authorization_resource_types.py,sha256=wB_CNWhsuCx16u26-o0MJuN2zS6aMV61WDTVHlwD1zk,225
|
|
66
|
+
workos/types/fga/authorization_resources.py,sha256=pXDMKGTd6AX7Z6zDAud9ebn_NMOAVoXtBNH1VRkmdyI,263
|
|
67
|
+
workos/types/fga/check.py,sha256=6AIHsc2WmsXbpEFZcSTy2hIoSr2rmoLt-8wLWdSrc_E,1274
|
|
68
|
+
workos/types/fga/list_filters.py,sha256=wLQt_AJprmvglZSWv7ZRjwjD4b2vHL0V_7c9u-5u_Uw,640
|
|
69
|
+
workos/types/fga/warnings.py,sha256=zCasrVd19nRgSR4u5AhsyS_qCUduIfuhMLUdEUtE9Xg,869
|
|
70
|
+
workos/types/fga/warrant.py,sha256=aKO-9t0NGk-9oQs8j_gnG3VfNU6U9IdGCH4EN3imRWs,1016
|
|
71
|
+
workos/types/mfa/__init__.py,sha256=-gHL2QwZYbqDGPrIMkUrciJm4EiSRz3fJVF55B3rKiM,253
|
|
72
|
+
workos/types/mfa/authentication_challenge.py,sha256=V8UYutxCAxenaOeqWuPwQU0QcO4HD_0RoQbkG3sqgAU,436
|
|
73
|
+
workos/types/mfa/authentication_challenge_verification_response.py,sha256=5HxsMJY6t6bbvpe2YsI7i5NnevCGR6mHo7irCb2OUjw,324
|
|
74
|
+
workos/types/mfa/authentication_factor.py,sha256=92Cq9MLwBUXfowzCv2u9ZnoH9tVgDm16jjmelN7BOGs,2021
|
|
75
|
+
workos/types/mfa/authentication_factor_totp_and_challenge_response.py,sha256=Ix_DqF7eQ-x6Up8C_0wzvAXXyDY876nobRuiXXL8nbc,541
|
|
76
|
+
workos/types/mfa/enroll_authentication_factor_type.py,sha256=l_w4co5BdmfglII5YAQiyL-kdAw8KiiOsYaDhn8lGWE,227
|
|
77
|
+
workos/types/organization_domains/__init__.py,sha256=fpNRKfzZ0p1FybwQG4L-YY12nFPTCJjD4j60OJI5fXE,35
|
|
78
|
+
workos/types/organization_domains/organization_domain.py,sha256=PkmdVVQi6h94xHWLJt0SFGgiGEVoyxwiPD-WwQ1naWs,614
|
|
79
|
+
workos/types/organizations/__init__.py,sha256=uE2qD2MOebPs-_BerqenTqmu4I4DI5-CKIY_M8BGwDY,240
|
|
80
|
+
workos/types/organizations/domain_data_input.py,sha256=BW3iYswF-b2SXip7jwPkmlZhgLReS_VyzUlU8PD4xdw,161
|
|
81
|
+
workos/types/organizations/list_filters.py,sha256=u-TsEEMVI8IvPvxn_9--k6iYDs4T64RHTY_HY0Fvwlw,179
|
|
82
|
+
workos/types/organizations/organization.py,sha256=oVGg-C0blizg7aGVeRTr3vvTRvrn_WPzwaV-LvbQxRo,520
|
|
83
|
+
workos/types/organizations/organization_common.py,sha256=lelq-Id9AGSmosFprFAET_QyXmYR0wHX9-XMsOTEr7s,337
|
|
84
|
+
workos/types/passwordless/__init__.py,sha256=ZP_XIcGUKXsATb--bfesnsFFbbvg3WYzgqRC_qvW0rw,77
|
|
85
|
+
workos/types/passwordless/passwordless_session.py,sha256=izmTI5F7qvBdoVodaXP7fnYo_XodG-ygyYTPrCEObTM,293
|
|
86
|
+
workos/types/passwordless/passwordless_session_type.py,sha256=ltZAV8KFiYDVcxpVt5Hcdc089tB5VETYaa9X6E7Mvoo,75
|
|
87
|
+
workos/types/pipes/__init__.py,sha256=xW5LqJAmrLMMZ8N3soScKf11Gs6DfJlH2rzF01Z6p3w,263
|
|
88
|
+
workos/types/pipes/pipes.py,sha256=J5q62a6LwS-WdZq0DpVt95PZNo-IdRXT5riWsZluCks,890
|
|
89
|
+
workos/types/portal/__init__.py,sha256=3fuGV-zAfsRI0JLK4atYmplTBEUm-4xUwY40iYqVkeI,61
|
|
90
|
+
workos/types/portal/portal_link.py,sha256=1eCjQnw3gYv2xl7rrLK41qR9tOcqwu-jXUoQqgLDBEg,167
|
|
91
|
+
workos/types/portal/portal_link_intent.py,sha256=k49TjGykD1XQnPzzfIbvT4DR42FBV_YYv7LMGXCqq2Q,174
|
|
92
|
+
workos/types/portal/portal_link_intent_options.py,sha256=HMDW6mBkCspcMq_x9wPwq5ul2soptZZfKzxQkH3Bif0,149
|
|
93
|
+
workos/types/roles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
+
workos/types/roles/role.py,sha256=GhY6tCFIW33Z-SCbP---Esyoz_ePFvoamxIqyWvCNJ4,543
|
|
95
|
+
workos/types/sso/__init__.py,sha256=feBeNqummbAvLaiAn9mTmW5O8axKHUWxh6IkQceKeAc,115
|
|
96
|
+
workos/types/sso/connection.py,sha256=GTpaS02EMv2cJAkt20tSxldVCcKQlpl37vQSIAIHSdM,1679
|
|
97
|
+
workos/types/sso/connection_domain.py,sha256=kMa9GatwUl6YilMU9iiyUKXFfEUKWYub7PyjjYmqhLc,185
|
|
98
|
+
workos/types/sso/profile.py,sha256=htysPjNhago855TXVfDe685hQKEnc60u6AO0CHWs1T4,1125
|
|
99
|
+
workos/types/sso/sso_provider_type.py,sha256=JfO-Ta1wJP7jhtbnWKcS9tElMK_7P6AM10nY-7mM4XE,159
|
|
100
|
+
workos/types/user_management/__init__.py,sha256=paHEZ8-QWPjX6PftupYRRVqfy6tVNevfl2kAD3ZgEZw,384
|
|
101
|
+
workos/types/user_management/authenticate_with_common.py,sha256=2mGRfIgoeX5Ee7c_rxQm6rb6PHyaIBHbGFQsWAhGhY8,2101
|
|
102
|
+
workos/types/user_management/authentication_response.py,sha256=2A6vU8FBEE7bXl5aULB-s80_xsR9caqC9tSr9Yq1NtE,1437
|
|
103
|
+
workos/types/user_management/email_verification.py,sha256=4EqlN7qZBVTZGKaU9WdCSdgFjOMZtkYWTolE-h_hTXA,399
|
|
104
|
+
workos/types/user_management/impersonator.py,sha256=_PAPYg_Q1M8wpwtnkQxuA2vtUIwvs_G30vYY91aqw8E,192
|
|
105
|
+
workos/types/user_management/invitation.py,sha256=4fK-Fk786MlhzZvvOrZtU_6SCJXmem3xw62SkBE1c-0,721
|
|
106
|
+
workos/types/user_management/list_filters.py,sha256=9QH4UbU28LaZ1iyiMs8H6heqbWpbCunD2MYmO_qA9pY,756
|
|
107
|
+
workos/types/user_management/magic_auth.py,sha256=Sda13_uMOC-hHlyGeOXNnCn-HrpwUmtrf2hO5ek9U98,359
|
|
108
|
+
workos/types/user_management/oauth_tokens.py,sha256=pANk6AyqyRq6hrOrJYQ9AHALVxUbqhGnggzD8PVV-Ew,468
|
|
109
|
+
workos/types/user_management/organization_membership.py,sha256=dllONFtD1IZZiyqxnV8lJpJyH55OeOeaHRBDZlcWLwk,735
|
|
110
|
+
workos/types/user_management/password_hash_type.py,sha256=1752LWdXbaH6TZ6IxbJWeRwlYXX9zN5iJATTaDrCQVA,93
|
|
111
|
+
workos/types/user_management/password_reset.py,sha256=-NJCfEh4Q1xS9fFXJaF_acYeuUc9POqERLh8urMhqt8,403
|
|
112
|
+
workos/types/user_management/screen_hint.py,sha256=DnPgvjRK-20i82v3YPzggna1rc6yOMyhiqwUdk01L3s,75
|
|
113
|
+
workos/types/user_management/session.py,sha256=crNGjN5pwGM3rXET7iCp0PZpSBK826P_bRlpFOhM5-4,2128
|
|
114
|
+
workos/types/user_management/user.py,sha256=qHI1zKn3WqFi5bT-g8GQiAUS_8xfpzyZRvOPBDUO3jM,636
|
|
115
|
+
workos/types/user_management/user_management_provider_type.py,sha256=t7S3zLf9n9GSYQJjshGRdiAfebYQKziGmUgbBlOmYuE,185
|
|
116
|
+
workos/types/vault/__init__.py,sha256=krBuIl8luysrtDf9-b8KTkXOHDOaSsOR-Aao6Wlil0Q,41
|
|
117
|
+
workos/types/vault/key.py,sha256=x30XBplSj9AviDDAB8MdpcULbZvvo2sUzi8RCmZQKxU,453
|
|
118
|
+
workos/types/vault/object.py,sha256=-rk4KovS3eT8T8L3JltYUS0cd2Rg1JKcAX9SOaZO3D8,664
|
|
119
|
+
workos/types/webhooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
|
+
workos/types/webhooks/webhook.py,sha256=BtPliPkUWJgXYRCZCwZNLfCL-pBNaUrUxMyCvlmiMqM,10466
|
|
121
|
+
workos/types/webhooks/webhook_model.py,sha256=v7Hgtzt0nW_5RaYoB_QGVfElhdjySuG3F1BFjoid36w,404
|
|
122
|
+
workos/types/webhooks/webhook_payload.py,sha256=GXt31KtyBM-ji5K5p4dBnu46Gh8adQWTq0ye5USB_6g,68
|
|
123
|
+
workos/types/widgets/__init__.py,sha256=z2Tdlj_bJsRZeJRh4SOFX58PvJdf0LjKnYhrQX1fpME,65
|
|
124
|
+
workos/types/widgets/widget_scope.py,sha256=1sdxwfMW0DfiEr1TwPUdlUL8YZAflLAjQ-3auDwo5oA,81
|
|
125
|
+
workos/types/widgets/widget_token_response.py,sha256=bM2_tIxyBVZqwQ128eCwJ3IjlWpr7CgADUAT9801L8k,168
|
|
126
|
+
workos/typing/__init__.py,sha256=kiaJWJSfUT55sm1gPCSx_VPQbigeE7TE-c4tTwYMKhY,61
|
|
127
|
+
workos/typing/literals.py,sha256=I930NYkbqPA_vX30ZYG-SZD0_FaWP3D3AlcZr-je4T0,1062
|
|
128
|
+
workos/typing/sync_or_async.py,sha256=O-a-bWqxN5A-UkSC3pOvPgDCGUY5gMD-NNny4HdISeI,101
|
|
129
|
+
workos/typing/untyped_literal.py,sha256=wf48_6kZJ-AN3-V2gLC_y5k2tnUvgGnhn89HsfOKNTM,1463
|
|
130
|
+
workos/typing/webhooks.py,sha256=8GhUnrlGrgQbknh32tVtHxeR8FsXsJesW94CtZiB-_4,534
|
|
131
|
+
workos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
|
+
workos/utils/_base_http_client.py,sha256=tX2RAk2Mc2oHPTpzIft4-Tss8-vOJZUjmHcQ9cjpwOs,7705
|
|
133
|
+
workos/utils/crypto_provider.py,sha256=QeQSR4t9xLlb90kEfl8onVUsf1yCkYq0EjFTxK0mUlk,1182
|
|
134
|
+
workos/utils/http_client.py,sha256=TM5yMFFExmAE8D2Z43-5O301tRbnylLG0aXO0isGorE,6197
|
|
135
|
+
workos/utils/pagination_order.py,sha256=_-et1DDJLG0czarTU7op4W6RA0V1f85GNsUgtyRU55Q,70
|
|
136
|
+
workos/utils/request_helper.py,sha256=NaO16qPPbSNnCeE0fiNKYb8gM-dK_okYVJbLGrEGXz8,793
|
|
137
|
+
workos-5.38.0.dist-info/LICENSE,sha256=mU--WL1JzelH2tXpKVoOlpud4cpqKSRTtdArCvYZmb4,1063
|
|
138
|
+
workos-5.38.0.dist-info/METADATA,sha256=z4eV58I3NdMHE675FUYYLDTIZt6puzmfoTXwvyzbN3c,4187
|
|
139
|
+
workos-5.38.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
140
|
+
workos-5.38.0.dist-info/top_level.txt,sha256=ZFskIfue1Tw-JwjyIXRvdsAl9i0DX9VbqmgICXV84Sk,7
|
|
141
|
+
workos-5.38.0.dist-info/RECORD,,
|