@camunda/ccma-api 0.0.4 → 0.0.6

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.
Files changed (34) hide show
  1. package/dist/index.d.ts +10 -4
  2. package/dist/index.js +6 -0
  3. package/dist/index.js.map +2 -2
  4. package/dist/services/ask-backend/ask-backend.service.d.ts +85 -0
  5. package/dist/services/ask-backend/ask-backend.service.js +378 -0
  6. package/dist/services/ask-backend/ask-backend.service.js.map +7 -0
  7. package/dist/services/console/console.admin.service.d.ts +65 -0
  8. package/dist/services/console/console.admin.service.js +155 -1
  9. package/dist/services/console/console.admin.service.js.map +2 -2
  10. package/dist/services/console/console.cluster-parameters.service.d.ts +1 -0
  11. package/dist/services/console/console.cluster-parameters.service.js.map +2 -2
  12. package/dist/services/console/console.cluster.service.d.ts +9 -0
  13. package/dist/services/console/console.cluster.service.js +28 -0
  14. package/dist/services/console/console.cluster.service.js.map +2 -2
  15. package/dist/services/console/console.clusterplan.modification.service.d.ts +4 -1
  16. package/dist/services/console/console.clusterplan.modification.service.js +29 -0
  17. package/dist/services/console/console.clusterplan.modification.service.js.map +2 -2
  18. package/dist/services/console/generation.service.d.ts +10 -0
  19. package/dist/services/console/generation.service.js +34 -0
  20. package/dist/services/console/generation.service.js.map +2 -2
  21. package/dist/services/glean/glean.service.d.ts +20 -0
  22. package/dist/services/glean/glean.service.js +49 -0
  23. package/dist/services/glean/glean.service.js.map +7 -0
  24. package/dist/services/incident-io/incident-io.service.d.ts +20 -0
  25. package/dist/services/incident-io/incident-io.service.js +67 -0
  26. package/dist/services/incident-io/incident-io.service.js.map +7 -0
  27. package/dist/services/incident-io/incident-io.service.spec.d.ts +1 -0
  28. package/dist/services/litellm/litellm.service.d.ts +5 -1
  29. package/dist/services/litellm/litellm.service.js +6 -0
  30. package/dist/services/litellm/litellm.service.js.map +2 -2
  31. package/dist/services/slack/slack.service.d.ts +37 -0
  32. package/dist/services/slack/slack.service.js +98 -0
  33. package/dist/services/slack/slack.service.js.map +2 -2
  34. package/package.json +3 -2
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/ask-backend/ask-backend.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 type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\nimport type { OpenIncident } from '../incident-io/incident-io.service.js'\n\nexport type { OpenIncident }\n\n/**\n * AskBackendService provides typed access to the ask-backend API endpoints.\n *\n * Unlike other services in this package that use `base: { id: 'system' }` for\n * URL resolution, ask-backend's base URL is supplied directly by the caller\n * (`baseUrl` on each request) because it is externally configurable at runtime\n * (e.g. `ASK_BACKEND_URL` in the MCP client) rather than being fixed per stage\n * in the environment configuration.\n */\nexport interface AskBackendBaseParams extends RequestBaseParams {\n baseUrl: string\n}\n\nexport interface AskBackendSearchOrgsParams extends AskBackendBaseParams {\n search?: string\n}\n\nexport interface AskBackendOrgParams extends AskBackendBaseParams {\n orgId: string\n}\n\nexport interface AskBackendRunQueryParams extends AskBackendBaseParams {\n sql: string\n}\n\n// Kept for backwards compat \u2014 callers of getOrgClusters (BigQuery) still use this\nexport interface AskBackendGetOrgClustersParams extends AskBackendBaseParams {\n orgId: string\n}\n\nexport interface OrgSummary {\n uuid: string\n name: string\n salesPlanType?: string\n clusterCount?: number\n}\n\nexport interface OrgDetail {\n uuid: string\n name: string\n salesPlanType?: string\n salesPlanName?: string\n created: string\n internal: boolean\n}\n\nexport interface OrgOwnerInfo {\n owner: string\n email: string\n first?: string\n last?: string\n}\n\nexport interface OrgMemberInfo {\n userId: string\n name: string\n email: string\n roles?: string[]\n}\n\nexport interface OrgClusterRow {\n orgId: string\n orgName: string\n clusterCount: number\n}\n\nfunction makeContext(\n name: string,\n url: string,\n normalizedUrl: string,\n type: 'get' | 'post',\n source: string,\n): RequestBaseServiceContext {\n return {\n method: { name, url, normalizedUrl, type },\n source,\n target: { name: 'ask-backend', type: 'internal' },\n }\n}\n\nexport class AskBackendService {\n public static async getOpenIncidents(\n params: AskBackendBaseParams,\n ): Promise<OpenIncident[]> {\n const url = `${params.baseUrl}/api/incident/incidents`\n const ctx = makeContext(\n 'AskBackendService.getOpenIncidents',\n url,\n '/api/incident/incidents',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<OpenIncident[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async searchOrgs(\n params: AskBackendSearchOrgsParams,\n ): Promise<OrgSummary[]> {\n const url = `${params.baseUrl}/api/accounts/orgs?search=${encodeURIComponent(params.search ?? '')}`\n const ctx = makeContext(\n 'AskBackendService.searchOrgs',\n `${params.baseUrl}/api/accounts/orgs`,\n '/api/accounts/orgs',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<OrgSummary[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async getOrgDetails(\n params: AskBackendOrgParams,\n ): Promise<OrgDetail> {\n const url = `${params.baseUrl}/api/accounts/orgs/${encodeURIComponent(params.orgId)}`\n const ctx = makeContext(\n 'AskBackendService.getOrgDetails',\n url,\n '/api/accounts/orgs/:orgId',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<OrgDetail>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getOrgOwner(\n params: AskBackendOrgParams,\n ): Promise<OrgOwnerInfo> {\n const url = `${params.baseUrl}/api/accounts/orgs/${encodeURIComponent(params.orgId)}/owner`\n const ctx = makeContext(\n 'AskBackendService.getOrgOwner',\n `${params.baseUrl}/api/accounts/orgs/:orgId/owner`,\n '/api/accounts/orgs/:orgId/owner',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<OrgOwnerInfo>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async getOrgMembers(\n params: AskBackendOrgParams,\n ): Promise<OrgMemberInfo[]> {\n const url = `${params.baseUrl}/api/accounts/orgs/${encodeURIComponent(params.orgId)}/members`\n const ctx = makeContext(\n 'AskBackendService.getOrgMembers',\n `${params.baseUrl}/api/accounts/orgs/:orgId/members`,\n '/api/accounts/orgs/:orgId/members',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<OrgMemberInfo[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async getOrgClustersFromConsole(\n params: AskBackendOrgParams,\n ): Promise<unknown[]> {\n const url = `${params.baseUrl}/api/accounts/orgs/${encodeURIComponent(params.orgId)}/clusters`\n const ctx = makeContext(\n 'AskBackendService.getOrgClustersFromConsole',\n `${params.baseUrl}/api/accounts/orgs/:orgId/clusters`,\n '/api/accounts/orgs/:orgId/clusters',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async getOrgLlmUsage(\n params: AskBackendOrgParams,\n ): Promise<Record<string, unknown>> {\n const url = `${params.baseUrl}/api/accounts/orgs/${encodeURIComponent(params.orgId)}/llm`\n const ctx = makeContext(\n 'AskBackendService.getOrgLlmUsage',\n `${params.baseUrl}/api/accounts/orgs/:orgId/llm`,\n '/api/accounts/orgs/:orgId/llm',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<Record<string, unknown>>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body!\n }\n\n public static async runBigQuery(\n params: AskBackendRunQueryParams,\n ): Promise<unknown[]> {\n const url = `${params.baseUrl}/api/bigquery/query`\n const ctx = makeContext(\n 'AskBackendService.runBigQuery',\n url,\n '/api/bigquery/query',\n 'post',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown[]>({\n ...params,\n url,\n method: 'post',\n body: { sql: params.sql },\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async getOrgValueMetrics(\n params: AskBackendOrgParams & { days?: number },\n ): Promise<unknown[]> {\n const qs = params.days !== undefined ? `?days=${params.days}` : ''\n const url = `${params.baseUrl}/api/accounts/orgs/${encodeURIComponent(params.orgId)}/value-metrics${qs}`\n const ctx = makeContext(\n 'AskBackendService.getOrgValueMetrics',\n `${params.baseUrl}/api/accounts/orgs/:orgId/value-metrics`,\n '/api/accounts/orgs/:orgId/value-metrics',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async listClusterPlanTypes(\n params: AskBackendBaseParams,\n ): Promise<unknown[]> {\n const url = `${params.baseUrl}/api/admin/cluster-plan-types`\n const ctx = makeContext(\n 'AskBackendService.listClusterPlanTypes',\n url,\n '/api/admin/cluster-plan-types',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async getClusterPlanType(\n params: AskBackendBaseParams & { planTypeId: string },\n ): Promise<unknown> {\n const url = `${params.baseUrl}/api/admin/cluster-plan-types/${encodeURIComponent(params.planTypeId)}`\n const ctx = makeContext(\n 'AskBackendService.getClusterPlanType',\n `${params.baseUrl}/api/admin/cluster-plan-types/:planTypeId`,\n '/api/admin/cluster-plan-types/:planTypeId',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async getGeneration(\n params: AskBackendBaseParams & { generationId: string },\n ): Promise<unknown> {\n const url = `${params.baseUrl}/api/admin/generations/${encodeURIComponent(params.generationId)}`\n const ctx = makeContext(\n 'AskBackendService.getGeneration',\n `${params.baseUrl}/api/admin/generations/:generationId`,\n '/api/admin/generations/:generationId',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n\n public static async getUpgradableGenerations(\n params: AskBackendBaseParams & { generationId: string },\n ): Promise<unknown[]> {\n const url = `${params.baseUrl}/api/admin/generations/${encodeURIComponent(params.generationId)}/upgradable`\n const ctx = makeContext(\n 'AskBackendService.getUpgradableGenerations',\n `${params.baseUrl}/api/admin/generations/:generationId/upgradable`,\n '/api/admin/generations/:generationId/upgradable',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async listConnections(\n params: AskBackendBaseParams & { strategy?: 'all' | 'waad' | 'samlp' },\n ): Promise<unknown[]> {\n const strategy = params.strategy ?? 'all'\n const url = `${params.baseUrl}/api/admin/connections?strategy=${strategy}`\n const ctx = makeContext(\n 'AskBackendService.listConnections',\n `${params.baseUrl}/api/admin/connections`,\n '/api/admin/connections',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<unknown[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n\n public static async getOrgClusters(\n params: AskBackendGetOrgClustersParams,\n ): Promise<OrgClusterRow[]> {\n const url = `${params.baseUrl}/api/bigquery/org-clusters?orgId=${encodeURIComponent(params.orgId)}`\n const ctx = makeContext(\n 'AskBackendService.getOrgClusters',\n `${params.baseUrl}/api/bigquery/org-clusters`,\n '/api/bigquery/org-clusters',\n 'get',\n params.config.metrics?.source ?? 'unset',\n )\n const response = await request<OrgClusterRow[]>({\n ...params,\n url,\n method: 'get',\n metricsDetails: ctx,\n })\n if (!response.ok) {\n throw new HttpError(\n `${ctx.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body ?? []\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,5 +1,6 @@
1
1
  import type { ClusterBulkOperationAck, ClusterBulkOperationDto, ClusterBulkOperationPostContent, ClusterModificationConfigDto, ClusterModificationDto, ClusterPlanTypeDto, ClusterUsageMetricsData, CommonClusterDto, UniqueTaskUser, ValueMetrics } from '@camunda/ccma-shared-types';
