workos 5.20.2__tar.gz → 5.22.0__tar.gz
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-5.20.2 → workos-5.22.0}/PKG-INFO +1 -1
- {workos-5.20.2 → workos-5.22.0}/tests/test_fga.py +97 -0
- {workos-5.20.2 → workos-5.22.0}/workos/__about__.py +1 -1
- {workos-5.20.2 → workos-5.22.0}/workos/fga.py +7 -3
- {workos-5.20.2 → workos-5.22.0}/workos/types/fga/__init__.py +1 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/fga/check.py +2 -0
- workos-5.22.0/workos/types/fga/warnings.py +33 -0
- {workos-5.20.2 → workos-5.22.0}/workos/user_management.py +6 -0
- {workos-5.20.2 → workos-5.22.0}/workos.egg-info/PKG-INFO +1 -1
- {workos-5.20.2 → workos-5.22.0}/workos.egg-info/SOURCES.txt +1 -0
- {workos-5.20.2 → workos-5.22.0}/LICENSE +0 -0
- {workos-5.20.2 → workos-5.22.0}/README.md +0 -0
- {workos-5.20.2 → workos-5.22.0}/setup.cfg +0 -0
- {workos-5.20.2 → workos-5.22.0}/setup.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_async_http_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_audit_logs.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_directory_sync.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_events.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_mfa.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_organizations.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_passwordless.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_portal.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_session.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_sso.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_sync_http_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_user_management.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_webhooks.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/tests/test_widgets.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/_base_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/_client_configuration.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/async_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/audit_logs.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/directory_sync.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/events.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/exceptions.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/mfa.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/organizations.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/passwordless.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/portal.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/py.typed +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/session.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/sso.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/audit_log_event.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/audit_log_event_actor.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/audit_log_event_context.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/audit_log_event_target.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/audit_log_export.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/audit_logs/audit_log_metadata.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/directory.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/directory_group.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/directory_state.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/directory_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/directory_user.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/directory_sync/list_filters.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/authentication_payload.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/connection_payload_with_legacy_fields.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_group_membership_payload.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_group_with_previous_attributes.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_payload.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_payload_with_legacy_fields.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_user_with_previous_attributes.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/event.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/event_model.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/event_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/list_filters.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/organization_domain_verification_failed_payload.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/previous_attributes.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/events/session_created_payload.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/fga/authorization_resource_types.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/fga/authorization_resources.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/fga/list_filters.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/fga/warrant.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/list_resource.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/metadata.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/mfa/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/mfa/authentication_challenge.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/mfa/authentication_challenge_verification_response.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/mfa/authentication_factor.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/mfa/authentication_factor_totp_and_challenge_response.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/mfa/enroll_authentication_factor_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/organizations/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/organizations/domain_data_input.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/organizations/list_filters.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/organizations/organization.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/organizations/organization_common.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/organizations/organization_domain.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/passwordless/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/passwordless/passwordless_session.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/passwordless/passwordless_session_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/portal/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/portal/portal_link.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/portal/portal_link_intent.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/portal/portal_link_intent_options.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/roles/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/roles/role.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/sso/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/sso/connection.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/sso/connection_domain.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/sso/profile.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/sso/sso_provider_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/authenticate_with_common.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/authentication_response.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/email_verification.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/impersonator.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/invitation.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/list_filters.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/magic_auth.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/oauth_tokens.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/organization_membership.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/password_hash_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/password_reset.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/screen_hint.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/session.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/user.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/user_management/user_management_provider_type.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/webhooks/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/webhooks/webhook.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/webhooks/webhook_model.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/webhooks/webhook_payload.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/widgets/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/widgets/widget_scope.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/widgets/widget_token_response.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/types/workos_model.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/typing/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/typing/literals.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/typing/sync_or_async.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/typing/untyped_literal.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/typing/webhooks.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/utils/__init__.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/utils/_base_http_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/utils/http_client.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/utils/pagination_order.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/utils/request_helper.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/webhooks.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos/widgets.py +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos.egg-info/dependency_links.txt +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos.egg-info/not-zip-safe +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos.egg-info/requires.txt +0 -0
- {workos-5.20.2 → workos-5.22.0}/workos.egg-info/top_level.txt +0 -0
|
@@ -101,6 +101,103 @@ class TestErrorHandling:
|
|
|
101
101
|
self.fga.get_resource(resource_type="test", resource_id="test")
|
|
102
102
|
|
|
103
103
|
|
|
104
|
+
class TestWarnings:
|
|
105
|
+
@pytest.fixture(autouse=True)
|
|
106
|
+
def setup(self, sync_http_client_for_test):
|
|
107
|
+
self.http_client = sync_http_client_for_test
|
|
108
|
+
self.fga = FGA(http_client=self.http_client)
|
|
109
|
+
|
|
110
|
+
def test_check_with_warning(self, mock_http_client_with_response):
|
|
111
|
+
mock_response = {
|
|
112
|
+
"result": "authorized",
|
|
113
|
+
"is_implicit": True,
|
|
114
|
+
"warnings": [
|
|
115
|
+
{
|
|
116
|
+
"code": "missing_context_keys",
|
|
117
|
+
"message": "Missing context keys",
|
|
118
|
+
"keys": ["key1", "key2"],
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
}
|
|
122
|
+
mock_http_client_with_response(self.http_client, mock_response, 200)
|
|
123
|
+
|
|
124
|
+
response = self.fga.check(
|
|
125
|
+
op="any_of",
|
|
126
|
+
checks=[
|
|
127
|
+
WarrantCheckInput(
|
|
128
|
+
resource_type="schedule",
|
|
129
|
+
resource_id="schedule-A1",
|
|
130
|
+
relation="viewer",
|
|
131
|
+
subject=SubjectInput(resource_type="user", resource_id="user-A"),
|
|
132
|
+
)
|
|
133
|
+
],
|
|
134
|
+
)
|
|
135
|
+
assert response.dict(exclude_none=True) == mock_response
|
|
136
|
+
|
|
137
|
+
def test_query_with_warning(self, mock_http_client_with_response):
|
|
138
|
+
mock_response = {
|
|
139
|
+
"object": "list",
|
|
140
|
+
"data": [
|
|
141
|
+
{
|
|
142
|
+
"resource_type": "user",
|
|
143
|
+
"resource_id": "richard",
|
|
144
|
+
"relation": "member",
|
|
145
|
+
"warrant": {
|
|
146
|
+
"resource_type": "role",
|
|
147
|
+
"resource_id": "developer",
|
|
148
|
+
"relation": "member",
|
|
149
|
+
"subject": {"resource_type": "user", "resource_id": "richard"},
|
|
150
|
+
},
|
|
151
|
+
"is_implicit": True,
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"list_metadata": {},
|
|
155
|
+
"warnings": [
|
|
156
|
+
{
|
|
157
|
+
"code": "missing_context_keys",
|
|
158
|
+
"message": "Missing context keys",
|
|
159
|
+
"keys": ["key1", "key2"],
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
mock_http_client_with_response(self.http_client, mock_response, 200)
|
|
165
|
+
|
|
166
|
+
response = self.fga.query(
|
|
167
|
+
q="select member of type user for permission:view-docs",
|
|
168
|
+
order="asc",
|
|
169
|
+
warrant_token="warrant_token",
|
|
170
|
+
)
|
|
171
|
+
assert response.dict(exclude_none=True) == mock_response
|
|
172
|
+
|
|
173
|
+
def test_check_with_generic_warning(self, mock_http_client_with_response):
|
|
174
|
+
mock_response = {
|
|
175
|
+
"result": "authorized",
|
|
176
|
+
"is_implicit": True,
|
|
177
|
+
"warnings": [
|
|
178
|
+
{
|
|
179
|
+
"code": "generic",
|
|
180
|
+
"message": "Generic warning",
|
|
181
|
+
}
|
|
182
|
+
],
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
mock_http_client_with_response(self.http_client, mock_response, 200)
|
|
186
|
+
|
|
187
|
+
response = self.fga.check(
|
|
188
|
+
op="any_of",
|
|
189
|
+
checks=[
|
|
190
|
+
WarrantCheckInput(
|
|
191
|
+
resource_type="schedule",
|
|
192
|
+
resource_id="schedule-A1",
|
|
193
|
+
relation="viewer",
|
|
194
|
+
subject=SubjectInput(resource_type="user", resource_id="user-A"),
|
|
195
|
+
)
|
|
196
|
+
],
|
|
197
|
+
)
|
|
198
|
+
assert response.dict(exclude_none=True) == mock_response
|
|
199
|
+
|
|
200
|
+
|
|
104
201
|
class TestFGA:
|
|
105
202
|
@pytest.fixture(autouse=True)
|
|
106
203
|
def setup(self, sync_http_client_for_test):
|
|
@@ -11,6 +11,7 @@ from workos.types.fga import (
|
|
|
11
11
|
WarrantWriteOperation,
|
|
12
12
|
WriteWarrantResponse,
|
|
13
13
|
WarrantQueryResult,
|
|
14
|
+
FGAWarning,
|
|
14
15
|
)
|
|
15
16
|
from workos.types.fga.list_filters import (
|
|
16
17
|
AuthorizationResourceListFilters,
|
|
@@ -45,9 +46,11 @@ AuthorizationResourceTypeListResource = WorkOSListResource[
|
|
|
45
46
|
|
|
46
47
|
WarrantListResource = WorkOSListResource[Warrant, WarrantListFilters, ListMetadata]
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
]
|
|
49
|
+
|
|
50
|
+
class WarrantQueryListResource(
|
|
51
|
+
WorkOSListResource[WarrantQueryResult, WarrantQueryListFilters, ListMetadata]
|
|
52
|
+
):
|
|
53
|
+
warnings: Optional[Sequence[FGAWarning]] = None
|
|
51
54
|
|
|
52
55
|
|
|
53
56
|
class FGAModule(Protocol):
|
|
@@ -641,5 +644,6 @@ class FGA(FGAModule):
|
|
|
641
644
|
return WarrantQueryListResource(
|
|
642
645
|
list_method=self.query,
|
|
643
646
|
list_args=list_params,
|
|
647
|
+
warnings=response.get("warnings"),
|
|
644
648
|
**ListPage[WarrantQueryResult](**response).model_dump(),
|
|
645
649
|
)
|
|
@@ -3,6 +3,7 @@ from typing import Any, Literal, Mapping, Optional, Sequence, TypedDict
|
|
|
3
3
|
from workos.types.workos_model import WorkOSModel
|
|
4
4
|
from workos.typing.literals import LiteralOrUntyped
|
|
5
5
|
|
|
6
|
+
from .warnings import FGAWarning
|
|
6
7
|
from .warrant import Subject, SubjectInput
|
|
7
8
|
|
|
8
9
|
CheckOperation = Literal["any_of", "all_of", "batch"]
|
|
@@ -44,6 +45,7 @@ class CheckResponse(WorkOSModel):
|
|
|
44
45
|
result: LiteralOrUntyped[CheckResult]
|
|
45
46
|
is_implicit: bool
|
|
46
47
|
debug_info: Optional[DebugInfo] = None
|
|
48
|
+
warnings: Optional[Sequence[FGAWarning]] = None
|
|
47
49
|
|
|
48
50
|
def authorized(self) -> bool:
|
|
49
51
|
return self.result == "authorized"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from typing import Sequence, Union, Any, Dict, Literal
|
|
2
|
+
from typing_extensions import Annotated
|
|
3
|
+
|
|
4
|
+
from pydantic import BeforeValidator
|
|
5
|
+
from pydantic_core.core_schema import ValidationInfo
|
|
6
|
+
|
|
7
|
+
from workos.types.workos_model import WorkOSModel
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FGABaseWarning(WorkOSModel):
|
|
11
|
+
code: str
|
|
12
|
+
message: str
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class MissingContextKeysWarning(FGABaseWarning):
|
|
16
|
+
code: Literal["missing_context_keys"]
|
|
17
|
+
keys: Sequence[str]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def fga_warning_dispatch_validator(
|
|
21
|
+
value: Dict[str, Any], info: ValidationInfo
|
|
22
|
+
) -> FGABaseWarning:
|
|
23
|
+
if value.get("code") == "missing_context_keys":
|
|
24
|
+
return MissingContextKeysWarning.model_validate(value)
|
|
25
|
+
|
|
26
|
+
# Fallback to the base warning model
|
|
27
|
+
return FGABaseWarning.model_validate(value)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
FGAWarning = Annotated[
|
|
31
|
+
Union[MissingContextKeysWarning, FGABaseWarning],
|
|
32
|
+
BeforeValidator(fga_warning_dispatch_validator),
|
|
33
|
+
]
|
|
@@ -207,6 +207,7 @@ class UserManagementModule(Protocol):
|
|
|
207
207
|
self,
|
|
208
208
|
*,
|
|
209
209
|
user_id: str,
|
|
210
|
+
email: Optional[str] = None,
|
|
210
211
|
first_name: Optional[str] = None,
|
|
211
212
|
last_name: Optional[str] = None,
|
|
212
213
|
email_verified: Optional[bool] = None,
|
|
@@ -222,6 +223,7 @@ class UserManagementModule(Protocol):
|
|
|
222
223
|
user_id (str): The User unique identifier
|
|
223
224
|
first_name (str): The user's first name. (Optional)
|
|
224
225
|
last_name (str): The user's last name. (Optional)
|
|
226
|
+
email (str): The user's email. (Optional)
|
|
225
227
|
email_verified (bool): Whether the user's email address was previously verified. (Optional)
|
|
226
228
|
password (str): The password to set for the user. (Optional)
|
|
227
229
|
password_hash (str): The hashed password to set for the user, used when migrating from another user store. Mutually exclusive with password. (Optional)
|
|
@@ -949,6 +951,7 @@ class UserManagement(UserManagementModule):
|
|
|
949
951
|
user_id: str,
|
|
950
952
|
first_name: Optional[str] = None,
|
|
951
953
|
last_name: Optional[str] = None,
|
|
954
|
+
email: Optional[str] = None,
|
|
952
955
|
email_verified: Optional[bool] = None,
|
|
953
956
|
password: Optional[str] = None,
|
|
954
957
|
password_hash: Optional[str] = None,
|
|
@@ -959,6 +962,7 @@ class UserManagement(UserManagementModule):
|
|
|
959
962
|
json = {
|
|
960
963
|
"first_name": first_name,
|
|
961
964
|
"last_name": last_name,
|
|
965
|
+
"email": email,
|
|
962
966
|
"email_verified": email_verified,
|
|
963
967
|
"password": password,
|
|
964
968
|
"password_hash": password_hash,
|
|
@@ -1574,6 +1578,7 @@ class AsyncUserManagement(UserManagementModule):
|
|
|
1574
1578
|
user_id: str,
|
|
1575
1579
|
first_name: Optional[str] = None,
|
|
1576
1580
|
last_name: Optional[str] = None,
|
|
1581
|
+
email: Optional[str] = None,
|
|
1577
1582
|
email_verified: Optional[bool] = None,
|
|
1578
1583
|
password: Optional[str] = None,
|
|
1579
1584
|
password_hash: Optional[str] = None,
|
|
@@ -1584,6 +1589,7 @@ class AsyncUserManagement(UserManagementModule):
|
|
|
1584
1589
|
json = {
|
|
1585
1590
|
"first_name": first_name,
|
|
1586
1591
|
"last_name": last_name,
|
|
1592
|
+
"email": email,
|
|
1587
1593
|
"email_verified": email_verified,
|
|
1588
1594
|
"password": password,
|
|
1589
1595
|
"password_hash": password_hash,
|
|
@@ -82,6 +82,7 @@ workos/types/fga/authorization_resource_types.py
|
|
|
82
82
|
workos/types/fga/authorization_resources.py
|
|
83
83
|
workos/types/fga/check.py
|
|
84
84
|
workos/types/fga/list_filters.py
|
|
85
|
+
workos/types/fga/warnings.py
|
|
85
86
|
workos/types/fga/warrant.py
|
|
86
87
|
workos/types/mfa/__init__.py
|
|
87
88
|
workos/types/mfa/authentication_challenge.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workos-5.20.2 → workos-5.22.0}/workos/types/events/connection_payload_with_legacy_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
{workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_group_with_previous_attributes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workos-5.20.2 → workos-5.22.0}/workos/types/events/directory_user_with_previous_attributes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workos-5.20.2 → workos-5.22.0}/workos/types/mfa/authentication_challenge_verification_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{workos-5.20.2 → workos-5.22.0}/workos/types/user_management/user_management_provider_type.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|