Skip to content

Commit 8dc5f9b

Browse files
committed
## Python SDK Changes:
* `clerk.beta_features.update_instance_settings()`: * `request.enhanced_email_deliverability` **Removed** **Breaking** ⚠️ * `clerk.instance_settings.update()`: * `request.enhanced_email_deliverability` **Removed** **Breaking** ⚠️ * `clerk.organization_permissions.delete()`: **Added** * `clerk.organizations.update()`: `response.last_active_at` **Added** * `clerk.organization_roles.delete()`: **Added** * `clerk.organization_roles.assign_permission()`: **Added** * `clerk.organization_roles.remove_permission()`: **Added** * `clerk.billing.list_plans()`: **Added** * `clerk.billing.list_subscription_items()`: **Added** * `clerk.users.delete_profile_image()`: `response` **Changed** * `clerk.organization_permissions.list()`: **Added** * `clerk.organization_permissions.create()`: **Added** * `clerk.organization_permissions.get()`: **Added** * `clerk.organization_permissions.update()`: **Added** * `clerk.organization_roles.list()`: **Added** * `clerk.commerce.list_plans()`: **Deleted** **Breaking** ⚠️ * `clerk.commerce.list_subscription_items()`: **Deleted** **Breaking** ⚠️ * `clerk.commerce.cancel_subscription_item()`: **Deleted** **Breaking** ⚠️ * `clerk.sessions.create()`: * `request.active_organization_id` **Added** * `clerk.users.list()`: `response.[]` **Changed** * `clerk.users.create()`: `response` **Changed** * `clerk.users.get()`: `response` **Changed** * `clerk.users.update()`: `response` **Changed** * `clerk.users.ban()`: `response` **Changed** * `clerk.users.unban()`: `response` **Changed** * `clerk.users.bulk_ban()`: `response.[]` **Changed** * `clerk.users.bulk_unban()`: `response.[]` **Changed** * `clerk.users.lock()`: `response` **Changed** * `clerk.organization_roles.update()`: **Added** * `clerk.users.unlock()`: `response` **Changed** * `clerk.billing.cancel_subscription_item()`: **Added** * `clerk.users.update_metadata()`: `response` **Changed** * `clerk.users.get_organization_memberships()`: `response.data.[].organization.last_active_at` **Added** * `clerk.users.get_organization_invitations()`: `response.data.[].inviter_id` **Added** * `clerk.users.get_instance_organization_memberships()`: `response.data.[].organization.last_active_at` **Added** * `clerk.organization_invitations.get_all()`: `response.data.[].inviter_id` **Added** * `clerk.organization_invitations.create()`: `response.inviter_id` **Added** * `clerk.organization_invitations.list()`: `response.data.[].inviter_id` **Added** * `clerk.organization_invitations.bulk_create()`: `response.data.[].inviter_id` **Added** * `clerk.organization_invitations.list_pending()`: `response.data.[].inviter_id` **Added** * `clerk.organization_invitations.get()`: `response.inviter_id` **Added** * `clerk.organization_invitations.revoke()`: `response.inviter_id` **Added** * `clerk.organization_roles.get()`: **Added** * `clerk.organization_roles.create()`: **Added** * `clerk.instance_settings.update_organization_settings()`: `response.max_role_sets_allowed` **Added** * `clerk.organizations.list()`: `response.data.[].last_active_at` **Added** * `clerk.organizations.create()`: `response.last_active_at` **Added** * `clerk.organizations.get()`: `response.last_active_at` **Added** * `clerk.users.set_profile_image()`: `response` **Changed** * `clerk.organizations.merge_metadata()`: `response.last_active_at` **Added** * `clerk.organizations.upload_logo()`: `response.last_active_at` **Added** * `clerk.organizations.delete_logo()`: `response.last_active_at` **Added** * `clerk.organization_memberships.create()`: `response.organization.last_active_at` **Added** * `clerk.organization_memberships.list()`: `response.data.[].organization.last_active_at` **Added** * `clerk.organization_memberships.update()`: `response.organization.last_active_at` **Added** * `clerk.organization_memberships.delete()`: `response.organization.last_active_at` **Added** * `clerk.organization_memberships.update_metadata()`: `response.organization.last_active_at` **Added**
1 parent e363760 commit 8dc5f9b

File tree

178 files changed

+7508
-2085
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+7508
-2085
lines changed

.speakeasy/gen.lock

Lines changed: 241 additions & 47 deletions
Large diffs are not rendered by default.

