@camunda/ccma-api 2.2.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -488,6 +488,39 @@ class OrgsService {
488
488
  }
489
489
  return response.body;
490
490
  }
491
+ static async updateOrgLimitAsMember(params) {
492
+ const { orgId, limitKey, value } = params.params;
493
+ const serviceContext = {
494
+ method: {
495
+ name: `OrgsService.updateOrgLimitAsMember`,
496
+ url: `api/organizations/${orgId}/billing/limits/${limitKey}`,
497
+ normalizedUrl: `api/organizations/:orgId/billing/limits/:limitKey`,
498
+ type: "patch"
499
+ },
500
+ source: params.config.metrics?.source || "unset",
501
+ target: {
502
+ name: "accounts",
503
+ type: "internal"
504
+ }
505
+ };
506
+ const response = await request({
507
+ config: params.config,
508
+ base: { id: "accounts" },
509
+ url: serviceContext.method.url,
510
+ method: serviceContext.method.type,
511
+ metricsDetails: serviceContext,
512
+ // The route removes the limit on `null`. JSON has no `undefined`.
513
+ body: { value: value ?? null }
514
+ });
515
+ if (!response.ok) {
516
+ throw new HttpError(
517
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
518
+ response.status,
519
+ response.statusText
520
+ );
521
+ }
522
+ return response.body;
523
+ }
491
524
  static async extendTrial(params) {
492
525
  const serviceContext = {
493
526
  method: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/services/accounts/orgs.service.ts"],
4
- "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport {\n type AutoJoinAssignment,\n type ClusterCreationDefaults,\n type EnterpriseIncludingValueMetrics,\n type LicensingModelType,\n type LlmProviderName,\n MINUTE,\n type OrganizationDto,\n type OrgWithNameAndSalesPlan,\n type User,\n} from '@camunda/ccma-shared-types'\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { Cache } from '../../utils/cache.js'\nimport { HttpError } from '../../utils/errors.js'\n\nexport interface GetSubscriptionItemsParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface GetSubscriptionDetailsParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface GetSubscriptionDetailsResponse {\n status: string\n currentContractTermEnd: number\n}\n\nexport interface OrgInfo {\n orgUuid: string\n name: string\n salesPlanUuid?: string\n salesForceProjectId?: string\n}\n\nexport interface SetLimitRequest extends RequestBaseParams {\n params: {\n orgId: string\n onBehalfOf: string\n limitKey: string\n limitValue: string | null\n }\n}\n\nexport interface UpdateSuppressDropDisksRequest extends RequestBaseParams {\n params: {\n orgId: string\n value: boolean\n }\n}\n\nexport interface UpdateSuppressDropDisksResponse {\n newLimits: {\n suppressDropDisks?: boolean\n [key: string]: any\n }\n}\n\nexport interface RenameOrganizationRequest extends RequestBaseParams {\n params: {\n orgId: string\n newOrgName: string\n }\n}\n\nexport interface ExtendTrialRequest extends RequestBaseParams {\n params: {\n orgId: string\n onBehalfOf: string\n newExpireDate: string\n }\n}\n\nexport interface SelfExtendTrialRequest extends RequestBaseParams {\n params: {\n orgId: string\n surveyAnswers?: import('@camunda/ccma-shared-types').TrialExtensionSurveyAnswer[]\n }\n}\n\nexport interface ResetTrialExtensionsRequest extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface EnterpriseDevOnlyRequest extends RequestBaseParams {\n params: {\n orgId: string\n enterpriseDevOnly: boolean\n }\n}\n\nexport interface AwsOnlyRequest extends RequestBaseParams {\n params: {\n orgId: string\n awsOnly: boolean\n }\n}\n\nexport interface OrgClusterDefaultsRequest extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface UpdateOrgClusterDefaultsRequest\n extends OrgClusterDefaultsRequest {\n body: {\n defaults: ClusterCreationDefaults\n }\n}\n\n/** The cluster creation defaults that an organization holds (#9732). */\nexport interface OrgClusterDefaultsResponse {\n defaults: ClusterCreationDefaults\n}\n\nexport interface LicensingModelRequest extends RequestBaseParams {\n params: {\n orgId: string\n licensingModel: LicensingModelType\n }\n}\n\nexport interface SendInviteRequest extends RequestBaseParams {\n params: {\n orgId: string\n email: string\n orgRoles: string[]\n }\n}\n\nexport interface CheckUserExistsForInviteRequest extends RequestBaseParams {\n params: {\n inviteToken: string\n }\n}\n\nexport interface CheckUserExistsForInviteResponse {\n userExists: boolean\n userVerified: boolean\n email: string\n}\n\nexport interface ChangeSalesPlanRequest extends RequestBaseParams {\n params: {\n orgId: string\n salesPlanId: string\n options?: {\n duration?: number\n includedValueMetrics?: EnterpriseIncludingValueMetrics\n enterpriseDevOnly?: boolean\n awsOnly?: boolean\n enterPriseStartDate?: string\n onboardOrgClusterMapping?: Array<{\n clusterId: string\n planTypeId: string\n numberOfAllocatedHwPackages?: number\n keepModification?: boolean\n }>\n force?: boolean\n salesForceId?: string\n licensingModel?: LicensingModelType\n }\n }\n}\n\nexport interface ConvertTrialToInNegotiationRequest extends RequestBaseParams {\n params: {\n orgId: string\n salesPlanId: string\n }\n}\n\nexport interface AutomatedEnterpriseOnboardingRequest {\n orgName: string\n awsOnly?: boolean\n renewalTermInMonths?: number\n licensingModel?: LicensingModelType\n valueMetrics: EnterpriseIncludingValueMetrics\n startDate?: string\n sfdcId: string\n reservations: {\n basic: number\n standard: number\n advanced: number\n }\n ownerEmail: string\n}\n\nexport interface AutomatedEnterpriseOnboardingResult {\n orgIds: {\n production: string\n development: string\n }\n}\n\nexport interface DeleteOrganizationRequest extends RequestBaseParams {\n params: {\n orgId: string\n }\n headers?: {\n 'x-camunda-email'?: string\n }\n}\n\nexport interface SetBetaTermsAcceptedRequest extends RequestBaseParams {\n params: {\n orgId: string\n accepted: boolean\n }\n}\n\nexport interface GetLLMUsageInfoParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface LLMUsageInfoResponse {\n key: string\n team_id: string\n spend: number\n max_budget: number\n budget_duration: string\n is_blocked?: boolean\n /**\n * Upstream that holds the key of this org: `litellm` or `openrouter`.\n *\n * Optional because an accounts backend from before the OpenRouter rollout\n * does not send it. Read an absent value as `litellm`.\n */\n provider?: LlmProviderName\n [key: string]: any\n}\n\nexport interface GetQueuedOperationsParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\n/**\n * A background operation still outstanding, or dead-lettered, for an org.\n *\n * Deliberately carries no payload: the backend projects an explicit field list\n * so a future operation type cannot leak anything sensitive through this route.\n */\nexport interface QueuedOperationDto {\n id: number\n operationType: string\n status: 'pending' | 'processing' | 'failed'\n attempts: number\n maxAttempts: number\n /** ISO timestamp of the next scheduled attempt. */\n nextRunAt: string\n lastError?: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface IncreaseLLMBudgetParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface IncreaseLLMBudgetResponse {\n newBudget: number\n message: string\n}\n\nexport interface BlockLiteLLMParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface UnblockLiteLLMParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface OnboardLiteLLMParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nconst orgCache = new Cache<string, OrganizationDto>(5 * MINUTE)\nconst ownerCache = new Cache<\n string,\n {\n owner: string\n email: string\n first?: string\n last?: string\n }\n>(60 * MINUTE)\nconst memberCache = new Cache<string, User[]>(60 * MINUTE)\nconst rolesCache = new Cache<string, string[]>(60 * MINUTE)\n\nexport class OrgsService {\n public static async renameOrganization(\n params: RenameOrganizationRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.renameOrganization`,\n url: `api/organizations/${encodeURIComponent(params.params.orgId)}/`,\n normalizedUrl: `api/organizations/:orgId/`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n newOrgName: params.params.newOrgName,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async getDetailsForOrgs(\n params: RequestBaseParams & { orgIds: string[] },\n ): Promise<OrgInfo[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getDetailsForOrgs`,\n url: `api/organizations/orgInfos`,\n normalizedUrl: `api/organizations/orgInfos`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<OrgInfo[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n orgIds: params.orgIds,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getAllOrgs(\n params: RequestBaseParams,\n ): Promise<OrganizationDto[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getAllOrgs`,\n url: `api/organizations`,\n normalizedUrl: `api/organizations`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<OrganizationDto[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getMyOrgs(\n params: RequestBaseParams,\n ): Promise<OrganizationDto[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getMyOrgs`,\n url: `api/organizations/my`,\n normalizedUrl: `api/organizations/my`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<OrganizationDto[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async getOrgInfo(\n params: {\n orgUuid: string\n headers?: { [key: string]: string }\n } & RequestBaseParams,\n ) {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = orgCache.get(params.orgUuid)\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getOrgInfo`,\n url: `api/organizations/${params.orgUuid}`,\n normalizedUrl: `api/organizations/:orgUuid`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<OrganizationDto>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: params.headers,\n // A read-only GET, so retrying is free of side effects. Without this, a\n // brief accounts blip (pod restart, envoy connection reset) is reported\n // as an error once *per org* by the callers that fan this out across a\n // whole org list \u2014 one transient failure became 25 ERROR lines in a\n // single console `cron.sleep` tick.\n retryTransientErrors: true,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n orgCache.set(params.orgUuid, response.body!)\n return response.body\n }\n\n public static async getOwner(\n params: {\n orgUuid: string\n headers?: { [key: string]: string }\n } & RequestBaseParams,\n ): Promise<{ owner: string; email: string; first?: string; last?: string }> {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = ownerCache.get(params.orgUuid)\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getOwner`,\n url: `api/organizations/${params.orgUuid}/owner`,\n normalizedUrl: `api/organizations/:orgUuid/owner`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<{\n owner: string\n email: string\n first?: string\n last?: string\n }>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: params.headers,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n ownerCache.set(params.orgUuid, response.body!)\n return response.body!\n }\n public static async createAndReturnSocialLoginUser(\n params: {\n body: {\n userId: string\n ipAddress?: string\n inviteToken?: string\n campaign?: string\n utm_medium?: string\n utm_source?: string\n utm_term?: string\n utm_content?: string\n utm_campaign?: string\n utm_gclid?: string\n utm_ga_id?: string\n signupOrigin?: string\n surveyUuid?: string\n }\n } & RequestBaseParams,\n ): Promise<{ orgId: string; invitation?: { successful: boolean } }> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.createAndReturnSocialLoginUser`,\n url: `api/onboarding/social`,\n normalizedUrl: `api/onboarding/social`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<{\n orgId: string\n invitation?: { successful: boolean }\n }>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.body,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return {\n orgId: response.body?.orgId ?? '',\n invitation: response.body?.invitation,\n }\n }\n\n public static async getUsersOfOrg(\n params: { orgUuid: string } & RequestBaseParams,\n ) {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = memberCache.get(params.orgUuid)\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getUsersOfOrg`,\n url: `api/organizations/${params.orgUuid}/users`,\n normalizedUrl: `api/organizations/:orgUuid/users`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<User[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n memberCache.set(params.orgUuid, response.body!)\n return response.body\n }\n\n public static async getAllRoles(params: RequestBaseParams) {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = rolesCache.get('roles')\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getAllRoles`,\n url: `api/roles`,\n normalizedUrl: `api/roles`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<string[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n rolesCache.set('roles', response.body!)\n return response.body\n }\n\n public static async getNamesAndSalesplansForOrgs(\n params: { orgIds: string[] } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getAllOrgs`,\n url: `api/organizations/snowflake/getNamesAndSalesplansForOrgs`,\n normalizedUrl: `api/organizations/snowflake/getNamesAndSalesplansForOrgs`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<OrgWithNameAndSalesPlan[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n orgIds: params.orgIds,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async markOrgHasAlreadyCreatedTemporaryCluster(\n params: { orgUuid: string } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.markOrgHasAlreadyCreatedTemporaryCluster`,\n url: `api/organizations/snowflake/${params.orgUuid}/markOrgHasAlreadyCreatedTemporaryCluster`,\n normalizedUrl: `api/organizations/snowflake/:orgUuid/markOrgHasAlreadyCreatedTemporaryCluster`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setSalesForceId(\n params: { orgUuid: string; salesForceId: string } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setSalesForceId`,\n url: `api/organizations/${params.orgUuid}/salesForceId`,\n normalizedUrl: `api/organizations/:orgUuid/salesForceId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n salesForceId: params.salesForceId,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setLimit(params: SetLimitRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setLimit`,\n url: `api/organizations/${params.params.orgId}/limits/${params.params.limitKey}`,\n normalizedUrl: `api/organizations/:orgId/limits/:limitKey`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n value: params.params.limitValue,\n onBehalfOf: params.params.onBehalfOf,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async updateSuppressDropDisks(\n params: UpdateSuppressDropDisksRequest,\n ): Promise<UpdateSuppressDropDisksResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateSuppressDropDisks`,\n url: `api/organizations/${params.params.orgId}/billing/limits/suppressDropDisks`,\n normalizedUrl: `api/organizations/:orgId/billing/limits/suppressDropDisks`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<UpdateSuppressDropDisksResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n value: params.params.value,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async extendTrial(params: ExtendTrialRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.extendTrial`,\n url: `api/organizations/${params.params.orgId}/extendtrial`,\n normalizedUrl: `api/organizations/:orgId/extendtrial`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n newExpireDate: params.params.newExpireDate,\n onBehalfOf: params.params.onBehalfOf,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async selfExtendTrial(params: SelfExtendTrialRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.selfExtendTrial`,\n url: `api/organizations/${params.params.orgId}/self-extend-trial`,\n normalizedUrl: `api/organizations/:orgId/self-extend-trial`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: { surveyAnswers: params.params.surveyAnswers ?? [] },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async resetTrialExtensions(\n params: ResetTrialExtensionsRequest,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.resetTrialExtensions`,\n url: `api/organizations/${params.params.orgId}/reset-trial-extensions`,\n normalizedUrl: `api/organizations/:orgId/reset-trial-extensions`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /** Send an org's trial to expired immediately (enterprise admin action). */\n public static async setToExpiredTrial(\n params: { params: { orgId: string } } & RequestBaseParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setToExpiredTrial`,\n url: `api/organizations/${params.params.orgId}/expiretrial`,\n normalizedUrl: `api/organizations/:orgId/expiretrial`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {},\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * Modify an enterprise org's contract metadata (duration, start date,\n * included value metrics) \u2014 `PATCH api/organizations/:orgId/enterprise`.\n */\n public static async updateEnterpriseMetadata(\n params: {\n params: { orgId: string }\n body: {\n contractDurationInMonths?: number\n startDate?: string\n valueMetrics?: Partial<EnterpriseIncludingValueMetrics>\n }\n } & RequestBaseParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateEnterpriseMetadata`,\n url: `api/organizations/${params.params.orgId}/enterprise`,\n normalizedUrl: `api/organizations/:orgId/enterprise`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.body,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /** Remove an org's LiteLLM (managed LLM) connection. */\n public static async deleteLiteLLM(\n params: { params: { orgId: string } } & RequestBaseParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.deleteLiteLLM`,\n url: `api/organizations/${params.params.orgId}/litellm`,\n normalizedUrl: `api/organizations/:orgId/litellm`,\n type: 'delete',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * The cluster creation defaults of an organization (#9732). An empty\n * `defaults` object means that a new cluster starts with the values of the\n * console backend.\n *\n * The route serves Control and the organization itself; the caller needs\n * `org.settings.read` on the organization, or the read-all permission of\n * accounts.\n */\n public static async getOrgClusterDefaults(\n params: OrgClusterDefaultsRequest,\n ): Promise<OrgClusterDefaultsResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getOrgClusterDefaults`,\n url: `api/organizations/${params.params.orgId}/cluster-defaults`,\n normalizedUrl: `api/organizations/:orgId/cluster-defaults`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request<OrgClusterDefaultsResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? { defaults: {} }\n }\n\n /**\n * Replace the cluster creation defaults of an organization. A field that\n * the body does not hold is no longer a default.\n *\n * The route refuses a field that the caller may not write: an organization\n * writes the fields of the availability `customer` alone.\n */\n public static async updateOrgClusterDefaults(\n params: UpdateOrgClusterDefaultsRequest,\n ): Promise<OrgClusterDefaultsResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateOrgClusterDefaults`,\n url: `api/organizations/${params.params.orgId}/cluster-defaults`,\n normalizedUrl: `api/organizations/:orgId/cluster-defaults`,\n type: 'put',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request<OrgClusterDefaultsResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.body,\n responseType: 'json',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? { defaults: params.body.defaults }\n }\n\n public static async setAwsOnly(params: AwsOnlyRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setAwsOnly`,\n url: `api/organizations/${params.params.orgId}/awsOnly`,\n normalizedUrl: `api/organizations/:orgId/awsOnly`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n awsOnly: params.params.awsOnly,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setEnterpriseDevOnly(params: EnterpriseDevOnlyRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setEnterpriseDevOnly`,\n url: `api/organizations/${params.params.orgId}/enterprise-dev`,\n normalizedUrl: `api/organizations/:orgId/enterprise-dev`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n enterpriseDevOnly: params.params.enterpriseDevOnly,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setLicensingModel(params: LicensingModelRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setLicensingModel`,\n url: `api/organizations/${params.params.orgId}/licensing-model`,\n normalizedUrl: `api/organizations/:orgId/licensing-model`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n licensingModel: params.params.licensingModel,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async changeSalesPlan(params: ChangeSalesPlanRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.changeSalesPlan`,\n url: `api/organizations/${params.params.orgId}/salesplan/${params.params.salesPlanId}`,\n normalizedUrl: `api/organizations/:orgId/salesplan/:salesPlanId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<any>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.params.options ?? {},\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async convertTrialToInNegotiation(\n params: ConvertTrialToInNegotiationRequest,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.convertTrialToInNegotiation`,\n url: `api/organizations/${params.params.orgId}/trial-to-in-negotiation/${params.params.salesPlanId}`,\n normalizedUrl: `api/organizations/:orgId/trial-to-in-negotiation/:salesPlanId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<{ success: boolean }>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async sendInvite(params: SendInviteRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.sendInvite`,\n url: `api/organizations/${params.params.orgId}/invites`,\n normalizedUrl: `api/organizations/:orgId/invites`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n email: params.params.email,\n orgRoles: params.params.orgRoles,\n },\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async checkUserExistsForInvite(\n params: CheckUserExistsForInviteRequest,\n ): Promise<CheckUserExistsForInviteResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.checkUserExistsForInvite`,\n url: `verification/invitation/${params.params.inviteToken}/check-user-exists`,\n normalizedUrl: `verification/invitation/:inviteToken/check-user-exists`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<CheckUserExistsForInviteResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async automatedEnterpriseOnboarding(\n params: AutomatedEnterpriseOnboardingRequest & RequestBaseParams,\n ): Promise<AutomatedEnterpriseOnboardingResult> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.automatedEnterpriseOnboarding`,\n url: `external/onboarding`,\n normalizedUrl: `external/onboarding`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<AutomatedEnterpriseOnboardingResult>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n orgName: params.orgName,\n awsOnly: params.awsOnly,\n renewalTermInMonths: params.renewalTermInMonths,\n licensingModel: params.licensingModel,\n valueMetrics: params.valueMetrics,\n startDate: params.startDate,\n sfdcId: params.sfdcId,\n reservations: params.reservations,\n ownerEmail: params.ownerEmail,\n },\n responseType: 'json',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async setBetaTermsAccepted(\n params: SetBetaTermsAcceptedRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.setBetaTermsAccepted',\n url: `api/organizations/${encodeURIComponent(params.params.orgId)}/betaTerms`,\n normalizedUrl: 'api/organizations/:orgId/betaTerms',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n accepted: params.params.accepted,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * Delete an organization.\n *\n * The caller's own bearer token authenticates the request. Cloudbot can\n * also add `params.headers['x-camunda-email']` on top of its own M2M\n * bearer token, to act on behalf of the named human. Accounts-backend's\n * `emailBasedAuthMiddleware` rejects that header from every other caller \u2014\n * it does not replace the bearer token.\n */\n public static async deleteOrganization(\n params: DeleteOrganizationRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.deleteOrganization`,\n url: `api/organizations/${params.params.orgId}`,\n normalizedUrl: `api/organizations/:orgId`,\n type: 'delete',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: params.headers,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * Create an organization (admin `createOrg`). Mirrors `POST api/organizations/`\n * \u2014 `internal` seeds an internal plan, otherwise a trial plan. Returns the new\n * org so the caller can navigate to it.\n */\n public static async createOrganization(\n params: RequestBaseParams & { name: string; internal?: boolean },\n ): Promise<{ uuid: string; name: string }> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.createOrganization`,\n url: `api/organizations`,\n normalizedUrl: `api/organizations`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<{ uuid: string; name: string }>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: { name: params.name, internal: params.internal ?? false },\n responseType: 'json',\n })\n\n if (!response.ok || !response.body) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async setAutoJoin(\n params: RequestBaseParams & {\n orgId: string\n autoJoin: AutoJoinAssignment\n },\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setAutoJoin`,\n url: `api/organizations/${params.orgId}/auto-join`,\n normalizedUrl: `api/organizations/:orgId/auto-join`,\n type: 'put',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n autoJoin: params.autoJoin,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n /**\n * Background operations outstanding or dead-lettered for an org \u2014 the\n * support-facing view of the durable operation queue.\n */\n public static async getQueuedOperations(\n params: GetQueuedOperationsParams,\n ): Promise<QueuedOperationDto[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.getQueuedOperations',\n url: `api/organizations/${params.params.orgId}/queued-operations`,\n normalizedUrl: 'api/organizations/:orgId/queued-operations',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<QueuedOperationDto[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getLLMUsageInfo(\n params: GetLLMUsageInfoParams,\n ): Promise<LLMUsageInfoResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.getLLMUsageInfo',\n url: `api/organizations/${params.params.orgId}/llm/info`,\n normalizedUrl: 'api/organizations/:orgId/llm/info',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<LLMUsageInfoResponse>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async increaseLLMBudget(\n params: IncreaseLLMBudgetParams,\n ): Promise<IncreaseLLMBudgetResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.increaseLLMBudget',\n url: `api/organizations/${params.params.orgId}/litellm/increase-budget`,\n normalizedUrl: 'api/organizations/:orgId/litellm/increase-budget',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<IncreaseLLMBudgetResponse>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async blockLiteLLM(params: BlockLiteLLMParams): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.blockLiteLLM',\n url: `api/organizations/${params.params.orgId}/litellm/block`,\n normalizedUrl: 'api/organizations/:orgId/litellm/block',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async unblockLiteLLM(\n params: UnblockLiteLLMParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.unblockLiteLLM',\n url: `api/organizations/${params.params.orgId}/litellm/unblock`,\n normalizedUrl: 'api/organizations/:orgId/litellm/unblock',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async onboardLiteLLM(\n params: OnboardLiteLLMParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.onboardLiteLLM',\n url: `api/organizations/${params.params.orgId}/litellm/onboard`,\n normalizedUrl: 'api/organizations/:orgId/litellm/onboard',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport {\n type AutoJoinAssignment,\n type ClusterCreationDefaults,\n type EnterpriseIncludingValueMetrics,\n type LicensingModelType,\n type Limits,\n type LlmProviderName,\n MINUTE,\n type OrganizationDto,\n type OrgWithNameAndSalesPlan,\n type User,\n} from '@camunda/ccma-shared-types'\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { Cache } from '../../utils/cache.js'\nimport { HttpError } from '../../utils/errors.js'\n\nexport interface GetSubscriptionItemsParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface GetSubscriptionDetailsParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface GetSubscriptionDetailsResponse {\n status: string\n currentContractTermEnd: number\n}\n\nexport interface OrgInfo {\n orgUuid: string\n name: string\n salesPlanUuid?: string\n salesForceProjectId?: string\n}\n\nexport interface SetLimitRequest extends RequestBaseParams {\n params: {\n orgId: string\n onBehalfOf: string\n limitKey: string\n limitValue: string | null\n }\n}\n\nexport interface UpdateSuppressDropDisksRequest extends RequestBaseParams {\n params: {\n orgId: string\n value: boolean\n }\n}\n\n/**\n * A limit that an org member can change on the member route. The admin route\n * (`setLimit`) takes every limit.\n */\nexport interface UpdateOrgLimitAsMemberRequest extends RequestBaseParams {\n params: {\n orgId: string\n limitKey: 'preprodClusterTtlHours'\n /** `undefined` removes the limit from the org. */\n value: number | undefined\n }\n}\n\nexport interface UpdateOrgLimitAsMemberResponse {\n newLimits: Limits\n}\n\nexport interface UpdateSuppressDropDisksResponse {\n newLimits: {\n suppressDropDisks?: boolean\n [key: string]: any\n }\n}\n\nexport interface RenameOrganizationRequest extends RequestBaseParams {\n params: {\n orgId: string\n newOrgName: string\n }\n}\n\nexport interface ExtendTrialRequest extends RequestBaseParams {\n params: {\n orgId: string\n onBehalfOf: string\n newExpireDate: string\n }\n}\n\nexport interface SelfExtendTrialRequest extends RequestBaseParams {\n params: {\n orgId: string\n surveyAnswers?: import('@camunda/ccma-shared-types').TrialExtensionSurveyAnswer[]\n }\n}\n\nexport interface ResetTrialExtensionsRequest extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface EnterpriseDevOnlyRequest extends RequestBaseParams {\n params: {\n orgId: string\n enterpriseDevOnly: boolean\n }\n}\n\nexport interface AwsOnlyRequest extends RequestBaseParams {\n params: {\n orgId: string\n awsOnly: boolean\n }\n}\n\nexport interface OrgClusterDefaultsRequest extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface UpdateOrgClusterDefaultsRequest\n extends OrgClusterDefaultsRequest {\n body: {\n defaults: ClusterCreationDefaults\n }\n}\n\n/** The cluster creation defaults that an organization holds (#9732). */\nexport interface OrgClusterDefaultsResponse {\n defaults: ClusterCreationDefaults\n}\n\nexport interface LicensingModelRequest extends RequestBaseParams {\n params: {\n orgId: string\n licensingModel: LicensingModelType\n }\n}\n\nexport interface SendInviteRequest extends RequestBaseParams {\n params: {\n orgId: string\n email: string\n orgRoles: string[]\n }\n}\n\nexport interface CheckUserExistsForInviteRequest extends RequestBaseParams {\n params: {\n inviteToken: string\n }\n}\n\nexport interface CheckUserExistsForInviteResponse {\n userExists: boolean\n userVerified: boolean\n email: string\n}\n\nexport interface ChangeSalesPlanRequest extends RequestBaseParams {\n params: {\n orgId: string\n salesPlanId: string\n options?: {\n duration?: number\n includedValueMetrics?: EnterpriseIncludingValueMetrics\n enterpriseDevOnly?: boolean\n awsOnly?: boolean\n enterPriseStartDate?: string\n onboardOrgClusterMapping?: Array<{\n clusterId: string\n planTypeId: string\n numberOfAllocatedHwPackages?: number\n keepModification?: boolean\n }>\n force?: boolean\n salesForceId?: string\n licensingModel?: LicensingModelType\n }\n }\n}\n\nexport interface ConvertTrialToInNegotiationRequest extends RequestBaseParams {\n params: {\n orgId: string\n salesPlanId: string\n }\n}\n\nexport interface AutomatedEnterpriseOnboardingRequest {\n orgName: string\n awsOnly?: boolean\n renewalTermInMonths?: number\n licensingModel?: LicensingModelType\n valueMetrics: EnterpriseIncludingValueMetrics\n startDate?: string\n sfdcId: string\n reservations: {\n basic: number\n standard: number\n advanced: number\n }\n ownerEmail: string\n}\n\nexport interface AutomatedEnterpriseOnboardingResult {\n orgIds: {\n production: string\n development: string\n }\n}\n\nexport interface DeleteOrganizationRequest extends RequestBaseParams {\n params: {\n orgId: string\n }\n headers?: {\n 'x-camunda-email'?: string\n }\n}\n\nexport interface SetBetaTermsAcceptedRequest extends RequestBaseParams {\n params: {\n orgId: string\n accepted: boolean\n }\n}\n\nexport interface GetLLMUsageInfoParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface LLMUsageInfoResponse {\n key: string\n team_id: string\n spend: number\n max_budget: number\n budget_duration: string\n is_blocked?: boolean\n /**\n * Upstream that holds the key of this org: `litellm` or `openrouter`.\n *\n * Optional because an accounts backend from before the OpenRouter rollout\n * does not send it. Read an absent value as `litellm`.\n */\n provider?: LlmProviderName\n [key: string]: any\n}\n\nexport interface GetQueuedOperationsParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\n/**\n * A background operation still outstanding, or dead-lettered, for an org.\n *\n * Deliberately carries no payload: the backend projects an explicit field list\n * so a future operation type cannot leak anything sensitive through this route.\n */\nexport interface QueuedOperationDto {\n id: number\n operationType: string\n status: 'pending' | 'processing' | 'failed'\n attempts: number\n maxAttempts: number\n /** ISO timestamp of the next scheduled attempt. */\n nextRunAt: string\n lastError?: string\n createdAt: string\n updatedAt: string\n}\n\nexport interface IncreaseLLMBudgetParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface IncreaseLLMBudgetResponse {\n newBudget: number\n message: string\n}\n\nexport interface BlockLiteLLMParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface UnblockLiteLLMParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nexport interface OnboardLiteLLMParams extends RequestBaseParams {\n params: {\n orgId: string\n }\n}\n\nconst orgCache = new Cache<string, OrganizationDto>(5 * MINUTE)\nconst ownerCache = new Cache<\n string,\n {\n owner: string\n email: string\n first?: string\n last?: string\n }\n>(60 * MINUTE)\nconst memberCache = new Cache<string, User[]>(60 * MINUTE)\nconst rolesCache = new Cache<string, string[]>(60 * MINUTE)\n\nexport class OrgsService {\n public static async renameOrganization(\n params: RenameOrganizationRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.renameOrganization`,\n url: `api/organizations/${encodeURIComponent(params.params.orgId)}/`,\n normalizedUrl: `api/organizations/:orgId/`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n newOrgName: params.params.newOrgName,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async getDetailsForOrgs(\n params: RequestBaseParams & { orgIds: string[] },\n ): Promise<OrgInfo[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getDetailsForOrgs`,\n url: `api/organizations/orgInfos`,\n normalizedUrl: `api/organizations/orgInfos`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<OrgInfo[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n orgIds: params.orgIds,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getAllOrgs(\n params: RequestBaseParams,\n ): Promise<OrganizationDto[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getAllOrgs`,\n url: `api/organizations`,\n normalizedUrl: `api/organizations`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<OrganizationDto[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getMyOrgs(\n params: RequestBaseParams,\n ): Promise<OrganizationDto[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getMyOrgs`,\n url: `api/organizations/my`,\n normalizedUrl: `api/organizations/my`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<OrganizationDto[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async getOrgInfo(\n params: {\n orgUuid: string\n headers?: { [key: string]: string }\n } & RequestBaseParams,\n ) {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = orgCache.get(params.orgUuid)\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getOrgInfo`,\n url: `api/organizations/${params.orgUuid}`,\n normalizedUrl: `api/organizations/:orgUuid`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<OrganizationDto>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: params.headers,\n // A read-only GET, so retrying is free of side effects. Without this, a\n // brief accounts blip (pod restart, envoy connection reset) is reported\n // as an error once *per org* by the callers that fan this out across a\n // whole org list \u2014 one transient failure became 25 ERROR lines in a\n // single console `cron.sleep` tick.\n retryTransientErrors: true,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n orgCache.set(params.orgUuid, response.body!)\n return response.body\n }\n\n public static async getOwner(\n params: {\n orgUuid: string\n headers?: { [key: string]: string }\n } & RequestBaseParams,\n ): Promise<{ owner: string; email: string; first?: string; last?: string }> {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = ownerCache.get(params.orgUuid)\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getOwner`,\n url: `api/organizations/${params.orgUuid}/owner`,\n normalizedUrl: `api/organizations/:orgUuid/owner`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<{\n owner: string\n email: string\n first?: string\n last?: string\n }>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: params.headers,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n ownerCache.set(params.orgUuid, response.body!)\n return response.body!\n }\n public static async createAndReturnSocialLoginUser(\n params: {\n body: {\n userId: string\n ipAddress?: string\n inviteToken?: string\n campaign?: string\n utm_medium?: string\n utm_source?: string\n utm_term?: string\n utm_content?: string\n utm_campaign?: string\n utm_gclid?: string\n utm_ga_id?: string\n signupOrigin?: string\n surveyUuid?: string\n }\n } & RequestBaseParams,\n ): Promise<{ orgId: string; invitation?: { successful: boolean } }> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.createAndReturnSocialLoginUser`,\n url: `api/onboarding/social`,\n normalizedUrl: `api/onboarding/social`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<{\n orgId: string\n invitation?: { successful: boolean }\n }>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.body,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return {\n orgId: response.body?.orgId ?? '',\n invitation: response.body?.invitation,\n }\n }\n\n public static async getUsersOfOrg(\n params: { orgUuid: string } & RequestBaseParams,\n ) {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = memberCache.get(params.orgUuid)\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getUsersOfOrg`,\n url: `api/organizations/${params.orgUuid}/users`,\n normalizedUrl: `api/organizations/:orgUuid/users`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<User[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n memberCache.set(params.orgUuid, response.body!)\n return response.body\n }\n\n public static async getAllRoles(params: RequestBaseParams) {\n if (!params.cacheControl?.ignoreCache) {\n const inCache = rolesCache.get('roles')\n if (inCache) {\n return inCache\n }\n }\n\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getAllRoles`,\n url: `api/roles`,\n normalizedUrl: `api/roles`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<string[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n rolesCache.set('roles', response.body!)\n return response.body\n }\n\n public static async getNamesAndSalesplansForOrgs(\n params: { orgIds: string[] } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getAllOrgs`,\n url: `api/organizations/snowflake/getNamesAndSalesplansForOrgs`,\n normalizedUrl: `api/organizations/snowflake/getNamesAndSalesplansForOrgs`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<OrgWithNameAndSalesPlan[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n orgIds: params.orgIds,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async markOrgHasAlreadyCreatedTemporaryCluster(\n params: { orgUuid: string } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.markOrgHasAlreadyCreatedTemporaryCluster`,\n url: `api/organizations/snowflake/${params.orgUuid}/markOrgHasAlreadyCreatedTemporaryCluster`,\n normalizedUrl: `api/organizations/snowflake/:orgUuid/markOrgHasAlreadyCreatedTemporaryCluster`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setSalesForceId(\n params: { orgUuid: string; salesForceId: string } & RequestBaseParams,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setSalesForceId`,\n url: `api/organizations/${params.orgUuid}/salesForceId`,\n normalizedUrl: `api/organizations/:orgUuid/salesForceId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n salesForceId: params.salesForceId,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setLimit(params: SetLimitRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setLimit`,\n url: `api/organizations/${params.params.orgId}/limits/${params.params.limitKey}`,\n normalizedUrl: `api/organizations/:orgId/limits/:limitKey`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n value: params.params.limitValue,\n onBehalfOf: params.params.onBehalfOf,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async updateSuppressDropDisks(\n params: UpdateSuppressDropDisksRequest,\n ): Promise<UpdateSuppressDropDisksResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateSuppressDropDisks`,\n url: `api/organizations/${params.params.orgId}/billing/limits/suppressDropDisks`,\n normalizedUrl: `api/organizations/:orgId/billing/limits/suppressDropDisks`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<UpdateSuppressDropDisksResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n value: params.params.value,\n },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async updateOrgLimitAsMember(\n params: UpdateOrgLimitAsMemberRequest,\n ): Promise<UpdateOrgLimitAsMemberResponse> {\n const { orgId, limitKey, value } = params.params\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateOrgLimitAsMember`,\n url: `api/organizations/${orgId}/billing/limits/${limitKey}`,\n normalizedUrl: `api/organizations/:orgId/billing/limits/:limitKey`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<UpdateOrgLimitAsMemberResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n // The route removes the limit on `null`. JSON has no `undefined`.\n body: { value: value ?? null },\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async extendTrial(params: ExtendTrialRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.extendTrial`,\n url: `api/organizations/${params.params.orgId}/extendtrial`,\n normalizedUrl: `api/organizations/:orgId/extendtrial`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n newExpireDate: params.params.newExpireDate,\n onBehalfOf: params.params.onBehalfOf,\n },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async selfExtendTrial(params: SelfExtendTrialRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.selfExtendTrial`,\n url: `api/organizations/${params.params.orgId}/self-extend-trial`,\n normalizedUrl: `api/organizations/:orgId/self-extend-trial`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: { surveyAnswers: params.params.surveyAnswers ?? [] },\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async resetTrialExtensions(\n params: ResetTrialExtensionsRequest,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.resetTrialExtensions`,\n url: `api/organizations/${params.params.orgId}/reset-trial-extensions`,\n normalizedUrl: `api/organizations/:orgId/reset-trial-extensions`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /** Send an org's trial to expired immediately (enterprise admin action). */\n public static async setToExpiredTrial(\n params: { params: { orgId: string } } & RequestBaseParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setToExpiredTrial`,\n url: `api/organizations/${params.params.orgId}/expiretrial`,\n normalizedUrl: `api/organizations/:orgId/expiretrial`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {},\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * Modify an enterprise org's contract metadata (duration, start date,\n * included value metrics) \u2014 `PATCH api/organizations/:orgId/enterprise`.\n */\n public static async updateEnterpriseMetadata(\n params: {\n params: { orgId: string }\n body: {\n contractDurationInMonths?: number\n startDate?: string\n valueMetrics?: Partial<EnterpriseIncludingValueMetrics>\n }\n } & RequestBaseParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateEnterpriseMetadata`,\n url: `api/organizations/${params.params.orgId}/enterprise`,\n normalizedUrl: `api/organizations/:orgId/enterprise`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.body,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /** Remove an org's LiteLLM (managed LLM) connection. */\n public static async deleteLiteLLM(\n params: { params: { orgId: string } } & RequestBaseParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.deleteLiteLLM`,\n url: `api/organizations/${params.params.orgId}/litellm`,\n normalizedUrl: `api/organizations/:orgId/litellm`,\n type: 'delete',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * The cluster creation defaults of an organization (#9732). An empty\n * `defaults` object means that a new cluster starts with the values of the\n * console backend.\n *\n * The route serves Control and the organization itself; the caller needs\n * `org.settings.read` on the organization, or the read-all permission of\n * accounts.\n */\n public static async getOrgClusterDefaults(\n params: OrgClusterDefaultsRequest,\n ): Promise<OrgClusterDefaultsResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.getOrgClusterDefaults`,\n url: `api/organizations/${params.params.orgId}/cluster-defaults`,\n normalizedUrl: `api/organizations/:orgId/cluster-defaults`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request<OrgClusterDefaultsResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? { defaults: {} }\n }\n\n /**\n * Replace the cluster creation defaults of an organization. A field that\n * the body does not hold is no longer a default.\n *\n * The route refuses a field that the caller may not write: an organization\n * writes the fields of the availability `customer` alone.\n */\n public static async updateOrgClusterDefaults(\n params: UpdateOrgClusterDefaultsRequest,\n ): Promise<OrgClusterDefaultsResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.updateOrgClusterDefaults`,\n url: `api/organizations/${params.params.orgId}/cluster-defaults`,\n normalizedUrl: `api/organizations/:orgId/cluster-defaults`,\n type: 'put',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request<OrgClusterDefaultsResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.body,\n responseType: 'json',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? { defaults: params.body.defaults }\n }\n\n public static async setAwsOnly(params: AwsOnlyRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setAwsOnly`,\n url: `api/organizations/${params.params.orgId}/awsOnly`,\n normalizedUrl: `api/organizations/:orgId/awsOnly`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n awsOnly: params.params.awsOnly,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setEnterpriseDevOnly(params: EnterpriseDevOnlyRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setEnterpriseDevOnly`,\n url: `api/organizations/${params.params.orgId}/enterprise-dev`,\n normalizedUrl: `api/organizations/:orgId/enterprise-dev`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n enterpriseDevOnly: params.params.enterpriseDevOnly,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async setLicensingModel(params: LicensingModelRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setLicensingModel`,\n url: `api/organizations/${params.params.orgId}/licensing-model`,\n normalizedUrl: `api/organizations/:orgId/licensing-model`,\n type: 'patch',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n licensingModel: params.params.licensingModel,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async changeSalesPlan(params: ChangeSalesPlanRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.changeSalesPlan`,\n url: `api/organizations/${params.params.orgId}/salesplan/${params.params.salesPlanId}`,\n normalizedUrl: `api/organizations/:orgId/salesplan/:salesPlanId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<any>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: params.params.options ?? {},\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async convertTrialToInNegotiation(\n params: ConvertTrialToInNegotiationRequest,\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.convertTrialToInNegotiation`,\n url: `api/organizations/${params.params.orgId}/trial-to-in-negotiation/${params.params.salesPlanId}`,\n normalizedUrl: `api/organizations/:orgId/trial-to-in-negotiation/:salesPlanId`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<{ success: boolean }>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async sendInvite(params: SendInviteRequest) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.sendInvite`,\n url: `api/organizations/${params.params.orgId}/invites`,\n normalizedUrl: `api/organizations/:orgId/invites`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n email: params.params.email,\n orgRoles: params.params.orgRoles,\n },\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async checkUserExistsForInvite(\n params: CheckUserExistsForInviteRequest,\n ): Promise<CheckUserExistsForInviteResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.checkUserExistsForInvite`,\n url: `verification/invitation/${params.params.inviteToken}/check-user-exists`,\n normalizedUrl: `verification/invitation/:inviteToken/check-user-exists`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<CheckUserExistsForInviteResponse>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async automatedEnterpriseOnboarding(\n params: AutomatedEnterpriseOnboardingRequest & RequestBaseParams,\n ): Promise<AutomatedEnterpriseOnboardingResult> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.automatedEnterpriseOnboarding`,\n url: `external/onboarding`,\n normalizedUrl: `external/onboarding`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<AutomatedEnterpriseOnboardingResult>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n orgName: params.orgName,\n awsOnly: params.awsOnly,\n renewalTermInMonths: params.renewalTermInMonths,\n licensingModel: params.licensingModel,\n valueMetrics: params.valueMetrics,\n startDate: params.startDate,\n sfdcId: params.sfdcId,\n reservations: params.reservations,\n ownerEmail: params.ownerEmail,\n },\n responseType: 'json',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async setBetaTermsAccepted(\n params: SetBetaTermsAcceptedRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.setBetaTermsAccepted',\n url: `api/organizations/${encodeURIComponent(params.params.orgId)}/betaTerms`,\n normalizedUrl: 'api/organizations/:orgId/betaTerms',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n accepted: params.params.accepted,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * Delete an organization.\n *\n * The caller's own bearer token authenticates the request. Cloudbot can\n * also add `params.headers['x-camunda-email']` on top of its own M2M\n * bearer token, to act on behalf of the named human. Accounts-backend's\n * `emailBasedAuthMiddleware` rejects that header from every other caller \u2014\n * it does not replace the bearer token.\n */\n public static async deleteOrganization(\n params: DeleteOrganizationRequest,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.deleteOrganization`,\n url: `api/organizations/${params.params.orgId}`,\n normalizedUrl: `api/organizations/:orgId`,\n type: 'delete',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n headers: params.headers,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n /**\n * Create an organization (admin `createOrg`). Mirrors `POST api/organizations/`\n * \u2014 `internal` seeds an internal plan, otherwise a trial plan. Returns the new\n * org so the caller can navigate to it.\n */\n public static async createOrganization(\n params: RequestBaseParams & { name: string; internal?: boolean },\n ): Promise<{ uuid: string; name: string }> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.createOrganization`,\n url: `api/organizations`,\n normalizedUrl: `api/organizations`,\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<{ uuid: string; name: string }>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: { name: params.name, internal: params.internal ?? false },\n responseType: 'json',\n })\n\n if (!response.ok || !response.body) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async setAutoJoin(\n params: RequestBaseParams & {\n orgId: string\n autoJoin: AutoJoinAssignment\n },\n ) {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `OrgsService.setAutoJoin`,\n url: `api/organizations/${params.orgId}/auto-join`,\n normalizedUrl: `api/organizations/:orgId/auto-join`,\n type: 'put',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n const response = await request<void>({\n config: params.config,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n body: {\n autoJoin: params.autoJoin,\n },\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n /**\n * Background operations outstanding or dead-lettered for an org \u2014 the\n * support-facing view of the durable operation queue.\n */\n public static async getQueuedOperations(\n params: GetQueuedOperationsParams,\n ): Promise<QueuedOperationDto[]> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.getQueuedOperations',\n url: `api/organizations/${params.params.orgId}/queued-operations`,\n normalizedUrl: 'api/organizations/:orgId/queued-operations',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<QueuedOperationDto[]>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getLLMUsageInfo(\n params: GetLLMUsageInfoParams,\n ): Promise<LLMUsageInfoResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.getLLMUsageInfo',\n url: `api/organizations/${params.params.orgId}/llm/info`,\n normalizedUrl: 'api/organizations/:orgId/llm/info',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<LLMUsageInfoResponse>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async increaseLLMBudget(\n params: IncreaseLLMBudgetParams,\n ): Promise<IncreaseLLMBudgetResponse> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.increaseLLMBudget',\n url: `api/organizations/${params.params.orgId}/litellm/increase-budget`,\n normalizedUrl: 'api/organizations/:orgId/litellm/increase-budget',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<IncreaseLLMBudgetResponse>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body!\n }\n\n public static async blockLiteLLM(params: BlockLiteLLMParams): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.blockLiteLLM',\n url: `api/organizations/${params.params.orgId}/litellm/block`,\n normalizedUrl: 'api/organizations/:orgId/litellm/block',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async unblockLiteLLM(\n params: UnblockLiteLLMParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.unblockLiteLLM',\n url: `api/organizations/${params.params.orgId}/litellm/unblock`,\n normalizedUrl: 'api/organizations/:orgId/litellm/unblock',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n\n public static async onboardLiteLLM(\n params: OnboardLiteLLMParams,\n ): Promise<void> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsService.onboardLiteLLM',\n url: `api/organizations/${params.params.orgId}/litellm/onboard`,\n normalizedUrl: 'api/organizations/:orgId/litellm/onboard',\n type: 'post',\n },\n source: params.config.metrics?.source || 'unset',\n target: {\n name: 'accounts',\n type: 'internal',\n },\n }\n\n const response = await request<void>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'none',\n })\n\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n }\n}\n"],
5
+ "mappings": "AAMA;AAAA,EAOE;AAAA,OAIK;AAKP,SAAS,eAAe;AACxB,SAAS,aAAa;AACtB,SAAS,iBAAiB;AA2S1B,MAAM,WAAW,IAAI,MAA+B,IAAI,MAAM;AAC9D,MAAM,aAAa,IAAI,MAQrB,KAAK,MAAM;AACb,MAAM,cAAc,IAAI,MAAsB,KAAK,MAAM;AACzD,MAAM,aAAa,IAAI,MAAwB,KAAK,MAAM;AAEnD,MAAM,YAAY;AAAA,EACvB,aAAoB,mBAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,mBAAmB,OAAO,OAAO,KAAK,CAAC;AAAA,QACjE,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,YAAY,OAAO,OAAO;AAAA,MAC5B;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,kBAClB,QACoB;AACpB,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAmB;AAAA,MACxC,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,QAAQ,OAAO;AAAA,MACjB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,WAClB,QAC4B;AAC5B,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAA2B;AAAA,MAChD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,UAClB,QAC4B;AAC5B,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAA2B;AAAA,MAChD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,WAClB,QAIA;AACA,QAAI,CAAC,OAAO,cAAc,aAAa;AACrC,YAAM,UAAU,SAAS,IAAI,OAAO,OAAO;AAC3C,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO;AAAA,QACxC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAyB;AAAA,MAC9C,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,SAAS,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhB,sBAAsB;AAAA,IACxB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,aAAS,IAAI,OAAO,SAAS,SAAS,IAAK;AAC3C,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,SAClB,QAI0E;AAC1E,QAAI,CAAC,OAAO,cAAc,aAAa;AACrC,YAAM,UAAU,WAAW,IAAI,OAAO,OAAO;AAC7C,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO;AAAA,QACxC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAKpB;AAAA,MACD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,SAAS,OAAO;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,eAAW,IAAI,OAAO,SAAS,SAAS,IAAK;AAC7C,WAAO,SAAS;AAAA,EAClB;AAAA,EACA,aAAoB,+BAClB,QAiBkE;AAClE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAGpB;AAAA,MACD,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,OAAO;AAAA,IACf,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO;AAAA,MACL,OAAO,SAAS,MAAM,SAAS;AAAA,MAC/B,YAAY,SAAS,MAAM;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,aAAoB,cAClB,QACA;AACA,QAAI,CAAC,OAAO,cAAc,aAAa;AACrC,YAAM,UAAU,YAAY,IAAI,OAAO,OAAO;AAC9C,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO;AAAA,QACxC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAgB;AAAA,MACrC,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,gBAAY,IAAI,OAAO,SAAS,SAAS,IAAK;AAC9C,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,YAAY,QAA2B;AACzD,QAAI,CAAC,OAAO,cAAc,aAAa;AACrC,YAAM,UAAU,WAAW,IAAI,OAAO;AACtC,UAAI,SAAS;AACX,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAkB;AAAA,MACvC,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,eAAW,IAAI,SAAS,SAAS,IAAK;AACtC,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,6BAClB,QACA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAmC;AAAA,MACxD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,QAAQ,OAAO;AAAA,MACjB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,yCAClB,QACA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,+BAA+B,OAAO,OAAO;AAAA,QAClD,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,gBAClB,QACA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO;AAAA,QACxC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,cAAc,OAAO;AAAA,MACvB;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,SAAS,QAAyB;AACpD,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK,WAAW,OAAO,OAAO,QAAQ;AAAA,QAC9E,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,OAAO,OAAO,OAAO;AAAA,QACrB,YAAY,OAAO,OAAO;AAAA,MAC5B;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,wBAClB,QAC0C;AAC1C,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAyC;AAAA,MAC9D,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,OAAO,OAAO,OAAO;AAAA,MACvB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,uBAClB,QACyC;AACzC,UAAM,EAAE,OAAO,UAAU,MAAM,IAAI,OAAO;AAC1C,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,KAAK,mBAAmB,QAAQ;AAAA,QAC1D,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAwC;AAAA,MAC7D,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA;AAAA,MAEhB,MAAM,EAAE,OAAO,SAAS,KAAK;AAAA,IAC/B,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,YAAY,QAA4B;AAC1D,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,eAAe,OAAO,OAAO;AAAA,QAC7B,YAAY,OAAO,OAAO;AAAA,MAC5B;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,gBAAgB,QAAgC;AAClE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,EAAE,eAAe,OAAO,OAAO,iBAAiB,CAAC,EAAE;AAAA,MACzD,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,qBAClB,QACA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,aAAoB,kBAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AACA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,CAAC;AAAA,MACP,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAoB,yBAClB,QAQe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AACA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,OAAO;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,aAAoB,cAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AACA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,aAAoB,sBAClB,QACqC;AACrC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AACA,UAAM,WAAW,MAAM,QAAoC;AAAA,MACzD,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,QAAQ,EAAE,UAAU,CAAC,EAAE;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAoB,yBAClB,QACqC;AACrC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AACA,UAAM,WAAW,MAAM,QAAoC;AAAA,MACzD,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,OAAO;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS,QAAQ,EAAE,UAAU,OAAO,KAAK,SAAS;AAAA,EAC3D;AAAA,EAEA,aAAoB,WAAW,QAAwB;AACrD,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,SAAS,OAAO,OAAO;AAAA,MACzB;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,qBAAqB,QAAkC;AACzE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,mBAAmB,OAAO,OAAO;AAAA,MACnC;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,kBAAkB,QAA+B;AACnE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,gBAAgB,OAAO,OAAO;AAAA,MAChC;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,gBAAgB,QAAgC;AAClE,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK,cAAc,OAAO,OAAO,WAAW;AAAA,QACpF,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAa;AAAA,MAClC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,OAAO,OAAO,WAAW,CAAC;AAAA,IAClC,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,4BAClB,QACA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK,4BAA4B,OAAO,OAAO,WAAW;AAAA,QAClG,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAA8B;AAAA,MACnD,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,WAAW,QAA2B;AACxD,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAQ;AAAA,MAC7B,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,OAAO,OAAO,OAAO;AAAA,QACrB,UAAU,OAAO,OAAO;AAAA,MAC1B;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,yBAClB,QAC2C;AAC3C,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,2BAA2B,OAAO,OAAO,WAAW;AAAA,QACzD,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAA0C;AAAA,MAC/D,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,8BAClB,QAC8C;AAC9C,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAA6C;AAAA,MAClE,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,SAAS,OAAO;AAAA,QAChB,SAAS,OAAO;AAAA,QAChB,qBAAqB,OAAO;AAAA,QAC5B,gBAAgB,OAAO;AAAA,QACvB,cAAc,OAAO;AAAA,QACrB,WAAW,OAAO;AAAA,QAClB,QAAQ,OAAO;AAAA,QACf,cAAc,OAAO;AAAA,QACrB,YAAY,OAAO;AAAA,MACrB;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,qBAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,mBAAmB,OAAO,OAAO,KAAK,CAAC;AAAA,QACjE,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,UAAU,OAAO,OAAO;AAAA,MAC1B;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,aAAoB,mBAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,SAAS,OAAO;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAoB,mBAClB,QACyC;AACzC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK;AAAA,QACL,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AAEA,UAAM,WAAW,MAAM,QAAwC;AAAA,MAC7D,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM,EAAE,MAAM,OAAO,MAAM,UAAU,OAAO,YAAY,MAAM;AAAA,MAC9D,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAClC,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,YAClB,QAIA;AACA,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,KAAK;AAAA,QACtC,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,QAAQ,OAAO;AAAA,MACf,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,MAAM;AAAA,QACJ,UAAU,OAAO;AAAA,MACnB;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAoB,oBAClB,QAC+B;AAC/B,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAA8B;AAAA,MACnD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,gBAClB,QAC+B;AAC/B,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAA8B;AAAA,MACnD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,kBAClB,QACoC;AACpC,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAmC;AAAA,MACxD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,aAAoB,aAAa,QAA2C;AAC1E,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,eAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAoB,eAClB,QACe;AACf,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,qBAAqB,OAAO,OAAO,KAAK;AAAA,QAC7C,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,QAAc;AAAA,MACnC,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -84,6 +84,24 @@ export interface RepointLlmSecretsForOrgResponse {
84
84
  secretsUpdated: number;
85
85
  failedClusterIds: string[];
86
86
  }
