@camunda/ccma-shared-types 0.2.0 → 0.4.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/constants/failoverRegionPairs.const.d.ts +11 -0
- package/dist/constants/failoverRegionPairs.const.js +17 -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/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 +64 -6
- package/dist/dtos/ConsoleCluster.dto.d.ts +7 -0
- package/dist/dtos/ControlV2.dto.d.ts +66 -0
- 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 +1 -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 +0 -2
- package/dist/enums/OrganizationRole.enum.js +0 -2
- package/dist/enums/OrganizationRole.enum.js.map +2 -2
- package/dist/index.d.ts +8 -4
- package/dist/index.js +9 -17
- package/dist/index.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/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
* Shared between console-backend (FailoverRouter guard) and c4 (hiding the
|
|
8
|
+
* failover action for unsupported pairs).
|
|
9
|
+
*/
|
|
10
|
+
export declare const SUPPORTED_FAILOVER_REGION_PAIRS: ReadonlySet<string>;
|
|
11
|
+
export declare function isSupportedFailoverRegionPair(regionA: string | undefined, regionB: string | undefined): boolean;
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
function isSupportedFailoverRegionPair(regionA, regionB) {
|
|
8
|
+
if (!regionA || !regionB) return false;
|
|
9
|
+
return SUPPORTED_FAILOVER_REGION_PAIRS.has(
|
|
10
|
+
`${regionA.toLowerCase()}:${regionB.toLowerCase()}`
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
SUPPORTED_FAILOVER_REGION_PAIRS,
|
|
15
|
+
isSupportedFailoverRegionPair
|
|
16
|
+
};
|
|
17
|
+
//# 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 * 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\nexport function isSupportedFailoverRegionPair(\n regionA: string | undefined,\n regionB: string | undefined,\n): boolean {\n if (!regionA || !regionB) return false\n return SUPPORTED_FAILOVER_REGION_PAIRS.has(\n `${regionA.toLowerCase()}:${regionB.toLowerCase()}`,\n )\n}\n"],
|
|
5
|
+
"mappings": "AAeO,MAAM,kCAAuD,oBAAI,IAAI;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,8BACd,SACA,SACS;AACT,MAAI,CAAC,WAAW,CAAC,QAAS,QAAO;AACjC,SAAO,gCAAgC;AAAA,IACrC,GAAG,QAAQ,YAAY,CAAC,IAAI,QAAQ,YAAY,CAAC;AAAA,EACnD;AACF;",
|
|
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
|
}
|
|
@@ -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;
|
|
@@ -45,6 +100,11 @@ export interface CommonClusterDto {
|
|
|
45
100
|
*/
|
|
46
101
|
backupRegionCodes?: string[];
|
|
47
102
|
backupRegionId?: string | null;
|
|
103
|
+
/**
|
|
104
|
+
* True once the operator's initial primary→secondary bucket sync has
|
|
105
|
+
* completed. Failover is only offered when this is true.
|
|
106
|
+
*/
|
|
107
|
+
secondaryBucketSyncCompleted?: boolean;
|
|
48
108
|
encryption?: string;
|
|
49
109
|
primaryEncryptionKeyId?: string | null;
|
|
50
110
|
secondaryEncryptionKeyId?: string | null;
|
|
@@ -55,17 +115,15 @@ export interface CommonClusterDto {
|
|
|
55
115
|
clientCategories?: string[];
|
|
56
116
|
};
|
|
57
117
|
swagger?: boolean;
|
|
118
|
+
appIntegrationsEnabled?: boolean;
|
|
58
119
|
optimizeEnabled?: boolean;
|
|
59
|
-
optimizeFiltering?:
|
|
60
|
-
includeProcessIds?: string[];
|
|
61
|
-
excludeProcessIds?: string[];
|
|
62
|
-
includeVariableNames?: string[];
|
|
63
|
-
excludeVariableNames?: string[];
|
|
64
|
-
};
|
|
120
|
+
optimizeFiltering?: OptimizeFilteringConfig;
|
|
65
121
|
};
|
|
66
122
|
rba?: boolean;
|
|
67
123
|
identityBackendChecksEnabled?: boolean;
|
|
68
124
|
multiTenancyEnabled?: boolean;
|
|
125
|
+
externalIdpEnabled?: boolean;
|
|
126
|
+
externalIdpConfig?: ExternalIdpConfig;
|
|
69
127
|
enforceGroups?: boolean;
|
|
70
128
|
playMode?: boolean;
|
|
71
129
|
mcpEnabled?: boolean;
|
|
@@ -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
|
}
|
|
@@ -50,6 +50,16 @@ export interface ListOrganizationsV2Params extends CursorParams {
|
|
|
50
50
|
filter?: {
|
|
51
51
|
internal?: boolean;
|
|
52
52
|
salesPlanType?: SalesPlanType;
|
|
53
|
+
/** ISO-8601 lower bound on `created` (age-bucket filters). */
|
|
54
|
+
createdAfter?: string;
|
|
55
|
+
/** ISO-8601 upper bound on `created` (age-bucket filters). */
|
|
56
|
+
createdBefore?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Restrict to these org uuids. Backs cross-backend lookups (e.g. org by
|
|
59
|
+
* cluster name / client id: resolve owner ids on console, then filter
|
|
60
|
+
* here — spec §14.1 L).
|
|
61
|
+
*/
|
|
62
|
+
ids?: string[];
|
|
53
63
|
};
|
|
54
64
|
}
|
|
55
65
|
export interface OrgDetailV2Dto extends OrgListItemV2Dto {
|
|
@@ -83,6 +93,10 @@ export interface ClusterListItemV2Dto {
|
|
|
83
93
|
/** Display-only; not a sort/filter key (§9.4 B2). */
|
|
84
94
|
load?: number;
|
|
85
95
|
updateAvailable: boolean;
|
|
96
|
+
/** Auto-update setting (distinct from `updateAvailable`). */
|
|
97
|
+
autoUpdate: boolean;
|
|
98
|
+
/** Release channel name, when the cluster is on one. */
|
|
99
|
+
channel?: string;
|
|
86
100
|
/** ISO-8601; part of the cursor key. */
|
|
87
101
|
created: string;
|
|
88
102
|
}
|
|
@@ -94,10 +108,36 @@ export interface ListClustersV2Params extends CursorParams {
|
|
|
94
108
|
order?: 'asc' | 'desc';
|
|
95
109
|
filter?: {
|
|
96
110
|
status?: string;
|
|
111
|
+
/** Cluster plan TYPE name (maps to `planType.name`; legacy param name). */
|
|
97
112
|
plan?: string;
|
|
113
|
+
/** Cluster plan name (the concrete `plan.name`, not the type). */
|
|
114
|
+
planName?: string;
|
|
98
115
|
generation?: string;
|
|
99
116
|
region?: string;
|
|
117
|
+
/** Cloud provider (resolved via the k8s-context config, like `region`). */
|
|
118
|
+
provider?: string;
|
|
119
|
+
/** Exact k8s context uuid. */
|
|
120
|
+
k8sContext?: string;
|
|
100
121
|
orgId?: string;
|
|
122
|
+
/** Restrict to these owner org uuids (cross-backend sales-plan filters). */
|
|
123
|
+
orgIds?: string[];
|
|
124
|
+
/** Restrict to these cluster uuids (prefilter-by-id). */
|
|
125
|
+
ids?: string[];
|
|
126
|
+
/** Auto-update on/off. */
|
|
127
|
+
autoUpdate?: boolean;
|
|
128
|
+
/** Internal (Camunda-owned) clusters only / excluded. */
|
|
129
|
+
internal?: boolean;
|
|
130
|
+
/** Only clusters with (true) / without (false) an active modification. */
|
|
131
|
+
hasActiveModification?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Zeebe minor-version prefix match on the generation's versions (e.g.
|
|
134
|
+
* "8.7" matches zeebe 8.7.x).
|
|
135
|
+
*/
|
|
136
|
+
minorVersion?: string;
|
|
137
|
+
/** Release channel name. */
|
|
138
|
+
channel?: string;
|
|
139
|
+
/** ISO-8601 lower bound on `created` (e.g. "created in the last 7 days"). */
|
|
140
|
+
createdAfter?: string;
|
|
101
141
|
};
|
|
102
142
|
}
|
|
103
143
|
export interface ClusterParameterOptionV2Dto {
|
|
@@ -109,3 +149,29 @@ export interface ClusterParametersV2Dto {
|
|
|
109
149
|
generations: ClusterParameterOptionV2Dto[];
|
|
110
150
|
regions: ClusterParameterOptionV2Dto[];
|
|
111
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Aggregated cluster distribution counts (GET /v2/clusters/facets), backing
|
|
154
|
+
* the list page's distribution charts and quick-filter tiles without a
|
|
155
|
+
* client-side full-table scan (spec §14.0 hybrid model). SQL-backed facets
|
|
156
|
+
* (generation/planType/channel/autoUpdate) come from GROUP BYs; status and
|
|
157
|
+
* provider are aggregated in-app from the K8s watcher / context config.
|
|
158
|
+
*/
|
|
159
|
+
export interface ClusterFacetsV2Dto {
|
|
160
|
+
total: number;
|
|
161
|
+
status: Record<string, number>;
|
|
162
|
+
generation: Record<string, number>;
|
|
163
|
+
planType: Record<string, number>;
|
|
164
|
+
channel: Record<string, number>;
|
|
165
|
+
provider: Record<string, number>;
|
|
166
|
+
autoUpdate: {
|
|
167
|
+
on: number;
|
|
168
|
+
off: number;
|
|
169
|
+
};
|
|
170
|
+
/** Clusters with an active (non-archived) modification. */
|
|
171
|
+
activeModifications: number;
|
|
172
|
+
}
|
|
173
|
+
/** Cluster/owner resolution for a Zeebe client id (cross-backend org search). */
|
|
174
|
+
export interface ClusterByClientV2Dto {
|
|
175
|
+
clusterId: string;
|
|
176
|
+
orgId: string;
|
|
177
|
+
}
|
|
@@ -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
|
|
@@ -62,7 +62,8 @@ function allSalesPlanLimits() {
|
|
|
62
62
|
key: "maxMembers",
|
|
63
63
|
type: "number",
|
|
64
64
|
description: "used to limit the amount of collaborators within one organization. default = no limit",
|
|
65
|
-
isClusterBasedLimit: false
|
|
65
|
+
isClusterBasedLimit: false,
|
|
66
|
+
validate: (input) => Number.isInteger(input) && input >= 0
|
|
66
67
|
},
|
|
67
68
|
{
|
|
68
69
|
key: "hotBackup",
|
|
@@ -110,7 +111,8 @@ function allSalesPlanLimits() {
|
|
|
110
111
|
key: "maxTeams",
|
|
111
112
|
type: "number",
|
|
112
113
|
description: "used to limit the amount of teams within one super organization. default = 100",
|
|
113
|
-
isClusterBasedLimit: false
|
|
114
|
+
isClusterBasedLimit: false,
|
|
115
|
+
validate: (input) => Number.isInteger(input) && input >= 0
|
|
114
116
|
},
|
|
115
117
|
{
|
|
116
118
|
key: "legacyStreams",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/dtos/SalesPlan.dto.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 { ClusterPlanTypesToConfig } from '../types/ClusterPlanTypesToConfig.type.js'\n\nexport interface SalesPlanDto {\n uuid?: string\n name: string\n salesPlanType?: string\n internal?: boolean\n clusterPlanTypesToConfig: ClusterPlanTypesToConfig\n metadata?: SalesPlanMetadata\n version: number\n orgs?: number\n}\n\nexport interface ConsumptionDataItem {\n type: string\n data: string\n itemPriceId: string\n}\n\nexport interface SalesPlanMetadata {\n description: string\n limits?: Limits\n}\n\nexport interface ClusterLimits {\n dataRetentionOperate?: number\n dataRetentionTasklist?: number\n dataRetentionOptimize?: number\n unifiedDataRetention?: number\n}\n\nexport interface Limits extends ClusterLimits {\n maxMembers?: number\n hotBackup?: boolean\n ipWhiteList?: boolean\n secureConnectivity?: boolean\n failover?: boolean\n allowedHostnamesForInvites?: string\n regionWhiteList?: string\n suppressDropDisks?: boolean\n maxTeams?: number\n legacyStreams?: boolean\n ignoreGracePeriod?: boolean\n /**\n * Maximum number of clients allowed per cluster.\n * Overrides the stage-based default (MAX_CLUSTER_CLIENTS_DEV on dev,\n * MAX_CLUSTER_CLIENTS_DEFAULT on int/prod).\n */\n maxClusterClients?: number\n /**\n * Comma-separated list of generation UUIDs that are unlocked for this org.\n * These generations will be available for cluster creation even if they\n * are not part of a channel's allowed generations. They are attached to\n * the Stable channel with classification 'orgUnlocked'.\n */\n generationWhiteList?: string\n /**\n * When true, users with only the Developer role cannot create clusters in this org.\n * Users who also hold Member, Admin, Owner, or Operations Engineer are unaffected.\n */\n developerNoClusterCreate?: boolean\n}\n\nexport const RETENTION_LIMIT_MINIMUM = {\n operate: 5,\n tasklist: 5,\n optimize: 5,\n unified: 5,\n}\nexport const RETENTION_LIMIT_MAXIMUM = {\n operate: 365,\n tasklist: 90,\n optimize: 720,\n unified: 365,\n}\nexport const RETENTION_LIMIT_DEFAULT = {\n operate: 30,\n tasklist: 30,\n optimize: 180,\n unified: 30,\n}\n\n/**\n * Default maximum number of clients per cluster on development stage.\n */\nexport const MAX_CLUSTER_CLIENTS_DEV = 10\n\n/**\n * Default maximum number of clients per cluster on integration and production stages.\n */\nexport const MAX_CLUSTER_CLIENTS_DEFAULT = 200\n\nexport function deprecatedLimit(key: string): string | undefined {\n if (['dataRetentionOperate', 'dataRetentionTasklist'].includes(key)) {\n return 'unifiedDataRetention'\n }\n return undefined\n}\n\nexport function allClusterBasedLimits(): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n validate?: (input: number) => boolean\n}[] {\n return [\n {\n key: 'dataRetentionOperate',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Data retention in days for Operate. default = ${RETENTION_LIMIT_DEFAULT.operate}days. Min = ${RETENTION_LIMIT_MINIMUM.operate}days, Max = ${RETENTION_LIMIT_MAXIMUM.operate}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.operate &&\n input <= RETENTION_LIMIT_MAXIMUM.operate,\n },\n {\n key: 'dataRetentionTasklist',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Data retention in days for Tasklist. default = ${RETENTION_LIMIT_DEFAULT.tasklist}days. Min = ${RETENTION_LIMIT_MINIMUM.tasklist}days, Max = ${RETENTION_LIMIT_MAXIMUM.tasklist}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.tasklist &&\n input <= RETENTION_LIMIT_MAXIMUM.tasklist,\n },\n {\n key: 'dataRetentionOptimize',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Data retention in days for Optimize. default = ${RETENTION_LIMIT_DEFAULT.optimize}days. Min = ${RETENTION_LIMIT_MINIMUM.optimize}days, Max = ${RETENTION_LIMIT_MAXIMUM.optimize}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.optimize &&\n input <= RETENTION_LIMIT_MAXIMUM.optimize,\n },\n {\n key: 'unifiedDataRetention',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Unified data retention in days for Zeebe broker. default = ${RETENTION_LIMIT_DEFAULT.unified}days. Min = ${RETENTION_LIMIT_MINIMUM.unified}days, Max = ${RETENTION_LIMIT_MAXIMUM.unified}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.unified &&\n input <= RETENTION_LIMIT_MAXIMUM.unified,\n },\n ]\n}\n\nexport function allSalesPlanLimits(): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n validate?: (input: number) => boolean\n}[] {\n return [\n {\n key: 'maxMembers',\n type: 'number',\n description:\n 'used to limit the amount of collaborators within one organization. default = no limit',\n isClusterBasedLimit: false,\n },\n {\n key: 'hotBackup',\n type: 'boolean',\n description:\n 'used to activate the hot backup functionality in organizations. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'ipWhiteList',\n type: 'boolean',\n description:\n 'used to activate the ipWhitelist feature in console. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'secureConnectivity',\n type: 'boolean',\n description:\n 'used to activate the secure connectivity feature in console. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'failover',\n type: 'boolean',\n description:\n 'used to activate the failover functionality for multi-region clusters. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'allowedHostnamesForInvites',\n type: 'string',\n description:\n 'allowed hostnames for invites - comma separated, default: every hostname is allowed',\n isClusterBasedLimit: false,\n },\n {\n key: 'regionWhiteList',\n type: 'string',\n description:\n 'allowed regions - comma separated, default: every region is allowed',\n isClusterBasedLimit: false,\n },\n {\n key: 'suppressDropDisks',\n type: 'boolean',\n description:\n 'used to not drop disks of sleeping clusters. default = not suppressed',\n isClusterBasedLimit: false,\n },\n {\n key: 'maxTeams',\n type: 'number',\n description:\n 'used to limit the amount of teams within one super organization. default = 100',\n isClusterBasedLimit: false,\n },\n {\n key: 'legacyStreams',\n type: 'boolean',\n description:\n 'used to allow organizations to use legacy minor streams (e.g. 8.5, 8.6) for cluster creation. default = not allowed',\n isClusterBasedLimit: false,\n },\n {\n key: 'ignoreGracePeriod',\n type: 'boolean',\n description:\n 'used to bypass the 24h grace period on cluster upgrades after a minor version bump. default = not active (grace period enforced)',\n isClusterBasedLimit: false,\n },\n {\n key: 'maxClusterClients',\n type: 'number',\n description: `maximum number of clients per cluster. default = ${MAX_CLUSTER_CLIENTS_DEFAULT} (${MAX_CLUSTER_CLIENTS_DEV} on dev). Can be overridden per org for special customers (e.g. OEM).`,\n isClusterBasedLimit: false,\n validate: (input) => Number.isInteger(input) && input >= 1,\n },\n {\n key: 'generationWhiteList',\n type: 'string',\n description:\n 'unlocked generation UUIDs - comma separated. These generations will be available for cluster creation regardless of channel membership. Attached to the Stable channel.',\n isClusterBasedLimit: false,\n },\n {\n key: 'developerNoClusterCreate',\n type: 'boolean',\n description:\n 'when enabled, users with only the Developer role cannot create clusters in this org. Admins, Owners, Members, and Operations Engineers are unaffected.',\n isClusterBasedLimit: false,\n },\n ...allClusterBasedLimits(),\n ]\n}\n\nexport function unusedClusterBasedLimits(limits: ClusterLimits): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n}[] {\n return allClusterBasedLimits().filter(\n (current) =>\n !(\n Object.keys(limits).includes(current.key) &&\n (limits as Record<string, unknown>)[current.key] !== null\n ),\n )\n}\n\nexport function unusedSalesPlanLimits(limits: Limits): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n}[] {\n return allSalesPlanLimits().filter(\n (current) =>\n !(\n Object.keys(limits).includes(current.key) &&\n (limits as Record<string, unknown>)[current.key] !== null\n ),\n )\n}\n"],
|
|
5
|
-
"mappings": "AAqEO,MAAM,0BAA0B;AAAA,EACrC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AACX;AACO,MAAM,0BAA0B;AAAA,EACrC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AACX;AACO,MAAM,0BAA0B;AAAA,EACrC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AACX;AAKO,MAAM,0BAA0B;AAKhC,MAAM,8BAA8B;AAEpC,SAAS,gBAAgB,KAAiC;AAC/D,MAAI,CAAC,wBAAwB,uBAAuB,EAAE,SAAS,GAAG,GAAG;AACnE,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,wBAMZ;AACF,SAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,aAAa,iDAAiD,wBAAwB,OAAO,eAAe,wBAAwB,OAAO,eAAe,wBAAwB,OAAO;AAAA,MACzL,UAAU,CAAC,UACT,SAAS,wBAAwB,WACjC,SAAS,wBAAwB;AAAA,IACrC;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,aAAa,kDAAkD,wBAAwB,QAAQ,eAAe,wBAAwB,QAAQ,eAAe,wBAAwB,QAAQ;AAAA,MAC7L,UAAU,CAAC,UACT,SAAS,wBAAwB,YACjC,SAAS,wBAAwB;AAAA,IACrC;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,aAAa,kDAAkD,wBAAwB,QAAQ,eAAe,wBAAwB,QAAQ,eAAe,wBAAwB,QAAQ;AAAA,MAC7L,UAAU,CAAC,UACT,SAAS,wBAAwB,YACjC,SAAS,wBAAwB;AAAA,IACrC;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,aAAa,8DAA8D,wBAAwB,OAAO,eAAe,wBAAwB,OAAO,eAAe,wBAAwB,OAAO;AAAA,MACtM,UAAU,CAAC,UACT,SAAS,wBAAwB,WACjC,SAAS,wBAAwB;AAAA,IACrC;AAAA,EACF;AACF;AAEO,SAAS,qBAMZ;AACF,SAAO;AAAA,IACL;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,aACE;AAAA,MACF,qBAAqB;AAAA,
|
|
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 { ClusterPlanTypesToConfig } from '../types/ClusterPlanTypesToConfig.type.js'\n\nexport interface SalesPlanDto {\n uuid?: string\n name: string\n salesPlanType?: string\n internal?: boolean\n clusterPlanTypesToConfig: ClusterPlanTypesToConfig\n metadata?: SalesPlanMetadata\n version: number\n orgs?: number\n}\n\nexport interface ConsumptionDataItem {\n type: string\n data: string\n itemPriceId: string\n}\n\nexport interface SalesPlanMetadata {\n description: string\n limits?: Limits\n}\n\nexport interface ClusterLimits {\n dataRetentionOperate?: number\n dataRetentionTasklist?: number\n dataRetentionOptimize?: number\n unifiedDataRetention?: number\n}\n\nexport interface Limits extends ClusterLimits {\n maxMembers?: number\n hotBackup?: boolean\n ipWhiteList?: boolean\n secureConnectivity?: boolean\n failover?: boolean\n allowedHostnamesForInvites?: string\n regionWhiteList?: string\n suppressDropDisks?: boolean\n maxTeams?: number\n legacyStreams?: boolean\n ignoreGracePeriod?: boolean\n /**\n * Maximum number of clients allowed per cluster.\n * Overrides the stage-based default (MAX_CLUSTER_CLIENTS_DEV on dev,\n * MAX_CLUSTER_CLIENTS_DEFAULT on int/prod).\n */\n maxClusterClients?: number\n /**\n * Comma-separated list of generation UUIDs that are unlocked for this org.\n * These generations will be available for cluster creation even if they\n * are not part of a channel's allowed generations. They are attached to\n * the Stable channel with classification 'orgUnlocked'.\n */\n generationWhiteList?: string\n /**\n * When true, users with only the Developer role cannot create clusters in this org.\n * Users who also hold Member, Admin, Owner, or Operations Engineer are unaffected.\n */\n developerNoClusterCreate?: boolean\n}\n\nexport const RETENTION_LIMIT_MINIMUM = {\n operate: 5,\n tasklist: 5,\n optimize: 5,\n unified: 5,\n}\nexport const RETENTION_LIMIT_MAXIMUM = {\n operate: 365,\n tasklist: 90,\n optimize: 720,\n unified: 365,\n}\nexport const RETENTION_LIMIT_DEFAULT = {\n operate: 30,\n tasklist: 30,\n optimize: 180,\n unified: 30,\n}\n\n/**\n * Default maximum number of clients per cluster on development stage.\n */\nexport const MAX_CLUSTER_CLIENTS_DEV = 10\n\n/**\n * Default maximum number of clients per cluster on integration and production stages.\n */\nexport const MAX_CLUSTER_CLIENTS_DEFAULT = 200\n\nexport function deprecatedLimit(key: string): string | undefined {\n if (['dataRetentionOperate', 'dataRetentionTasklist'].includes(key)) {\n return 'unifiedDataRetention'\n }\n return undefined\n}\n\nexport function allClusterBasedLimits(): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n validate?: (input: number) => boolean\n}[] {\n return [\n {\n key: 'dataRetentionOperate',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Data retention in days for Operate. default = ${RETENTION_LIMIT_DEFAULT.operate}days. Min = ${RETENTION_LIMIT_MINIMUM.operate}days, Max = ${RETENTION_LIMIT_MAXIMUM.operate}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.operate &&\n input <= RETENTION_LIMIT_MAXIMUM.operate,\n },\n {\n key: 'dataRetentionTasklist',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Data retention in days for Tasklist. default = ${RETENTION_LIMIT_DEFAULT.tasklist}days. Min = ${RETENTION_LIMIT_MINIMUM.tasklist}days, Max = ${RETENTION_LIMIT_MAXIMUM.tasklist}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.tasklist &&\n input <= RETENTION_LIMIT_MAXIMUM.tasklist,\n },\n {\n key: 'dataRetentionOptimize',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Data retention in days for Optimize. default = ${RETENTION_LIMIT_DEFAULT.optimize}days. Min = ${RETENTION_LIMIT_MINIMUM.optimize}days, Max = ${RETENTION_LIMIT_MAXIMUM.optimize}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.optimize &&\n input <= RETENTION_LIMIT_MAXIMUM.optimize,\n },\n {\n key: 'unifiedDataRetention',\n type: 'number',\n isClusterBasedLimit: true,\n description: `Unified data retention in days for Zeebe broker. default = ${RETENTION_LIMIT_DEFAULT.unified}days. Min = ${RETENTION_LIMIT_MINIMUM.unified}days, Max = ${RETENTION_LIMIT_MAXIMUM.unified}days.`,\n validate: (input) =>\n input >= RETENTION_LIMIT_MINIMUM.unified &&\n input <= RETENTION_LIMIT_MAXIMUM.unified,\n },\n ]\n}\n\nexport function allSalesPlanLimits(): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n validate?: (input: number) => boolean\n}[] {\n return [\n {\n key: 'maxMembers',\n type: 'number',\n description:\n 'used to limit the amount of collaborators within one organization. default = no limit',\n isClusterBasedLimit: false,\n validate: (input) => Number.isInteger(input) && input >= 0,\n },\n {\n key: 'hotBackup',\n type: 'boolean',\n description:\n 'used to activate the hot backup functionality in organizations. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'ipWhiteList',\n type: 'boolean',\n description:\n 'used to activate the ipWhitelist feature in console. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'secureConnectivity',\n type: 'boolean',\n description:\n 'used to activate the secure connectivity feature in console. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'failover',\n type: 'boolean',\n description:\n 'used to activate the failover functionality for multi-region clusters. default = not active',\n isClusterBasedLimit: false,\n },\n {\n key: 'allowedHostnamesForInvites',\n type: 'string',\n description:\n 'allowed hostnames for invites - comma separated, default: every hostname is allowed',\n isClusterBasedLimit: false,\n },\n {\n key: 'regionWhiteList',\n type: 'string',\n description:\n 'allowed regions - comma separated, default: every region is allowed',\n isClusterBasedLimit: false,\n },\n {\n key: 'suppressDropDisks',\n type: 'boolean',\n description:\n 'used to not drop disks of sleeping clusters. default = not suppressed',\n isClusterBasedLimit: false,\n },\n {\n key: 'maxTeams',\n type: 'number',\n description:\n 'used to limit the amount of teams within one super organization. default = 100',\n isClusterBasedLimit: false,\n validate: (input) => Number.isInteger(input) && input >= 0,\n },\n {\n key: 'legacyStreams',\n type: 'boolean',\n description:\n 'used to allow organizations to use legacy minor streams (e.g. 8.5, 8.6) for cluster creation. default = not allowed',\n isClusterBasedLimit: false,\n },\n {\n key: 'ignoreGracePeriod',\n type: 'boolean',\n description:\n 'used to bypass the 24h grace period on cluster upgrades after a minor version bump. default = not active (grace period enforced)',\n isClusterBasedLimit: false,\n },\n {\n key: 'maxClusterClients',\n type: 'number',\n description: `maximum number of clients per cluster. default = ${MAX_CLUSTER_CLIENTS_DEFAULT} (${MAX_CLUSTER_CLIENTS_DEV} on dev). Can be overridden per org for special customers (e.g. OEM).`,\n isClusterBasedLimit: false,\n validate: (input) => Number.isInteger(input) && input >= 1,\n },\n {\n key: 'generationWhiteList',\n type: 'string',\n description:\n 'unlocked generation UUIDs - comma separated. These generations will be available for cluster creation regardless of channel membership. Attached to the Stable channel.',\n isClusterBasedLimit: false,\n },\n {\n key: 'developerNoClusterCreate',\n type: 'boolean',\n description:\n 'when enabled, users with only the Developer role cannot create clusters in this org. Admins, Owners, Members, and Operations Engineers are unaffected.',\n isClusterBasedLimit: false,\n },\n ...allClusterBasedLimits(),\n ]\n}\n\nexport function unusedClusterBasedLimits(limits: ClusterLimits): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n}[] {\n return allClusterBasedLimits().filter(\n (current) =>\n !(\n Object.keys(limits).includes(current.key) &&\n (limits as Record<string, unknown>)[current.key] !== null\n ),\n )\n}\n\nexport function unusedSalesPlanLimits(limits: Limits): {\n key: string\n type: 'number' | 'boolean' | 'string'\n description: string\n isClusterBasedLimit: boolean\n}[] {\n return allSalesPlanLimits().filter(\n (current) =>\n !(\n Object.keys(limits).includes(current.key) &&\n (limits as Record<string, unknown>)[current.key] !== null\n ),\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only, infra-stripped cluster-creation catalog served unguarded at
|
|
3
|
+
* `GET /api/storybook-config` for the screenshot-tooling storybooks. Shared
|
|
4
|
+
* between the console-backend endpoint and the `@camunda-cloud/api` client so
|
|
5
|
+
* both stay in sync.
|
|
6
|
+
*/
|
|
7
|
+
export interface StorybookConfig {
|
|
8
|
+
channels: StorybookConfigChannel[];
|
|
9
|
+
datacenters: StorybookConfigDatacenter[];
|
|
10
|
+
}
|
|
11
|
+
export interface StorybookConfigChannel {
|
|
12
|
+
uuid: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
isDefault: boolean;
|
|
16
|
+
generations: StorybookConfigGeneration[];
|
|
17
|
+
}
|
|
18
|
+
export interface StorybookConfigGeneration {
|
|
19
|
+
uuid: string;
|
|
20
|
+
name: string;
|
|
21
|
+
version?: string;
|
|
22
|
+
default: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface StorybookConfigDatacenter {
|
|
25
|
+
uuid: string;
|
|
26
|
+
name: string;
|
|
27
|
+
provider: string;
|
|
28
|
+
region: string;
|
|
29
|
+
zone: string;
|
|
30
|
+
visibility: string;
|
|
31
|
+
backups: StorybookConfigBackup[];
|
|
32
|
+
}
|
|
33
|
+
export interface StorybookConfigBackup {
|
|
34
|
+
uuid: string;
|
|
35
|
+
regions: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
label: string;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=StorybookConfig.dto.js.map
|
|
@@ -30,6 +30,7 @@ export declare enum AuditEntityAttribute {
|
|
|
30
30
|
CLUSTER_SWAGGER = "Cluster Swagger",
|
|
31
31
|
CLUSTER_BUSINESS_ID_UNIQUENESS = "Business ID Uniqueness",
|
|
32
32
|
CLUSTER_MULTI_TENANCY = "Multi-tenancy",
|
|
33
|
+
CLUSTER_EXTERNAL_IDP = "External identity provider",
|
|
33
34
|
CLUSTER_ENABLE_LOW_LATENCY = "Enable low latency",
|
|
34
35
|
CLUSTER_AUTOUPDATE = "Auto Update",
|
|
35
36
|
CLUSTER_OWNER = "Owner",
|
|
@@ -31,6 +31,7 @@ var AuditEntityAttribute = /* @__PURE__ */ ((AuditEntityAttribute2) => {
|
|
|
31
31
|
AuditEntityAttribute2["CLUSTER_SWAGGER"] = "Cluster Swagger";
|
|
32
32
|
AuditEntityAttribute2["CLUSTER_BUSINESS_ID_UNIQUENESS"] = "Business ID Uniqueness";
|
|
33
33
|
AuditEntityAttribute2["CLUSTER_MULTI_TENANCY"] = "Multi-tenancy";
|
|
34
|
+
AuditEntityAttribute2["CLUSTER_EXTERNAL_IDP"] = "External identity provider";
|
|
34
35
|
AuditEntityAttribute2["CLUSTER_ENABLE_LOW_LATENCY"] = "Enable low latency";
|
|
35
36
|
AuditEntityAttribute2["CLUSTER_AUTOUPDATE"] = "Auto Update";
|
|
36
37
|
AuditEntityAttribute2["CLUSTER_OWNER"] = "Owner";
|