2
2
  import type { RequestBaseParams } from '../../types/general.types.js';
3
+ import type { OpenIncident } from '../incident-io/incident-io.service.js';
3
4
  export interface UpdateClusterToNewPlanTypeRequest extends RequestBaseParams {
4
5
  params: {
5
6
  orgId: string;
@@ -46,6 +47,45 @@ export interface CreateLiteLLMSecretsForOrgRequest extends RequestBaseParams {
46
47
  };
47
48
  };
48
49
  }
50
+ export type SpecExplainerFieldSource = 'plan' | 'generation' | 'planType' | 'override' | 'modification' | 'infra' | 'computed' | 'featureFlag' | 'org' | 'cluster';
51
+ export interface SpecExplainerFieldAnnotation {
52
+ source: SpecExplainerFieldSource;
53
+ sourcePath?: string;
54
+ sourceValue?: unknown;
55
+ finalValue: unknown;
56
+ transforms?: string[];
57
+ overrides?: Array<{
58
+ by: SpecExplainerFieldSource;
59
+ originalValue: unknown;
60
+ }>;
61
+ fallbackChain?: Array<{
62
+ source: SpecExplainerFieldSource;
63
+ value: unknown;
64
+ used: boolean;
65
+ }>;
66
+ }
67
+ export interface SpecExplainerResponse {
68
+ spec: Record<string, unknown>;
69
+ annotations: Record<string, SpecExplainerFieldAnnotation>;
70
+ sources: {
71
+ plan: Record<string, unknown>;
72
+ generation: Record<string, unknown>;
73
+ planType: Record<string, unknown>;
74
+ overrideEnvVars?: Record<string, unknown>;
75
+ activeModification?: {
76
+ planModifications: Array<{
77
+ key: string;
78
+ value: unknown;
79
+ }>;
80
+ };
81
+ featureFlags: Record<string, boolean>;
82
+ };
83
+ }
84
+ export interface GetSpecExplainerRequest extends RequestBaseParams {
85
+ params: {
86
+ clusterId: string;
87
+ };
88
+ }
49
89
  export interface GetAllClustersRequest extends RequestBaseParams {
50
90
  params: {
51
91
  headers: {
@@ -285,6 +325,7 @@ export declare class ConsoleAdminService {
285
325
  static deactivateModificationConfig(params: RequestBaseParams & {
286
326
  uuid: string;
287
327
  configId: string;
328
+ skipK8sUpdate?: boolean;
288
329
  }): Promise<ClusterModificationConfigDto | undefined>;
289
330
  static updateModificationConfigExpiration(params: RequestBaseParams & {
290
331
  uuid: string;
@@ -309,6 +350,16 @@ export declare class ConsoleAdminService {
309
350
  static deleteClusterBulkOperation(params: {
310
351
  uuid: string;
311
352
  } & RequestBaseParams): Promise<void>;
353
+ static getDbCorpses(params: RequestBaseParams): Promise<{
354
+ corpses: Array<{
355
+ clusterId: string;
356
+ orgId: string;
357
+ name: string;
358
+ created: string;
359
+ k8sContextUuid?: string;
360
+ k8sContext?: string;
361
+ }>;
362
+ }>;
312
363
  static getK8sCorpses(params: RequestBaseParams): Promise<{
313
364
  corpses: Array<{
314
365
  clusterId: string;
@@ -318,6 +369,13 @@ export declare class ConsoleAdminService {
318
369
  k8sContext?: string;
319
370
  }>;
320
371
  }>;
372
+ static deleteDbCorpses(params: RequestBaseParams): Promise<{
373
+ deleted: number;
374
+ corpses: Array<{
375
+ clusterId: string;
376
+ orgId: string;
377
+ }>;
378
+ }>;
321
379
  static deleteK8sCorpses(params: RequestBaseParams): Promise<{
322
380
  deleted: number;
323
381
  corpses: Array<{
@@ -326,4 +384,11 @@ export declare class ConsoleAdminService {
326
384
  }>;
327
385
  }>;
328
386
  static createLiteLLMSecretsForOrg(params: CreateLiteLLMSecretsForOrgRequest): Promise<void>;
387
+ static getSpecExplainer(params: GetSpecExplainerRequest): Promise<SpecExplainerResponse>;
388
+ static getOpenIncidents(params: RequestBaseParams): Promise<{
389
+ incidents: OpenIncident[];
390
+ }>;
391
+ static getClusterIncidents(params: RequestBaseParams & {
392
+ clusterId: string;
393
+ }): Promise<OpenIncident[]>;
329
394
  }
@@ -1184,7 +1184,7 @@ class ConsoleAdminService {
1184
1184
  return response.body;
1185
1185
  }
1186
1186
  static async deactivateModificationConfig(params) {
1187
- const { uuid, configId } = params;
1187
+ const { uuid, configId, skipK8sUpdate } = params;
1188
1188
  const serviceContext = {
1189
1189
  method: {
1190
1190
  name: `ConsoleAdminService.deactivateModificationConfig`,
@@ -1203,6 +1203,7 @@ class ConsoleAdminService {
1203
1203
  responseType: "json",
1204
1204
  url: serviceContext.method.url,
1205
1205
  method: serviceContext.method.type,
1206
+ body: { skipK8sUpdate },
1206
1207
  metricsDetails: serviceContext
1207
1208
  });
1208
1209
  if (!response.ok) {
@@ -1428,6 +1429,36 @@ class ConsoleAdminService {
1428
1429
  );
1429
1430
  }
1430
1431
  }
1432
+ static async getDbCorpses(params) {
1433
+ const serviceContext = {
1434
+ method: {
1435
+ name: `ConsoleAdminService.getDbCorpses`,
1436
+ url: `api/admin/clusters/db-corpses`,
1437
+ normalizedUrl: `api/admin/clusters/db-corpses`,
1438
+ type: "get"
1439
+ },
1440
+ source: params.config.metrics?.source || "unset",
1441
+ target: { name: "console", type: "internal" }
1442
+ };
1443
+ const response = await request({
1444
+ ...params,
1445
+ base: {
1446
+ id: "console"
1447
+ },
1448
+ responseType: "json",
1449
+ url: serviceContext.method.url,
1450
+ method: serviceContext.method.type,
1451
+ metricsDetails: serviceContext
1452
+ });
1453
+ if (!response.ok) {
1454
+ throw new HttpError(
1455
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
1456
+ response.status,
1457
+ response.statusText
1458
+ );
1459
+ }
1460
+ return response.body;
1461
+ }
1431
1462
  static async getK8sCorpses(params) {
1432
1463
  const serviceContext = {
1433
1464
  method: {
@@ -1458,6 +1489,36 @@ class ConsoleAdminService {
1458
1489
  }
1459
1490
  return response.body;
1460
1491
  }
1492
+ static async deleteDbCorpses(params) {
1493
+ const serviceContext = {
1494
+ method: {
1495
+ name: `ConsoleAdminService.deleteDbCorpses`,
1496
+ url: `api/admin/clusters/db-corpses`,
1497
+ normalizedUrl: `api/admin/clusters/db-corpses`,
1498
+ type: "delete"
1499
+ },
1500
+ source: params.config.metrics?.source || "unset",
1501
+ target: { name: "console", type: "internal" }
1502
+ };
1503
+ const response = await request({
1504
+ config: params.config,
1505
+ base: {
1506
+ id: "console"
1507
+ },
1508
+ responseType: "json",
1509
+ url: serviceContext.method.url,
1510
+ method: serviceContext.method.type,
1511
+ metricsDetails: serviceContext
1512
+ });
1513
+ if (!response.ok) {
1514
+ throw new HttpError(
1515
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
1516
+ response.status,
1517
+ response.statusText
1518
+ );
1519
+ }
1520
+ return response.body;
1521
+ }
1461
1522
  static async deleteK8sCorpses(params) {
1462
1523
  const serviceContext = {
1463
1524
  method: {
@@ -1520,6 +1581,99 @@ class ConsoleAdminService {
1520
1581
  );
1521
1582
  }
1522
1583
  }
1584
+ static async getSpecExplainer(params) {
1585
+ const serviceContext = {
1586
+ method: {
1587
+ name: `ConsoleAdminService.getSpecExplainer`,
1588
+ url: `api/admin/clusters/${params.params.clusterId}/spec-explainer`,
1589
+ normalizedUrl: `api/admin/clusters/:clusterId/spec-explainer`,
1590
+ type: "get"
1591
+ },
1592
+ source: params.config.metrics?.source || "unset",
1593
+ target: {
1594
+ name: "console",
1595
+ type: "internal"
1596
+ }
1597
+ };
1598
+ const response = await request({
1599
+ ...params,
1600
+ base: {
1601
+ id: "console"
1602
+ },
1603
+ url: serviceContext.method.url,
1604
+ method: serviceContext.method.type,
1605
+ metricsDetails: serviceContext
1606
+ });
1607
+ if (!response.ok) {
1608
+ throw new HttpError(
1609
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
1610
+ response.status,
1611
+ response.statusText
1612
+ );
1613
+ }
1614
+ return response.body;
1615
+ }
1616
+ static async getOpenIncidents(params) {
1617
+ const serviceContext = {
1618
+ method: {
1619
+ name: "ConsoleAdminService.getOpenIncidents",
1620
+ url: "api/admin/clusters/incidents",
1621
+ normalizedUrl: "api/admin/clusters/incidents",
1622
+ type: "get"
1623
+ },
1624
+ source: params.config.metrics?.source || "unset",
1625
+ target: {
1626
+ name: "console",
1627
+ type: "internal"
1628
+ }
1629
+ };
1630
+ const response = await request({
1631
+ ...params,
1632
+ base: { id: "console" },
1633
+ url: serviceContext.method.url,
1634
+ method: serviceContext.method.type,
1635
+ metricsDetails: serviceContext
1636
+ });
1637
+ if (!response.ok) {
1638
+ throw new HttpError(
1639
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
1640
+ response.status,
1641
+ response.statusText
1642
+ );
1643
+ }
1644
+ return response.body;
1645
+ }
1646
+ static async getClusterIncidents(params) {
1647
+ const url = `api/admin/clusters/${params.clusterId}/incidents`;
1648
+ const serviceContext = {
1649
+ method: {
1650
+ name: "ConsoleAdminService.getClusterIncidents",
1651
+ url,
1652
+ normalizedUrl: "api/admin/clusters/:clusterId/incidents",
1653
+ type: "get"
1654
+ },
1655
+ source: params.config.metrics?.source || "unset",
1656
+ target: {
1657
+ name: "console",
1658
+ type: "internal"
1659
+ }
1660
+ };
1661
+ const response = await request({
1662
+ ...params,
1663
+ base: { id: "console" },
1664
+ url: serviceContext.method.url,
1665
+ method: serviceContext.method.type,
1666
+ metricsDetails: serviceContext
1667
+ });
1668
+ if (!response.ok) {
1669
+ throw new HttpError(
1670
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
1671
+ response.status,
1672
+ response.statusText
1673
+ );
1674
+ }
1675
+ return response.body.incidents;
1676
+ }
1523
1677
  }
1524
1678
  export {
1525
1679
  ConsoleAdminService