87
+ /**
88
+ * Request to remove the managed LLM connector secrets of every cluster of an
89
+ * org. Use it when the org loses its managed LLM key.
90
+ */
91
+ export interface RemoveLlmSecretsForOrgRequest extends RequestBaseParams {
92
+ params: {
93
+ orgId: string;
94
+ headers: {
95
+ [key: string]: string;
96
+ };
97
+ };
98
+ }
99
+ /** `secretsRemoved` counts clusters, as `secretsUpdated` does for re-point. */
100
+ export interface RemoveLlmSecretsForOrgResponse {
101
+ clustersChecked: number;
102
+ secretsRemoved: number;
103
+ failedClusterIds: string[];
104
+ }
87
105
  export type SpecExplainerFieldSource = 'plan' | 'generation' | 'planType' | 'override' | 'modification' | 'infra' | 'computed' | 'featureFlag' | 'org' | 'cluster';
88
106
  export interface SpecExplainerFieldAnnotation {
89
107
  source: SpecExplainerFieldSource;
@@ -507,6 +525,13 @@ export declare class ConsoleAdminService {
507
525
  * upstream, use `rotateLiteLLMKeySecretsForOrg`, which writes the key alone.
508
526
  */
509
527
  static repointLlmSecretsForOrg(params: RepointLlmSecretsForOrgRequest): Promise<RepointLlmSecretsForOrgResponse>;
528
+ /**
529
+ * Remove the managed LLM connector secrets of every cluster of an org.
530
+ *
531
+ * Console removes the API key, the API endpoint and the default model
532
+ * secrets, and keeps every other connector secret of the cluster.
533
+ */
534
+ static removeLlmSecretsForOrg(params: RemoveLlmSecretsForOrgRequest): Promise<RemoveLlmSecretsForOrgResponse>;
510
535
  static getSpecExplainer(params: GetSpecExplainerRequest): Promise<SpecExplainerResponse>;
511
536
  /**
512
537
  * Raw Kubernetes CRD state for a cluster (Console Admin debugging). The
@@ -1828,6 +1828,46 @@ class ConsoleAdminService {
1828
1828
  }
1829
1829
  return response.body;
1830
1830
  }
1831
+ /**
1832
+ * Remove the managed LLM connector secrets of every cluster of an org.
1833
+ *
1834
+ * Console removes the API key, the API endpoint and the default model
1835
+ * secrets, and keeps every other connector secret of the cluster.
1836
+ */
1837
+ static async removeLlmSecretsForOrg(params) {
1838
+ const serviceContext = {
1839
+ method: {
1840
+ name: `ConsoleAdminService.removeLlmSecretsForOrg`,
1841
+ url: `api/admin/clusters/org/${params.params.orgId}/litellm-secrets`,
1842
+ normalizedUrl: `api/admin/clusters/org/:orgId/litellm-secrets`,
1843
+ type: "delete"
1844
+ },
1845
+ source: params.config.metrics?.source || "unset",
1846
+ target: {
1847
+ name: "console",
1848
+ type: "internal"
1849
+ }
1850
+ };
1851
+ const response = await request({
1852
+ config: params.config,
1853
+ base: {
1854
+ id: "console"
1855
+ },
1856
+ responseType: "json",
1857
+ headers: params.params.headers,
1858
+ url: serviceContext.method.url,
1859
+ method: serviceContext.method.type,
1860
+ metricsDetails: serviceContext
1861
+ });
1862
+ if (!response.ok) {
1863
+ throw new HttpError(
1864
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
1865
+ response.status,
1866
+ response.statusText
1867
+ );
1868
+ }
1869
+ return response.body;
1870
+ }
1831
1871
  static async getSpecExplainer(params) {
1832
1872
  const serviceContext = {
1833
1873
  method: {