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.
Files changed (150) hide show
  1. workos/__about__.py +1 -1
  2. workos/__init__.py +3 -7
  3. workos/_base_client.py +138 -0
  4. workos/_client_configuration.py +10 -0
  5. workos/api_keys.py +53 -0
  6. workos/async_client.py +144 -0
  7. workos/audit_logs.py +125 -0
  8. workos/client.py +110 -18
  9. workos/directory_sync.py +379 -99
  10. workos/events.py +111 -0
  11. workos/exceptions.py +53 -26
  12. workos/fga.py +649 -0
  13. workos/mfa.py +205 -0
  14. workos/organization_domains.py +179 -0
  15. workos/organizations.py +403 -73
  16. workos/passwordless.py +67 -43
  17. workos/pipes.py +93 -0
  18. workos/portal.py +51 -28
  19. workos/session.py +337 -0
  20. workos/sso.py +311 -101
  21. workos/types/__init__.py +4 -0
  22. workos/types/api_keys/__init__.py +1 -0
  23. workos/types/api_keys/api_keys.py +20 -0
  24. workos/types/audit_logs/__init__.py +6 -0
  25. workos/types/audit_logs/audit_log_event.py +16 -0
  26. workos/types/audit_logs/audit_log_event_actor.py +12 -0
  27. workos/types/audit_logs/audit_log_event_context.py +8 -0
  28. workos/types/audit_logs/audit_log_event_target.py +12 -0
  29. workos/types/audit_logs/audit_log_export.py +18 -0
  30. workos/types/audit_logs/audit_log_metadata.py +4 -0
  31. workos/types/directory_sync/__init__.py +5 -0
  32. workos/types/directory_sync/directory.py +31 -0
  33. workos/types/directory_sync/directory_group.py +16 -0
  34. workos/types/directory_sync/directory_state.py +28 -0
  35. workos/types/directory_sync/directory_type.py +24 -0
  36. workos/types/directory_sync/directory_user.py +50 -0
  37. workos/types/directory_sync/list_filters.py +21 -0
  38. workos/types/events/__init__.py +13 -0
  39. workos/types/events/authentication_payload.py +70 -0
  40. workos/types/events/connection_payload_with_legacy_fields.py +5 -0
  41. workos/types/events/directory_group_membership_payload.py +9 -0
  42. workos/types/events/directory_group_with_previous_attributes.py +6 -0
  43. workos/types/events/directory_payload.py +16 -0
  44. workos/types/events/directory_payload_with_legacy_fields.py +29 -0
  45. workos/types/events/directory_user_with_previous_attributes.py +6 -0
  46. workos/types/events/event.py +324 -0
  47. workos/types/events/event_model.py +103 -0
  48. workos/types/events/event_type.py +59 -0
  49. workos/types/events/list_filters.py +10 -0
  50. workos/types/events/organization_domain_verification_failed_payload.py +14 -0
  51. workos/types/events/previous_attributes.py +3 -0
  52. workos/types/events/session_payload.py +27 -0
  53. workos/types/feature_flags/__init__.py +3 -0
  54. workos/types/feature_flags/feature_flag.py +12 -0
  55. workos/types/feature_flags/list_filters.py +5 -0
  56. workos/types/fga/__init__.py +5 -0
  57. workos/types/fga/authorization_resource_types.py +9 -0
  58. workos/types/fga/authorization_resources.py +10 -0
  59. workos/types/fga/check.py +51 -0
  60. workos/types/fga/list_filters.py +24 -0
  61. workos/types/fga/warnings.py +33 -0
  62. workos/types/fga/warrant.py +49 -0
  63. workos/types/list_resource.py +198 -0
  64. workos/types/metadata.py +4 -0
  65. workos/types/mfa/__init__.py +5 -0
  66. workos/types/mfa/authentication_challenge.py +14 -0
  67. workos/types/mfa/authentication_challenge_verification_response.py +9 -0
  68. workos/types/mfa/authentication_factor.py +70 -0
  69. workos/types/mfa/authentication_factor_totp_and_challenge_response.py +10 -0
  70. workos/types/mfa/enroll_authentication_factor_type.py +8 -0
  71. workos/types/organization_domains/__init__.py +1 -0
  72. workos/types/organization_domains/organization_domain.py +18 -0
  73. workos/types/organizations/__init__.py +6 -0
  74. workos/types/organizations/domain_data_input.py +7 -0
  75. workos/types/organizations/list_filters.py +6 -0
  76. workos/types/organizations/organization.py +13 -0
  77. workos/types/organizations/organization_common.py +12 -0
  78. workos/types/passwordless/__init__.py +2 -0
  79. workos/types/passwordless/passwordless_session.py +12 -0
  80. workos/types/passwordless/passwordless_session_type.py +3 -0
  81. workos/types/pipes/__init__.py +6 -0
  82. workos/types/pipes/pipes.py +34 -0
  83. workos/types/portal/__init__.py +2 -0
  84. workos/types/portal/portal_link.py +7 -0
  85. workos/types/portal/portal_link_intent.py +11 -0
  86. workos/types/portal/portal_link_intent_options.py +9 -0
  87. workos/types/roles/__init__.py +0 -0
  88. workos/types/roles/role.py +27 -0
  89. workos/types/sso/__init__.py +4 -0
  90. workos/types/sso/connection.py +70 -0
  91. workos/types/sso/connection_domain.py +8 -0
  92. workos/types/sso/profile.py +35 -0
  93. workos/types/sso/sso_provider_type.py +10 -0
  94. workos/types/user_management/__init__.py +12 -0
  95. workos/types/user_management/authenticate_with_common.py +66 -0
  96. workos/types/user_management/authentication_response.py +53 -0
  97. workos/types/user_management/email_verification.py +18 -0
  98. workos/types/user_management/impersonator.py +8 -0
  99. workos/types/user_management/invitation.py +26 -0
  100. workos/types/user_management/list_filters.py +29 -0
  101. workos/types/user_management/magic_auth.py +18 -0
  102. workos/types/user_management/oauth_tokens.py +21 -0
  103. workos/types/user_management/organization_membership.py +25 -0
  104. workos/types/user_management/password_hash_type.py +4 -0
  105. workos/types/user_management/password_reset.py +18 -0
  106. workos/types/user_management/screen_hint.py +3 -0
  107. workos/types/user_management/session.py +79 -0
  108. workos/types/user_management/user.py +22 -0
  109. workos/types/user_management/user_management_provider_type.py +11 -0
  110. workos/types/vault/__init__.py +2 -0
  111. workos/types/vault/key.py +25 -0
  112. workos/types/vault/object.py +38 -0
  113. workos/types/webhooks/__init__.py +0 -0
  114. workos/types/webhooks/webhook.py +330 -0
  115. workos/types/webhooks/webhook_model.py +14 -0
  116. workos/types/webhooks/webhook_payload.py +4 -0
  117. workos/types/widgets/__init__.py +2 -0
  118. workos/types/widgets/widget_scope.py +4 -0
  119. workos/types/widgets/widget_token_response.py +7 -0
  120. workos/types/workos_model.py +26 -0
  121. workos/typing/__init__.py +1 -0
  122. workos/typing/literals.py +32 -0
  123. workos/typing/sync_or_async.py +5 -0
  124. workos/typing/untyped_literal.py +37 -0
  125. workos/typing/webhooks.py +18 -0
  126. workos/user_management.py +2400 -0
  127. workos/utils/_base_http_client.py +252 -0
  128. workos/utils/crypto_provider.py +39 -0
  129. workos/utils/http_client.py +214 -0
  130. workos/utils/pagination_order.py +4 -0
  131. workos/utils/request_helper.py +27 -0
  132. workos/vault.py +544 -0
  133. workos/webhooks.py +96 -39
  134. workos/widgets.py +55 -0
  135. {workos-1.5.1.dist-info → workos-5.38.0.dist-info}/LICENSE +1 -1
  136. workos-5.38.0.dist-info/METADATA +107 -0
  137. workos-5.38.0.dist-info/RECORD +141 -0
  138. {workos-1.5.1.dist-info → workos-5.38.0.dist-info}/WHEEL +1 -1
  139. workos/audit_trail.py +0 -172
  140. workos/resources/base.py +0 -36
  141. workos/resources/event.py +0 -42
  142. workos/resources/event_action.py +0 -11
  143. workos/resources/sso.py +0 -53
  144. workos/utils/connection_types.py +0 -17
  145. workos/utils/request.py +0 -95
  146. workos/utils/validation.py +0 -45
  147. workos-1.5.1.dist-info/METADATA +0 -77
  148. workos-1.5.1.dist-info/RECORD +0 -25
  149. /workos/{resources/__init__.py → py.typed} +0 -0
  150. {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
- from workos.utils.request import RequestHelper
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 collections import OrderedDict
7
- import hashlib
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 Webhooks(object):
10
+ class WebhooksModule(Protocol):
11
11
  """Offers methods through the WorkOS Webhooks service."""
12
12
 
13
- @validate_settings(WEBHOOKS_MODULE)
14
- def __init__(self):
15
- pass
16
-
17
- @property
18
- def request_helper(self):
19
- if not getattr(self, "_request_helper", None):
20
- self._request_helper = RequestHelper()
21
- return self._request_helper
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(self, payload, sig_header, secret, tolerance=DEFAULT_TOLERANCE):
26
-
27
- if payload is None:
28
- raise ValueError("Payload body is missing and is a required parameter")
29
- if sig_header is None:
30
- raise ValueError("Payload signature missing and is a required parameter")
31
- if secret is None:
32
- raise ValueError("Secret is missing and is a required parameter")
33
-
34
- Webhooks.verify_header(self, payload, sig_header, secret, tolerance)
35
- event = json.loads(payload, object_pairs_hook=OrderedDict)
36
- return event
37
-
38
- def verify_header(self, event_body, event_signature, secret, tolerance=None):
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.check_timestamp_range(
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.constant_time_compare(self, signature_hash, expected_signature)
71
-
72
- def constant_time_compare(self, val1, val2):
73
- if len(val1) != len(val2):
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
- return result == 0
132
+ if result != 0:
133
+ return False
134
+
135
+ if result == 0:
136
+ return True
137
+
138
+ return False
82
139
 
83
- def check_timestamp_range(self, time, max_range):
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)
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 WorkOS
3
+ Copyright (c) 2024 WorkOS
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -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
+ ![PyPI](https://img.shields.io/pypi/v/workos)
41
+ [![Build Status](https://workos.semaphoreci.com/badges/workos-python/branches/main.svg?style=shields&key=9e4cb5bb-86a4-4938-9ec2-fc9f9fc512be)](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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.0)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5