diff --git a/.fern/replay.lock b/.fern/replay.lock index f694fd4747..c122a799ff 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -78,14 +78,20 @@ generations: cli_version: unknown generator_versions: fernapi/fern-typescript-sdk: 3.107.6 -current_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + - commit_sha: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 + tree_hash: c3a683a03a65f5900002204b2a708d7310ebd881 + timestamp: 2026-11-04T04:04:40.557Z + cli_version: unknown + generator_versions: + fernapi/fern-typescript-sdk: 3.107.6 +current_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 patches: - id: patch-066ff9e0 content_hash: sha256:5b87ec9a63fc57aba4840d0d335d472c621e838fc1d61515b30660df39d0dbc2 original_commit: 066ff9e02c45f4abf46791a3f070c762f7ecd924 original_message: "docs: add v6 migration guide for breaking changes in v6.0.0 (#1368)" original_author: Ankita Tripathi <51994119+ankita10119@users.noreply.github.com> - base_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + base_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 files: - v6_MIGRATION_GUIDE.md patch_content: | @@ -419,7 +425,7 @@ patches: original_commit: d8faf7a21efbed3bd75a0f36ff0d190bb9dd986b original_message: "docs: update v6 migration guide with federatedConnectionsTokensets and federated_connections_access_tokens breaking changes (#1370)" original_author: Ankita Tripathi <51994119+ankita10119@users.noreply.github.com> - base_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + base_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 files: - v6_MIGRATION_GUIDE.md patch_content: | @@ -8261,7 +8267,7 @@ patches: original_commit: 0f7baa6fa58a2944cd9e39abbfd8caf7be8d7e8c original_message: "fix: auto-stamp SDK_VERSION from package.json during build (#1382)" original_author: Ankita Tripathi <51994119+ankita10119@users.noreply.github.com> - base_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + base_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 files: - .shiprc patch_content: | @@ -13738,7 +13744,7 @@ patches: original_commit: b942f5d6b1b5f3e565f3315f12421c58ae005bec original_message: "docs: add Authentication API migration guide (auth0-auth-js / auth0-server-js) (#1395)" original_author: tusharpandey13 - base_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + base_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 files: - AUTH_MIGRATION_GUIDE.md - auth-migration/authentication-flows.md @@ -16138,7 +16144,7 @@ patches: original_commit: 842d2f5189493b78e420c17c968c80bc239e143a original_message: "docs: add v7 migration guide (v6 → v7) (#1396)" original_author: tusharpandey13 - base_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + base_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 files: - v7_MIGRATION_GUIDE.md patch_content: | @@ -27649,7 +27655,7 @@ patches: original_commit: 456afefce9a6ae6305f65307b3a19e7b2a801199 original_message: "feat: enhance domain validation for ManagementClient and related components" original_author: Amit Singh - base_generation: bf8d20b878899a53ca83287309f3bb649ca46f72 + base_generation: 2bb5f2071a6e3f8e7d3fd0698a2f73544d1231f1 files: - v7_MIGRATION_GUIDE.md patch_content: | @@ -27953,6 +27959,7 @@ patches: ``` Plan the move to `@auth0/auth0-auth-js` / `@auth0/auth0-server-js` rather than treating the legacy entrypoint as permanent. + user_owned: true - id: patch-185ac064 content_hash: sha256:eae25ca4d648887ccd0dbf85d55f52be8e3112bf613809c6b74c1e61499f424f original_commit: 185ac0645e47f85eba6a6369f820b304bce27d4c diff --git a/package.json b/package.json index afb1c958b0..10f7fd0073 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "auth0", - "version": "7.6.1", + "version": "7.6.0", "private": false, "repository": { "type": "git", @@ -287,6 +287,17 @@ }, "default": "./dist/cjs/management/api/resources/organizations/exports.js" }, + "./portals": { + "import": { + "types": "./dist/esm/management/api/resources/portals/exports.d.mts", + "default": "./dist/esm/management/api/resources/portals/exports.mjs" + }, + "require": { + "types": "./dist/cjs/management/api/resources/portals/exports.d.ts", + "default": "./dist/cjs/management/api/resources/portals/exports.js" + }, + "default": "./dist/cjs/management/api/resources/portals/exports.js" + }, "./prompts": { "import": { "types": "./dist/esm/management/api/resources/prompts/exports.d.mts", diff --git a/reference.md b/reference.md index 03c7be2f28..e6932124e8 100644 --- a/reference.md +++ b/reference.md @@ -1834,6 +1834,7 @@ const pageableResponse = await client.clients.list({ is_first_party: true, app_type: "app_type", external_client_id: "external_client_id", + agent_id: "agent_id", q: "q", }); for await (const item of pageableResponse) { @@ -1851,6 +1852,7 @@ let page = await client.clients.list({ is_first_party: true, app_type: "app_type", external_client_id: "external_client_id", + agent_id: "agent_id", q: "q", }); while (page.hasNextPage()) { @@ -8510,6 +8512,256 @@ await client.organizations.update("id"); +## Portals + +
client.portals.list() -> Management.ListPortalsResponseContent +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.portals.list(); +``` + +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**requestOptions:** `PortalsClient.RequestOptions` + +
+
+
+
+ +
+
+
+ +
client.portals.create({ ...params }) -> Management.Portal +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.portals.create({ + slug: "slug", + name: "name", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "client_secret", + }, +}); +``` + +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Management.CreatePortalRequestContent` + +
+
+ +
+
+ +**requestOptions:** `PortalsClient.RequestOptions` + +
+
+
+
+ +
+
+
+ +
client.portals.get(id) -> Management.Portal +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.portals.get("id"); +``` + +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `Management.PortalId` + +
+
+ +
+
+ +**requestOptions:** `PortalsClient.RequestOptions` + +
+
+
+
+ +
+
+
+ +
client.portals.delete(id) -> void +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.portals.delete("id"); +``` + +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `Management.PortalId` + +
+
+ +
+
+ +**requestOptions:** `PortalsClient.RequestOptions` + +
+
+
+
+ +
+
+
+ +
client.portals.update(id, { ...params }) -> Management.Portal +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.portals.update("id"); +``` + +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `Management.PortalId` + +
+
+ +
+
+ +**request:** `Management.UpdatePortalRequestContent` + +
+
+ +
+
+ +**requestOptions:** `PortalsClient.RequestOptions` + +
+
+
+
+ +
+
+
+ ## Prompts
client.prompts.getSettings() -> Management.GetSettingsResponseContent @@ -13297,7 +13549,7 @@ await client.users.update("id");
-Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered. +Retrieve all consent signing keys registered for a user. Returns an empty `keys` array when the user has no keys registered.
@@ -19035,7 +19287,7 @@ await client.connections.clients.update("id", [
-Gets the connection keys for the Okta or OIDC connection strategy. +Gets the connection keys for the Okta, OIDC, or SAML (samlp) connection strategy.
@@ -19098,7 +19350,7 @@ await client.connections.keys.get("id");
-Provision initial connection keys for Okta or OIDC connection strategies. This endpoint allows you to create keys before configuring the connection to use Private Key JWT authentication, enabling zero-downtime transitions. +Provision initial connection keys for Okta, OIDC, or SAML (samlp) connection strategies. This endpoint allows you to create keys before configuring the connection to use Private Key JWT authentication, enabling zero-downtime transitions.
@@ -19169,7 +19421,7 @@ await client.connections.keys.create("id");
-Rotates the connection keys for the Okta or OIDC connection strategies. +Rotates the connection keys for the Okta, OIDC, or SAML (samlp) connection strategies.
diff --git a/src/management/Client.ts b/src/management/Client.ts index a213300dab..8872f83701 100644 --- a/src/management/Client.ts +++ b/src/management/Client.ts @@ -28,6 +28,7 @@ import { LogsClient } from "./api/resources/logs/client/Client.js"; import { LogStreamsClient } from "./api/resources/logStreams/client/Client.js"; import { NetworkAclsClient } from "./api/resources/networkAcls/client/Client.js"; import { OrganizationsClient } from "./api/resources/organizations/client/Client.js"; +import { PortalsClient } from "./api/resources/portals/client/Client.js"; import { PromptsClient } from "./api/resources/prompts/client/Client.js"; import { RateLimitPoliciesClient } from "./api/resources/rateLimitPolicies/client/Client.js"; import { RefreshTokensClient } from "./api/resources/refreshTokens/client/Client.js"; @@ -85,6 +86,7 @@ export class ManagementClient { protected _logs: LogsClient | undefined; protected _networkAcls: NetworkAclsClient | undefined; protected _organizations: OrganizationsClient | undefined; + protected _portals: PortalsClient | undefined; protected _prompts: PromptsClient | undefined; protected _rateLimitPolicies: RateLimitPoliciesClient | undefined; protected _refreshTokens: RefreshTokensClient | undefined; @@ -210,6 +212,10 @@ export class ManagementClient { return (this._organizations ??= new OrganizationsClient(this._options)); } + public get portals(): PortalsClient { + return (this._portals ??= new PortalsClient(this._options)); + } + public get prompts(): PromptsClient { return (this._prompts ??= new PromptsClient(this._options)); } diff --git a/src/management/api/requests/requests.ts b/src/management/api/requests/requests.ts index 693f8fb646..9b9e76aeb6 100644 --- a/src/management/api/requests/requests.ts +++ b/src/management/api/requests/requests.ts @@ -312,6 +312,7 @@ export interface UpdateClientProfileRequestContent { * is_first_party: true, * app_type: "app_type", * external_client_id: "external_client_id", + * agent_id: "agent_id", * q: "q" * } */ @@ -334,6 +335,8 @@ export interface ListClientsRequestParameters { app_type?: string | null; /** Optional filter by the Client ID Metadata Document URI for CIMD-registered clients. */ external_client_id?: string | null; + /** Optional filter by the agent associated with the client.
Additional Restrictions:
  • Cannot be used in combination with other filters
  • Only fields, include_fields, page, per_page, and include_totals are supported alongside it
  • Checkpoint pagination (from, take) is not supported
*/ + agent_id?: string | null; /** Advanced Query in Lucene syntax.
Permitted Queries:
  • client_grant.organization_id:{organization_id}
  • client_grant.allow_any_organization:true
Additional Restrictions:
  • Cannot be used in combination with other filters
  • Requires use of the from and take paging parameters (checkpoint paginatinon)
  • Reduced rate limits apply. See Rate Limit Configurations
Note: Recent updates may not be immediately reflected in query results */ q?: string | null; } @@ -437,6 +440,8 @@ export interface CreateClientRequestContent { b2b_integration_configuration?: Management.B2BIntegrationConfiguration; my_organization_configuration?: Management.ClientMyOrganizationPostConfiguration; async_approval_notification_channels?: Management.ClientAsyncApprovalNotificationsChannelsApiPostConfiguration; + /** ID of the agent to associate with this client. */ + agent_id?: string | null; oidc_support?: Management.ClientOidcSupportPost; } @@ -606,6 +611,8 @@ export interface UpdateClientRequestContent { | null; third_party_security_mode?: Management.ClientThirdPartySecurityModeEnum; redirection_policy?: Management.ClientRedirectionPolicyEnum; + /** ID of the agent to associate with this client, or null to remove the association. */ + agent_id?: string | null; oidc_support?: Management.ClientOidcSupportPatch | null; } @@ -1490,6 +1497,40 @@ export interface UpdateOrganizationRequestContent { is_app_entitlement_active?: boolean; } +/** + * @example + * { + * slug: "slug", + * name: "name", + * client: { + * token_endpoint_auth_method: "client_secret_post", + * client_id: "client_id", + * client_secret: "client_secret" + * } + * } + */ +export interface CreatePortalRequestContent { + slug: Management.PortalSlug; + name: Management.PortalName; + client: Management.PortalClientSecretPostRequest; + navigation?: Management.PortalNavigation; + pages?: Management.PortalPagesByType; + custom_code?: Management.PortalCustomCode; +} + +/** + * @example + * {} + */ +export interface UpdatePortalRequestContent { + slug?: Management.PortalSlug; + name?: Management.PortalName; + client?: Management.PortalClientSecretPostRequest; + navigation?: (Management.PortalNavigationNullable | undefined) | null; + pages?: (Management.PortalPagesByTypeNullable | undefined) | null; + custom_code?: (Management.PortalCustomCodeNullable | undefined) | null; +} + /** * @example * {} @@ -1669,6 +1710,7 @@ export interface CreateResourceServerRequestContent { proof_of_possession?: Management.ResourceServerProofOfPossession | null; subject_type_authorization?: Management.ResourceServerSubjectTypeAuthorization; authorization_policy?: Management.ResourceServerAuthorizationPolicy | null; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsSchemaEnum; type?: Management.ResourceServerTypeEnum | null; } @@ -1748,6 +1790,7 @@ export interface UpdateResourceServerRequestContent { proof_of_possession?: Management.ResourceServerProofOfPossession | null; subject_type_authorization?: Management.ResourceServerSubjectTypeAuthorization; authorization_policy?: Management.ResourceServerAuthorizationPolicy | null; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsSchemaEnum; type?: Management.ResourceServerTypeEnum | null; } diff --git a/src/management/api/resources/clients/client/Client.ts b/src/management/api/resources/clients/client/Client.ts index a833b70eed..668a215305 100644 --- a/src/management/api/resources/clients/client/Client.ts +++ b/src/management/api/resources/clients/client/Client.ts @@ -83,6 +83,7 @@ export class ClientsClient { * is_first_party: true, * app_type: "app_type", * external_client_id: "external_client_id", + * agent_id: "agent_id", * q: "q" * }) */ @@ -104,6 +105,7 @@ export class ClientsClient { is_first_party: isFirstParty, app_type: appType, external_client_id: externalClientId, + agent_id: agentId, q, } = request; const _queryParams: Record = { @@ -116,6 +118,7 @@ export class ClientsClient { is_first_party: isFirstParty, app_type: appType, external_client_id: externalClientId, + agent_id: agentId, q, }; const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); diff --git a/src/management/api/resources/connections/resources/keys/client/Client.ts b/src/management/api/resources/connections/resources/keys/client/Client.ts index dd098919c0..2709dc3366 100644 --- a/src/management/api/resources/connections/resources/keys/client/Client.ts +++ b/src/management/api/resources/connections/resources/keys/client/Client.ts @@ -24,7 +24,7 @@ export class KeysClient { } /** - * Gets the connection keys for the Okta or OIDC connection strategy. + * Gets the connection keys for the Okta, OIDC, or SAML (samlp) connection strategy. * * @param {string} id - ID of the connection * @param {KeysClient.RequestOptions} requestOptions - Request-specific configuration. @@ -102,7 +102,7 @@ export class KeysClient { } /** - * Provision initial connection keys for Okta or OIDC connection strategies. This endpoint allows you to create keys before configuring the connection to use Private Key JWT authentication, enabling zero-downtime transitions. + * Provision initial connection keys for Okta, OIDC, or SAML (samlp) connection strategies. This endpoint allows you to create keys before configuring the connection to use Private Key JWT authentication, enabling zero-downtime transitions. * * @param {string} id - ID of the connection * @param {Management.PostConnectionKeysRequestContent | null} request @@ -192,7 +192,7 @@ export class KeysClient { } /** - * Rotates the connection keys for the Okta or OIDC connection strategies. + * Rotates the connection keys for the Okta, OIDC, or SAML (samlp) connection strategies. * * @param {string} id - ID of the connection * @param {Management.RotateConnectionKeysRequestContent | null} request diff --git a/src/management/api/resources/index.ts b/src/management/api/resources/index.ts index 51527c304a..ee1686711d 100644 --- a/src/management/api/resources/index.ts +++ b/src/management/api/resources/index.ts @@ -27,6 +27,7 @@ export * as logs from "./logs/index.js"; export * as logStreams from "./logStreams/index.js"; export * as networkAcls from "./networkAcls/index.js"; export * as organizations from "./organizations/index.js"; +export * as portals from "./portals/index.js"; export * as prompts from "./prompts/index.js"; export * as rateLimitPolicies from "./rateLimitPolicies/index.js"; export * as refreshTokens from "./refreshTokens/index.js"; diff --git a/src/management/api/resources/portals/client/Client.ts b/src/management/api/resources/portals/client/Client.ts new file mode 100644 index 0000000000..9e5d13d836 --- /dev/null +++ b/src/management/api/resources/portals/client/Client.ts @@ -0,0 +1,440 @@ +// This file was auto-generated by Fern from our API Definition. + +import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js"; +import { normalizeClientOptionsWithAuth, type NormalizedClientOptionsWithAuth } from "../../../../BaseClient.js"; +import * as core from "../../../../core/index.js"; +import { mergeHeaders } from "../../../../core/headers.js"; +import { mergeAdditionalBodyParameters } from "../../../../core/requestBody.js"; +import * as environments from "../../../../environments.js"; +import { handleNonStatusCodeError } from "../../../../errors/handleNonStatusCodeError.js"; +import * as errors from "../../../../errors/index.js"; +import * as Management from "../../../index.js"; + +export declare namespace PortalsClient { + export type Options = BaseClientOptions; + + export interface RequestOptions extends BaseRequestOptions {} +} + +export class PortalsClient { + protected readonly _options: NormalizedClientOptionsWithAuth; + + constructor(options: PortalsClient.Options) { + this._options = normalizeClientOptionsWithAuth(options); + } + + /** + * @param {PortalsClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Management.UnauthorizedError} + * @throws {@link Management.ForbiddenError} + * @throws {@link Management.NotFoundError} + * @throws {@link Management.TooManyRequestsError} + * @throws {@link Management.InternalServerError} + * @throws {@link errors.ManagementError} + * @throws {@link errors.ManagementTimeoutError} + * + * @example + * await client.portals.list() + */ + public list( + requestOptions?: PortalsClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__list(requestOptions)); + } + + private async __list( + requestOptions?: PortalsClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + let _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + requestOptions?.headers, + ); + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.ManagementEnvironment.Default, + "portals", + ), + method: "GET", + headers: _headers, + queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), + timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, + maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, + abortSignal: requestOptions?.abortSignal, + fetchFn: this._options?.fetch, + logging: this._options.logging, + }); + if (_response.ok) { + return { + data: _response.body as Management.ListPortalsResponseContent, + rawResponse: _response.rawResponse, + }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 401: + throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Management.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); + case 500: + throw new Management.InternalServerError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.ManagementError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/portals"); + } + + /** + * @param {Management.CreatePortalRequestContent} request + * @param {PortalsClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Management.BadRequestError} + * @throws {@link Management.UnauthorizedError} + * @throws {@link Management.ForbiddenError} + * @throws {@link Management.NotFoundError} + * @throws {@link Management.ConflictError} + * @throws {@link Management.TooManyRequestsError} + * @throws {@link Management.InternalServerError} + * @throws {@link errors.ManagementError} + * @throws {@link errors.ManagementTimeoutError} + * + * @example + * await client.portals.create({ + * slug: "slug", + * name: "name", + * client: { + * token_endpoint_auth_method: "client_secret_post", + * client_id: "client_id", + * client_secret: "client_secret" + * } + * }) + */ + public create( + request: Management.CreatePortalRequestContent, + requestOptions?: PortalsClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__create(request, requestOptions)); + } + + private async __create( + request: Management.CreatePortalRequestContent, + requestOptions?: PortalsClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + let _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + requestOptions?.headers, + ); + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.ManagementEnvironment.Default, + "portals", + ), + method: "POST", + headers: _headers, + contentType: "application/json", + queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), + requestType: "json", + body: mergeAdditionalBodyParameters(request, requestOptions?.additionalBodyParameters), + timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, + maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, + abortSignal: requestOptions?.abortSignal, + fetchFn: this._options?.fetch, + logging: this._options.logging, + }); + if (_response.ok) { + return { data: _response.body as Management.Portal, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Management.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 401: + throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Management.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 409: + throw new Management.ConflictError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); + case 500: + throw new Management.InternalServerError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.ManagementError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "POST", "/portals"); + } + + /** + * @param {Management.PortalId} id + * @param {PortalsClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Management.BadRequestError} + * @throws {@link Management.UnauthorizedError} + * @throws {@link Management.ForbiddenError} + * @throws {@link Management.NotFoundError} + * @throws {@link Management.TooManyRequestsError} + * @throws {@link Management.InternalServerError} + * @throws {@link errors.ManagementError} + * @throws {@link errors.ManagementTimeoutError} + * + * @example + * await client.portals.get("id") + */ + public get( + id: Management.PortalId, + requestOptions?: PortalsClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__get(id, requestOptions)); + } + + private async __get( + id: Management.PortalId, + requestOptions?: PortalsClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + let _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + requestOptions?.headers, + ); + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.ManagementEnvironment.Default, + `portals/${core.url.encodePathParam(id, errors.ManagementError)}`, + ), + method: "GET", + headers: _headers, + queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), + timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, + maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, + abortSignal: requestOptions?.abortSignal, + fetchFn: this._options?.fetch, + logging: this._options.logging, + }); + if (_response.ok) { + return { data: _response.body as Management.Portal, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Management.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 401: + throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Management.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); + case 500: + throw new Management.InternalServerError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.ManagementError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/portals/{id}"); + } + + /** + * @param {Management.PortalId} id + * @param {PortalsClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Management.BadRequestError} + * @throws {@link Management.UnauthorizedError} + * @throws {@link Management.ForbiddenError} + * @throws {@link Management.NotFoundError} + * @throws {@link Management.TooManyRequestsError} + * @throws {@link Management.InternalServerError} + * @throws {@link errors.ManagementError} + * @throws {@link errors.ManagementTimeoutError} + * + * @example + * await client.portals.delete("id") + */ + public delete( + id: Management.PortalId, + requestOptions?: PortalsClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__delete(id, requestOptions)); + } + + private async __delete( + id: Management.PortalId, + requestOptions?: PortalsClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + let _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + requestOptions?.headers, + ); + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.ManagementEnvironment.Default, + `portals/${core.url.encodePathParam(id, errors.ManagementError)}`, + ), + method: "DELETE", + headers: _headers, + queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), + timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, + maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, + abortSignal: requestOptions?.abortSignal, + fetchFn: this._options?.fetch, + logging: this._options.logging, + }); + if (_response.ok) { + return { data: undefined, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Management.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 401: + throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Management.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); + case 500: + throw new Management.InternalServerError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.ManagementError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "DELETE", "/portals/{id}"); + } + + /** + * @param {Management.PortalId} id + * @param {Management.UpdatePortalRequestContent} request + * @param {PortalsClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Management.BadRequestError} + * @throws {@link Management.UnauthorizedError} + * @throws {@link Management.ForbiddenError} + * @throws {@link Management.NotFoundError} + * @throws {@link Management.ConflictError} + * @throws {@link Management.TooManyRequestsError} + * @throws {@link Management.InternalServerError} + * @throws {@link errors.ManagementError} + * @throws {@link errors.ManagementTimeoutError} + * + * @example + * await client.portals.update("id") + */ + public update( + id: Management.PortalId, + request: Management.UpdatePortalRequestContent = {}, + requestOptions?: PortalsClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__update(id, request, requestOptions)); + } + + private async __update( + id: Management.PortalId, + request: Management.UpdatePortalRequestContent = {}, + requestOptions?: PortalsClient.RequestOptions, + ): Promise> { + const _authRequest: core.AuthRequest = await this._options.authProvider.getAuthRequest(); + let _headers: core.Fetcher.Args["headers"] = mergeHeaders( + _authRequest.headers, + this._options?.headers, + requestOptions?.headers, + ); + const _response = await (this._options.fetcher ?? core.fetcher)({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.ManagementEnvironment.Default, + `portals/${core.url.encodePathParam(id, errors.ManagementError)}`, + ), + method: "PATCH", + headers: _headers, + contentType: "application/json", + queryString: core.url.queryBuilder().mergeAdditional(requestOptions?.queryParams).build(), + requestType: "json", + body: mergeAdditionalBodyParameters(request, requestOptions?.additionalBodyParameters), + timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, + maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, + abortSignal: requestOptions?.abortSignal, + fetchFn: this._options?.fetch, + logging: this._options.logging, + }); + if (_response.ok) { + return { data: _response.body as Management.Portal, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Management.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 401: + throw new Management.UnauthorizedError(_response.error.body as unknown, _response.rawResponse); + case 403: + throw new Management.ForbiddenError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Management.NotFoundError(_response.error.body as unknown, _response.rawResponse); + case 409: + throw new Management.ConflictError(_response.error.body as unknown, _response.rawResponse); + case 429: + throw new Management.TooManyRequestsError(_response.error.body as unknown, _response.rawResponse); + case 500: + throw new Management.InternalServerError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.ManagementError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + return handleNonStatusCodeError(_response.error, _response.rawResponse, "PATCH", "/portals/{id}"); + } +} diff --git a/src/management/api/resources/portals/client/index.ts b/src/management/api/resources/portals/client/index.ts new file mode 100644 index 0000000000..cb0ff5c3b5 --- /dev/null +++ b/src/management/api/resources/portals/client/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/src/management/api/resources/portals/exports.ts b/src/management/api/resources/portals/exports.ts new file mode 100644 index 0000000000..7001430697 --- /dev/null +++ b/src/management/api/resources/portals/exports.ts @@ -0,0 +1,4 @@ +// This file was auto-generated by Fern from our API Definition. + +export { PortalsClient } from "./client/Client.js"; +export * from "./client/index.js"; diff --git a/src/management/api/resources/portals/index.ts b/src/management/api/resources/portals/index.ts new file mode 100644 index 0000000000..914b8c3c72 --- /dev/null +++ b/src/management/api/resources/portals/index.ts @@ -0,0 +1 @@ +export * from "./client/index.js"; diff --git a/src/management/api/resources/users/client/Client.ts b/src/management/api/resources/users/client/Client.ts index 1807c89bf4..778ada087b 100644 --- a/src/management/api/resources/users/client/Client.ts +++ b/src/management/api/resources/users/client/Client.ts @@ -802,7 +802,7 @@ export class UsersClient { } /** - * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered. + * Retrieve all consent signing keys registered for a user. Returns an empty `keys` array when the user has no keys registered. * * @param {string} id - The ID of the user. * @param {UsersClient.RequestOptions} requestOptions - Request-specific configuration. diff --git a/src/management/api/types/types.ts b/src/management/api/types/types.ts index c6f2ec5bab..22d4cf5f3a 100644 --- a/src/management/api/types/types.ts +++ b/src/management/api/types/types.ts @@ -759,6 +759,18 @@ export const OauthScope = { /** * Delete Organization Client Associations */ DeleteOrganizationClients: "delete:organization_clients", + /** + * Create Universal Portals */ + CreatePortals: "create:portals", + /** + * Read Universal Portals */ + ReadPortals: "read:portals", + /** + * Update Universal Portals */ + UpdatePortals: "update:portals", + /** + * Delete Universal Portals */ + DeletePortals: "delete:portals", /** * Create Network ACL Keys */ CreateNetworkAclKeys: "create:network_acl_keys", @@ -797,6 +809,19 @@ export namespace TooManyRequestsErrorBody { export type Error_ = (typeof Error_)[keyof typeof Error_]; } +export interface InternalServerErrorBody { + message: string; + statusCode: string; + error: InternalServerErrorBody.Error_; +} + +export namespace InternalServerErrorBody { + export const Error_ = { + InternalServerError: "Internal Server Error", + } as const; + export type Error_ = (typeof Error_)[keyof typeof Error_]; +} + export interface Action { /** The unique ID of the action. */ id?: string | undefined; @@ -2356,6 +2381,8 @@ export interface Client { external_metadata_type?: Management.ClientExternalMetadataTypeEnum | undefined; external_metadata_created_by?: Management.ClientExternalMetadataCreatedByEnum | undefined; external_metadata_status?: Management.ClientExternalMetadataStatusEnum | undefined; + /** ID of the agent associated with this client. */ + agent_id?: string | undefined; /** An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. */ external_client_id?: string | undefined; /** URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. */ @@ -3415,6 +3442,36 @@ export interface ClientProfileClientConfiguration { | Management.ClientProfileClientConfigurationOrganizationDiscoveryMethods | undefined; require_proof_of_possession?: Management.ClientProfileClientConfigurationRequireProofOfPossession | undefined; + oidc_support?: Management.ClientProfileClientConfigurationOidcSupport | undefined; +} + +/** + * Default OIDC support applied to matched clients. + */ +export interface ClientProfileClientConfigurationOidcSupport { + default_value: Management.ClientProfileClientConfigurationOidcSupportDefaultValue; +} + +/** Optional OIDC scope that matched clients may be granted. */ +export const ClientProfileClientConfigurationOidcSupportAllowedScopesEnum = { + Profile: "profile", + Email: "email", + Address: "address", + Phone: "phone", +} as const; +export type ClientProfileClientConfigurationOidcSupportAllowedScopesEnum = + (typeof ClientProfileClientConfigurationOidcSupportAllowedScopesEnum)[keyof typeof ClientProfileClientConfigurationOidcSupportAllowedScopesEnum]; + +/** + * OIDC support settings applied to matched clients. + */ +export interface ClientProfileClientConfigurationOidcSupportDefaultValue { + /** Whether matched clients may use OIDC. */ + is_allowed: boolean; + /** Whether matched clients may request all optional OIDC scopes. Cannot be combined with allowed_scopes. */ + allow_all_scopes?: boolean | undefined; + /** Optional OIDC scopes that matched clients may request. */ + allowed_scopes?: Management.ClientProfileClientConfigurationOidcSupportAllowedScopesEnum[] | undefined; } /** A method used to discover a user's organization. */ @@ -3658,6 +3715,8 @@ export interface ClientSearchResponse { external_metadata_type?: Management.ClientExternalMetadataTypeEnum | undefined; external_metadata_created_by?: Management.ClientExternalMetadataCreatedByEnum | undefined; external_metadata_status?: Management.ClientExternalMetadataStatusEnum | undefined; + /** ID of the agent associated with this client. */ + agent_id?: string | undefined; /** An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. */ external_client_id?: string | undefined; /** URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. */ @@ -6166,6 +6225,9 @@ export interface ConnectionOptionsSaml signingCert?: Management.ConnectionSigningCertSaml | undefined; signing_key?: Management.ConnectionSigningKeySaml | undefined; signOutEndpoint?: Management.ConnectionSignOutEndpointSaml | undefined; + token_endpoint_auth_method?: (Management.ConnectionTokenEndpointAuthMethodEnum | null) | undefined; + token_endpoint_auth_signing_alg?: (Management.ConnectionTokenEndpointAuthSigningAlgEnum | null) | undefined; + token_endpoint_jwtca_aud_format?: Management.ConnectionTokenEndpointJwtcaAudFormatEnumOidc | undefined; user_id_attribute?: Management.ConnectionUserIdAttributeSaml | undefined; /** Accepts any additional properties */ [key: string]: any; @@ -8372,7 +8434,7 @@ export type ConnectionTokenEndpointAuthSigningAlgEnum = */ export type ConnectionTokenEndpointAuthSigningAlgValuesSupported = string[]; -/** Specifies the format of the aud (audience) claim included in the JWT used for client authentication at the token endpoint. Accepted values are: 'issuer' (the aud claim is set to the OIDC issuer URL) or 'token_endpoint' (the aud claim is set to the token endpoint URL). */ +/** Specifies the format of the aud (audience) claim included in the JWT used for client authentication at the token endpoint. Accepted values are: 'issuer' (the aud claim is set to the identity provider's issuer URL) or 'token_endpoint' (the aud claim is set to the token endpoint URL). */ export const ConnectionTokenEndpointJwtcaAudFormatEnumOidc = { Issuer: "issuer", TokenEndpoint: "token_endpoint", @@ -8947,6 +9009,8 @@ export interface CreateClientResponseContent { external_metadata_type?: Management.ClientExternalMetadataTypeEnum | undefined; external_metadata_created_by?: Management.ClientExternalMetadataCreatedByEnum | undefined; external_metadata_status?: Management.ClientExternalMetadataStatusEnum | undefined; + /** ID of the agent associated with this client. */ + agent_id?: string | undefined; /** An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. */ external_client_id?: string | undefined; /** URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. */ @@ -10972,6 +11036,7 @@ export interface CreateResourceServerResponseContent { authorization_policy?: (Management.ResourceServerAuthorizationPolicy | null) | undefined; /** The client ID of the client that this resource server is linked to */ client_id?: string | undefined; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsResponseEnum | undefined; type?: (Management.ResourceServerTypeEnum | null) | undefined; } @@ -32992,6 +33057,8 @@ export interface GetClientResponseContent { external_metadata_type?: Management.ClientExternalMetadataTypeEnum | undefined; external_metadata_created_by?: Management.ClientExternalMetadataCreatedByEnum | undefined; external_metadata_status?: Management.ClientExternalMetadataStatusEnum | undefined; + /** ID of the agent associated with this client. */ + agent_id?: string | undefined; /** An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. */ external_client_id?: string | undefined; /** URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. */ @@ -33880,6 +33947,7 @@ export interface GetResourceServerResponseContent { authorization_policy?: (Management.ResourceServerAuthorizationPolicy | null) | undefined; /** The client ID of the client that this resource server is linked to */ client_id?: string | undefined; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsResponseEnum | undefined; type?: (Management.ResourceServerTypeEnum | null) | undefined; } @@ -35084,6 +35152,10 @@ export interface ListPhoneTemplatesResponseContent { templates?: Management.PhoneTemplate[] | undefined; } +export interface ListPortalsResponseContent { + portals: Management.PortalSummary[]; +} + export interface ListRateLimitPoliciesPaginatedResponseContent { rate_limit_policies?: Management.RateLimitPolicy[] | undefined; /** A cursor to be used as the "from" query parameter for the next page of results. */ @@ -35212,7 +35284,10 @@ export interface ListUserConnectedAccountsResponseContent { next?: string | undefined; } -export type ListUserConsentSigningKeysResponseContent = Management.ConsentSigningKey[]; +export interface ListUserConsentSigningKeysResponseContent { + /** The consent signing keys registered for the user. */ + keys: Management.ConsentSigningKey[]; +} export interface ListUserEffectivePermissionRoleSourcesResponseContent { /** Roles with the specified permission assigned to the user, both directly and via groups. */ @@ -36428,6 +36503,253 @@ export const OrganizationUsageEnum = { } as const; export type OrganizationUsageEnum = (typeof OrganizationUsageEnum)[keyof typeof OrganizationUsageEnum]; +export type PageComponent = + | Management.PageComponent.PageComponentAuth0Form + | Management.PageComponent.PageComponentAuth0TypographyHeading + | Management.PageComponent.PageComponentAuth0MediaImage + | Management.PageComponent.PageComponentAuth0TypographyRichText + | Management.PageComponent.PageComponentAuth0StructureSection + | Management.PageComponent.PageComponentAuth0StructureSeparator + | Management.PageComponent.PageComponentAuth0MyOrganizationDomainTable + | Management.PageComponent.PageComponentAuth0MyOrganizationMemberManagement + | Management.PageComponent.PageComponentAuth0MyOrganizationDetailsEdit + | Management.PageComponent.PageComponentAuth0MyAccountPasskeyManagement + | Management.PageComponent.PageComponentAuth0MyAccountMfaManagement; + +export namespace PageComponent { + export interface PageComponentAuth0Form extends Management.PageComponentAuth0Form { + type: "page:component:auth0:form"; + } + + export interface PageComponentAuth0TypographyHeading extends Management.PageComponentAuth0TypographyHeading { + type: "page:component:auth0:typography:heading"; + } + + export interface PageComponentAuth0MediaImage extends Management.PageComponentAuth0MediaImage { + type: "page:component:auth0:media:image"; + } + + export interface PageComponentAuth0TypographyRichText extends Management.PageComponentAuth0TypographyRichText { + type: "page:component:auth0:typography:rich_text"; + } + + export interface PageComponentAuth0StructureSection extends Management.PageComponentAuth0StructureSection { + type: "page:component:auth0:structure:section"; + } + + export interface PageComponentAuth0StructureSeparator extends Management.PageComponentAuth0StructureSeparator { + type: "page:component:auth0:structure:separator"; + } + + export interface PageComponentAuth0MyOrganizationDomainTable + extends Management.PageComponentAuth0MyOrganizationDomainTable { + type: "page:component:auth0:my_organization:domain_table"; + } + + export interface PageComponentAuth0MyOrganizationMemberManagement + extends Management.PageComponentAuth0MyOrganizationMemberManagement { + type: "page:component:auth0:my_organization:member_management"; + } + + export interface PageComponentAuth0MyOrganizationDetailsEdit + extends Management.PageComponentAuth0MyOrganizationDetailsEdit { + type: "page:component:auth0:my_organization:details_edit"; + } + + export interface PageComponentAuth0MyAccountPasskeyManagement + extends Management.PageComponentAuth0MyAccountPasskeyManagement { + type: "page:component:auth0:my_account:passkey_management"; + } + + export interface PageComponentAuth0MyAccountMfaManagement + extends Management.PageComponentAuth0MyAccountMfaManagement { + type: "page:component:auth0:my_account:mfa_management"; + } +} + +export interface PageComponentAuth0Form { + config: Management.PageComponentAuth0FormConfig; +} + +export interface PageComponentAuth0FormConfig { + /** The identifier of the form you want to render. */ + form_id: string; + /** Toast message displayed after successful form submission. */ + completion_message: string; +} + +export interface PageComponentAuth0MediaImage { + config: Management.PageComponentAuth0MediaImageConfig; +} + +export interface PageComponentAuth0MediaImageConfig { + /** URL of the image to display. */ + src: string; + position?: Management.Position | undefined; + /** Height of the image in pixels. Width scales automatically to preserve aspect ratio. */ + height?: number | undefined; +} + +/** Horizontal alignment of the image within its container. */ +export const Position = { + Left: "left", + Center: "center", + Right: "right", +} as const; +export type Position = (typeof Position)[keyof typeof Position]; + +export interface PageComponentAuth0MyAccountMfaManagement { + config?: Management.PageComponentAuth0MyAccountMfaManagementConfig | undefined; +} + +export interface PageComponentAuth0MyAccountMfaManagementConfig {} + +export interface PageComponentAuth0MyAccountPasskeyManagement { + config?: Management.PageComponentAuth0MyAccountPasskeyManagementConfig | undefined; +} + +export interface PageComponentAuth0MyAccountPasskeyManagementConfig {} + +export interface PageComponentAuth0MyOrganizationDetailsEdit { + config?: Management.PageComponentAuth0MyOrganizationDetailsEditConfig | undefined; +} + +export interface PageComponentAuth0MyOrganizationDetailsEditConfig {} + +export interface PageComponentAuth0MyOrganizationDomainTable { + config?: Management.PageComponentAuth0MyOrganizationDomainTableConfig | undefined; +} + +export interface PageComponentAuth0MyOrganizationDomainTableConfig {} + +export interface PageComponentAuth0MyOrganizationMemberManagement { + config?: Management.PageComponentAuth0MyOrganizationMemberManagementConfig | undefined; +} + +export interface PageComponentAuth0MyOrganizationMemberManagementConfig {} + +export interface PageComponentAuth0StructureSection { + config: Management.PageComponentAuth0StructureSectionConfig; +} + +export interface PageComponentAuth0StructureSectionConfig { + /** Heading displayed at the top of the section. */ + title?: string | undefined; + /** Optional description displayed below the title. */ + description?: string | undefined; + variant: Management.PageComponentAuth0StructureSectionVariantEnum; + /** Components to render inside the section. */ + children: Management.PageComponentNoChildren[]; +} + +/** Controls the section container style. */ +export const PageComponentAuth0StructureSectionVariantEnum = { + Card: "card", + None: "none", +} as const; +export type PageComponentAuth0StructureSectionVariantEnum = + (typeof PageComponentAuth0StructureSectionVariantEnum)[keyof typeof PageComponentAuth0StructureSectionVariantEnum]; + +export interface PageComponentAuth0StructureSeparator { + config?: Management.PageComponentAuth0StructureSeparatorConfig | undefined; +} + +export interface PageComponentAuth0StructureSeparatorConfig { + variant?: Management.PageComponentAuth0StructureSeparatorVariantEnum | undefined; + /** Optional label centered within the separator line (ignored when variant is "none"). */ + text?: string | undefined; +} + +/** Controls the line style. Defaults to "solid". */ +export const PageComponentAuth0StructureSeparatorVariantEnum = { + Dashed: "dashed", + None: "none", + Solid: "solid", +} as const; +export type PageComponentAuth0StructureSeparatorVariantEnum = + (typeof PageComponentAuth0StructureSeparatorVariantEnum)[keyof typeof PageComponentAuth0StructureSeparatorVariantEnum]; + +export interface PageComponentAuth0TypographyHeading { + config: Management.PageComponentAuth0TypographyHeadingConfig; +} + +export interface PageComponentAuth0TypographyHeadingConfig { + /** Heading displayed. */ + title: string; + /** Optional description displayed below the title. Supports basic HTML formatting: links, bold, italic, and underline. */ + description?: string | undefined; +} + +export interface PageComponentAuth0TypographyRichText { + config: Management.PageComponentAuth0TypographyRichTextConfig; +} + +export interface PageComponentAuth0TypographyRichTextConfig { + /** HTML content to render. Supports headings, bold, italic, underline, links, text alignment, and lists. */ + content: string; +} + +export type PageComponentNoChildren = + | Management.PageComponentNoChildren.PageComponentAuth0Form + | Management.PageComponentNoChildren.PageComponentAuth0TypographyHeading + | Management.PageComponentNoChildren.PageComponentAuth0MediaImage + | Management.PageComponentNoChildren.PageComponentAuth0TypographyRichText + | Management.PageComponentNoChildren.PageComponentAuth0StructureSeparator + | Management.PageComponentNoChildren.PageComponentAuth0MyOrganizationDomainTable + | Management.PageComponentNoChildren.PageComponentAuth0MyOrganizationMemberManagement + | Management.PageComponentNoChildren.PageComponentAuth0MyOrganizationDetailsEdit + | Management.PageComponentNoChildren.PageComponentAuth0MyAccountPasskeyManagement + | Management.PageComponentNoChildren.PageComponentAuth0MyAccountMfaManagement; + +export namespace PageComponentNoChildren { + export interface PageComponentAuth0Form extends Management.PageComponentAuth0Form { + type: "page:component:auth0:form"; + } + + export interface PageComponentAuth0TypographyHeading extends Management.PageComponentAuth0TypographyHeading { + type: "page:component:auth0:typography:heading"; + } + + export interface PageComponentAuth0MediaImage extends Management.PageComponentAuth0MediaImage { + type: "page:component:auth0:media:image"; + } + + export interface PageComponentAuth0TypographyRichText extends Management.PageComponentAuth0TypographyRichText { + type: "page:component:auth0:typography:rich_text"; + } + + export interface PageComponentAuth0StructureSeparator extends Management.PageComponentAuth0StructureSeparator { + type: "page:component:auth0:structure:separator"; + } + + export interface PageComponentAuth0MyOrganizationDomainTable + extends Management.PageComponentAuth0MyOrganizationDomainTable { + type: "page:component:auth0:my_organization:domain_table"; + } + + export interface PageComponentAuth0MyOrganizationMemberManagement + extends Management.PageComponentAuth0MyOrganizationMemberManagement { + type: "page:component:auth0:my_organization:member_management"; + } + + export interface PageComponentAuth0MyOrganizationDetailsEdit + extends Management.PageComponentAuth0MyOrganizationDetailsEdit { + type: "page:component:auth0:my_organization:details_edit"; + } + + export interface PageComponentAuth0MyAccountPasskeyManagement + extends Management.PageComponentAuth0MyAccountPasskeyManagement { + type: "page:component:auth0:my_account:passkey_management"; + } + + export interface PageComponentAuth0MyAccountMfaManagement + extends Management.PageComponentAuth0MyAccountMfaManagement { + type: "page:component:auth0:my_account:mfa_management"; + } +} + +export type PageSlug = string; + /** Name of the prompt. */ export const PartialGroupsEnum = { Login: "login", @@ -36672,6 +36994,85 @@ export const PhoneTemplateNotificationTypeEnum = { export type PhoneTemplateNotificationTypeEnum = (typeof PhoneTemplateNotificationTypeEnum)[keyof typeof PhoneTemplateNotificationTypeEnum]; +export interface Portal { + id: Management.PortalId; + name: Management.PortalName; + navigation?: Management.PortalNavigation | undefined; + pages?: Management.PortalPagesByType | undefined; + slug: Management.PortalSlug; + client?: Management.PortalClientSecretPost | undefined; + custom_code?: Management.PortalCustomCode | undefined; + created_at: Management.PortalDateTime; + updated_at: Management.PortalDateTime; +} + +export interface PortalClientSecretPost { + token_endpoint_auth_method: PortalClientSecretPost.TokenEndpointAuthMethod; + client_id: string; +} + +export namespace PortalClientSecretPost { + export const TokenEndpointAuthMethod = { + ClientSecretPost: "client_secret_post", + } as const; + export type TokenEndpointAuthMethod = (typeof TokenEndpointAuthMethod)[keyof typeof TokenEndpointAuthMethod]; +} + +export interface PortalClientSecretPostRequest { + token_endpoint_auth_method: PortalClientSecretPostRequest.TokenEndpointAuthMethod; + client_id: string; + client_secret: string; +} + +export namespace PortalClientSecretPostRequest { + export const TokenEndpointAuthMethod = { + ClientSecretPost: "client_secret_post", + } as const; + export type TokenEndpointAuthMethod = (typeof TokenEndpointAuthMethod)[keyof typeof TokenEndpointAuthMethod]; +} + +export interface PortalCustomCode { + /** Custom code injected into the of the portal. Only injected when the portal is accessed via a custom domain; it is not injected on canonical domains. */ + head?: string | undefined; +} + +export type PortalCustomCodeNullable = (Management.PortalCustomCode | null) | undefined; + +export type PortalDateTime = string; + +export type PortalId = string; + +export type PortalName = string; + +export interface PortalNavigation { + sidebar?: Management.Sidebar | undefined; +} + +export type PortalNavigationNullable = (Management.PortalNavigation | null) | undefined; + +export interface PortalPage { + title: string; + slug: Management.PageSlug; + components?: Management.PageComponent[] | undefined; +} + +export interface PortalPagesByType { + default?: Management.PageSlug | undefined; + standard?: Management.PortalPage[] | undefined; +} + +export type PortalPagesByTypeNullable = (Management.PortalPagesByType | null) | undefined; + +export type PortalSlug = string; + +export interface PortalSummary { + id: Management.PortalId; + name: Management.PortalName; + slug: Management.PortalSlug; + created_at: Management.PortalDateTime; + updated_at: Management.PortalDateTime; +} + export interface PostClientCredentialResponseContent { /** ID of the credential. Generated on creation. */ id?: string | undefined; @@ -37124,6 +37525,7 @@ export interface ResourceServer { authorization_policy?: (Management.ResourceServerAuthorizationPolicy | null) | undefined; /** The client ID of the client that this resource server is linked to */ client_id?: string | undefined; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsResponseEnum | undefined; type?: (Management.ResourceServerTypeEnum | null) | undefined; } @@ -37154,6 +37556,22 @@ export interface ResourceServerAccessTokenCustomClaimsMappingRule { expression: string; } +/** Controls whether access tokens issued for this API include agent subject claims. With auth0-v1, access tokens include additional claims that identify whether the subject is a user, service, or ai_agent. The sub claim can reference an agent ID, and the @clients suffix is no longer appended to client IDs. With off, these claims are not included and the @clients suffix is still appended. When not set, the API behaves as off. */ +export const ResourceServerAgentSubjectClaimsResponseEnum = { + Off: "off", + Auth0V1: "auth0-v1", +} as const; +export type ResourceServerAgentSubjectClaimsResponseEnum = + (typeof ResourceServerAgentSubjectClaimsResponseEnum)[keyof typeof ResourceServerAgentSubjectClaimsResponseEnum]; + +/** Controls whether access tokens issued for this API include agent subject claims. With auth0-v1, access tokens include additional claims that identify whether the subject is a user, service, or ai_agent. The sub claim can reference an agent ID, and the @clients suffix is no longer appended to client IDs. With off, these claims are not included and the @clients suffix is still appended. When not set, the API behaves as off. */ +export const ResourceServerAgentSubjectClaimsSchemaEnum = { + Off: "off", + Auth0V1: "auth0-v1", +} as const; +export type ResourceServerAgentSubjectClaimsSchemaEnum = + (typeof ResourceServerAgentSubjectClaimsSchemaEnum)[keyof typeof ResourceServerAgentSubjectClaimsSchemaEnum]; + /** * Authorization policy for the resource server. */ @@ -37241,6 +37659,7 @@ export interface ResourceServerSearchResponse { authorization_policy?: (Management.ResourceServerAuthorizationPolicy | null) | undefined; /** The client ID of the client that this resource server is linked to */ client_id?: string | undefined; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsResponseEnum | undefined; type?: (Management.ResourceServerTypeEnum | null) | undefined; } @@ -37595,6 +38014,8 @@ export interface RotateClientSecretResponseContent { external_metadata_type?: Management.ClientExternalMetadataTypeEnum | undefined; external_metadata_created_by?: Management.ClientExternalMetadataCreatedByEnum | undefined; external_metadata_status?: Management.ClientExternalMetadataStatusEnum | undefined; + /** ID of the agent associated with this client. */ + agent_id?: string | undefined; /** An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. */ external_client_id?: string | undefined; /** URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. */ @@ -38535,6 +38956,92 @@ export type SetUserAuthenticationMethodsRequestContent = Management.SetUserAuthe */ export type SetsCustomTextsByLanguageRequestContent = Record; +export interface Sidebar { + components?: Management.SidebarComponent[] | undefined; +} + +export type SidebarComponent = + | Management.SidebarComponent.SidebarComponentAuth0ExternalLink + | Management.SidebarComponent.SidebarComponentAuth0InternalLink + | Management.SidebarComponent.SidebarComponentAuth0ExternalLinkV2 + | Management.SidebarComponent.SidebarComponentAuth0InternalLinkV2; + +export namespace SidebarComponent { + export interface SidebarComponentAuth0ExternalLink extends Management.SidebarComponentAuth0ExternalLink { + type: "sidebar:component:auth0:external_link"; + } + + export interface SidebarComponentAuth0InternalLink extends Management.SidebarComponentAuth0InternalLink { + type: "sidebar:component:auth0:internal_link"; + } + + export interface SidebarComponentAuth0ExternalLinkV2 extends Management.SidebarComponentAuth0ExternalLinkV2 { + type: "sidebar:component:auth0:external_link:v2"; + } + + export interface SidebarComponentAuth0InternalLinkV2 extends Management.SidebarComponentAuth0InternalLinkV2 { + type: "sidebar:component:auth0:internal_link:v2"; + } +} + +/** + * Deprecated. Use "sidebar:component:auth0:external_link:v2" instead. + */ +export interface SidebarComponentAuth0ExternalLink { + config: Management.SidebarComponentAuth0ExternalLinkConfig; +} + +export interface SidebarComponentAuth0ExternalLinkConfig { + /** Text shown for the link. */ + label: string; + /** External URL to navigate to. */ + url: string; + /** Name of the icon displayed next to the link label. */ + icon?: string | undefined; +} + +export interface SidebarComponentAuth0ExternalLinkV2 { + config: Management.SidebarComponentAuth0ExternalLinkV2Config; +} + +export interface SidebarComponentAuth0ExternalLinkV2Config { + /** Text shown for the link. */ + label: string; + /** External URL to navigate to. */ + href: string; + /** Name of the icon displayed next to the link label. */ + icon?: string | undefined; +} + +/** + * Deprecated. Use "sidebar:component:auth0:internal_link:v2" instead. + */ +export interface SidebarComponentAuth0InternalLink { + config: Management.SidebarComponentAuth0InternalLinkConfig; +} + +export interface SidebarComponentAuth0InternalLinkConfig { + /** Text shown for the link. */ + label: string; + /** Slug of the internal portal page to navigate to. */ + to: string; + /** Name of the icon displayed next to the link label. */ + icon?: string | undefined; +} + +export interface SidebarComponentAuth0InternalLinkV2 { + config: Management.SidebarComponentAuth0InternalLinkV2Config; +} + +export interface SidebarComponentAuth0InternalLinkV2Config { + /** Text shown for the link. */ + label: string; + /** Slug of the internal portal page to navigate to. */ + page_slug: string; + /** Name of the icon displayed next to the link label. */ + icon?: string | undefined; +} + /** Algorithm used to sign JWTs. Can be `HS256` (default) or `RS256`. `PS256` available via addon. */ export const SigningAlgorithmEnum = { Hs256: "HS256", @@ -39553,6 +40060,8 @@ export interface UpdateClientResponseContent { external_metadata_type?: Management.ClientExternalMetadataTypeEnum | undefined; external_metadata_created_by?: Management.ClientExternalMetadataCreatedByEnum | undefined; external_metadata_status?: Management.ClientExternalMetadataStatusEnum | undefined; + /** ID of the agent associated with this client. */ + agent_id?: string | undefined; /** An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. */ external_client_id?: string | undefined; /** URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. */ @@ -40547,6 +41056,7 @@ export interface UpdateResourceServerResponseContent { authorization_policy?: (Management.ResourceServerAuthorizationPolicy | null) | undefined; /** The client ID of the client that this resource server is linked to */ client_id?: string | undefined; + agent_subject_claims?: Management.ResourceServerAgentSubjectClaimsResponseEnum | undefined; type?: (Management.ResourceServerTypeEnum | null) | undefined; } diff --git a/src/management/tests/wire/clientProfiles.test.ts b/src/management/tests/wire/clientProfiles.test.ts index 183915e042..20d91659c6 100644 --- a/src/management/tests/wire/clientProfiles.test.ts +++ b/src/management/tests/wire/clientProfiles.test.ts @@ -113,6 +113,7 @@ describe("ClientProfilesClient", () => { organization_require_behavior: { default_value: "no_prompt" }, organization_discovery_methods: { default_value: ["email"] }, require_proof_of_possession: { default_value: true }, + oidc_support: { default_value: { is_allowed: true } }, }, apply_policy: { external_metadata_type: "cimd", external_metadata_created_by: "client" }, created_at: "2024-01-15T09:30:00Z", @@ -307,6 +308,7 @@ describe("ClientProfilesClient", () => { organization_require_behavior: { default_value: "no_prompt" }, organization_discovery_methods: { default_value: ["email"] }, require_proof_of_possession: { default_value: true }, + oidc_support: { default_value: { is_allowed: true } }, }, apply_policy: { external_metadata_type: "cimd", external_metadata_created_by: "client" }, created_at: "2024-01-15T09:30:00Z", @@ -519,6 +521,7 @@ describe("ClientProfilesClient", () => { organization_require_behavior: { default_value: "no_prompt" }, organization_discovery_methods: { default_value: ["email"] }, require_proof_of_possession: { default_value: true }, + oidc_support: { default_value: { is_allowed: true } }, }, apply_policy: { external_metadata_type: "cimd", external_metadata_created_by: "client" }, created_at: "2024-01-15T09:30:00Z", diff --git a/src/management/tests/wire/clients.test.ts b/src/management/tests/wire/clients.test.ts index d1250c2ad0..c36292b6ac 100644 --- a/src/management/tests/wire/clients.test.ts +++ b/src/management/tests/wire/clients.test.ts @@ -82,6 +82,7 @@ describe("ClientsClient", () => { external_metadata_type: "cimd", external_metadata_created_by: "admin", external_metadata_status: "available", + agent_id: "agent_id", external_client_id: "external_client_id", jwks_uri: "jwks_uri", }, @@ -107,6 +108,7 @@ describe("ClientsClient", () => { is_first_party: true, app_type: "app_type", external_client_id: "external_client_id", + agent_id: "agent_id", q: "q", }); @@ -392,6 +394,7 @@ describe("ClientsClient", () => { external_metadata_type: "cimd", external_metadata_created_by: "admin", external_metadata_status: "available", + agent_id: "agent_id", external_client_id: "external_client_id", jwks_uri: "jwks_uri", }; @@ -935,6 +938,7 @@ describe("ClientsClient", () => { external_metadata_type: "cimd", external_metadata_created_by: "admin", external_metadata_status: "available", + agent_id: "agent_id", external_client_id: "external_client_id", jwks_uri: "jwks_uri", }, @@ -1282,6 +1286,7 @@ describe("ClientsClient", () => { external_metadata_type: "cimd", external_metadata_created_by: "admin", external_metadata_status: "available", + agent_id: "agent_id", external_client_id: "external_client_id", jwks_uri: "jwks_uri", }; @@ -1646,6 +1651,7 @@ describe("ClientsClient", () => { external_metadata_type: "cimd", external_metadata_created_by: "admin", external_metadata_status: "available", + agent_id: "agent_id", external_client_id: "external_client_id", jwks_uri: "jwks_uri", }; @@ -1987,6 +1993,7 @@ describe("ClientsClient", () => { external_metadata_type: "cimd", external_metadata_created_by: "admin", external_metadata_status: "available", + agent_id: "agent_id", external_client_id: "external_client_id", jwks_uri: "jwks_uri", }; diff --git a/src/management/tests/wire/portals.test.ts b/src/management/tests/wire/portals.test.ts new file mode 100644 index 0000000000..85645e36df --- /dev/null +++ b/src/management/tests/wire/portals.test.ts @@ -0,0 +1,738 @@ +// This file was auto-generated by Fern from our API Definition. + +import * as Management from "../../api/index"; +import { ManagementClient } from "../../Client"; +import { mockServerPool } from "../mock-server/MockServerPool"; + +describe("PortalsClient", () => { + test("list (1)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + portals: [ + { + id: "id", + name: "name", + slug: "slug", + created_at: "2024-01-15T09:30:00Z", + updated_at: "2024-01-15T09:30:00Z", + }, + ], + }; + + server.mockEndpoint().get("/portals").respondWith().statusCode(200).jsonBody(rawResponseBody).build(); + + const response = await client.portals.list(); + expect(response).toEqual(rawResponseBody); + }); + + test("list (2)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals").respondWith().statusCode(401).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.list(); + }).rejects.toThrow(Management.UnauthorizedError); + }); + + test("list (3)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals").respondWith().statusCode(403).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.list(); + }).rejects.toThrow(Management.ForbiddenError); + }); + + test("list (4)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals").respondWith().statusCode(404).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.list(); + }).rejects.toThrow(Management.NotFoundError); + }); + + test("list (5)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals").respondWith().statusCode(429).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.list(); + }).rejects.toThrow(Management.TooManyRequestsError); + }); + + test("list (6)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals").respondWith().statusCode(500).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.list(); + }).rejects.toThrow(Management.InternalServerError); + }); + + test("create (1)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "name", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "client_secret", + }, + }; + const rawResponseBody = { + id: "id", + name: "name", + navigation: { + sidebar: { + components: [ + { type: "sidebar:component:auth0:external_link", config: { label: "label", url: "url" } }, + ], + }, + }, + pages: { default: "default", standard: [{ title: "title", slug: "slug" }] }, + slug: "slug", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id" }, + custom_code: { head: "head" }, + created_at: "2024-01-15T09:30:00Z", + updated_at: "2024-01-15T09:30:00Z", + }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.portals.create({ + slug: "slug", + name: "name", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "client_secret", + }, + }); + expect(response).toEqual(rawResponseBody); + }); + + test("create (2)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.BadRequestError); + }); + + test("create (3)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(401) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.UnauthorizedError); + }); + + test("create (4)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(403) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.ForbiddenError); + }); + + test("create (5)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.NotFoundError); + }); + + test("create (6)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.ConflictError); + }); + + test("create (7)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(429) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.TooManyRequestsError); + }); + + test("create (8)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = { + slug: "slug", + name: "x", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id", client_secret: "x" }, + }; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .post("/portals") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(500) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.create({ + slug: "slug", + name: "x", + client: { + token_endpoint_auth_method: "client_secret_post", + client_id: "client_id", + client_secret: "x", + }, + }); + }).rejects.toThrow(Management.InternalServerError); + }); + + test("get (1)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { + id: "id", + name: "name", + navigation: { + sidebar: { + components: [ + { type: "sidebar:component:auth0:external_link", config: { label: "label", url: "url" } }, + ], + }, + }, + pages: { default: "default", standard: [{ title: "title", slug: "slug" }] }, + slug: "slug", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id" }, + custom_code: { head: "head" }, + created_at: "2024-01-15T09:30:00Z", + updated_at: "2024-01-15T09:30:00Z", + }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(200).jsonBody(rawResponseBody).build(); + + const response = await client.portals.get("id"); + expect(response).toEqual(rawResponseBody); + }); + + test("get (2)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(400).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.get("id"); + }).rejects.toThrow(Management.BadRequestError); + }); + + test("get (3)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(401).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.get("id"); + }).rejects.toThrow(Management.UnauthorizedError); + }); + + test("get (4)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(403).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.get("id"); + }).rejects.toThrow(Management.ForbiddenError); + }); + + test("get (5)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(404).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.get("id"); + }).rejects.toThrow(Management.NotFoundError); + }); + + test("get (6)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(429).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.get("id"); + }).rejects.toThrow(Management.TooManyRequestsError); + }); + + test("get (7)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().get("/portals/id").respondWith().statusCode(500).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.get("id"); + }).rejects.toThrow(Management.InternalServerError); + }); + + test("delete (1)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(200).build(); + + const response = await client.portals.delete("id"); + expect(response).toEqual(undefined); + }); + + test("delete (2)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(400).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.delete("id"); + }).rejects.toThrow(Management.BadRequestError); + }); + + test("delete (3)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(401).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.delete("id"); + }).rejects.toThrow(Management.UnauthorizedError); + }); + + test("delete (4)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(403).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.delete("id"); + }).rejects.toThrow(Management.ForbiddenError); + }); + + test("delete (5)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(404).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.delete("id"); + }).rejects.toThrow(Management.NotFoundError); + }); + + test("delete (6)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(429).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.delete("id"); + }).rejects.toThrow(Management.TooManyRequestsError); + }); + + test("delete (7)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + + server.mockEndpoint().delete("/portals/id").respondWith().statusCode(500).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.portals.delete("id"); + }).rejects.toThrow(Management.InternalServerError); + }); + + test("update (1)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { + id: "id", + name: "name", + navigation: { + sidebar: { + components: [ + { type: "sidebar:component:auth0:external_link", config: { label: "label", url: "url" } }, + ], + }, + }, + pages: { default: "default", standard: [{ title: "title", slug: "slug" }] }, + slug: "slug", + client: { token_endpoint_auth_method: "client_secret_post", client_id: "client_id" }, + custom_code: { head: "head" }, + created_at: "2024-01-15T09:30:00Z", + updated_at: "2024-01-15T09:30:00Z", + }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.portals.update("id"); + expect(response).toEqual(rawResponseBody); + }); + + test("update (2)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.BadRequestError); + }); + + test("update (3)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(401) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.UnauthorizedError); + }); + + test("update (4)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(403) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.ForbiddenError); + }); + + test("update (5)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.NotFoundError); + }); + + test("update (6)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(409) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.ConflictError); + }); + + test("update (7)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(429) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.TooManyRequestsError); + }); + + test("update (8)", async () => { + const server = mockServerPool.createServer(); + const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + + server + .mockEndpoint() + .patch("/portals/id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(500) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.portals.update("id"); + }).rejects.toThrow(Management.InternalServerError); + }); +}); diff --git a/src/management/tests/wire/resourceServers.test.ts b/src/management/tests/wire/resourceServers.test.ts index cca902ed73..21f58e49fa 100644 --- a/src/management/tests/wire/resourceServers.test.ts +++ b/src/management/tests/wire/resourceServers.test.ts @@ -40,6 +40,7 @@ describe("ResourceServersClient", () => { proof_of_possession: { mechanism: "mtls", required: true }, authorization_policy: { policy_id: "policy_id" }, client_id: "client_id", + agent_subject_claims: "off", type: "universal_commerce_protocol_server", }, ], @@ -157,6 +158,7 @@ describe("ResourceServersClient", () => { }, authorization_policy: { policy_id: "policy_id" }, client_id: "client_id", + agent_subject_claims: "off", type: "universal_commerce_protocol_server", }; @@ -316,6 +318,7 @@ describe("ResourceServersClient", () => { proof_of_possession: { mechanism: "mtls", required: true }, authorization_policy: { policy_id: "policy_id" }, client_id: "client_id", + agent_subject_claims: "off", type: "universal_commerce_protocol_server", }, ], @@ -517,6 +520,7 @@ describe("ResourceServersClient", () => { }, authorization_policy: { policy_id: "policy_id" }, client_id: "client_id", + agent_subject_claims: "off", type: "universal_commerce_protocol_server", }; @@ -752,6 +756,7 @@ describe("ResourceServersClient", () => { }, authorization_policy: { policy_id: "policy_id" }, client_id: "client_id", + agent_subject_claims: "off", type: "universal_commerce_protocol_server", }; diff --git a/src/management/tests/wire/users.test.ts b/src/management/tests/wire/users.test.ts index d9b6f962a3..62f3d25a3a 100644 --- a/src/management/tests/wire/users.test.ts +++ b/src/management/tests/wire/users.test.ts @@ -736,14 +736,16 @@ describe("UsersClient", () => { const server = mockServerPool.createServer(); const client = new ManagementClient({ maxRetries: 0, token: "test", environment: server.baseUrl }); - const rawResponseBody = [ - { - kid: "kid", - device_identifier: "device_identifier", - created_at: "2024-01-15T09:30:00Z", - expires_at: "2024-01-15T09:30:00Z", - }, - ]; + const rawResponseBody = { + keys: [ + { + kid: "kid", + device_identifier: "device_identifier", + created_at: "2024-01-15T09:30:00Z", + expires_at: "2024-01-15T09:30:00Z", + }, + ], + }; server .mockEndpoint() diff --git a/src/management/version.ts b/src/management/version.ts index 67057a4309..c012080661 100644 --- a/src/management/version.ts +++ b/src/management/version.ts @@ -1 +1 @@ -export const SDK_VERSION = "7.6.1"; +export const SDK_VERSION = "7.6.0"; diff --git a/yarn.lock b/yarn.lock index fe497711fd..6f023ff5fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,13 +37,13 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.29.7", "@babel/generator@^7.29.8", "@babel/generator@^7.7.2": - version "7.29.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.8.tgz#4b0b887885422643339e09022148a4c4ebaa4979" - integrity sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg== +"@babel/generator@^7.29.12", "@babel/generator@^7.29.7", "@babel/generator@^7.7.2": + version "7.29.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.12.tgz#682e578704a8681589f434e7d0cc64296ebb6c63" + integrity sha512-2W76mhjrpQFO1lK5e8IvGYB2D0YZ7S2R1Z2BjO2ZUYuW+amcpK/z60U6ZZmzskwoa7sJ6XohP/Wg8H5KxXI/IA== dependencies: - "@babel/parser" "^7.29.8" - "@babel/types" "^7.29.8" + "@babel/parser" "^7.29.12" + "@babel/types" "^7.29.11" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -109,10 +109,10 @@ "@babel/template" "^7.29.7" "@babel/types" "^7.29.8" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.29.7", "@babel/parser@^7.29.8", "@babel/parser@^7.29.9": - version "7.29.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.11.tgz#afa959e9d16c40d4d95012553cab363fc86cbcb7" - integrity sha512-OZ6+oaK7GMyg3IfCpj8JOmn8n+w2rJbDT0LLfVDTLb1ZFeKDh3AiNELgCMUw175IJHSkLl74hG0M0VLsvx+gag== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.29.12", "@babel/parser@^7.29.7": + version "7.29.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.12.tgz#1932edf93ff6602b0665817067946c689b6fe423" + integrity sha512-WJ7JBp/Q4+z/ImydtI7jS6NVco5++632ExBemSX+Ysb+G1lCwQ5BVo3SY+jGGOcZXI4ZccbZSUSJLNBW6eEpJg== dependencies: "@babel/types" "^7.29.11" @@ -245,16 +245,16 @@ "@babel/types" "^7.29.7" "@babel/traverse@^7.29.7": - version "7.29.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.10.tgz#08ab387639b4a67304511259c7da6cf23a82e91c" - integrity sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ== + version "7.29.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.12.tgz#60f3196a8bded1e2b2d2efb7e47a99086733865f" + integrity sha512-MscXe/NAZcOkYEsRajHZFt3ynsb22PUi6CTrp5U7+RYycR9By84mn9mFN54YgfITiqK4hFx3Ju3tZSyzfpS5ew== dependencies: "@babel/code-frame" "^7.29.7" - "@babel/generator" "^7.29.8" + "@babel/generator" "^7.29.12" "@babel/helper-globals" "^7.29.7" - "@babel/parser" "^7.29.9" + "@babel/parser" "^7.29.12" "@babel/template" "^7.29.7" - "@babel/types" "^7.29.8" + "@babel/types" "^7.29.11" debug "^4.3.1" "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.28.2", "@babel/types@^7.29.11", "@babel/types@^7.29.7", "@babel/types@^7.29.8", "@babel/types@^7.3.3": @@ -678,7 +678,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz#f4c663e862f06dc98ca4d453862c46902789a18d" integrity sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.31": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": version "0.3.31" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== @@ -838,9 +838,9 @@ integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== "@types/estree@^1.0.6", "@types/estree@^1.0.8": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24" - integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.10.tgz#8a4a266065af8c2fcf5983153cd97c11b313d0c6" + integrity sha512-lTyOMnOcmRBzdCv6/4zUZCrEhV0xrqQiUZBZtVcbmLHBXKLnN8q89v/wKRF/Q0HbwVsqbIG3o5HDoFl9sduM+g== "@types/graceful-fs@^4.1.3": version "4.1.9" @@ -898,9 +898,9 @@ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/node@*": - version "26.6.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-26.6.5.tgz#cb35209e7767c503551b5fa42a48231c7441d979" - integrity sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg== + version "26.6.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-26.6.6.tgz#9ed7b5817e728ed9216ef7c5b7d373fe3b777104" + integrity sha512-MzQj+8Kx3XI40OmUAE6Qoh58ZMNstNNMwn2nfd3qWsfe7nDNSqJNzes4njhz6AHwrSHOffSLwXU6yb474Q4aog== dependencies: undici-types "~8.9.0" @@ -1261,9 +1261,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.2.2: - version "6.4.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.4.0.tgz#69093d6436d30dbb9b04fe7bdcbcfe16c697d8a1" - integrity sha512-KzTVk2tCWAHtYrvvvaP8bJKJq2pVinhLcGEQdtLIYPbmNGNyYe8QwNaTUYQp2J7/vIsUKt5QCqAfUkYyG9DkOw== + version "6.5.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.5.0.tgz#83f070e17628d0031eb33eb2315a72d8bb11d2a0" + integrity sha512-zhvbbbdt1kbw7EJ9OQoxmQcuaNR9P5kTj7e/YdmOSU10aHWbycofJxA6jKfoEy3vlLdctOF9ZHaxLtmSm998wQ== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" @@ -1390,9 +1390,9 @@ balanced-match@^4.0.2: integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== baseline-browser-mapping@^2.11.33: - version "2.11.34" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.34.tgz#d97a3dc0edb2f139758f7f2b1ae89552f391b35f" - integrity sha512-Aqr8mA1kIvyJ3UY5YAY7ib8LSo1DmDMbMnVqGPtsKW1LxaFQFwn9Eb3yvq2fUKJsRvaXjnAV7R5osqETapzNiA== + version "2.11.35" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.35.tgz#3ca6f40d1c594ab494d8a21b05d5316528a41563" + integrity sha512-GNk8KX52CHqeNKGk8+7tZnQab/2k1t/BgrUHPKNdijzpEhF1saPQZHVKb6m5loSAxB39gyrTYw34Qf9CQ3u1qQ== brace-expansion@^1.1.7: version "1.1.21" @@ -1470,9 +1470,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001819: - version "1.0.30001819" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001819.tgz#4a0f8d7552a15909ce8a0c1dc2ccad9c8c0fab9d" - integrity sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg== + version "1.0.30001820" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001820.tgz#bbed68c45bb4c4316084594ba044ba56e68bfae7" + integrity sha512-gfWD6MxqVCqAOwmODfZf7DchWvlrA+SRdNX7ceLfg3xRqe5ssjjpF7EgslC/0tiLiNTajdaNN/q8c/5u/7Gz8w== chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" @@ -1697,9 +1697,9 @@ dunder-proto@^1.0.1: gopd "^1.2.0" electron-to-chromium@^1.5.464: - version "1.5.467" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.467.tgz#7a3db88a95f09304a47ca0d838a1504fa048664a" - integrity sha512-Nw9X371rtZmYcBSnEijnCDONILjs93biCZO34juC7MBOmK8E+GFnyD4T/WvyrlJkppul7oxg6TwvtKst9SODTw== + version "1.5.475" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.475.tgz#944726edc77fd465d47794a56601a1ee0bb3acf6" + integrity sha512-S9tceHJbIsHH8VRwh9x+8lJO50SYwTdwVGdEjdz2FERyP59j1N6rdXOSklIusrhxt9GG/WN4V/kRgmDHl9MM5w== emittery@^0.13.1: version "0.13.1" @@ -1717,9 +1717,9 @@ emoji-regex@^8.0.0: integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== enhanced-resolve@^5.26.0: - version "5.26.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz#9dfb47d050ed6c87f2c6d43b4d7e30f8c0a91ed7" - integrity sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw== + version "5.26.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.26.1.tgz#444213a1efe5be80c1c2ae045aa0fd14269ee07f" + integrity sha512-PPnnSJq3azKOIewXR/uppBV/6h98dprBJ/WaQ9Qgj10xX1lJLNfg+XShpbsrSqcDSy2yYYyhfXM1wWhftqgyzw== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -2289,10 +2289,10 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-core-module@^2.17.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.17.0.tgz#75c1c76236c9f7e38ddbfff292e127dc13b21027" - integrity sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA== +is-core-module@^2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.18.0.tgz#8a988af8d3729fb6bbcaf025bf820cfe46b95f4c" + integrity sha512-qyax9fgaKOEC4qK8WZn7Q4IcoZC9RC1O1fFxRcRTq/oMMkWT/uXpqpXa12kzWR409zAt1drYN9N9BO26UmBCmw== dependencies: hasown "^2.0.4" @@ -3095,11 +3095,10 @@ minimist@^1.2.8: integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minimizer-webpack-plugin@^5.13.0: - version "5.13.1" - resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.13.1.tgz#664cdfbab756e1b93ae17eb7ff70f1a5620584d7" - integrity sha512-1mhAfvachWYYOm8tpmany5NLuvP+F2wxZWBSX8DC0uFS2wJpM9q3rWgN9wBooAH9d5V12wX0BjyJe4fMjHMarQ== + version "5.14.0" + resolved "https://registry.yarnpkg.com/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.14.0.tgz#5ab341c84ce3a57daf533e84d52d96a42e707298" + integrity sha512-PnvQXCJxhgH2ZVVO7Lj0sM6q8L1XGxnUvd8wVQIRwi8khMCLq5wg0Ngxe44bcuZL2FSN81RdVE7YHEVzTKsQDQ== dependencies: - "@jridgewell/trace-mapping" "^0.3.31" jest-worker "^27.4.5" schema-utils "^4.6.0" terser "^5.51.0" @@ -3169,9 +3168,9 @@ node-int64@^0.4.0: integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.60: - version "2.0.60" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.60.tgz#e3104c3ceb4530578f546bcfda551a4a2de06939" - integrity sha512-OmO8+GM1JUZqXET720VrJCwkjUCXmCMQm0Z3UDDRbfNLHS4NEAvY60j5jiFv0tkKw2PNNlqOLhahVmwJIOLDIQ== + version "2.0.63" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.63.tgz#ad6035ec7745f8bc3b14f6500cd70d5545634612" + integrity sha512-6li2QanLsAXpIH2R6j77MzRyvOyrvdTqlKtO4CgBdHGNvN99ZZfyxszHc5o5+IZBWD5u6Hzwg83JoGXmqZNG9Q== normalize-path@^3.0.0: version "3.0.0" @@ -3461,12 +3460,12 @@ resolve.exports@^2.0.0: integrity sha512-zepuGL0ulf+nt+XaFrlKeaiTJeyPFPLLY62+ncq1/VTHBdt3HsfXOH60priZ6tnXQozdGcDeIF5JVTanvIcYWQ== resolve@^1.20.0: - version "1.22.13" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.13.tgz#d542f97758d768f36091251a6b07540b4343f7b5" - integrity sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA== + version "1.22.14" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.14.tgz#302388cd2d7731a100db1dedce7b050f74ba38f7" + integrity sha512-1ZjYvR9sbkiwC5+9QHetqW5HmA2pHRMaoupD01t2HlYnV/vydC2zPwLixhsMieSWVZt0JJRg5LVIk0Ow1D/TrA== dependencies: es-errors "^1.3.0" - is-core-module "^2.17.0" + is-core-module "^2.18.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -3508,9 +3507,9 @@ saxes@^6.0.0: xmlchars "^2.2.0" schema-utils@^4.6.0, schema-utils@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.8.1.tgz#d005632a0ca18522d903d82e1dcccbddcd57e7bb" - integrity sha512-x39pYlJPyH7Uge5QO64B9XGP9zLDc9WNmiQZc+CE3IzZPvMu3lHOuAMGpYNoPixEL7MSWlGhYTg5UlLSL8G6iw== + version "4.8.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.8.2.tgz#c4504ea7492c58e1b8d1fcc7d3d202c078a6d700" + integrity sha512-iKlak3OFHF0dgD1nZRvgWQzG+P1TiEcMnLSBtIVBg937z5Jd6WE1c3SyZkXIyCfPHowL35yMsVvIjotm1c1qiw== dependencies: "@types/json-schema" "^7.0.15" ajv "^8.20.0" @@ -3518,14 +3517,14 @@ schema-utils@^4.6.0, schema-utils@^4.8.1: ajv-keywords "^5.1.0" semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + version "6.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.2.tgz#f50413fbe5a686c6379385b2e8789b61c124a3c7" + integrity sha512-GYrCADwpu6yV5OAvchkQ27Z5wwMxWAEMg5NNWjyHh/5DboFFqbdbvYNIvZouQpxXyeMPoTOh0vdPYKlf0ZswdQ== semver@^7.5.3, semver@^7.5.4, semver@^7.7.3, semver@^7.8.5: - version "7.8.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" - integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== + version "7.8.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.6.tgz#67c0cda133a3ceb6f70b803e67625bf969000424" + integrity sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw== shebang-command@^2.0.0: version "2.0.0" @@ -3761,9 +3760,9 @@ tinyglobby@^0.2.15: picomatch "^4.0.4" tldts-core@^7.4.19: - version "7.4.19" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.4.19.tgz#c8ace80f2c98729f4fd0779fcae0a940cd1f8085" - integrity sha512-goNXV6Ho9TIOfpJZanTd6CKG5DyYgYAL+k+22T0SLh8l6+KHIfBUPFuePuSZv05UttIaaLmI9tb7TmGIdK5AkQ== + version "7.4.20" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.4.20.tgz#d42eeaa1148f4c21afebd19d164bc64d4bf39476" + integrity sha512-C630TWXZCZmLq0F2bW4QqwnaaxCQ/svpAqvJwnC4JvgEM5ohhBnGsEzTLSOXcN+xjz+kEaHS5uoWIw2klnqd0A== tldts@^7.0.5: version "7.4.19" @@ -3979,9 +3978,9 @@ webidl-conversions@^7.0.0: integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-sources@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.6.0.tgz#b2e4a4f1aef1a0d60f3011eb47736c5bf7f1ed7f" - integrity sha512-EIMmPVvNI0CYXyRPp34F2Qk7W37/BZVZIofS6LAUnrNjCVahS+hO4mxwFJDjQjODTGZDtVzLYoN2+1dYkhk9qA== + version "3.7.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.7.0.tgz#6c145ac83f8220ef20d4b01b9e7d5c15b1598b09" + integrity sha512-PdUhbCycwEgiS1hB/FBDksWKg/ashAIuJKqwdbPn8/dFVgU5LxQiBvG0js6VRRIzPujMrStYCczywp82P0KWng== webpack@^5.105.4: version "5.112.2" @@ -4084,9 +4083,9 @@ write-file-atomic@^4.0.2: signal-exit "^3.0.7" ws@^8.11.0: - version "8.22.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.22.0.tgz#40f16e1d7588ac0575041be5c49b8eb261c28e73" - integrity sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg== + version "8.22.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.22.1.tgz#60d427870e8272ddb10c7fc5cdf00a70eaec369e" + integrity sha512-oyL6OPYme/CmiFvNuGzeoxCJ4nOrZE2O1FwM9MWM1AsGri6nLXB2pg+lNA8aLeXMSav0J6eIVS1j6vUPzUtK9g== xml-name-validator@^4.0.0: version "4.0.0"