.speakeasy/gen.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ generation:
2525
generateNewTests: false
2626
skipResponseBodyAssertions: false
2727
python:
28-
version: 4.0.0
28+
version: 4.1.0
2929
additionalDependencies:
3030
dev:
3131
pytest: ^8.3.3
@@ -58,11 +58,14 @@ python:
5858
operations: ""
5959
shared: ""
6060
webhooks: ""
61+
inferUnionDiscriminators: true
6162
inputModelSuffix: input
6263
legacyPyright: true
64+
license: ""
6365
maxMethodParams: 20
6466
methodArguments: infer-optional-args
6567
moduleName: ""
68+
multipartArrayFormat: legacy
6669
outputModelSuffix: output
6770
packageManager: poetry
6871
packageName: clerk-backend-api

.speakeasy/workflow.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
speakeasyVersion: 1.653.0
1+
speakeasyVersion: 1.665.0
22
sources:
33
clerk-openapi:
44
sourceNamespace: clerk-openapi
5-
sourceRevisionDigest: sha256:0ad1ab10e9dc7635ff065c7eea5cf70ed2049cc5eebca5e85278cd446d42606c
6-
sourceBlobDigest: sha256:b3995c2bca4313402799b1179ab92208ee1e784309bec497e06110b42933f48c
5+
sourceRevisionDigest: sha256:367b6742dba19cd785787570fd28c7e66f999c23b408be1e2597ed7d39eb9861
6+
sourceBlobDigest: sha256:b1b0a1ba3ee23fc040e011bd5d04cc0ac13b3becec2500fbb337c0c77d092952
77
tags:
88
- latest
9-
- speakeasy-sdk-regen-lamone-update-sdk-version-1762792475
9+
- speakeasy-sdk-regen-1761697366
1010
- "2025-11-10"
1111
targets:
1212
clerk-sdk-python:
1313
source: clerk-openapi
1414
sourceNamespace: clerk-openapi
15-
sourceRevisionDigest: sha256:0ad1ab10e9dc7635ff065c7eea5cf70ed2049cc5eebca5e85278cd446d42606c
16-
sourceBlobDigest: sha256:b3995c2bca4313402799b1179ab92208ee1e784309bec497e06110b42933f48c
15+
sourceRevisionDigest: sha256:367b6742dba19cd785787570fd28c7e66f999c23b408be1e2597ed7d39eb9861
16+
sourceBlobDigest: sha256:b1b0a1ba3ee23fc040e011bd5d04cc0ac13b3becec2500fbb337c0c77d092952
1717
codeSamplesNamespace: clerk-openapi-python-code-samples
18-
codeSamplesRevisionDigest: sha256:9220c7eb7f21688c8de2a25887058cbaf96c1da1860848f4966e0384dd8c36b8
18+
codeSamplesRevisionDigest: sha256:0788c9310c7d6208ff26e68b47aa51f330a9d01a00572ca9e950ef10e8f08b3a
1919
workflow:
2020
workflowVersion: 1.0.0
2121
speakeasyVersion: latest

