Update OpenAPI spec (53bf696) - #77
Conversation
Greptile SummaryThis automated PR updates the OpenAPI spec for
Confidence Score: 5/5Safe to merge — the spec change is intentional and isolated to the 429 response shape, and all scripting changes are well-tested. The OpenAPI change broadens the 429 response to a oneOf (a known breaking change, flagged in the PR diff report and already reviewed), the scope-resolution fixes are covered by new regression tests, and the truncation guard has correct budget math. No logic errors or security concerns found. Files Needing Attention: spec/open-api-spec.yaml — contains the breaking schema change that downstream SDK consumers will need to adapt to. Important Files Changed
|
| oneOf: | ||
| - type: object | ||
| properties: | ||
| code: | ||
| type: string | ||
| description: The error code identifying the type of error. | ||
| example: daily_quota_exceeded | ||
| const: daily_quota_exceeded | ||
| message: | ||
| type: string | ||
| description: A human-readable description of the error. | ||
| example: Request could not be processed. | ||
| required: | ||
| - code | ||
| - message | ||
| - type: object | ||
| properties: | ||
| error: | ||
| type: string | ||
| description: The OAuth error code. | ||
| example: too_many_requests | ||
| const: too_many_requests | ||
| error_description: | ||
| type: string | ||
| description: A human-readable description of the error. | ||
| example: 'The request failed due to: too_many_requests.' | ||
| required: | ||
| - error | ||
| - error_description |
There was a problem hiding this comment.
oneOf without a discriminator makes variant selection ambiguous for tooling
The two oneOf variants share no common property name (code/message vs error/error_description), so an OpenAPI discriminator cannot be applied. Code generators and strictly-typed SDK consumers will produce union types with no programmatic way to distinguish which variant was received — they must fall back to inspecting field presence at runtime. Consider documenting the dispatch rule (e.g., OAuth-grant requests receive the error/error_description shape; all other requests receive code/message) in the description field of the 429 response (which is currently empty) so that consumers understand when to expect each variant.
Prompt To Fix With AI
This is a comment left during a code review.
Path: spec/open-api-spec.yaml
Line: 13125-13153
Comment:
**`oneOf` without a discriminator makes variant selection ambiguous for tooling**
The two `oneOf` variants share no common property name (`code`/`message` vs `error`/`error_description`), so an OpenAPI `discriminator` cannot be applied. Code generators and strictly-typed SDK consumers will produce union types with no programmatic way to distinguish which variant was received — they must fall back to inspecting field presence at runtime. Consider documenting the dispatch rule (e.g., OAuth-grant requests receive the `error`/`error_description` shape; all other requests receive `code`/`message`) in the `description` field of the `429` response (which is currently empty) so that consumers understand when to expect each variant.
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Large spec diffs produced a comment body over GitHub's 65,536-character issue-comment limit, so the sdk-validation job failed with HTTP 422 "Body is too long" when posting the comment. Add truncateForComment: on overflow it trims at a line boundary under the limit, keeps the tracking marker first, closes any <details> blocks it cut through, and appends a note linking to the full report. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
SDK compatibility report
Changes by domain
|
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/access_token_agent_registration_credential_issued_data_detail.py |
AccessTokenAgentRegistrationCredentialIssuedDataDetail.expires_attype: Union[str, Optional[Literal["null"]]] |
AccessTokenAgentRegistrationCredentialIssuedDataDetail.expires_attype: str | Literal["null"] | None |
ActionAuthenticationDenied
Type changes (5)
ActionAuthenticationDenied.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_authentication_denied.py |
ActionAuthenticationDenied.contexttype: Optional["EventContext"] |
ActionAuthenticationDenied.contexttype: EventContext | None |
ActionAuthenticationDenied.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_authentication_denied.py |
ActionAuthenticationDenied.datatype: "ActionAuthenticationDeniedData" |
ActionAuthenticationDenied.datatype: ActionAuthenticationDeniedData |
ActionAuthenticationDeniedData.ip_address type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_authentication_denied_data.py |
ActionAuthenticationDeniedData.ip_addresstype: Optional[str] |
ActionAuthenticationDeniedData.ip_addresstype: str | None |
ActionAuthenticationDeniedData.organization_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_authentication_denied_data.py |
ActionAuthenticationDeniedData.organization_idtype: Optional[str] |
ActionAuthenticationDeniedData.organization_idtype: str | None |
ActionAuthenticationDeniedData.user_agent type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_authentication_denied_data.py |
ActionAuthenticationDeniedData.user_agenttype: Optional[str] |
ActionAuthenticationDeniedData.user_agenttype: str | None |
ActionUserRegistrationDenied
Type changes (5)
ActionUserRegistrationDenied.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_user_registration_denied.py |
ActionUserRegistrationDenied.contexttype: Optional["EventContext"] |
ActionUserRegistrationDenied.contexttype: EventContext | None |
ActionUserRegistrationDenied.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_user_registration_denied.py |
ActionUserRegistrationDenied.datatype: "ActionUserRegistrationDeniedData" |
ActionUserRegistrationDenied.datatype: ActionUserRegistrationDeniedData |
ActionUserRegistrationDeniedData.ip_address type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_user_registration_denied_data.py |
ActionUserRegistrationDeniedData.ip_addresstype: Optional[str] |
ActionUserRegistrationDeniedData.ip_addresstype: str | None |
ActionUserRegistrationDeniedData.organization_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_user_registration_denied_data.py |
ActionUserRegistrationDeniedData.organization_idtype: Optional[str] |
ActionUserRegistrationDeniedData.organization_idtype: str | None |
ActionUserRegistrationDeniedData.user_agent type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/action_user_registration_denied_data.py |
ActionUserRegistrationDeniedData.user_agenttype: Optional[str] |
ActionUserRegistrationDeniedData.user_agenttype: str | None |
AdminPortal
Parameter changes (5)
| Method | Changes | Languages |
|---|---|---|
AdminPortal.generate_link |
return_url type: Optional[str] → str | None; success_url type: Optional[str] → str | None; intent type: Optional[Union[GenerateLinkIntent, str]] → GenerateLinkIntent | str | None; it_contact_emails type: Optional[List[str]] → list[str] | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AgentAdminLinkClaimAttemptToExternalUserRequest
Type changes (2)
AgentAdminLinkClaimAttemptToExternalUserRequest.organization_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request.py |
AgentAdminLinkClaimAttemptToExternalUserRequest.organization_idtype: Optional[str] |
AgentAdminLinkClaimAttemptToExternalUserRequest.organization_idtype: str | None |
AgentAdminLinkClaimAttemptToExternalUserRequest.user type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request.py |
AgentAdminLinkClaimAttemptToExternalUserRequest.usertype: "AgentAdminLinkClaimAttemptToExternalUserRequestUser" |
AgentAdminLinkClaimAttemptToExternalUserRequest.usertype: AgentAdminLinkClaimAttemptToExternalUserRequestUser |
AgentAdminValidateCredentialRequest
Type changes (2)
AgentAdminValidateCredentialRequest.audience type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_admin_validate_credential_request.py |
AgentAdminValidateCredentialRequest.audiencetype: Optional[str] |
AgentAdminValidateCredentialRequest.audiencetype: str | None |
AgentAdminValidateCredentialRequest.type type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_admin_validate_credential_request.py |
AgentAdminValidateCredentialRequest.typetype: "AgentAdminValidateCredentialRequestType" |
AgentAdminValidateCredentialRequest.typetype: AgentAdminValidateCredentialRequestType |
AgentCredentialValidation
Type changes (2)
AgentCredentialValidation.expires_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_credential_validation.py |
AgentCredentialValidation.expires_attype: Optional[datetime] |
AgentCredentialValidation.expires_attype: datetime | None |
AgentCredentialValidation.registration_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_credential_validation.py |
AgentCredentialValidation.registration_idtype: Optional[str] |
AgentCredentialValidation.registration_idtype: str | None |
AgentRegistration
Type changes (30)
AgentRegistration.agent_identity type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_registration.py |
AgentRegistration.agent_identitytype: "AgentRegistrationAgentIdentity" |
AgentRegistration.agent_identitytype: AgentRegistrationAgentIdentity |
AgentRegistration.claim type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_registration.py |
AgentRegistration.claimtype: Optional["AgentRegistrationClaim"] |
AgentRegistration.claimtype: AgentRegistrationClaim | None |
AgentRegistration.kind type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_registration.py |
AgentRegistration.kindtype: "AgentRegistrationKind" |
AgentRegistration.kindtype: AgentRegistrationKind |
AgentRegistration.status type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_registration.py |
AgentRegistration.statustype: "AgentRegistrationStatus" |
AgentRegistration.statustype: AgentRegistrationStatus |
AgentRegistrationAgentIdentity.userland_user_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_registration_agent_identity.py |
AgentRegistrationAgentIdentity.userland_user_idtype: Optional[str] |
AgentRegistrationAgentIdentity.userland_user_idtype: str | None |
AgentRegistrationClaim.claim_completion type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/agents/models/agent_registration_claim.py |
AgentRegistrationClaim.claim_completiontype: Optional["AgentRegistrationClaimClaimCompletion"] |
AgentRegistrationClaim.claim_completiontype: AgentRegistrationClaimClaimCompletion | None |
AgentRegistrationClaimAttemptCreated.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_claim_attempt_created.py |
AgentRegistrationClaimAttemptCreated.contexttype: Optional["EventContext"] |
AgentRegistrationClaimAttemptCreated.contexttype: EventContext | None |
AgentRegistrationClaimAttemptCreated.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_claim_attempt_created.py |
AgentRegistrationClaimAttemptCreated.datatype: "AgentRegistrationClaimAttemptCreatedData" |
AgentRegistrationClaimAttemptCreated.datatype: AgentRegistrationClaimAttemptCreatedData |
AgentRegistrationClaimCompleted.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_claim_completed.py |
AgentRegistrationClaimCompleted.contexttype: Optional["EventContext"] |
AgentRegistrationClaimCompleted.contexttype: EventContext | None |
AgentRegistrationClaimCompleted.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_claim_completed.py |
AgentRegistrationClaimCompleted.datatype: "AgentRegistrationClaimCompletedData" |
AgentRegistrationClaimCompleted.datatype: AgentRegistrationClaimCompletedData |
AgentRegistrationClaimCompletedData.claimed_by type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_claim_completed_data.py |
AgentRegistrationClaimCompletedData.claimed_bytype: "AgentRegistrationClaimCompletedDataClaimedBy" |
AgentRegistrationClaimCompletedData.claimed_bytype: AgentRegistrationClaimCompletedDataClaimedBy |
AgentRegistrationClaimCompletedDataClaimedBy.organization_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_claim_completed_data_claimed_by.py |
AgentRegistrationClaimCompletedDataClaimedBy.organization_idtype: Union[str, Optional[Literal["null"]]] |
AgentRegistrationClaimCompletedDataClaimedBy.organization_idtype: str | Literal["null"] | None |
AgentRegistrationCreated.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created.py |
AgentRegistrationCreated.contexttype: Optional["EventContext"] |
AgentRegistrationCreated.contexttype: EventContext | None |
AgentRegistrationCreated.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created.py |
AgentRegistrationCreated.datatype: "AgentRegistrationCreatedData" |
AgentRegistrationCreated.datatype: AgentRegistrationCreatedData |
AgentRegistrationCreatedData.agent_identity type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created_data.py |
AgentRegistrationCreatedData.agent_identitytype: "AgentRegistrationCreatedDataAgentIdentity" |
AgentRegistrationCreatedData.agent_identitytype: AgentRegistrationCreatedDataAgentIdentity |
AgentRegistrationCreatedData.kind type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created_data.py |
AgentRegistrationCreatedData.kindtype: "AgentRegistrationCreatedDataKind" |
AgentRegistrationCreatedData.kindtype: AgentRegistrationCreatedDataKind |
AgentRegistrationCreatedData.method type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created_data.py |
AgentRegistrationCreatedData.methodtype: "AgentRegistrationCreatedDataMethod" |
AgentRegistrationCreatedData.methodtype: AgentRegistrationCreatedDataMethod |
AgentRegistrationCreatedData.status type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created_data.py |
AgentRegistrationCreatedData.statustype: "AgentRegistrationCreatedDataStatus" |
AgentRegistrationCreatedData.statustype: AgentRegistrationCreatedDataStatus |
AgentRegistrationCreatedDataAgentIdentity.userland_user_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_created_data_agent_identity.py |
AgentRegistrationCreatedDataAgentIdentity.userland_user_idtype: Union[str, Optional[Literal["null"]]] |
AgentRegistrationCreatedDataAgentIdentity.userland_user_idtype: str | Literal["null"] | None |
AgentRegistrationCredentialIssued.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_credential_issued.py |
AgentRegistrationCredentialIssued.contexttype: Optional["EventContext"] |
AgentRegistrationCredentialIssued.contexttype: EventContext | None |
AgentRegistrationCredentialIssued.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_credential_issued.py |
AgentRegistrationCredentialIssued.datatype: "AgentRegistrationCredentialIssuedData" |
AgentRegistrationCredentialIssued.datatype: AgentRegistrationCredentialIssuedData |
AgentRegistrationCredentialIssuedData.detail type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_credential_issued_data.py |
AgentRegistrationCredentialIssuedData.detailtype: Union[<br> "AgentRegistrationCredentialIssuedDataDetail",<br> "AccessTokenAgentRegistrationCredentialIssuedDataDetail",<br> ] |
AgentRegistrationCredentialIssuedData.detailtype: (<br> AgentRegistrationCredentialIssuedDataDetail<br> | AccessTokenAgentRegistrationCredentialIssuedDataDetail<br> ) |
AgentRegistrationDeleted.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_deleted.py |
AgentRegistrationDeleted.contexttype: Optional["EventContext"] |
AgentRegistrationDeleted.contexttype: EventContext | None |
AgentRegistrationDeleted.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_deleted.py |
AgentRegistrationDeleted.datatype: "AgentRegistrationDeletedData" |
AgentRegistrationDeleted.datatype: AgentRegistrationDeletedData |
AgentRegistrationExpired.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_expired.py |
AgentRegistrationExpired.contexttype: Optional["EventContext"] |
AgentRegistrationExpired.contexttype: EventContext | None |
AgentRegistrationExpired.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_expired.py |
AgentRegistrationExpired.datatype: "AgentRegistrationExpiredData" |
AgentRegistrationExpired.datatype: AgentRegistrationExpiredData |
AgentRegistrationOrganizationSwitched.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_organization_switched.py |
AgentRegistrationOrganizationSwitched.contexttype: Optional["EventContext"] |
AgentRegistrationOrganizationSwitched.contexttype: EventContext | None |
AgentRegistrationOrganizationSwitched.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_organization_switched.py |
AgentRegistrationOrganizationSwitched.datatype: "AgentRegistrationOrganizationSwitchedData" |
AgentRegistrationOrganizationSwitched.datatype: AgentRegistrationOrganizationSwitchedData |
AgentRegistrationRevoked.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_revoked.py |
AgentRegistrationRevoked.contexttype: Optional["EventContext"] |
AgentRegistrationRevoked.contexttype: EventContext | None |
AgentRegistrationRevoked.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/agent_registration_revoked.py |
AgentRegistrationRevoked.datatype: "AgentRegistrationRevokedData" |
AgentRegistrationRevoked.datatype: AgentRegistrationRevokedData |
Agents
Parameter changes (6)
| Method | Changes | Languages |
|---|---|---|
Agents.create_validate |
type type: Union[AgentAdminValidateCredentialRequestType, str] → AgentAdminValidateCredentialRequestType | str; audience type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
Agents.get_registration |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
Agents.update_attempts |
organization_id type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
ApiKey
Parameter changes (12)
| Method | Changes | Languages |
|---|---|---|
ApiKeys.create_api_key_expire |
expires_at type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
ApiKeys.create_organization_api_key |
permissions type: Optional[List[str]] → list[str] | None; expires_at type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
ApiKeys.create_validation |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
ApiKeys.delete_api_key |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
ApiKeys.list_organization_api_keys |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
Type changes (22)
ApiKey.expires_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/api_keys/models/api_key.py |
ApiKey.expires_attype: Optional[datetime] |
ApiKey.expires_attype: datetime | None |
ApiKey.last_used_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/api_keys/models/api_key.py |
ApiKey.last_used_attype: Optional[datetime] |
ApiKey.last_used_attype: datetime | None |
ApiKey.owner type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/api_keys/models/api_key.py |
ApiKey.ownertype: Union["ApiKeyOwner", "UserApiKeyOwner"] |
ApiKey.ownertype: ApiKeyOwner | UserApiKeyOwner |
ApiKey.permissions type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/api_keys/models/api_key.py |
ApiKey.permissionstype: List[str] |
ApiKey.permissionstype: list[str] |
ApiKeyCreated.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_created.py |
ApiKeyCreated.contexttype: Optional["EventContext"] |
ApiKeyCreated.contexttype: EventContext | None |
ApiKeyCreated.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_created.py |
ApiKeyCreated.datatype: "ApiKeyCreatedData" |
ApiKeyCreated.datatype: ApiKeyCreatedData |
ApiKeyCreatedData.expires_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_created_data.py |
ApiKeyCreatedData.expires_attype: Optional[datetime] |
ApiKeyCreatedData.expires_attype: datetime | None |
ApiKeyCreatedData.last_used_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_created_data.py |
ApiKeyCreatedData.last_used_attype: Optional[str] |
ApiKeyCreatedData.last_used_attype: str | None |
ApiKeyCreatedData.owner type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_created_data.py |
ApiKeyCreatedData.ownertype: Union["ApiKeyCreatedDataOwner", "UserApiKeyCreatedDataOwner"] |
ApiKeyCreatedData.ownertype: ApiKeyCreatedDataOwner | UserApiKeyCreatedDataOwner |
ApiKeyCreatedData.permissions type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_created_data.py |
ApiKeyCreatedData.permissionstype: List[str] |
ApiKeyCreatedData.permissionstype: list[str] |
ApiKeyRevoked.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_revoked.py |
ApiKeyRevoked.contexttype: Optional["EventContext"] |
ApiKeyRevoked.contexttype: EventContext | None |
ApiKeyRevoked.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_revoked.py |
ApiKeyRevoked.datatype: "ApiKeyRevokedData" |
ApiKeyRevoked.datatype: ApiKeyRevokedData |
ApiKeyUpdated.context type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated.py |
ApiKeyUpdated.contexttype: Optional["EventContext"] |
ApiKeyUpdated.contexttype: EventContext | None |
ApiKeyUpdated.data type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated.py |
ApiKeyUpdated.datatype: "ApiKeyUpdatedData" |
ApiKeyUpdated.datatype: ApiKeyUpdatedData |
ApiKeyUpdatedData.expires_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated_data.py |
ApiKeyUpdatedData.expires_attype: Optional[datetime] |
ApiKeyUpdatedData.expires_attype: datetime | None |
ApiKeyUpdatedData.last_used_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated_data.py |
ApiKeyUpdatedData.last_used_attype: Optional[str] |
ApiKeyUpdatedData.last_used_attype: str | None |
ApiKeyUpdatedData.owner type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated_data.py |
ApiKeyUpdatedData.ownertype: Union["ApiKeyUpdatedDataOwner", "UserApiKeyUpdatedDataOwner"] |
ApiKeyUpdatedData.ownertype: ApiKeyUpdatedDataOwner | UserApiKeyUpdatedDataOwner |
ApiKeyUpdatedData.permissions type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated_data.py |
ApiKeyUpdatedData.permissionstype: List[str] |
ApiKeyUpdatedData.permissionstype: list[str] |
ApiKeyUpdatedData.previous_attributes type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated_data.py |
ApiKeyUpdatedData.previous_attributestype: "ApiKeyUpdatedDataPreviousAttribute" |
ApiKeyUpdatedData.previous_attributestype: ApiKeyUpdatedDataPreviousAttribute |
ApiKeyUpdatedDataPreviousAttribute.expires_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/common/models/api_key_updated_data_previous_attribute.py |
ApiKeyUpdatedDataPreviousAttribute.expires_attype: Optional[datetime] |
ApiKeyUpdatedDataPreviousAttribute.expires_attype: datetime | None |
ApiKeyValidationResponse.agent_registration_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/api_keys/models/api_key_validation_response.py |
ApiKeyValidationResponse.agent_registration_idtype: Optional[str] |
ApiKeyValidationResponse.agent_registration_idtype: str | None |
ApiKeyValidationResponse.api_key type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/api_keys/models/api_key_validation_response.py |
ApiKeyValidationResponse.api_keytype: Optional["ApiKey"] |
ApiKeyValidationResponse.api_keytype: ApiKey | None |
ApplicationCredentialsListItem
Type changes (1)
ApplicationCredentialsListItem.last_used_at type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/connect/models/application_credentials_list_item.py |
ApplicationCredentialsListItem.last_used_attype: Optional[datetime] |
ApplicationCredentialsListItem.last_used_attype: datetime | None |
AssignRole
Type changes (3)
AssignRole.resource_external_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/authorization/models/assign_role.py |
AssignRole.resource_external_idtype: Optional[str] |
AssignRole.resource_external_idtype: str | None |
AssignRole.resource_id type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/authorization/models/assign_role.py |
AssignRole.resource_idtype: Optional[str] |
AssignRole.resource_idtype: str | None |
AssignRole.resource_type_slug type changed (field)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/authorization/models/assign_role.py |
AssignRole.resource_type_slugtype: Optional[str] |
AssignRole.resource_type_slugtype: str | None |
AsyncAdminPortal
Parameter changes (5)
| Method | Changes | Languages |
|---|---|---|
AsyncAdminPortal.generate_link |
return_url type: Optional[str] → str | None; success_url type: Optional[str] → str | None; intent type: Optional[Union[GenerateLinkIntent, str]] → GenerateLinkIntent | str | None; it_contact_emails type: Optional[List[str]] → list[str] | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAgents
Parameter changes (6)
| Method | Changes | Languages |
|---|---|---|
AsyncAgents.create_validate |
type type: Union[AgentAdminValidateCredentialRequestType, str] → AgentAdminValidateCredentialRequestType | str; audience type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAgents.get_registration |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAgents.update_attempts |
organization_id type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncApiKeys
Parameter changes (12)
| Method | Changes | Languages |
|---|---|---|
AsyncApiKeys.create_api_key_expire |
expires_at type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncApiKeys.create_organization_api_key |
permissions type: Optional[List[str]] → list[str] | None; expires_at type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncApiKeys.create_validation |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncApiKeys.delete_api_key |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncApiKeys.list_organization_api_keys |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs
Parameter changes (25)
| Method | Changes | Languages |
|---|---|---|
AsyncAuditLogs.create_event |
idempotency_key type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.create_export |
actions type: Optional[List[str]] → list[str] | None; actors type: Optional[List[str]] → list[str] | None; actor_names type: Optional[List[str]] → list[str] | None; actor_ids type: Optional[List[str]] → list[str] | None; targets type: Optional[List[str]] → list[str] | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.create_schema |
targets type: List[AuditLogSchemaTargetInput] → list[AuditLogSchemaTargetInput]; actor type: Optional[AuditLogSchemaActorInput] → AuditLogSchemaActorInput | None; metadata type: Optional[Dict[str, Any]] → dict[str, Any] | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.get_export |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.get_organization_audit_logs_retention |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.list_action_schemas |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.list_actions |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuditLogs.update_organization_audit_logs_retention |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization
Parameter changes (136)
| Method | Changes | Languages |
|---|---|---|
AsyncAuthorization.add_environment_role_permission |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.add_organization_role_permission |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.assign_role |
resource_target type: Union[ResourceTargetById, ResourceTargetByExternalId] → ResourceTargetById | ResourceTargetByExternalId; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.check |
resource_target type: Union[ResourceTargetById, ResourceTargetByExternalId] → ResourceTargetById | ResourceTargetByExternalId; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.create_environment_role |
description type: Union[str, None, NotGiven] → str | None | NotGiven; resource_type_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.create_group_role_assignment |
resource_id type: Optional[str] → str | None; resource_external_id type: Optional[str] → str | None; resource_type_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.create_organization_role |
slug type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; resource_type_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.create_permission |
description type: Union[str, None, NotGiven] → str | None | NotGiven; resource_type_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.create_resource |
description type: Union[str, None, NotGiven] → str | None | NotGiven; parent_resource type: Optional[<br> Union[ParentResourceById, ParentResourceByExternalId]<br> ] → ParentResourceById | ParentResourceByExternalId | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.delete_group_role_assignment |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.delete_group_role_assignments |
resource_id type: Optional[str] → str | None; resource_external_id type: Optional[str] → str | None; resource_type_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.delete_organization_role |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.delete_permission |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.delete_resource |
cascade_delete type: Optional[bool] → bool | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.delete_resource_by_external_id |
cascade_delete type: Optional[bool] → bool | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.get_environment_role |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.get_group_role_assignment |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.get_organization_role |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.get_permission |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.get_resource |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.get_resource_by_external_id |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_effective_permissions |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_effective_permissions_by_external_id |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_environment_roles |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_group_role_assignments |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_memberships_for_resource |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; assignment type: Optional[Union[AuthorizationAssignment, str]] → AuthorizationAssignment | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_memberships_for_resource_by_external_id |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; assignment type: Optional[Union[AuthorizationAssignment, str]] → AuthorizationAssignment | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_organization_roles |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_permissions |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_resources |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; organization_id type: Optional[str] → str | None; resource_type_slug type: Optional[str] → str | None; resource_external_id type: Optional[str] → str | None; parent type: Optional[Union[ParentById, ParentByExternalId]] → ParentById | ParentByExternalId | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_resources_for_membership |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; parent_resource type: Union[ParentResourceById, ParentResourceByExternalId] → ParentResourceById | ParentResourceByExternalId; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_role_assignments |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; resource_id type: Optional[str] → str | None; resource_external_id type: Optional[str] → str | None; resource_type_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_role_assignments_for_resource |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; role_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.list_role_assignments_for_resource_by_external_id |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; role_slug type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.remove_organization_role_permission |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.remove_role |
resource_target type: Union[ResourceTargetById, ResourceTargetByExternalId] → ResourceTargetById | ResourceTargetByExternalId; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.remove_role_assignment |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.set_environment_role_permissions |
permissions type: List[str] → list[str]; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.set_organization_role_permissions |
permissions type: List[str] → list[str]; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.update_environment_role |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.update_group_role_assignments |
role_assignments type: List[ReplaceGroupRoleAssignmentEntry] → list[ReplaceGroupRoleAssignmentEntry]; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.update_organization_role |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.update_permission |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.update_resource |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; parent_resource type: Optional[<br> Union[ParentResourceById, ParentResourceByExternalId]<br> ] → ParentResourceById | ParentResourceByExternalId | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncAuthorization.update_resource_by_external_id |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; parent_resource type: Optional[<br> Union[ParentResourceById, ParentResourceByExternalId]<br> ] → ParentResourceById | ParentResourceByExternalId | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncClientApi
Parameter changes (1)
| Method | Changes | Languages |
|---|---|---|
AsyncClientApi.create_token |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect
Parameter changes (30)
| Method | Changes | Languages |
|---|---|---|
AsyncConnect.complete_oauth2 |
user_consent_options type: Optional[List[UserConsentOption]] → list[UserConsentOption] | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.create_application |
body type: Union[CreateOAuthApplication, CreateM2MApplication, Dict[str, Any]] → CreateOAuthApplication | CreateM2MApplication | dict[str, Any]; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.create_application_client_secret |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.create_m2m_application |
description type: Optional[str] → str | None; scopes type: Optional[List[str]] → list[str] | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.create_oauth_application |
description type: Optional[str] → str | None; scopes type: Optional[List[str]] → list[str] | None; redirect_uris type: Optional[List[RedirectUriInput]] → list[RedirectUriInput] | None; uses_pkce type: Optional[bool] → bool | None; organization_id type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.delete_application |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.delete_client_secret |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.get_application |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.list_application_client_secrets |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.list_applications |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; registration_types type: Optional[<br> List[Union[ApplicationsRegistrationTypes, str]]<br> ] → list[ApplicationsRegistrationTypes | str] | None; organization_id type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncConnect.update_application |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; scopes type: Union[List[str], None, NotGiven] → list[str] | None | NotGiven; redirect_uris type: Union[List[RedirectUriInput], None, NotGiven] → list[RedirectUriInput] | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
Type changes (1)
AsyncConnect.list_application_client_secrets return type changed (function)
| Language | Before | After |
|---|---|---|
| python 📄 src/workos/connect/_resource.py |
AsyncConnect.list_application_client_secrets(id, request_options?)returnType: List[ApplicationCredentialsListItem] |
AsyncConnect.list_application_client_secrets(id, request_options?)returnType: list[ApplicationCredentialsListItem] |
AsyncDirectorySync
Parameter changes (28)
| Method | Changes | Languages |
|---|---|---|
AsyncDirectorySync.delete_directory |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncDirectorySync.get_directory |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncDirectorySync.get_group |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncDirectorySync.get_user |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncDirectorySync.list_directories |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; organization_id type: Optional[str] → str | None; search type: Optional[str] → str | None; domain type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncDirectorySync.list_groups |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; directory type: Optional[str] → str | None; user type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncDirectorySync.list_users |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; directory type: Optional[str] → str | None; group type: Optional[str] → str | None; idp_id type: Optional[str] → str | None; email type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncEvents
Parameter changes (9)
| Method | Changes | Languages |
|---|---|---|
AsyncEvents.list_events |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; events type: Optional[List[str]] → list[str] | None; range_start type: Optional[str] → str | None; range_end type: Optional[str] → str | None; organization_id type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags
Parameter changes (20)
| Method | Changes | Languages |
|---|---|---|
AsyncFeatureFlags.add_flag_target |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.disable_feature_flag |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.enable_feature_flag |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.get_feature_flag |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.list_feature_flags |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.list_organization_feature_flags |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.list_user_feature_flags |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncFeatureFlags.remove_flag_target |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups
Parameter changes (19)
| Method | Changes | Languages |
|---|---|---|
AsyncGroups.create_group_organization_membership |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.create_organization_group |
description type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.delete_group_organization_membership |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.delete_organization_group |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.get_organization_group |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.list_group_organization_memberships |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.list_organization_groups |
limit type: Optional[int] → int | None; before type: Optional[str] → str | None; after type: Optional[str] → str | None; order type: Optional[Union[PaginationOrder, str]] → PaginationOrder | str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncGroups.update_organization_group |
name type: Optional[str] → str | None; description type: Union[str, None, NotGiven] → str | None | NotGiven; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncMultiFactorAuth
Parameter changes (20)
| Method | Changes | Languages |
|---|---|---|
AsyncMultiFactorAuth.challenge_factor |
sms_template type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncMultiFactorAuth.create_user_auth_factor |
totp_issuer type: Optional[str] → str | None; totp_user type: Optional[str] → str | None; totp_secret type: Optional[str] → str | None; request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
AsyncMultiFactorAuth.delete_factor |
request_options type: Optional[RequestOptions] → RequestOptions | None |
python |
Changelog scope validation hard-failed on PR #77 because a compat surface change (return_url param type changed on AdminPortal.generate_link) resolved to the sdk fallback scope, which has no docs_url. factsFromCompat distrusts a service scope that is merely the snake_case of the service name and defers to scopeFromName, which had no AdminPortal rule and returned sdk. Add the missing rule so AdminPortal resolves to admin_portal (a scope with a docs_url), matching every other service family in the list. Export factsFromCompat and add a regression test covering the resolution. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lientApi, Connect) The AdminPortal fix exposed the next hidden sdk-resolving symbols: the per-scope dedup in factsFromCompat means CI only ever names one at a time. Simulated all breaking compat symbols across every language SDK at once (merged compat reports + --strict-scopes) to find the full set: - Agents.* -> new `agents` scope (label + docs_url reference/agents) - Authorization.* -> authorization (registered scope, same class as AdminPortal) - ClientApi.create_token -> client (/client/token issuance) - CreateApplicationSecret / NewConnectApplicationSecret -> connect --strict-scopes now exits 0 against the merged compat report for all 8 SDKs. Broadened the factsFromCompat regression test to a table covering each root. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 I see new OpenAPI changes beep boop
Automated update from https://github.com/workos/workos/tree/53bf6960607cb91b93bc11a86901bdf68e90bb30
Source PRs
Changes