@camunda/ccma-shared-types 0.2.0 → 0.5.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.
- package/dist/_tests/constants/failoverRegionPairs.const.spec.d.ts +1 -0
- package/dist/_tests/search/compiler.spec.d.ts +1 -0
- package/dist/_tests/search/parser.spec.d.ts +1 -0
- package/dist/_tests/search/registry.spec.d.ts +1 -0
- package/dist/_tests/types/ClusterPlanFields.type.spec.d.ts +1 -0
- package/dist/constants/failoverRegionPairs.const.d.ts +18 -0
- package/dist/constants/failoverRegionPairs.const.js +22 -0
- package/dist/constants/failoverRegionPairs.const.js.map +7 -0
- package/dist/constants/misc.const.d.ts +7 -0
- package/dist/constants/misc.const.js +2 -0
- package/dist/constants/misc.const.js.map +2 -2
- package/dist/dtos/Backup.dto.d.ts +5 -0
- package/dist/dtos/ClusterPlan.dto.d.ts +5 -0
- package/dist/dtos/ClusterPlanType.dto.d.ts +6 -0
- package/dist/dtos/ClusterSpecHistory.dto.d.ts +24 -0
- package/dist/dtos/ClusterSpecHistory.dto.js +1 -0
- package/dist/dtos/ClusterSpecHistory.dto.js.map +7 -0
- package/dist/dtos/CommonCluster.dto.d.ts +71 -6
- package/dist/dtos/ConsoleCluster.dto.d.ts +7 -0
- package/dist/dtos/ControlV2.dto.d.ts +121 -7
- package/dist/dtos/ExternalWebapp.dto.d.ts +89 -0
- package/dist/dtos/ExternalWebapp.dto.js +1 -0
- package/dist/dtos/ExternalWebapp.dto.js.map +7 -0
- package/dist/dtos/K8sContext.dto.d.ts +7 -0
- package/dist/dtos/Organization.dto.d.ts +2 -0
- package/dist/dtos/Organization.dto.js.map +1 -1
- package/dist/dtos/ReleaseTrainSanity.dto.d.ts +51 -0
- package/dist/dtos/ReleaseTrainSanity.dto.js +1 -0
- package/dist/dtos/ReleaseTrainSanity.dto.js.map +7 -0
- package/dist/dtos/SalesPlan.dto.js +4 -2
- package/dist/dtos/SalesPlan.dto.js.map +2 -2
- package/dist/dtos/StorybookConfig.dto.d.ts +39 -0
- package/dist/dtos/StorybookConfig.dto.js +1 -0
- package/dist/dtos/StorybookConfig.dto.js.map +7 -0
- package/dist/enums/AuditEntity.enum.d.ts +1 -0
- package/dist/enums/AuditEntity.enum.js +1 -0
- package/dist/enums/AuditEntity.enum.js.map +2 -2
- package/dist/enums/OrganizationRole.enum.d.ts +1 -2
- package/dist/enums/OrganizationRole.enum.js +7 -2
- package/dist/enums/OrganizationRole.enum.js.map +2 -2
- package/dist/enums/SystemAuditEntity.enum.d.ts +7 -2
- package/dist/enums/SystemAuditEntity.enum.js +5 -0
- package/dist/enums/SystemAuditEntity.enum.js.map +2 -2
- package/dist/index.d.ts +13 -5
- package/dist/index.js +39 -17
- package/dist/index.js.map +2 -2
- package/dist/permissions/combo.js +3 -0
- package/dist/permissions/combo.js.map +2 -2
- package/dist/permissions/console.permissions.d.ts +2 -0
- package/dist/permissions/console.permissions.js +7 -0
- package/dist/permissions/console.permissions.js.map +2 -2
- package/dist/permissions/profile.permissions.d.ts +14 -8
- package/dist/permissions/profile.permissions.js +16 -123
- package/dist/permissions/profile.permissions.js.map +2 -2
- package/dist/search/ast.d.ts +52 -0
- package/dist/search/ast.js +18 -0
- package/dist/search/ast.js.map +7 -0
- package/dist/search/cluster-search-fields.d.ts +11 -0
- package/dist/search/cluster-search-fields.js +136 -0
- package/dist/search/cluster-search-fields.js.map +7 -0
- package/dist/search/compiler.d.ts +48 -0
- package/dist/search/compiler.js +217 -0
- package/dist/search/compiler.js.map +7 -0
- package/dist/search/fields.d.ts +24 -0
- package/dist/search/fields.js +5 -0
- package/dist/search/fields.js.map +7 -0
- package/dist/search/index.d.ts +6 -0
- package/dist/search/index.js +33 -0
- package/dist/search/index.js.map +7 -0
- package/dist/search/organization-search-fields.d.ts +9 -0
- package/dist/search/organization-search-fields.js +50 -0
- package/dist/search/organization-search-fields.js.map +7 -0
- package/dist/search/parser.d.ts +7 -0
- package/dist/search/parser.js +324 -0
- package/dist/search/parser.js.map +7 -0
- package/dist/types/ClusterModification.type.d.ts +1 -0
- package/dist/types/ClusterPlanFields.type.d.ts +24 -0
- package/dist/types/ClusterPlanFields.type.js +591 -0
- package/dist/types/ClusterPlanFields.type.js.map +7 -0
- package/dist/types/ClusterPlanModification.type.d.ts +1 -0
- package/dist/types/EnterpriseIncludingValueMetrics.type.d.ts +1 -0
- package/dist/types/HdpTenantUsage.type.d.ts +4 -0
- package/dist/types/HdpTenantUsage.type.js +1 -0
- package/dist/types/HdpTenantUsage.type.js.map +7 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Region pairs supported for cross-region failover (#9120). Failover is only
|
|
3
|
+
* offered for dual-region clusters whose primary and secondary regions form
|
|
4
|
+
* one of these reverse-region pairs — cluster creation must be supported in
|
|
5
|
+
* both directions. Both directions of each pair are listed.
|
|
6
|
+
*
|
|
7
|
+
* This is the base set, enabled on every stage.
|
|
8
|
+
*
|
|
9
|
+
* Shared between console-backend (FailoverRouter guard) and c4 (hiding the
|
|
10
|
+
* failover action for unsupported pairs).
|
|
11
|
+
*/
|
|
12
|
+
export declare const SUPPORTED_FAILOVER_REGION_PAIRS: ReadonlySet<string>;
|
|
13
|
+
/**
|
|
14
|
+
* `stage` mirrors the featureflags `onlyDev` gate: the EU test pairs unlock only
|
|
15
|
+
* on 'local'/'dev'. Omitting stage (or passing any non-dev stage) allows the
|
|
16
|
+
* base set only, so prod never sees the dev pairs.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isSupportedFailoverRegionPair(regionA: string | undefined, regionB: string | undefined, stage?: string): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const SUPPORTED_FAILOVER_REGION_PAIRS = /* @__PURE__ */ new Set([
|
|
2
|
+
"us-east-2:us-west-2",
|
|
3
|
+
"us-west-2:us-east-2",
|
|
4
|
+
"us-east-2:us-east-1",
|
|
5
|
+
"us-east-1:us-east-2"
|
|
6
|
+
]);
|
|
7
|
+
const DEV_FAILOVER_REGION_PAIRS = /* @__PURE__ */ new Set([
|
|
8
|
+
"eu-west-1:eu-west-2",
|
|
9
|
+
"eu-west-2:eu-west-1"
|
|
10
|
+
]);
|
|
11
|
+
function isSupportedFailoverRegionPair(regionA, regionB, stage) {
|
|
12
|
+
if (!regionA || !regionB) return false;
|
|
13
|
+
const pair = `${regionA.toLowerCase()}:${regionB.toLowerCase()}`;
|
|
14
|
+
if (SUPPORTED_FAILOVER_REGION_PAIRS.has(pair)) return true;
|
|
15
|
+
const isDev = stage === "local" || stage === "dev";
|
|
16
|
+
return isDev && DEV_FAILOVER_REGION_PAIRS.has(pair);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
SUPPORTED_FAILOVER_REGION_PAIRS,
|
|
20
|
+
isSupportedFailoverRegionPair
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=failoverRegionPairs.const.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/constants/failoverRegionPairs.const.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\n/**\n * Region pairs supported for cross-region failover (#9120). Failover is only\n * offered for dual-region clusters whose primary and secondary regions form\n * one of these reverse-region pairs \u2014 cluster creation must be supported in\n * both directions. Both directions of each pair are listed.\n *\n * This is the base set, enabled on every stage.\n *\n * Shared between console-backend (FailoverRouter guard) and c4 (hiding the\n * failover action for unsupported pairs).\n */\nexport const SUPPORTED_FAILOVER_REGION_PAIRS: ReadonlySet<string> = new Set([\n 'us-east-2:us-west-2',\n 'us-west-2:us-east-2',\n 'us-east-2:us-east-1',\n 'us-east-1:us-east-2',\n])\n\n// Dev-only test pairs: EU failover validation on dev/local before prod rollout.\nconst DEV_FAILOVER_REGION_PAIRS: ReadonlySet<string> = new Set([\n 'eu-west-1:eu-west-2',\n 'eu-west-2:eu-west-1',\n])\n\n/**\n * `stage` mirrors the featureflags `onlyDev` gate: the EU test pairs unlock only\n * on 'local'/'dev'. Omitting stage (or passing any non-dev stage) allows the\n * base set only, so prod never sees the dev pairs.\n */\nexport function isSupportedFailoverRegionPair(\n regionA: string | undefined,\n regionB: string | undefined,\n stage?: string,\n): boolean {\n if (!regionA || !regionB) return false\n const pair = `${regionA.toLowerCase()}:${regionB.toLowerCase()}`\n if (SUPPORTED_FAILOVER_REGION_PAIRS.has(pair)) return true\n const isDev = stage === 'local' || stage === 'dev'\n return isDev && DEV_FAILOVER_REGION_PAIRS.has(pair)\n}\n"],
|
|
5
|
+
"mappings": "AAiBO,MAAM,kCAAuD,oBAAI,IAAI;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,MAAM,4BAAiD,oBAAI,IAAI;AAAA,EAC7D;AAAA,EACA;AACF,CAAC;AAOM,SAAS,8BACd,SACA,SACA,OACS;AACT,MAAI,CAAC,WAAW,CAAC,QAAS,QAAO;AACjC,QAAM,OAAO,GAAG,QAAQ,YAAY,CAAC,IAAI,QAAQ,YAAY,CAAC;AAC9D,MAAI,gCAAgC,IAAI,IAAI,EAAG,QAAO;AACtD,QAAM,QAAQ,UAAU,WAAW,UAAU;AAC7C,SAAO,SAAS,0BAA0B,IAAI,IAAI;AACpD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -16,6 +16,13 @@ export declare const MINIMUM_EYEPAIRS: {
|
|
|
16
16
|
CLUSTER_MODIFICATION: number;
|
|
17
17
|
};
|
|
18
18
|
export declare const MAX_HARDWARE_PACKAGE_COUNT = 4;
|
|
19
|
+
/**
|
|
20
|
+
* Minimum cluster (zeebe) version for the Optimize data-filters feature. Shared by
|
|
21
|
+
* the c4 settings tile, the new-cluster default, and CRD spec generation so the gate
|
|
22
|
+
* stays consistent. Stricter than the operator's own gate (Camunda >= 8.9.0-alpha1,
|
|
23
|
+
* where the exporter starts honoring the filters) — this is the product rollout gate.
|
|
24
|
+
*/
|
|
25
|
+
export declare const OPTIMIZE_FILTERING_MIN_VERSION = "8.10.0-alpha1";
|
|
19
26
|
export declare const SENTRY: {
|
|
20
27
|
dsn: {
|
|
21
28
|
trial: string;
|
|
@@ -18,6 +18,7 @@ const MINIMUM_EYEPAIRS = {
|
|
|
18
18
|
CLUSTER_MODIFICATION: 1
|
|
19
19
|
};
|
|
20
20
|
const MAX_HARDWARE_PACKAGE_COUNT = 4;
|
|
21
|
+
const OPTIMIZE_FILTERING_MIN_VERSION = "8.10.0-alpha1";
|
|
21
22
|
const SENTRY = {
|
|
22
23
|
dsn: {
|
|
23
24
|
trial: "https://a91625f8d3e1b34690588504ed020e14@o4507463051378688.ingest.de.sentry.io/4507463055376464",
|
|
@@ -107,6 +108,7 @@ export {
|
|
|
107
108
|
MAX_LENGTH_CLUSTER_NAME,
|
|
108
109
|
MINIMUM_EYEPAIRS,
|
|
109
110
|
NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS,
|
|
111
|
+
OPTIMIZE_FILTERING_MIN_VERSION,
|
|
110
112
|
SECRETS_MAX_LENGTH,
|
|
111
113
|
SENTRY,
|
|
112
114
|
STARTING_PRICE_PER_MONTH_IN_EURO,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/constants/misc.const.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\nexport const CONSOLE_API_USER_ID = 'console-api'\nexport const TEMPORARY_CLUSTER_NAME = 'Get Started'\nexport type Stage = 'local' | 'dev' | 'int' | 'prod'\nexport const HOTBACKUP_MIN_CREATE_PERIOD = 1000 * 60 * 60 * 0.25 // 15 minutes\n\nexport const SECRETS_MAX_LENGTH = 4096\nexport const FIRSTNAME_LASTNAME_MAX_LENGTH = 255\n\nexport const STARTING_PRICE_PER_MONTH_IN_EURO = 99\n\nexport const MAX_LENGTH_CLUSTER_NAME = 50\n\nexport const NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS = [\n 'CELP with sleeping clusters',\n 'Camunda Partner',\n]\n\nexport const MINIMUM_EYEPAIRS = {\n CLUSTER_DELETION: 3,\n CLUSTER_GENERATION_UPDATE: 2,\n CLUSTER_PLAN_UPDATE: 2,\n CLUSTER_PLAN_TYPE_UPDATE: 2,\n CLUSTER_PLAN_MODIFICATION: 1,\n CLUSTER_MODIFICATION: 1,\n}\n\nexport const MAX_HARDWARE_PACKAGE_COUNT = 4\n\nexport const SENTRY = {\n dsn: {\n trial:\n 'https://a91625f8d3e1b34690588504ed020e14@o4507463051378688.ingest.de.sentry.io/4507463055376464',\n console: {\n frontend:\n 'https://bbf8e6b13f91f7a49ab0b7f079ae8cc0@o132036.ingest.us.sentry.io/4507537062494208',\n backend:\n 'https://43de708d3ad0199f8c23975a3fd43aa0@o132036.ingest.us.sentry.io/4507537080188928',\n },\n accounts: {\n frontend:\n 'https://49c5d54e4d05418feb80cd4085fa32bd@o132036.ingest.us.sentry.io/4507537094541312',\n backend:\n 'https://d120a5f0acbf132b1edf58008c674164@o132036.ingest.us.sentry.io/4507537100505088',\n },\n },\n applicationKey: {\n console: 'ccma-console-frontend-0xDEADBEEF',\n accounts: 'ccma-accounts-frontend-0xDEADBEEF',\n },\n enabled: ['dev', 'int', 'prod'],\n ignoreTransactions: ['/events', '/assets', '/metrics'],\n ignoreErrors: [\n 'No activity within 120000 milliseconds. No response received. Reconnecting.',\n 'network error',\n 'Load failed',\n 'Non-Error promise rejection captured with value: Could not clear consent from root domain.',\n 'NetworkError when attempting to fetch resource.',\n 'The initialization timeout of 3000ms has been hit before the network request has completed.',\n 'Non-Error promise rejection captured with value: Object Not Found Matching Id:3, MethodName:update, ParamCount:4',\n 'Non-Error promise rejection captured with value: Object Not Found Matching Id:3, MethodName:simulateEvent, ParamCount:1',\n `Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`,\n `Failed to execute 'createPolicy' on 'TrustedTypePolicyFactory': Policy with name \"default\" already exists.`,\n // SSE errors after reload\n `TypeError: Error in input stream`,\n `TypeError: Failed to fetch`,\n `that is not 200. Aborting the connection.`,\n `chars received. Reconnecting.`,\n ],\n // value pair: [preprod, prod]\n config: {\n tracesSampleRate: {\n frontend: {\n accounts: [0.1, 0.005],\n console: [0.2, 0.01],\n },\n backend: {\n accounts: [0.1, 0.005],\n console: [0.0002, 0.0005],\n },\n },\n replaysSessionSampleRate: {\n frontend: {\n accounts: [0.005, 0.001],\n console: [0.005, 0.001],\n },\n },\n replaysOnErrorSampleRate: {\n frontend: {\n accounts: [0.005, 0.001],\n console: [0.005, 0.001],\n },\n },\n profilesSampleRate: {\n backend: {\n accounts: [0.001, 0.0002],\n console: [0.001, 0.0002],\n },\n frontend: {\n accounts: [0.001, 0.0002],\n console: [0.001, 0.0002],\n },\n },\n },\n configWeight: (env: string, values: number[]) => {\n if (values && values.length === 2) {\n if (env === 'prod') {\n return values[1]\n } else {\n return values[0]\n }\n }\n return 0.1\n },\n}\n"],
|
|
5
|
-
"mappings": "AAMO,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAE/B,MAAM,8BAA8B,MAAO,KAAK,KAAK;AAErD,MAAM,qBAAqB;AAC3B,MAAM,gCAAgC;AAEtC,MAAM,mCAAmC;AAEzC,MAAM,0BAA0B;AAEhC,MAAM,wDAAwD;AAAA,EACnE;AAAA,EACA;AACF;AAEO,MAAM,mBAAmB;AAAA,EAC9B,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,sBAAsB;AACxB;AAEO,MAAM,6BAA6B;
|
|
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\nexport const CONSOLE_API_USER_ID = 'console-api'\nexport const TEMPORARY_CLUSTER_NAME = 'Get Started'\nexport type Stage = 'local' | 'dev' | 'int' | 'prod'\nexport const HOTBACKUP_MIN_CREATE_PERIOD = 1000 * 60 * 60 * 0.25 // 15 minutes\n\nexport const SECRETS_MAX_LENGTH = 4096\nexport const FIRSTNAME_LASTNAME_MAX_LENGTH = 255\n\nexport const STARTING_PRICE_PER_MONTH_IN_EURO = 99\n\nexport const MAX_LENGTH_CLUSTER_NAME = 50\n\nexport const NAMES_OF_ENTERPRISE_SALESPLANS_WITH_SLEEPING_CLUSTERS = [\n 'CELP with sleeping clusters',\n 'Camunda Partner',\n]\n\nexport const MINIMUM_EYEPAIRS = {\n CLUSTER_DELETION: 3,\n CLUSTER_GENERATION_UPDATE: 2,\n CLUSTER_PLAN_UPDATE: 2,\n CLUSTER_PLAN_TYPE_UPDATE: 2,\n CLUSTER_PLAN_MODIFICATION: 1,\n CLUSTER_MODIFICATION: 1,\n}\n\nexport const MAX_HARDWARE_PACKAGE_COUNT = 4\n\n/**\n * Minimum cluster (zeebe) version for the Optimize data-filters feature. Shared by\n * the c4 settings tile, the new-cluster default, and CRD spec generation so the gate\n * stays consistent. Stricter than the operator's own gate (Camunda >= 8.9.0-alpha1,\n * where the exporter starts honoring the filters) \u2014 this is the product rollout gate.\n */\nexport const OPTIMIZE_FILTERING_MIN_VERSION = '8.10.0-alpha1'\n\nexport const SENTRY = {\n dsn: {\n trial:\n 'https://a91625f8d3e1b34690588504ed020e14@o4507463051378688.ingest.de.sentry.io/4507463055376464',\n console: {\n frontend:\n 'https://bbf8e6b13f91f7a49ab0b7f079ae8cc0@o132036.ingest.us.sentry.io/4507537062494208',\n backend:\n 'https://43de708d3ad0199f8c23975a3fd43aa0@o132036.ingest.us.sentry.io/4507537080188928',\n },\n accounts: {\n frontend:\n 'https://49c5d54e4d05418feb80cd4085fa32bd@o132036.ingest.us.sentry.io/4507537094541312',\n backend:\n 'https://d120a5f0acbf132b1edf58008c674164@o132036.ingest.us.sentry.io/4507537100505088',\n },\n },\n applicationKey: {\n console: 'ccma-console-frontend-0xDEADBEEF',\n accounts: 'ccma-accounts-frontend-0xDEADBEEF',\n },\n enabled: ['dev', 'int', 'prod'],\n ignoreTransactions: ['/events', '/assets', '/metrics'],\n ignoreErrors: [\n 'No activity within 120000 milliseconds. No response received. Reconnecting.',\n 'network error',\n 'Load failed',\n 'Non-Error promise rejection captured with value: Could not clear consent from root domain.',\n 'NetworkError when attempting to fetch resource.',\n 'The initialization timeout of 3000ms has been hit before the network request has completed.',\n 'Non-Error promise rejection captured with value: Object Not Found Matching Id:3, MethodName:update, ParamCount:4',\n 'Non-Error promise rejection captured with value: Object Not Found Matching Id:3, MethodName:simulateEvent, ParamCount:1',\n `Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.`,\n `Failed to execute 'createPolicy' on 'TrustedTypePolicyFactory': Policy with name \"default\" already exists.`,\n // SSE errors after reload\n `TypeError: Error in input stream`,\n `TypeError: Failed to fetch`,\n `that is not 200. Aborting the connection.`,\n `chars received. Reconnecting.`,\n ],\n // value pair: [preprod, prod]\n config: {\n tracesSampleRate: {\n frontend: {\n accounts: [0.1, 0.005],\n console: [0.2, 0.01],\n },\n backend: {\n accounts: [0.1, 0.005],\n console: [0.0002, 0.0005],\n },\n },\n replaysSessionSampleRate: {\n frontend: {\n accounts: [0.005, 0.001],\n console: [0.005, 0.001],\n },\n },\n replaysOnErrorSampleRate: {\n frontend: {\n accounts: [0.005, 0.001],\n console: [0.005, 0.001],\n },\n },\n profilesSampleRate: {\n backend: {\n accounts: [0.001, 0.0002],\n console: [0.001, 0.0002],\n },\n frontend: {\n accounts: [0.001, 0.0002],\n console: [0.001, 0.0002],\n },\n },\n },\n configWeight: (env: string, values: number[]) => {\n if (values && values.length === 2) {\n if (env === 'prod') {\n return values[1]\n } else {\n return values[0]\n }\n }\n return 0.1\n },\n}\n"],
|
|
5
|
+
"mappings": "AAMO,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB;AAE/B,MAAM,8BAA8B,MAAO,KAAK,KAAK;AAErD,MAAM,qBAAqB;AAC3B,MAAM,gCAAgC;AAEtC,MAAM,mCAAmC;AAEzC,MAAM,0BAA0B;AAEhC,MAAM,wDAAwD;AAAA,EACnE;AAAA,EACA;AACF;AAEO,MAAM,mBAAmB;AAAA,EAC9B,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,sBAAsB;AACxB;AAEO,MAAM,6BAA6B;AAQnC,MAAM,iCAAiC;AAEvC,MAAM,SAAS;AAAA,EACpB,KAAK;AAAA,IACH,OACE;AAAA,IACF,SAAS;AAAA,MACP,UACE;AAAA,MACF,SACE;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,MACR,UACE;AAAA,MACF,SACE;AAAA,IACJ;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,SAAS,CAAC,OAAO,OAAO,MAAM;AAAA,EAC9B,oBAAoB,CAAC,WAAW,WAAW,UAAU;AAAA,EACrD,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAAA,EAEA,QAAQ;AAAA,IACN,kBAAkB;AAAA,MAChB,UAAU;AAAA,QACR,UAAU,CAAC,KAAK,IAAK;AAAA,QACrB,SAAS,CAAC,KAAK,IAAI;AAAA,MACrB;AAAA,MACA,SAAS;AAAA,QACP,UAAU,CAAC,KAAK,IAAK;AAAA,QACrB,SAAS,CAAC,MAAQ,IAAM;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB,UAAU;AAAA,QACR,UAAU,CAAC,MAAO,IAAK;AAAA,QACvB,SAAS,CAAC,MAAO,IAAK;AAAA,MACxB;AAAA,IACF;AAAA,IACA,0BAA0B;AAAA,MACxB,UAAU;AAAA,QACR,UAAU,CAAC,MAAO,IAAK;AAAA,QACvB,SAAS,CAAC,MAAO,IAAK;AAAA,MACxB;AAAA,IACF;AAAA,IACA,oBAAoB;AAAA,MAClB,SAAS;AAAA,QACP,UAAU,CAAC,MAAO,IAAM;AAAA,QACxB,SAAS,CAAC,MAAO,IAAM;AAAA,MACzB;AAAA,MACA,UAAU;AAAA,QACR,UAAU,CAAC,MAAO,IAAM;AAAA,QACxB,SAAS,CAAC,MAAO,IAAM;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAAA,EACA,cAAc,CAAC,KAAa,WAAqB;AAC/C,QAAI,UAAU,OAAO,WAAW,GAAG;AACjC,UAAI,QAAQ,QAAQ;AAClB,eAAO,OAAO,CAAC;AAAA,MACjB,OAAO;AACL,eAAO,OAAO,CAAC;AAAA,MACjB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,4 +18,9 @@ export interface BackupDto {
|
|
|
18
18
|
* backup has no `generationUuid` at all (legacy backups).
|
|
19
19
|
*/
|
|
20
20
|
generationName?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Link to the incident Slack channel, from the `incident-link` annotation
|
|
23
|
+
* on the Backup CR. Only set on internal (incident) backups.
|
|
24
|
+
*/
|
|
25
|
+
incidentLink?: string;
|
|
21
26
|
}
|
|
@@ -7,4 +7,9 @@ export interface ClusterPlanDto {
|
|
|
7
7
|
createdBy?: string;
|
|
8
8
|
createdByName?: string;
|
|
9
9
|
performanceExpectations?: string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Number of clusters on this plan. Populated by the list endpoint
|
|
12
|
+
* (`GET api/plans`); absent on responses that don't compute it.
|
|
13
|
+
*/
|
|
14
|
+
clusterCount?: number;
|
|
10
15
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ClusterPlanTypeCategory } from '../types/ClusterPlanTypeCategory.type.js';
|
|
2
2
|
import type { ClusterPlanDto } from './ClusterPlan.dto.js';
|
|
3
|
+
import type { ClusterLimits } from './SalesPlan.dto.js';
|
|
3
4
|
export interface ClusterPlanTypeDto {
|
|
4
5
|
uuid: string;
|
|
5
6
|
name: string;
|
|
@@ -12,4 +13,9 @@ export interface ClusterPlanTypeDto {
|
|
|
12
13
|
availabilityClass?: string;
|
|
13
14
|
deprecated?: boolean;
|
|
14
15
|
category: ClusterPlanTypeCategory;
|
|
16
|
+
/**
|
|
17
|
+
* Per-component data-retention overrides, set via the Set Limits action.
|
|
18
|
+
* Returned by the plan-type endpoints (the entity column is `@Expose`d).
|
|
19
|
+
*/
|
|
20
|
+
limits?: ClusterLimits;
|
|
15
21
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Who made a cluster spec change (mirrors the console-backend entity). */
|
|
2
|
+
export interface ClusterSpecChangeActor {
|
|
3
|
+
type: 'user' | 'system' | 'migration';
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* One entry in a cluster's spec-change history. `snapshot` carries a full spec
|
|
8
|
+
* in `data`; `diff` carries per-key `{ from, to }` changes.
|
|
9
|
+
*/
|
|
10
|
+
export interface ClusterSpecChange {
|
|
11
|
+
timestamp: string;
|
|
12
|
+
type: 'snapshot' | 'diff';
|
|
13
|
+
actor: ClusterSpecChangeActor;
|
|
14
|
+
data: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Cluster spec-change history, exposed on the cluster detail read for callers
|
|
18
|
+
* with read-all-cluster-info. Populated by the console backend
|
|
19
|
+
* (`ClusterSpecHistoryData`).
|
|
20
|
+
*/
|
|
21
|
+
export interface ClusterSpecHistory {
|
|
22
|
+
lastFullSpec: Record<string, unknown>;
|
|
23
|
+
changes: ClusterSpecChange[];
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=ClusterSpecHistory.dto.js.map
|
|
@@ -1,4 +1,59 @@
|
|
|
1
1
|
import type { ClusterPlanTypeDto } from './ClusterPlanType.dto.js';
|
|
2
|
+
/** Inclusion/exclusion pattern lists. Exclusion takes precedence over inclusion;
|
|
3
|
+
* an empty inclusion list includes everything. */
|
|
4
|
+
export interface OptimizeFilteringIncludeExclude {
|
|
5
|
+
inclusion?: string[];
|
|
6
|
+
exclusion?: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Optimize Elasticsearch-exporter record filters. Mirrors the operator CRD shape
|
|
10
|
+
* (`spec.zeebe.exporterFilters`, camunda-operator#5683) so it maps through 1:1.
|
|
11
|
+
* `variableName.startWith` matches variable names by prefix — the nesting keeps
|
|
12
|
+
* room for `endWith`/exact match types without a breaking change.
|
|
13
|
+
*/
|
|
14
|
+
export interface OptimizeFilteringConfig {
|
|
15
|
+
processDefinition?: OptimizeFilteringIncludeExclude;
|
|
16
|
+
variableName?: {
|
|
17
|
+
startWith?: OptimizeFilteringIncludeExclude;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* PATCH-request variant of OptimizeFilteringConfig. Lists may arrive as null (older
|
|
22
|
+
* clients sent null for empty lists); the controller coerces null to undefined and
|
|
23
|
+
* reconstructs a clean OptimizeFilteringConfig before persisting.
|
|
24
|
+
*/
|
|
25
|
+
export interface OptimizeFilteringPatch {
|
|
26
|
+
processDefinition?: {
|
|
27
|
+
inclusion?: string[] | null;
|
|
28
|
+
exclusion?: string[] | null;
|
|
29
|
+
};
|
|
30
|
+
variableName?: {
|
|
31
|
+
startWith?: {
|
|
32
|
+
inclusion?: string[] | null;
|
|
33
|
+
exclusion?: string[] | null;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* BYOIDP Phase 1 (#3190): non-secret config for one custom OIDC provider.
|
|
39
|
+
* The client secret is NEVER part of this shape — it is written as a K8s Secret
|
|
40
|
+
* (`idp-config-{clusterId}`, keyed by `name`) and referenced from the CR only.
|
|
41
|
+
*/
|
|
42
|
+
export interface ExternalIdpConfig {
|
|
43
|
+
/** Registration id. Uppercase letters + digits, starts with a letter (`^[A-Z][A-Z0-9]*$`).
|
|
44
|
+
* Doubles as the Secret data key, the `..._OIDC_<NAME>_*` env-var segment, and `clientSecretRef.key`. */
|
|
45
|
+
name: string;
|
|
46
|
+
/** Friendly display name shown on the login picker. */
|
|
47
|
+
clientName: string;
|
|
48
|
+
issuerUri: string;
|
|
49
|
+
clientId: string;
|
|
50
|
+
scopes?: string[];
|
|
51
|
+
usernameClaim?: string;
|
|
52
|
+
groupsClaim?: string;
|
|
53
|
+
clientIdClaim?: string;
|
|
54
|
+
/** Rotation marker — bumped on every secret write so the CR changes and pods roll. */
|
|
55
|
+
secretUpdatedAt?: string;
|
|
56
|
+
}
|
|
2
57
|
export interface CommonClusterDto {
|
|
3
58
|
ownerId: string;
|
|
4
59
|
uuid: string;
|
|
@@ -20,7 +75,12 @@ export interface CommonClusterDto {
|
|
|
20
75
|
connectorsUrl?: string;
|
|
21
76
|
conditions?: Array<{
|
|
22
77
|
type: string;
|
|
78
|
+
/** k8s condition status: 'True' | 'False' | 'Unknown'. Present on the wire
|
|
79
|
+
* (the operator sets it); consumers use it to tell an active condition from
|
|
80
|
+
* a resolved one rather than relying on presence/absence alone. */
|
|
81
|
+
status?: string;
|
|
23
82
|
reason?: string;
|
|
83
|
+
message?: string;
|
|
24
84
|
lastTransitionTime?: string;
|
|
25
85
|
}>;
|
|
26
86
|
updateClusterStatus?: {
|
|
@@ -45,6 +105,11 @@ export interface CommonClusterDto {
|
|
|
45
105
|
*/
|
|
46
106
|
backupRegionCodes?: string[];
|
|
47
107
|
backupRegionId?: string | null;
|
|
108
|
+
/**
|
|
109
|
+
* True once the operator's initial primary→secondary bucket sync has
|
|
110
|
+
* completed. Failover is only offered when this is true.
|
|
111
|
+
*/
|
|
112
|
+
secondaryBucketSyncCompleted?: boolean;
|
|
48
113
|
encryption?: string;
|
|
49
114
|
primaryEncryptionKeyId?: string | null;
|
|
50
115
|
secondaryEncryptionKeyId?: string | null;
|
|
@@ -55,17 +120,15 @@ export interface CommonClusterDto {
|
|
|
55
120
|
clientCategories?: string[];
|
|
56
121
|
};
|
|
57
122
|
swagger?: boolean;
|
|
123
|
+
appIntegrationsEnabled?: boolean;
|
|
58
124
|
optimizeEnabled?: boolean;
|
|
59
|
-
optimizeFiltering?:
|
|
60
|
-
includeProcessIds?: string[];
|
|
61
|
-
excludeProcessIds?: string[];
|
|
62
|
-
includeVariableNames?: string[];
|
|
63
|
-
excludeVariableNames?: string[];
|
|
64
|
-
};
|
|
125
|
+
optimizeFiltering?: OptimizeFilteringConfig;
|
|
65
126
|
};
|
|
66
127
|
rba?: boolean;
|
|
67
128
|
identityBackendChecksEnabled?: boolean;
|
|
68
129
|
multiTenancyEnabled?: boolean;
|
|
130
|
+
externalIdpEnabled?: boolean;
|
|
131
|
+
externalIdpConfig?: ExternalIdpConfig;
|
|
69
132
|
enforceGroups?: boolean;
|
|
70
133
|
playMode?: boolean;
|
|
71
134
|
mcpEnabled?: boolean;
|
|
@@ -80,6 +143,8 @@ export interface CommonClusterDto {
|
|
|
80
143
|
planType: ClusterPlanTypeDto;
|
|
81
144
|
numberOfAllocatedHwPackages?: number;
|
|
82
145
|
restoreInProgress?: boolean;
|
|
146
|
+
restoreFailed?: boolean;
|
|
147
|
+
failedRestoreId?: string;
|
|
83
148
|
overrideEnvVars?: {
|
|
84
149
|
zeebeBroker: string | undefined;
|
|
85
150
|
zeebeGateway: string | undefined;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ClusterLabels } from '../types/CamundaClusterLabels.type.js';
|
|
2
2
|
import type { ClusterIpWhitelistDto } from './ClusterIpWhitelist.dto.js';
|
|
3
3
|
import type { ClusterPlanDto } from './ClusterPlan.dto.js';
|
|
4
|
+
import type { ClusterSpecHistory } from './ClusterSpecHistory.dto.js';
|
|
4
5
|
import type { CommonClusterDto } from './CommonCluster.dto.js';
|
|
5
6
|
import type { GenerationDto } from './Generations.dto.js';
|
|
6
7
|
import type { K8sContextDto } from './K8sContext.dto.js';
|
|
@@ -13,4 +14,10 @@ export interface ConsoleClusterDto extends CommonClusterDto {
|
|
|
13
14
|
hasOptimize?: boolean;
|
|
14
15
|
hasIdentity?: boolean;
|
|
15
16
|
ipWhitelist?: ClusterIpWhitelistDto[];
|
|
17
|
+
/**
|
|
18
|
+
* Spec-change history, present when the caller has read-all-cluster-info
|
|
19
|
+
* (the backend exposes it under that permission group). Backs the cluster
|
|
20
|
+
* "Spec Changes" tab.
|
|
21
|
+
*/
|
|
22
|
+
specHistory?: ClusterSpecHistory;
|
|
16
23
|
}
|
|
@@ -39,17 +39,38 @@ export interface OrgListItemV2Dto {
|
|
|
39
39
|
created: string;
|
|
40
40
|
internal: boolean;
|
|
41
41
|
salesPlanType?: SalesPlanType;
|
|
42
|
+
/** Concrete plan name (`SalesPlan.name`), distinct from the tier `salesPlanType`. */
|
|
43
|
+
salesPlanName?: string;
|
|
42
44
|
salesForceId?: string;
|
|
43
|
-
/** Batched per page (spec §9.4 B3); absent if the count lookup failed. */
|
|
44
|
-
clusterCount?: number;
|
|
45
45
|
}
|
|
46
46
|
export interface ListOrganizationsV2Params extends CursorParams {
|
|
47
47
|
q?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Lucene-style query over the org fields (see `ORGANIZATION_SEARCH_FIELDS`).
|
|
50
|
+
* ANDed with `q`/`filter` server-side; a bare term behaves like `q`.
|
|
51
|
+
*/
|
|
52
|
+
query?: string;
|
|
48
53
|
sort?: 'name' | 'created' | 'internal';
|
|
49
54
|
order?: 'asc' | 'desc';
|
|
50
55
|
filter?: {
|
|
51
56
|
internal?: boolean;
|
|
52
|
-
|
|
57
|
+
/** Sales plan tiers (`SalesPlanType`); multi-select, matched with `IN (...)`. */
|
|
58
|
+
salesPlanTypes?: SalesPlanType[];
|
|
59
|
+
/**
|
|
60
|
+
* Concrete plan names (`SalesPlan.name`, distinct from the tier); backs the
|
|
61
|
+
* "Sales plan name" filter. Multi-select, matched with `IN (...)`.
|
|
62
|
+
*/
|
|
63
|
+
salesPlanNames?: string[];
|
|
64
|
+
/** ISO-8601 lower bound on `created` (age-bucket filters). */
|
|
65
|
+
createdAfter?: string;
|
|
66
|
+
/** ISO-8601 upper bound on `created` (age-bucket filters). */
|
|
67
|
+
createdBefore?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Restrict to these org uuids. Backs cross-backend lookups (e.g. org by
|
|
70
|
+
* cluster name / client id: resolve owner ids on console, then filter
|
|
71
|
+
* here — spec §14.1 L).
|
|
72
|
+
*/
|
|
73
|
+
ids?: string[];
|
|
53
74
|
};
|
|
54
75
|
}
|
|
55
76
|
export interface OrgDetailV2Dto extends OrgListItemV2Dto {
|
|
@@ -77,12 +98,19 @@ export interface ClusterListItemV2Dto {
|
|
|
77
98
|
orgName: string;
|
|
78
99
|
/** Normalized server-side; augmented on the fly from the K8s watcher (§9.4 B1). */
|
|
79
100
|
status: string;
|
|
80
|
-
|
|
101
|
+
/** Plan type name (`ClusterPlanType.name`). Backs the "Plan type" column. */
|
|
102
|
+
planTypeName: string;
|
|
103
|
+
/** Concrete plan name (`ClusterPlan.name`). Backs the "Plan" column. */
|
|
104
|
+
planName?: string;
|
|
81
105
|
generation: string;
|
|
82
106
|
region: string;
|
|
83
107
|
/** Display-only; not a sort/filter key (§9.4 B2). */
|
|
84
108
|
load?: number;
|
|
85
109
|
updateAvailable: boolean;
|
|
110
|
+
/** Auto-update setting (distinct from `updateAvailable`). */
|
|
111
|
+
autoUpdate: boolean;
|
|
112
|
+
/** Release channel name, when the cluster is on one. */
|
|
113
|
+
channel?: string;
|
|
86
114
|
/** ISO-8601; part of the cursor key. */
|
|
87
115
|
created: string;
|
|
88
116
|
}
|
|
@@ -90,14 +118,74 @@ export interface ClusterListItemV2Dto {
|
|
|
90
118
|
export type ClusterDetailV2Dto = ClusterListItemV2Dto;
|
|
91
119
|
export interface ListClustersV2Params extends CursorParams {
|
|
92
120
|
q?: string;
|
|
93
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Lucene-style query over the cluster fields (see `CLUSTER_SEARCH_FIELDS`).
|
|
123
|
+
* ANDed with `q`/`filter` server-side; a bare term behaves like `q`.
|
|
124
|
+
*/
|
|
125
|
+
query?: string;
|
|
126
|
+
/**
|
|
127
|
+
* Server-side sort key. Beyond `name`/`created`, the clusters list also sorts
|
|
128
|
+
* by the DB-backed columns behind these list columns (the values are the
|
|
129
|
+
* frontend column `key`s, mapped to SQL expressions in the controller):
|
|
130
|
+
* `orgName` (owner id), `autoUpdate`, `planName`, `planTypeName`, `generation`,
|
|
131
|
+
* `channel`. `status`/`region` are intentionally excluded — they're computed
|
|
132
|
+
* from live K8s state / context config, not SQL columns.
|
|
133
|
+
*/
|
|
134
|
+
sort?: 'name' | 'created' | 'orgName' | 'autoUpdate' | 'planName' | 'planTypeName' | 'generation' | 'channel';
|
|
94
135
|
order?: 'asc' | 'desc';
|
|
95
136
|
filter?: {
|
|
96
137
|
status?: string;
|
|
138
|
+
/**
|
|
139
|
+
* Cluster plan TYPE name (maps to `planType.name`; legacy single-value
|
|
140
|
+
* param, still used by the plan-type detail page's cluster-distribution
|
|
141
|
+
* read — kept alongside `planTypeNames` rather than replaced).
|
|
142
|
+
*/
|
|
97
143
|
plan?: string;
|
|
98
|
-
|
|
99
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Restrict to these plan TYPE names (`planType.name`); the Control
|
|
146
|
+
* clusters list's multi-select "Plan type" filter.
|
|
147
|
+
*/
|
|
148
|
+
planTypeNames?: string[];
|
|
149
|
+
/**
|
|
150
|
+
* Restrict to these concrete plan names (`plan.name`, the `ClusterPlan`
|
|
151
|
+
* entity — NOT the plan type); backs the Control clusters list's "Plan"
|
|
152
|
+
* filter, whose dropdown is sourced from `ClusterPlan` via
|
|
153
|
+
* `/clusters/parameters`. Corrected in #9325 (second pass): a prior fix
|
|
154
|
+
* on this branch mistakenly repointed this at `planType.name` to match a
|
|
155
|
+
* dropdown that was, at the time, wrongly sourced from `ClusterPlanType`
|
|
156
|
+
* — but the dropdown was the actual bug. Both the dropdown and this query
|
|
157
|
+
* now consistently reference `ClusterPlan`. Distinct from `planTypeNames`
|
|
158
|
+
* above, which is the separate "Plan type" filter over `ClusterPlanType`.
|
|
159
|
+
*/
|
|
160
|
+
planNames?: string[];
|
|
161
|
+
/** Restrict to these generation names (`generation.name`). */
|
|
162
|
+
generationNames?: string[];
|
|
163
|
+
/** Restrict to these region names (resolved via the k8s-context config). */
|
|
164
|
+
regions?: string[];
|
|
165
|
+
/** Restrict to these cloud providers (resolved via the k8s-context config). */
|
|
166
|
+
providers?: string[];
|
|
167
|
+
/** Exact k8s context uuid. */
|
|
168
|
+
k8sContext?: string;
|
|
100
169
|
orgId?: string;
|
|
170
|
+
/** Restrict to these owner org uuids (cross-backend sales-plan filters). */
|
|
171
|
+
orgIds?: string[];
|
|
172
|
+
/** Restrict to these cluster uuids (prefilter-by-id). */
|
|
173
|
+
ids?: string[];
|
|
174
|
+
/** Auto-update on/off. */
|
|
175
|
+
autoUpdate?: boolean;
|
|
176
|
+
/** Internal (Camunda-owned) clusters only / excluded. */
|
|
177
|
+
internal?: boolean;
|
|
178
|
+
/** Only clusters with (true) / without (false) an active modification. */
|
|
179
|
+
hasActiveModification?: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Zeebe minor-version prefix match on the generation's versions (e.g.
|
|
182
|
+
* "8.7" matches zeebe 8.7.x).
|
|
183
|
+
*/
|
|
184
|
+
minorVersion?: string;
|
|
185
|
+
/** Restrict to these release channel names. */
|
|
186
|
+
channels?: string[];
|
|
187
|
+
/** ISO-8601 lower bound on `created` (e.g. "created in the last 7 days"). */
|
|
188
|
+
createdAfter?: string;
|
|
101
189
|
};
|
|
102
190
|
}
|
|
103
191
|
export interface ClusterParameterOptionV2Dto {
|
|
@@ -109,3 +197,29 @@ export interface ClusterParametersV2Dto {
|
|
|
109
197
|
generations: ClusterParameterOptionV2Dto[];
|
|
110
198
|
regions: ClusterParameterOptionV2Dto[];
|
|
111
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Aggregated cluster distribution counts (GET /v2/clusters/facets), backing
|
|
202
|
+
* the list page's distribution charts and quick-filter tiles without a
|
|
203
|
+
* client-side full-table scan (spec §14.0 hybrid model). SQL-backed facets
|
|
204
|
+
* (generation/planType/channel/autoUpdate) come from GROUP BYs; status and
|
|
205
|
+
* provider are aggregated in-app from the K8s watcher / context config.
|
|
206
|
+
*/
|
|
207
|
+
export interface ClusterFacetsV2Dto {
|
|
208
|
+
total: number;
|
|
209
|
+
status: Record<string, number>;
|
|
210
|
+
generation: Record<string, number>;
|
|
211
|
+
planType: Record<string, number>;
|
|
212
|
+
channel: Record<string, number>;
|
|
213
|
+
provider: Record<string, number>;
|
|
214
|
+
autoUpdate: {
|
|
215
|
+
on: number;
|
|
216
|
+
off: number;
|
|
217
|
+
};
|
|
218
|
+
/** Clusters with an active (non-archived) modification. */
|
|
219
|
+
activeModifications: number;
|
|
220
|
+
}
|
|
221
|
+
/** Cluster/owner resolution for a Zeebe client id (cross-backend org search). */
|
|
222
|
+
export interface ClusterByClientV2Dto {
|
|
223
|
+
clusterId: string;
|
|
224
|
+
orgId: string;
|
|
225
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DTOs for the Console/Accounts **external** API surface
|
|
3
|
+
* (`external/organizations/my`, `external/organizations/:orgId/clusters`).
|
|
4
|
+
*
|
|
5
|
+
* These are the cross-origin, CORS-enabled shapes a Camunda webapp
|
|
6
|
+
* (console, modeler, operate, …) receives when it builds navigation. They are
|
|
7
|
+
* intentionally *not* the internal `OrganizationDto` / `ConsoleClusterDto`
|
|
8
|
+
* (those carry admin-only fields and a different permission model). Keep these
|
|
9
|
+
* in sync with the console-backend `external/*` routers.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A navigable Camunda webapp. `identity` is the legacy alias of `admin`
|
|
13
|
+
* (renamed in 8.9.0-alpha5); both are kept so older clusters that still expose
|
|
14
|
+
* `identity` endpoints/status render correctly. Prefer `admin` for new code and
|
|
15
|
+
* resolve the display alias per cluster with `resolveAdminAppName`.
|
|
16
|
+
*/
|
|
17
|
+
export type CamundaWebApp = 'console' | 'modeler' | 'tasklist' | 'operate' | 'optimize' | 'identity' | 'admin';
|
|
18
|
+
/**
|
|
19
|
+
* `CamundaWebApp` plus `zeebe`. Cluster health is keyed by this: admin/identity
|
|
20
|
+
* have no dedicated health status and ride zeebe's ingress, so navigation uses
|
|
21
|
+
* `zeebe` as their health proxy (see `isAppHealthyOnCluster`).
|
|
22
|
+
*/
|
|
23
|
+
export type CamundaWebAppWithZeebe = CamundaWebApp | 'zeebe';
|
|
24
|
+
interface ExternalOrgClusterPermission {
|
|
25
|
+
read: boolean;
|
|
26
|
+
}
|
|
27
|
+
interface ExternalOrgCrudPermission {
|
|
28
|
+
read: boolean;
|
|
29
|
+
create: boolean;
|
|
30
|
+
update: boolean;
|
|
31
|
+
delete: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Organization as returned by `GET external/organizations/my`.
|
|
35
|
+
*
|
|
36
|
+
* Only the fields navigation needs are typed. `permissions` mirrors the
|
|
37
|
+
* external accounts shape and backs `hasReadPermissionForApp` and the
|
|
38
|
+
* cluster-create gate; every level is optional because the backend omits
|
|
39
|
+
* branches the caller has no access to.
|
|
40
|
+
*/
|
|
41
|
+
export interface ExternalOrganizationDto {
|
|
42
|
+
uuid: string;
|
|
43
|
+
name: string;
|
|
44
|
+
salesPlan?: {
|
|
45
|
+
type: string;
|
|
46
|
+
trialExpired?: boolean;
|
|
47
|
+
};
|
|
48
|
+
permissions?: {
|
|
49
|
+
cluster?: Partial<Record<CamundaWebApp, ExternalOrgClusterPermission>>;
|
|
50
|
+
org?: {
|
|
51
|
+
billing?: ExternalOrgCrudPermission;
|
|
52
|
+
clusters?: ExternalOrgCrudPermission;
|
|
53
|
+
webide?: ExternalOrgCrudPermission;
|
|
54
|
+
settings?: ExternalOrgCrudPermission;
|
|
55
|
+
users?: {
|
|
56
|
+
owner?: ExternalOrgCrudPermission;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Cluster as returned by `GET external/organizations/:orgId/clusters`.
|
|
63
|
+
*
|
|
64
|
+
* `endpoints` and `status` are keyed per webapp; both are partial because a
|
|
65
|
+
* cluster only exposes the apps its generation/plan includes. `status` values
|
|
66
|
+
* are backend health strings (e.g. `'Healthy'`); navigation treats a link as
|
|
67
|
+
* usable only when the app (or its zeebe proxy) is `'Healthy'`. `labels.camunda`
|
|
68
|
+
* carries the stage tag (`[0]` is the `CamundaClusterStage`).
|
|
69
|
+
*/
|
|
70
|
+
export interface ExternalClusterDto {
|
|
71
|
+
uuid: string;
|
|
72
|
+
name: string;
|
|
73
|
+
status?: Partial<Record<CamundaWebAppWithZeebe, string>>;
|
|
74
|
+
endpoints?: Partial<Record<CamundaWebApp, string>>;
|
|
75
|
+
labels?: {
|
|
76
|
+
camunda?: string[];
|
|
77
|
+
};
|
|
78
|
+
generation?: {
|
|
79
|
+
name?: string;
|
|
80
|
+
versions?: {
|
|
81
|
+
zeebe?: string;
|
|
82
|
+
operate?: string;
|
|
83
|
+
tasklist?: string;
|
|
84
|
+
optimize?: string;
|
|
85
|
+
connectors?: string;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=ExternalWebapp.dto.js.map
|
|
@@ -32,6 +32,13 @@ export interface K8sContext {
|
|
|
32
32
|
docker_registry: string;
|
|
33
33
|
project_id?: string;
|
|
34
34
|
project_name?: string;
|
|
35
|
+
tsuga_cluster_id?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Number of clusters on this context. Set by `GET api/admin/k8sContexts` only
|
|
38
|
+
* when queried with `withClusterCounts` (requires the `multiCluster.admin`
|
|
39
|
+
* permission); absent otherwise.
|
|
40
|
+
*/
|
|
41
|
+
clusterCount?: number;
|
|
35
42
|
}
|
|
36
43
|
export interface K8sConfig {
|
|
37
44
|
kubernetes_context: {
|