README.md

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,6 @@ with Clerk(
143143

144144
res = clerk.email_addresses.get(email_address_id="email_address_id_example")
145145

146-
assert res is not None
147-
148146
# Handle response
149147
print(res)
150148
```
@@ -166,8 +164,6 @@ async def main():
166164

167165
res = await clerk.email_addresses.get_async(email_address_id="email_address_id_example")
168166

169-
assert res is not None
170-
171167
# Handle response
172168
print(res)
173169

@@ -272,6 +268,9 @@ def verify_machine_token(request: httpx.Request):
272268

273269
### [billing](docs/sdks/billing/README.md)
274270

271+
* [list_plans](docs/sdks/billing/README.md#list_plans) - List all billing plans
272+
* [list_subscription_items](docs/sdks/billing/README.md#list_subscription_items) - List all subscription items
273+
* [cancel_subscription_item](docs/sdks/billing/README.md#cancel_subscription_item) - Cancel a subscription item
275274
* [extend_subscription_item_free_trial](docs/sdks/billing/README.md#extend_subscription_item_free_trial) - Extend free trial for a subscription item
276275
* [list_statements](docs/sdks/billing/README.md#list_statements) - List all billing statements
277276
* [get_statement](docs/sdks/billing/README.md#get_statement) - Retrieve a billing statement
@@ -289,12 +288,6 @@ def verify_machine_token(request: httpx.Request):
289288
* [verify](docs/sdks/clients/README.md#verify) - Verify a client
290289
* [get](docs/sdks/clients/README.md#get) - Get a client
291290

292-
### [commerce](docs/sdks/commerce/README.md)
293-
294-
* [list_plans](docs/sdks/commerce/README.md#list_plans) - List all commerce plans
295-
* [list_subscription_items](docs/sdks/commerce/README.md#list_subscription_items) - List all subscription items
296-
* [cancel_subscription_item](docs/sdks/commerce/README.md#cancel_subscription_item) - Cancel a subscription item
297-
298291
### [domains](docs/sdks/domainssdk/README.md)
299292

300293
* [list](docs/sdks/domainssdk/README.md#list) - List all instance domains
@@ -409,6 +402,24 @@ def verify_machine_token(request: httpx.Request):
409402
* [delete](docs/sdks/organizationmembershipssdk/README.md#delete) - Remove a member from an organization
410403
* [update_metadata](docs/sdks/organizationmembershipssdk/README.md#update_metadata) - Merge and update organization membership metadata
411404

405+
### [organization_permissions](docs/sdks/organizationpermissions/README.md)
406+
407+
* [list](docs/sdks/organizationpermissions/README.md#list) - Get a list of all organization permissions
408+
* [create](docs/sdks/organizationpermissions/README.md#create) - Create a new organization permission
409+
* [get](docs/sdks/organizationpermissions/README.md#get) - Get an organization permission
410+
* [update](docs/sdks/organizationpermissions/README.md#update) - Update an organization permission
411+
* [delete](docs/sdks/organizationpermissions/README.md#delete) - Delete an organization permission
412+
413+
### [organization_roles](docs/sdks/organizationroles/README.md)
414+
415+
* [list](docs/sdks/organizationroles/README.md#list) - Get a list of organization roles
416+
* [create](docs/sdks/organizationroles/README.md#create) - Create an organization role
417+
* [get](docs/sdks/organizationroles/README.md#get) - Retrieve an organization role
418+
* [update](docs/sdks/organizationroles/README.md#update) - Update an organization role
419+
* [delete](docs/sdks/organizationroles/README.md#delete) - Delete an organization role
420+
* [assign_permission](docs/sdks/organizationroles/README.md#assign_permission) - Assign a permission to an organization role
421+
* [remove_permission](docs/sdks/organizationroles/README.md#remove_permission) - Remove a permission from an organization role
422+
412423
### [organizations](docs/sdks/organizationssdk/README.md)
413424

414425
* [list](docs/sdks/organizationssdk/README.md#list) - Get a list of organizations for an instance
@@ -546,8 +557,6 @@ with Clerk(
546557
"content": open("example.file", "rb"),
547558
})
548559

549-
assert res is not None
550-
551560
# Handle response
552561
print(res)
553562

@@ -621,8 +630,6 @@ with Clerk(
621630
"token": "jwt_token_example",
622631
})
623632

624-
assert res is not None
625-
626633
# Handle response
627634
print(res)
628635

@@ -657,17 +664,17 @@ with Clerk(
657664

658665

659666
**Inherit from [`ClerkBaseError`](./src/clerk_backend_api/models/clerkbaseerror.py)**:
660-
* [`CreateM2MTokenM2mResponseBody`](./src/clerk_backend_api/models/createm2mtokenm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 158 methods.*
661-
* [`GetM2MTokensM2mResponseBody`](./src/clerk_backend_api/models/getm2mtokensm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 158 methods.*
662-
* [`RevokeM2MTokenM2mResponseBody`](./src/clerk_backend_api/models/revokem2mtokenm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 158 methods.*
663-
* [`VerifyM2MTokenM2mResponseBody`](./src/clerk_backend_api/models/verifym2mtokenm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 158 methods.*
664-
* [`VerifyOAuthAccessTokenOauthAccessTokensResponseBody`](./src/clerk_backend_api/models/verifyoauthaccesstokenoauthaccesstokensresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 158 methods.*
665-
* [`GetM2MTokensM2mResponseResponseBody`](./src/clerk_backend_api/models/getm2mtokensm2mresponseresponsebody.py): 403 Forbidden. Status code `403`. Applicable to 1 of 158 methods.*
666-
* [`GetM2MTokensM2mResponse404ResponseBody`](./src/clerk_backend_api/models/getm2mtokensm2mresponse404responsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 158 methods.*
667-
* [`RevokeM2MTokenM2mResponseResponseBody`](./src/clerk_backend_api/models/revokem2mtokenm2mresponseresponsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 158 methods.*
668-
* [`VerifyM2MTokenM2mResponseResponseBody`](./src/clerk_backend_api/models/verifym2mtokenm2mresponseresponsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 158 methods.*
669-
* [`VerifyOAuthAccessTokenOauthAccessTokensResponseResponseBody`](./src/clerk_backend_api/models/verifyoauthaccesstokenoauthaccesstokensresponseresponsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 158 methods.*
670-
* [`CreateM2MTokenM2mResponseResponseBody`](./src/clerk_backend_api/models/createm2mtokenm2mresponseresponsebody.py): 409 Conflict. Status code `409`. Applicable to 1 of 158 methods.*
667+
* [`CreateM2MTokenM2mResponseBody`](./src/clerk_backend_api/models/createm2mtokenm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 170 methods.*
668+
* [`GetM2MTokensM2mResponseBody`](./src/clerk_backend_api/models/getm2mtokensm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 170 methods.*
669+
* [`RevokeM2MTokenM2mResponseBody`](./src/clerk_backend_api/models/revokem2mtokenm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 170 methods.*
670+
* [`VerifyM2MTokenM2mResponseBody`](./src/clerk_backend_api/models/verifym2mtokenm2mresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 170 methods.*
671+
* [`VerifyOAuthAccessTokenOauthAccessTokensResponseBody`](./src/clerk_backend_api/models/verifyoauthaccesstokenoauthaccesstokensresponsebody.py): 400 Bad Request. Status code `400`. Applicable to 1 of 170 methods.*
672+
* [`GetM2MTokensM2mResponseResponseBody`](./src/clerk_backend_api/models/getm2mtokensm2mresponseresponsebody.py): 403 Forbidden. Status code `403`. Applicable to 1 of 170 methods.*
673+
* [`GetM2MTokensM2mResponse404ResponseBody`](./src/clerk_backend_api/models/getm2mtokensm2mresponse404responsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 170 methods.*
674+
* [`RevokeM2MTokenM2mResponseResponseBody`](./src/clerk_backend_api/models/revokem2mtokenm2mresponseresponsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 170 methods.*
675+
* [`VerifyM2MTokenM2mResponseResponseBody`](./src/clerk_backend_api/models/verifym2mtokenm2mresponseresponsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 170 methods.*
676+
* [`VerifyOAuthAccessTokenOauthAccessTokensResponseResponseBody`](./src/clerk_backend_api/models/verifyoauthaccesstokenoauthaccesstokensresponseresponsebody.py): 404 Not Found. Status code `404`. Applicable to 1 of 170 methods.*
677+
* [`CreateM2MTokenM2mResponseResponseBody`](./src/clerk_backend_api/models/createm2mtokenm2mresponseresponsebody.py): 409 Conflict. Status code `409`. Applicable to 1 of 170 methods.*
671678
* [`ResponseValidationError`](./src/clerk_backend_api/models/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
672679

673680
</details>

RELEASES.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,4 +478,14 @@ Based on:
478478
### Generated
479479
- [python v4.0.0] .
480480
### Releases
481-
- [PyPI v4.0.0] https://pypi.org/project/clerk-backend-api/4.0.0 - .
481+
- [PyPI v4.0.0] https://pypi.org/project/clerk-backend-api/4.0.0 - .
482+
483+
## 2025-11-30 00:25:46
484+
### Changes
485+
Based on:
486+
- OpenAPI Doc
487+
- Speakeasy CLI 1.665.0 (2.767.2) https://github.com/speakeasy-api/speakeasy
488+
### Generated
489+
- [python v4.1.0] .
490+
### Releases
491+
- [PyPI v4.1.0] https://pypi.org/project/clerk-backend-api/4.1.0 - .

USAGE.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ with Clerk(
1010

1111
res = clerk.email_addresses.get(email_address_id="email_address_id_example")
1212

13-
assert res is not None
14-
1513
# Handle response
1614
print(res)
1715
```
@@ -33,8 +31,6 @@ async def main():
3331

3432
res = await clerk.email_addresses.get_async(email_address_id="email_address_id_example")
3533

36-
assert res is not None
37-
3834
# Handle response
3935
print(res)
4036

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# AssignPermissionToOrganizationRoleRequest
2+
3+
4+
## Fields
5+
6+
| Field | Type | Required | Description |
7+
| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- |
8+
| `organization_role_id` | *str* | :heavy_check_mark: | The ID of the organization role |
9+
| `permission_id` | *str* | :heavy_check_mark: | The ID of the permission to assign |
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# ClerkErrorErrorEnterpriseAccountMeta
2+
3+
4+
## Fields
5+
6+
| Field | Type | Required | Description |
7+
| ----------- | ----------- | ----------- | ----------- |
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# ClerkErrorErrorEnterpriseAccountVerificationMeta
2+
3+
4+
## Fields
5+
6+
| Field | Type | Required | Description |
7+
| ----------- | ----------- | ----------- | ----------- |

0 commit comments

Comments
 (0)