{"id":26462890,"url":"https://github.com/clerk/clerk-sdk-csharp","last_synced_at":"2025-12-12T06:29:56.075Z","repository":{"id":262714034,"uuid":"885522636","full_name":"clerk/clerk-sdk-csharp","owner":"clerk","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-18T00:07:21.000Z","size":1181,"stargazers_count":17,"open_issues_count":6,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-18T01:23:09.108Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clerk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-08T18:47:24.000Z","updated_at":"2025-03-15T23:12:40.000Z","dependencies_parsed_at":"2024-12-10T23:23:35.366Z","dependency_job_id":"a5f1a0d5-419a-41e4-984d-b15e770b1ed6","html_url":"https://github.com/clerk/clerk-sdk-csharp","commit_stats":null,"previous_names":["clerk/clerk-sdk-csharp"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clerk%2Fclerk-sdk-csharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clerk%2Fclerk-sdk-csharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clerk%2Fclerk-sdk-csharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clerk%2Fclerk-sdk-csharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clerk","download_url":"https://codeload.github.com/clerk/clerk-sdk-csharp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244367434,"owners_count":20441887,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-19T06:25:46.636Z","updated_at":"2025-12-12T06:29:56.067Z","avatar_url":"https://github.com/clerk.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://clerk.com?utm_source=github\u0026utm_medium=clerk_javascript\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://images.clerk.com/static/logo-dark-mode-400x400.png\"\u003e\n      \u003cimg src=\"https://images.clerk.com/static/logo-light-mode-400x400.png\" height=\"100\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n   \u003cp\u003eThe most comprehensive User Management Platform\u003c/p\u003e\n   \u003ca href=\"https://clerk.com/docs/reference/backend-api\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?label=Docs\u0026message=API Ref\u0026color=000000\u0026style=for-the-badge\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cbr /\u003e\u003cbr /\u003e\n\n\u003c!-- Start Summary [summary] --\u003e\n## Summary\n\nClerk Backend API: The Clerk REST Backend API, meant to be accessed by backend servers.\n\n### Versions\n\nWhen the API changes in a way that isn't compatible with older versions, a new version is released.\nEach version is identified by its release date, e.g. `2025-04-10`. For more information, please see [Clerk API Versions](https://clerk.com/docs/versioning/available-versions).\n\nPlease see https://clerk.com/docs for more information.\n\nMore information about the API can be found at https://clerk.com/docs\n\u003c!-- End Summary [summary] --\u003e\n\n\u003c!-- Start Table of Contents [toc] --\u003e\n## Table of Contents\n\u003c!-- $toc-max-depth=2 --\u003e\n  * [SDK Installation](#sdk-installation)\n  * [SDK Example Usage](#sdk-example-usage)\n  * [Authentication](#authentication)\n  * [Request Authentication](#request-authentication)\n  * [Available Resources and Operations](#available-resources-and-operations)\n  * [Retries](#retries)\n  * [Error Handling](#error-handling)\n  * [Server Selection](#server-selection)\n  * [Custom HTTP Client](#custom-http-client)\n* [Development](#development)\n  * [Maturity](#maturity)\n  * [Contributions](#contributions)\n\n\u003c!-- End Table of Contents [toc] --\u003e\n\n\u003c!-- Start SDK Installation [installation] --\u003e\n## SDK Installation\n\n### NuGet\n\nTo add the [NuGet](https://www.nuget.org/) package to a .NET project:\n```bash\ndotnet add package Clerk.BackendAPI\n```\n\n### Locally\n\nTo add a reference to a local instance of the SDK in a .NET project:\n```bash\ndotnet add reference src/Clerk/BackendAPI/Clerk.BackendAPI.csproj\n```\n\u003c!-- End SDK Installation [installation] --\u003e\n\n\u003c!-- Start SDK Example Usage [usage] --\u003e\n## SDK Example Usage\n\n### Example\n\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Models.Components;\n\nvar sdk = new ClerkBackendApi(bearerAuth: \"\u003cYOUR_BEARER_TOKEN_HERE\u003e\");\n\nvar res = await sdk.EmailAddresses.GetAsync(emailAddressId: \"email_address_id_example\");\n\n// handle response\n```\n\u003c!-- End SDK Example Usage [usage] --\u003e\n\n\u003c!-- Start Authentication [security] --\u003e\n## Authentication\n\n### Per-Client Security Schemes\n\nThis SDK supports the following security scheme globally:\n\n| Name         | Type | Scheme      |\n| ------------ | ---- | ----------- |\n| `BearerAuth` | http | HTTP Bearer |\n\nTo authenticate with the API the `BearerAuth` parameter must be set when initializing the SDK client instance. For example:\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Models.Components;\nusing Clerk.BackendAPI.Models.Operations;\n\nvar sdk = new ClerkBackendApi(bearerAuth: \"\u003cYOUR_BEARER_TOKEN_HERE\u003e\");\n\nGetPublicInterstitialRequest req = new GetPublicInterstitialRequest() {\n    FrontendApiQueryParameter = \"frontend-api_1a2b3c4d\",\n    FrontendApiQueryParameter1 = \"pub_1a2b3c4d\",\n};\n\nvar res = await sdk.Miscellaneous.GetPublicInterstitialAsync(req);\n\n// handle response\n```\n\u003c!-- End Authentication [security] --\u003e\n\n## Request Authentication\n\nUse the [AuthenticateRequestAsync](https://github.com/clerk/clerk-sdk-csharp/blob/main/src/Clerk/BackendAPI/Helpers/AuthenticateRequest.cs) method to authenticate a request from your app's frontend (when using a Clerk frontend SDK) to Clerk's Backend API. For example the following utility function checks if the user is effectively signed in:\n\n```csharp\nusing Clerk.BackendAPI.Helpers.Jwks;\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class UserAuthentication\n{\n    public static async Task\u003cbool\u003e IsSignedInAsync(HttpRequestMessage request)\n    {\n        var options = new AuthenticateRequestOptions(\n            secretKey: Environment.GetEnvironmentVariable(\"CLERK_SECRET_KEY\"),\n            authorizedParties: new string[] { \"https://example.com\" }\n        );\n\n        var requestState = await AuthenticateRequest.AuthenticateRequestAsync(request, options);\n\n        return requestState.isSignedIn();\n    }\n}\n```\n### Machine Authentication\n\nFor machine-to-machine authentication, you can use machine tokens as shown below.\n\n```csharp\nusing Clerk.BackendAPI.Helpers.Jwks;\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class MachineAuthentication\n{\n    // Accept only machine tokens\n    public static async Task\u003cbool\u003e IsMachineAuthenticatedAsync(HttpRequestMessage request)\n    {\n        var options = new AuthenticateRequestOptions(\n            secretKey: Environment.GetEnvironmentVariable(\"CLERK_SECRET_KEY\"),\n            acceptsToken: new[] { \"oauth_token\" }  // Only accept oauth tokens\n        );\n\n        var requestState = await AuthenticateRequest.AuthenticateRequestAsync(request, options);\n        return requestState.isSignedIn();\n    }\n}\n```\n\n\u003c!-- Start Available Resources and Operations [operations] --\u003e\n## Available Resources and Operations\n\n\u003cdetails open\u003e\n\u003csummary\u003eAvailable methods\u003c/summary\u003e\n\n### [ActorTokens](docs/sdks/actortokens/README.md)\n\n* [Create](docs/sdks/actortokens/README.md#create) - Create actor token\n* [Revoke](docs/sdks/actortokens/README.md#revoke) - Revoke actor token\n\n### [AllowlistIdentifiers](docs/sdks/allowlistidentifiers/README.md)\n\n* [List](docs/sdks/allowlistidentifiers/README.md#list) - List all identifiers on the allow-list\n* [Create](docs/sdks/allowlistidentifiers/README.md#create) - Add identifier to the allow-list\n* [Delete](docs/sdks/allowlistidentifiers/README.md#delete) - Delete identifier from allow-list\n\n### [APIKeys](docs/sdks/apikeys/README.md)\n\n* [CreateApiKey](docs/sdks/apikeys/README.md#createapikey) - Create an API Key\n* [GetApiKeys](docs/sdks/apikeys/README.md#getapikeys) - Get API Keys\n* [GetApiKey](docs/sdks/apikeys/README.md#getapikey) - Get an API Key by ID\n* [UpdateApiKey](docs/sdks/apikeys/README.md#updateapikey) - Update an API Key\n* [DeleteApiKey](docs/sdks/apikeys/README.md#deleteapikey) - Delete an API Key\n* [GetApiKeySecret](docs/sdks/apikeys/README.md#getapikeysecret) - Get an API Key Secret\n* [RevokeApiKey](docs/sdks/apikeys/README.md#revokeapikey) - Revoke an API Key\n* [VerifyApiKey](docs/sdks/apikeys/README.md#verifyapikey) - Verify an API Key\n\n### [BetaFeatures](docs/sdks/betafeatures/README.md)\n\n* [UpdateInstanceSettings](docs/sdks/betafeatures/README.md#updateinstancesettings) - Update instance settings\n* [~~UpdateProductionInstanceDomain~~](docs/sdks/betafeatures/README.md#updateproductioninstancedomain) - Update production instance domain :warning: **Deprecated**\n\n### [Billing](docs/sdks/billing/README.md)\n\n* [ListPlans](docs/sdks/billing/README.md#listplans) - List all billing plans\n* [ListSubscriptionItems](docs/sdks/billing/README.md#listsubscriptionitems) - List all subscription items\n* [CancelSubscriptionItem](docs/sdks/billing/README.md#cancelsubscriptionitem) - Cancel a subscription item\n* [ExtendSubscriptionItemFreeTrial](docs/sdks/billing/README.md#extendsubscriptionitemfreetrial) - Extend free trial for a subscription item\n* [ListStatements](docs/sdks/billing/README.md#liststatements) - List all billing statements\n* [GetStatement](docs/sdks/billing/README.md#getstatement) - Retrieve a billing statement\n* [GetStatementPaymentAttempts](docs/sdks/billing/README.md#getstatementpaymentattempts) - List payment attempts for a billing statement\n\n### [BlocklistIdentifiers](docs/sdks/blocklistidentifiers/README.md)\n\n* [List](docs/sdks/blocklistidentifiers/README.md#list) - List all identifiers on the block-list\n* [Create](docs/sdks/blocklistidentifiers/README.md#create) - Add identifier to the block-list\n* [Delete](docs/sdks/blocklistidentifiers/README.md#delete) - Delete identifier from block-list\n\n### [Clients](docs/sdks/clients/README.md)\n\n* [~~List~~](docs/sdks/clients/README.md#list) - List all clients :warning: **Deprecated**\n* [Verify](docs/sdks/clients/README.md#verify) - Verify a client\n* [Get](docs/sdks/clients/README.md#get) - Get a client\n\n### [Domains](docs/sdks/domains/README.md)\n\n* [List](docs/sdks/domains/README.md#list) - List all instance domains\n* [Add](docs/sdks/domains/README.md#add) - Add a domain\n* [Delete](docs/sdks/domains/README.md#delete) - Delete a satellite domain\n* [Update](docs/sdks/domains/README.md#update) - Update a domain\n\n### [EmailAddresses](docs/sdks/emailaddresses/README.md)\n\n* [Create](docs/sdks/emailaddresses/README.md#create) - Create an email address\n* [Get](docs/sdks/emailaddresses/README.md#get) - Retrieve an email address\n* [Delete](docs/sdks/emailaddresses/README.md#delete) - Delete an email address\n* [Update](docs/sdks/emailaddresses/README.md#update) - Update an email address\n\n### [~~EmailAndSmsTemplates~~](docs/sdks/emailandsmstemplates/README.md)\n\n* [~~Upsert~~](docs/sdks/emailandsmstemplates/README.md#upsert) - Update a template for a given type and slug :warning: **Deprecated**\n\n### [~~EmailSMSTemplates~~](docs/sdks/emailsmstemplates/README.md)\n\n* [~~List~~](docs/sdks/emailsmstemplates/README.md#list) - List all templates :warning: **Deprecated**\n* [~~Get~~](docs/sdks/emailsmstemplates/README.md#get) - Retrieve a template :warning: **Deprecated**\n* [~~Revert~~](docs/sdks/emailsmstemplates/README.md#revert) - Revert a template :warning: **Deprecated**\n* [~~ToggleTemplateDelivery~~](docs/sdks/emailsmstemplates/README.md#toggletemplatedelivery) - Toggle the delivery by Clerk for a template of a given type and slug :warning: **Deprecated**\n\n### [InstanceSettings](docs/sdks/instancesettings/README.md)\n\n* [Get](docs/sdks/instancesettings/README.md#get) - Fetch the current instance\n* [Update](docs/sdks/instancesettings/README.md#update) - Update instance settings\n* [UpdateRestrictions](docs/sdks/instancesettings/README.md#updaterestrictions) - Update instance restrictions\n* [ChangeDomain](docs/sdks/instancesettings/README.md#changedomain) - Update production instance domain\n* [UpdateOrganizationSettings](docs/sdks/instancesettings/README.md#updateorganizationsettings) - Update instance organization settings\n\n### [Invitations](docs/sdks/invitations/README.md)\n\n* [Create](docs/sdks/invitations/README.md#create) - Create an invitation\n* [List](docs/sdks/invitations/README.md#list) - List all invitations\n* [BulkCreate](docs/sdks/invitations/README.md#bulkcreate) - Create multiple invitations\n* [Revoke](docs/sdks/invitations/README.md#revoke) - Revokes an invitation\n\n### [Jwks](docs/sdks/jwks/README.md)\n\n* [GetJWKS](docs/sdks/jwks/README.md#getjwks) - Retrieve the JSON Web Key Set of the instance\n\n### [JwtTemplates](docs/sdks/jwttemplates/README.md)\n\n* [List](docs/sdks/jwttemplates/README.md#list) - List all templates\n* [Create](docs/sdks/jwttemplates/README.md#create) - Create a JWT template\n* [Get](docs/sdks/jwttemplates/README.md#get) - Retrieve a template\n* [Update](docs/sdks/jwttemplates/README.md#update) - Update a JWT template\n* [Delete](docs/sdks/jwttemplates/README.md#delete) - Delete a Template\n\n### [M2m](docs/sdks/m2m/README.md)\n\n* [CreateToken](docs/sdks/m2m/README.md#createtoken) - Create a M2M Token\n* [ListTokens](docs/sdks/m2m/README.md#listtokens) - Get M2M Tokens\n* [RevokeToken](docs/sdks/m2m/README.md#revoketoken) - Revoke a M2M Token\n* [VerifyToken](docs/sdks/m2m/README.md#verifytoken) - Verify a M2M Token\n\n### [Machines](docs/sdks/machines/README.md)\n\n* [List](docs/sdks/machines/README.md#list) - Get a list of machines for an instance\n* [Create](docs/sdks/machines/README.md#create) - Create a machine\n* [Get](docs/sdks/machines/README.md#get) - Retrieve a machine\n* [Update](docs/sdks/machines/README.md#update) - Update a machine\n* [Delete](docs/sdks/machines/README.md#delete) - Delete a machine\n* [GetSecretKey](docs/sdks/machines/README.md#getsecretkey) - Retrieve a machine secret key\n* [RotateSecretKey](docs/sdks/machines/README.md#rotatesecretkey) - Rotate a machine's secret key\n* [CreateScope](docs/sdks/machines/README.md#createscope) - Create a machine scope\n* [DeleteScope](docs/sdks/machines/README.md#deletescope) - Delete a machine scope\n\n### [Miscellaneous](docs/sdks/miscellaneous/README.md)\n\n* [GetPublicInterstitial](docs/sdks/miscellaneous/README.md#getpublicinterstitial) - Returns the markup for the interstitial page\n\n### [OauthAccessTokens](docs/sdks/oauthaccesstokens/README.md)\n\n* [Verify](docs/sdks/oauthaccesstokens/README.md#verify) - Verify an OAuth Access Token\n\n### [OauthApplications](docs/sdks/oauthapplications/README.md)\n\n* [List](docs/sdks/oauthapplications/README.md#list) - Get a list of OAuth applications for an instance\n* [Create](docs/sdks/oauthapplications/README.md#create) - Create an OAuth application\n* [Get](docs/sdks/oauthapplications/README.md#get) - Retrieve an OAuth application by ID\n* [Update](docs/sdks/oauthapplications/README.md#update) - Update an OAuth application\n* [Delete](docs/sdks/oauthapplications/README.md#delete) - Delete an OAuth application\n* [RotateSecret](docs/sdks/oauthapplications/README.md#rotatesecret) - Rotate the client secret of the given OAuth application\n\n### [OrganizationDomains](docs/sdks/organizationdomains/README.md)\n\n* [Create](docs/sdks/organizationdomains/README.md#create) - Create a new organization domain.\n* [List](docs/sdks/organizationdomains/README.md#list) - Get a list of all domains of an organization.\n* [Update](docs/sdks/organizationdomains/README.md#update) - Update an organization domain.\n* [Delete](docs/sdks/organizationdomains/README.md#delete) - Remove a domain from an organization.\n* [ListAll](docs/sdks/organizationdomains/README.md#listall) - List all organization domains\n\n### [OrganizationInvitations](docs/sdks/organizationinvitations/README.md)\n\n* [GetAll](docs/sdks/organizationinvitations/README.md#getall) - Get a list of organization invitations for the current instance\n* [Create](docs/sdks/organizationinvitations/README.md#create) - Create and send an organization invitation\n* [List](docs/sdks/organizationinvitations/README.md#list) - Get a list of organization invitations\n* [BulkCreate](docs/sdks/organizationinvitations/README.md#bulkcreate) - Bulk create and send organization invitations\n* [~~ListPending~~](docs/sdks/organizationinvitations/README.md#listpending) - Get a list of pending organization invitations :warning: **Deprecated**\n* [Get](docs/sdks/organizationinvitations/README.md#get) - Retrieve an organization invitation by ID\n* [Revoke](docs/sdks/organizationinvitations/README.md#revoke) - Revoke a pending organization invitation\n\n### [OrganizationMemberships](docs/sdks/organizationmemberships/README.md)\n\n* [Create](docs/sdks/organizationmemberships/README.md#create) - Create a new organization membership\n* [List](docs/sdks/organizationmemberships/README.md#list) - Get a list of all members of an organization\n* [Update](docs/sdks/organizationmemberships/README.md#update) - Update an organization membership\n* [Delete](docs/sdks/organizationmemberships/README.md#delete) - Remove a member from an organization\n* [UpdateMetadata](docs/sdks/organizationmemberships/README.md#updatemetadata) - Merge and update organization membership metadata\n\n### [OrganizationPermissions](docs/sdks/organizationpermissions/README.md)\n\n* [List](docs/sdks/organizationpermissions/README.md#list) - Get a list of all organization permissions\n* [Create](docs/sdks/organizationpermissions/README.md#create) - Create a new organization permission\n* [Get](docs/sdks/organizationpermissions/README.md#get) - Get an organization permission\n* [Update](docs/sdks/organizationpermissions/README.md#update) - Update an organization permission\n* [Delete](docs/sdks/organizationpermissions/README.md#delete) - Delete an organization permission\n\n### [OrganizationRoles](docs/sdks/organizationroles/README.md)\n\n* [List](docs/sdks/organizationroles/README.md#list) - Get a list of organization roles\n* [Create](docs/sdks/organizationroles/README.md#create) - Create an organization role\n* [Get](docs/sdks/organizationroles/README.md#get) - Retrieve an organization role\n* [Update](docs/sdks/organizationroles/README.md#update) - Update an organization role\n* [Delete](docs/sdks/organizationroles/README.md#delete) - Delete an organization role\n* [AssignPermission](docs/sdks/organizationroles/README.md#assignpermission) - Assign a permission to an organization role\n* [RemovePermission](docs/sdks/organizationroles/README.md#removepermission) - Remove a permission from an organization role\n\n### [Organizations](docs/sdks/organizations/README.md)\n\n* [List](docs/sdks/organizations/README.md#list) - Get a list of organizations for an instance\n* [Create](docs/sdks/organizations/README.md#create) - Create an organization\n* [Get](docs/sdks/organizations/README.md#get) - Retrieve an organization by ID or slug\n* [Update](docs/sdks/organizations/README.md#update) - Update an organization\n* [Delete](docs/sdks/organizations/README.md#delete) - Delete an organization\n* [MergeMetadata](docs/sdks/organizations/README.md#mergemetadata) - Merge and update metadata for an organization\n* [UploadLogo](docs/sdks/organizations/README.md#uploadlogo) - Upload a logo for the organization\n* [DeleteLogo](docs/sdks/organizations/README.md#deletelogo) - Delete the organization's logo.\n* [GetBillingSubscription](docs/sdks/organizations/README.md#getbillingsubscription) - Retrieve an organization's billing subscription\n\n### [PhoneNumbers](docs/sdks/phonenumbers/README.md)\n\n* [Create](docs/sdks/phonenumbers/README.md#create) - Create a phone number\n* [Get](docs/sdks/phonenumbers/README.md#get) - Retrieve a phone number\n* [Delete](docs/sdks/phonenumbers/README.md#delete) - Delete a phone number\n* [Update](docs/sdks/phonenumbers/README.md#update) - Update a phone number\n\n### [ProxyChecks](docs/sdks/proxychecks/README.md)\n\n* [Verify](docs/sdks/proxychecks/README.md#verify) - Verify the proxy configuration for your domain\n\n### [RedirectUrls](docs/sdks/redirecturls/README.md)\n\n* [List](docs/sdks/redirecturls/README.md#list) - List all redirect URLs\n* [Create](docs/sdks/redirecturls/README.md#create) - Create a redirect URL\n* [Get](docs/sdks/redirecturls/README.md#get) - Retrieve a redirect URL\n* [Delete](docs/sdks/redirecturls/README.md#delete) - Delete a redirect URL\n\n### [SamlConnections](docs/sdks/samlconnections/README.md)\n\n* [List](docs/sdks/samlconnections/README.md#list) - Get a list of SAML Connections for an instance\n* [Create](docs/sdks/samlconnections/README.md#create) - Create a SAML Connection\n* [Get](docs/sdks/samlconnections/README.md#get) - Retrieve a SAML Connection by ID\n* [Update](docs/sdks/samlconnections/README.md#update) - Update a SAML Connection\n* [Delete](docs/sdks/samlconnections/README.md#delete) - Delete a SAML Connection\n\n### [Sessions](docs/sdks/sessions/README.md)\n\n* [List](docs/sdks/sessions/README.md#list) - List all sessions\n* [Create](docs/sdks/sessions/README.md#create) - Create a new active session\n* [Get](docs/sdks/sessions/README.md#get) - Retrieve a session\n* [Refresh](docs/sdks/sessions/README.md#refresh) - Refresh a session\n* [Revoke](docs/sdks/sessions/README.md#revoke) - Revoke a session\n* [CreateToken](docs/sdks/sessions/README.md#createtoken) - Create a session token\n* [CreateTokenFromTemplate](docs/sdks/sessions/README.md#createtokenfromtemplate) - Create a session token from a JWT template\n\n### [SignInTokens](docs/sdks/signintokens/README.md)\n\n* [Create](docs/sdks/signintokens/README.md#create) - Create sign-in token\n* [Revoke](docs/sdks/signintokens/README.md#revoke) - Revoke the given sign-in token\n\n### [SignUps](docs/sdks/signups/README.md)\n\n* [Get](docs/sdks/signups/README.md#get) - Retrieve a sign-up by ID\n* [Update](docs/sdks/signups/README.md#update) - Update a sign-up\n\n### [~~Templates~~](docs/sdks/templates/README.md)\n\n* [~~Preview~~](docs/sdks/templates/README.md#preview) - Preview changes to a template :warning: **Deprecated**\n\n### [TestingTokens](docs/sdks/testingtokens/README.md)\n\n* [Create](docs/sdks/testingtokens/README.md#create) - Retrieve a new testing token\n\n### [Users](docs/sdks/users/README.md)\n\n* [List](docs/sdks/users/README.md#list) - List all users\n* [Create](docs/sdks/users/README.md#create) - Create a new user\n* [Count](docs/sdks/users/README.md#count) - Count users\n* [Get](docs/sdks/users/README.md#get) - Retrieve a user\n* [Update](docs/sdks/users/README.md#update) - Update a user\n* [Delete](docs/sdks/users/README.md#delete) - Delete a user\n* [Ban](docs/sdks/users/README.md#ban) - Ban a user\n* [Unban](docs/sdks/users/README.md#unban) - Unban a user\n* [BulkBan](docs/sdks/users/README.md#bulkban) - Ban multiple users\n* [BulkUnban](docs/sdks/users/README.md#bulkunban) - Unban multiple users\n* [Lock](docs/sdks/users/README.md#lock) - Lock a user\n* [Unlock](docs/sdks/users/README.md#unlock) - Unlock a user\n* [SetProfileImage](docs/sdks/users/README.md#setprofileimage) - Set user profile image\n* [DeleteProfileImage](docs/sdks/users/README.md#deleteprofileimage) - Delete user profile image\n* [UpdateMetadata](docs/sdks/users/README.md#updatemetadata) - Merge and update a user's metadata\n* [GetBillingSubscription](docs/sdks/users/README.md#getbillingsubscription) - Retrieve a user's billing subscription\n* [GetOAuthAccessToken](docs/sdks/users/README.md#getoauthaccesstoken) - Retrieve the OAuth access token of a user\n* [GetOrganizationMemberships](docs/sdks/users/README.md#getorganizationmemberships) - Retrieve all memberships for a user\n* [GetOrganizationInvitations](docs/sdks/users/README.md#getorganizationinvitations) - Retrieve all invitations for a user\n* [VerifyPassword](docs/sdks/users/README.md#verifypassword) - Verify the password of a user\n* [VerifyTotp](docs/sdks/users/README.md#verifytotp) - Verify a TOTP or backup code for a user\n* [DisableMfa](docs/sdks/users/README.md#disablemfa) - Disable a user's MFA methods\n* [DeleteBackupCodes](docs/sdks/users/README.md#deletebackupcodes) - Disable all user's Backup codes\n* [DeletePasskey](docs/sdks/users/README.md#deletepasskey) - Delete a user passkey\n* [DeleteWeb3Wallet](docs/sdks/users/README.md#deleteweb3wallet) - Delete a user web3 wallet\n* [DeleteTOTP](docs/sdks/users/README.md#deletetotp) - Delete all the user's TOTPs\n* [DeleteExternalAccount](docs/sdks/users/README.md#deleteexternalaccount) - Delete External Account\n* [GetInstanceOrganizationMemberships](docs/sdks/users/README.md#getinstanceorganizationmemberships) - Get a list of all organization memberships within an instance.\n\n### [WaitlistEntries](docs/sdks/waitlistentries/README.md)\n\n* [List](docs/sdks/waitlistentries/README.md#list) - List all waitlist entries\n* [Create](docs/sdks/waitlistentries/README.md#create) - Create a waitlist entry\n* [Delete](docs/sdks/waitlistentries/README.md#delete) - Delete a pending waitlist entry\n* [Invite](docs/sdks/waitlistentries/README.md#invite) - Invite a waitlist entry\n* [Reject](docs/sdks/waitlistentries/README.md#reject) - Reject a waitlist entry\n\n### [Webhooks](docs/sdks/webhooks/README.md)\n\n* [CreateSvixApp](docs/sdks/webhooks/README.md#createsvixapp) - Create a Svix app\n* [DeleteSvixApp](docs/sdks/webhooks/README.md#deletesvixapp) - Delete a Svix app\n* [GenerateSvixAuthURL](docs/sdks/webhooks/README.md#generatesvixauthurl) - Create a Svix Dashboard URL\n\n\u003c/details\u003e\n\u003c!-- End Available Resources and Operations [operations] --\u003e\n\n\u003c!-- Start Retries [retries] --\u003e\n## Retries\n\nSome of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.\n\nTo change the default retry strategy for a single API call, simply pass a `RetryConfig` to the call:\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Models.Operations;\n\nvar sdk = new ClerkBackendApi();\n\nGetPublicInterstitialRequest req = new GetPublicInterstitialRequest() {\n    FrontendApiQueryParameter = \"frontend-api_1a2b3c4d\",\n    FrontendApiQueryParameter1 = \"pub_1a2b3c4d\",\n};\n\nvar res = await sdk.Miscellaneous.GetPublicInterstitialAsync(\n    retryConfig: new RetryConfig(\n        strategy: RetryConfig.RetryStrategy.BACKOFF,\n        backoff: new BackoffStrategy(\n            initialIntervalMs: 1L,\n            maxIntervalMs: 50L,\n            maxElapsedTimeMs: 100L,\n            exponent: 1.1\n        ),\n        retryConnectionErrors: false\n    ),\n    request: req\n);\n\n// handle response\n```\n\nIf you'd like to override the default retry strategy for all operations that support retries, you can use the `RetryConfig` optional parameter when intitializing the SDK:\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Models.Operations;\n\nvar sdk = new ClerkBackendApi(retryConfig: new RetryConfig(\n    strategy: RetryConfig.RetryStrategy.BACKOFF,\n    backoff: new BackoffStrategy(\n        initialIntervalMs: 1L,\n        maxIntervalMs: 50L,\n        maxElapsedTimeMs: 100L,\n        exponent: 1.1\n    ),\n    retryConnectionErrors: false\n));\n\nGetPublicInterstitialRequest req = new GetPublicInterstitialRequest() {\n    FrontendApiQueryParameter = \"frontend-api_1a2b3c4d\",\n    FrontendApiQueryParameter1 = \"pub_1a2b3c4d\",\n};\n\nvar res = await sdk.Miscellaneous.GetPublicInterstitialAsync(req);\n\n// handle response\n```\n\u003c!-- End Retries [retries] --\u003e\n\n\u003c!-- Start Error Handling [errors] --\u003e\n## Error Handling\n\n[`SDKBaseError`](./src/Clerk/BackendAPI/Models/Errors/SDKBaseError.cs) is the base exception class for all HTTP error responses. It has the following properties:\n\n| Property      | Type                  | Description           |\n|---------------|-----------------------|-----------------------|\n| `Message`     | *string*              | Error message         |\n| `Request`     | *HttpRequestMessage*  | HTTP request object   |\n| `Response`    | *HttpResponseMessage* | HTTP response object  |\n\nSome exceptions in this SDK include an additional `Payload` field, which will contain deserialized custom error data when present. Possible exceptions are listed in the [Error Classes](#error-classes) section.\n\n### Example\n\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Models.Components;\nusing Clerk.BackendAPI.Models.Errors;\nusing Clerk.BackendAPI.Models.Operations;\nusing System.Collections.Generic;\n\nvar sdk = new ClerkBackendApi(bearerAuth: \"\u003cYOUR_BEARER_TOKEN_HERE\u003e\");\n\ntry\n{\n    VerifyClientRequestBody req = new VerifyClientRequestBody() {\n        Token = \"jwt_token_example\",\n    };\n\n    var res = await sdk.Clients.VerifyAsync(req);\n\n    // handle response\n}\ncatch (SDKBaseError ex)  // all SDK exceptions inherit from SDKBaseError\n{\n    // ex.ToString() provides a detailed error message\n    System.Console.WriteLine(ex);\n\n    // Base exception fields\n    HttpRequestMessage request = ex.Request;\n    HttpResponseMessage response = ex.Response;\n    var statusCode = (int)response.StatusCode;\n    var responseBody = ex.Body;\n\n    if (ex is ClerkErrors) // different exceptions may be thrown depending on the method\n    {\n        // Check error data fields\n        ClerkErrorsPayload payload = ex.Payload;\n        List\u003cClerkError\u003e Errors = payload.Errors;\n        Clerk.BackendAPI.Models.Errors.Meta Meta = payload.Meta;\n    }\n\n    // An underlying cause may be provided\n    if (ex.InnerException != null)\n    {\n        Exception cause = ex.InnerException;\n    }\n}\ncatch (System.Net.Http.HttpRequestException ex)\n{\n    // Check ex.InnerException for Network connectivity errors\n}\n```\n\n### Error Classes\n\n**Primary exceptions:**\n* [`SDKBaseError`](./src/Clerk/BackendAPI/Models/Errors/SDKBaseError.cs): The base class for HTTP error responses.\n  * [`ClerkErrors`](./src/Clerk/BackendAPI/Models/Errors/ClerkErrors.cs): Request was not successful. *\n\n\u003cdetails\u003e\u003csummary\u003eLess common exceptions (29)\u003c/summary\u003e\n\n* [`System.Net.Http.HttpRequestException`](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httprequestexception): Network connectivity error. For more details about the underlying cause, inspect the `ex.InnerException`.\n\n* Inheriting from [`SDKBaseError`](./src/Clerk/BackendAPI/Models/Errors/SDKBaseError.cs):\n  * [`CreateApiKeyResponseBody`](./src/Clerk/BackendAPI/Models/Errors/CreateApiKeyResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`GetApiKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetApiKeysResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`GetApiKeyResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetApiKeyResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`UpdateApiKeyResponseBody`](./src/Clerk/BackendAPI/Models/Errors/UpdateApiKeyResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`DeleteApiKeyResponseBody`](./src/Clerk/BackendAPI/Models/Errors/DeleteApiKeyResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`GetApiKeySecretResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetApiKeySecretResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`RevokeApiKeyResponseBody`](./src/Clerk/BackendAPI/Models/Errors/RevokeApiKeyResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`VerifyApiKeyResponseBody`](./src/Clerk/BackendAPI/Models/Errors/VerifyApiKeyResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`CreateM2MTokenResponseBody`](./src/Clerk/BackendAPI/Models/Errors/CreateM2MTokenResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`GetM2MTokensResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetM2MTokensResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`RevokeM2MTokenResponseBody`](./src/Clerk/BackendAPI/Models/Errors/RevokeM2MTokenResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`VerifyM2MTokenResponseBody`](./src/Clerk/BackendAPI/Models/Errors/VerifyM2MTokenResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`VerifyOAuthAccessTokenResponseBody`](./src/Clerk/BackendAPI/Models/Errors/VerifyOAuthAccessTokenResponseBody.cs): 400 Bad Request. Status code `400`. Applicable to 1 of 178 methods.*\n  * [`GetM2MTokensM2mResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetM2MTokensM2mResponseBody.cs): 403 Forbidden. Status code `403`. Applicable to 1 of 178 methods.*\n  * [`GetAPIKeysAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetAPIKeysAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`GetAPIKeyAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetAPIKeyAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`UpdateAPIKeyAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/UpdateAPIKeyAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`DeleteAPIKeyAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/DeleteAPIKeyAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`GetAPIKeySecretAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetAPIKeySecretAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`RevokeAPIKeyAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/RevokeAPIKeyAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`VerifyAPIKeyAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/VerifyAPIKeyAPIKeysResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`GetM2MTokensM2mResponseResponseBody`](./src/Clerk/BackendAPI/Models/Errors/GetM2MTokensM2mResponseResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`RevokeM2MTokenM2mResponseBody`](./src/Clerk/BackendAPI/Models/Errors/RevokeM2MTokenM2mResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`VerifyM2MTokenM2mResponseBody`](./src/Clerk/BackendAPI/Models/Errors/VerifyM2MTokenM2mResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`VerifyOAuthAccessTokenOauthAccessTokensResponseBody`](./src/Clerk/BackendAPI/Models/Errors/VerifyOAuthAccessTokenOauthAccessTokensResponseBody.cs): 404 Not Found. Status code `404`. Applicable to 1 of 178 methods.*\n  * [`CreateAPIKeyAPIKeysResponseBody`](./src/Clerk/BackendAPI/Models/Errors/CreateAPIKeyAPIKeysResponseBody.cs): 409 Conflict. Status code `409`. Applicable to 1 of 178 methods.*\n  * [`CreateM2MTokenM2mResponseBody`](./src/Clerk/BackendAPI/Models/Errors/CreateM2MTokenM2mResponseBody.cs): 409 Conflict. Status code `409`. Applicable to 1 of 178 methods.*\n  * [`ResponseValidationError`](./src/Clerk/BackendAPI/Models/Errors/ResponseValidationError.cs): Thrown when the response data could not be deserialized into the expected type.\n\u003c/details\u003e\n\n\\* Refer to the [relevant documentation](#available-resources-and-operations) to determine whether an exception applies to a specific operation.\n\u003c!-- End Error Handling [errors] --\u003e\n\n\u003c!-- Start Server Selection [server] --\u003e\n## Server Selection\n\n### Override Server URL Per-Client\n\nThe default server can be overridden globally by passing a URL to the `serverUrl: string` optional parameter when initializing the SDK client instance. For example:\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Models.Operations;\n\nvar sdk = new ClerkBackendApi(serverUrl: \"https://api.clerk.com/v1\");\n\nGetPublicInterstitialRequest req = new GetPublicInterstitialRequest() {\n    FrontendApiQueryParameter = \"frontend-api_1a2b3c4d\",\n    FrontendApiQueryParameter1 = \"pub_1a2b3c4d\",\n};\n\nvar res = await sdk.Miscellaneous.GetPublicInterstitialAsync(req);\n\n// handle response\n```\n\u003c!-- End Server Selection [server] --\u003e\n\n\u003c!-- Start Custom HTTP Client [http-client] --\u003e\n## Custom HTTP Client\n\nThe C# SDK makes API calls using an `ISpeakeasyHttpClient` that wraps the native\n[HttpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient). This\nclient provides the ability to attach hooks around the request lifecycle that can be used to modify the request or handle\nerrors and response.\n\nThe `ISpeakeasyHttpClient` interface allows you to either use the default `SpeakeasyHttpClient` that comes with the SDK,\nor provide your own custom implementation with customized configuration such as custom message handlers, timeouts,\nconnection pooling, and other HTTP client settings.\n\nThe following example shows how to create a custom HTTP client with request modification and error handling:\n\n```csharp\nusing Clerk.BackendAPI;\nusing Clerk.BackendAPI.Utils;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\n// Create a custom HTTP client\npublic class CustomHttpClient : ISpeakeasyHttpClient\n{\n    private readonly ISpeakeasyHttpClient _defaultClient;\n\n    public CustomHttpClient()\n    {\n        _defaultClient = new SpeakeasyHttpClient();\n    }\n\n    public async Task\u003cHttpResponseMessage\u003e SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null)\n    {\n        // Add custom header and timeout\n        request.Headers.Add(\"x-custom-header\", \"custom value\");\n        request.Headers.Add(\"x-request-timeout\", \"30\");\n        \n        try\n        {\n            var response = await _defaultClient.SendAsync(request, cancellationToken);\n            // Log successful response\n            Console.WriteLine($\"Request successful: {response.StatusCode}\");\n            return response;\n        }\n        catch (Exception error)\n        {\n            // Log error\n            Console.WriteLine($\"Request failed: {error.Message}\");\n            throw;\n        }\n    }\n\n    public void Dispose()\n    {\n        _httpClient?.Dispose();\n        _defaultClient?.Dispose();\n    }\n}\n\n// Use the custom HTTP client with the SDK\nvar customHttpClient = new CustomHttpClient();\nvar sdk = new ClerkBackendApi(client: customHttpClient);\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eYou can also provide a completely custom HTTP client with your own configuration:\u003c/summary\u003e\n\n```csharp\nusing Clerk.BackendAPI.Utils;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\n// Custom HTTP client with custom configuration\npublic class AdvancedHttpClient : ISpeakeasyHttpClient\n{\n    private readonly HttpClient _httpClient;\n\n    public AdvancedHttpClient()\n    {\n        var handler = new HttpClientHandler()\n        {\n            MaxConnectionsPerServer = 10,\n            // ServerCertificateCustomValidationCallback = customCertValidation, // Custom SSL validation if needed\n        };\n\n        _httpClient = new HttpClient(handler)\n        {\n            Timeout = TimeSpan.FromSeconds(30)\n        };\n    }\n\n    public async Task\u003cHttpResponseMessage\u003e SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null)\n    {\n        return await _httpClient.SendAsync(request, cancellationToken ?? CancellationToken.None);\n    }\n\n    public void Dispose()\n    {\n        _httpClient?.Dispose();\n    }\n}\n\nvar sdk = ClerkBackendApi.Builder()\n    .WithClient(new AdvancedHttpClient())\n    .Build();\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eFor simple debugging, you can enable request/response logging by implementing a custom client:\u003c/summary\u003e\n\n```csharp\npublic class LoggingHttpClient : ISpeakeasyHttpClient\n{\n    private readonly ISpeakeasyHttpClient _innerClient;\n\n    public LoggingHttpClient(ISpeakeasyHttpClient innerClient = null)\n    {\n        _innerClient = innerClient ?? new SpeakeasyHttpClient();\n    }\n\n    public async Task\u003cHttpResponseMessage\u003e SendAsync(HttpRequestMessage request, CancellationToken? cancellationToken = null)\n    {\n        // Log request\n        Console.WriteLine($\"Sending {request.Method} request to {request.RequestUri}\");\n        \n        var response = await _innerClient.SendAsync(request, cancellationToken);\n        \n        // Log response\n        Console.WriteLine($\"Received {response.StatusCode} response\");\n        \n        return response;\n    }\n\n    public void Dispose() =\u003e _innerClient?.Dispose();\n}\n\nvar sdk = new ClerkBackendApi(client: new LoggingHttpClient());\n```\n\u003c/details\u003e\n\nThe SDK also provides built-in hook support through the `SDKConfiguration.Hooks` system, which automatically handles\n`BeforeRequestAsync`, `AfterSuccessAsync`, and `AfterErrorAsync` hooks for advanced request lifecycle management.\n\u003c!-- End Custom HTTP Client [http-client] --\u003e\n\n\u003c!-- Placeholder for Future Speakeasy SDK Sections --\u003e\n\n# Development\n\n## Maturity\n\nThis SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage\nto a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally\nlooking for the latest version.\n\n## Contributions\n\nWhile we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. \nWe look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release. \n\n### SDK Created by [Speakeasy](https://www.speakeasy.com/?utm_source=openapi-clerk-backend-api-sdk-clerk-backend-api-sd-ksas\u0026utm_campaign=csharp)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclerk%2Fclerk-sdk-csharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclerk%2Fclerk-sdk-csharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclerk%2Fclerk-sdk-csharp/lists"}