@camunda/ccma-api 0.0.10 → 0.3.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.
Files changed (96) hide show
  1. package/dist/index.d.ts +38 -8
  2. package/dist/index.js +56 -2
  3. package/dist/index.js.map +2 -2
  4. package/dist/services/accounts/admin-tools.service.d.ts +27 -0
  5. package/dist/services/accounts/admin-tools.service.js +70 -0
  6. package/dist/services/accounts/admin-tools.service.js.map +7 -0
  7. package/dist/services/accounts/connections.service.d.ts +85 -0
  8. package/dist/services/accounts/connections.service.js +150 -0
  9. package/dist/services/accounts/connections.service.js.map +2 -2
  10. package/dist/services/accounts/early-access-features.service.d.ts +59 -0
  11. package/dist/services/accounts/early-access-features.service.js +142 -0
  12. package/dist/services/accounts/early-access-features.service.js.map +2 -2
  13. package/dist/services/accounts/invites.service.d.ts +28 -0
  14. package/dist/services/accounts/invites.service.js +53 -0
  15. package/dist/services/accounts/invites.service.js.map +7 -0
  16. package/dist/services/accounts/orgs.service.d.ts +48 -0
  17. package/dist/services/accounts/orgs.service.js +153 -0
  18. package/dist/services/accounts/orgs.service.js.map +2 -2
  19. package/dist/services/accounts/orgs.v2.service.d.ts +32 -0
  20. package/dist/services/accounts/orgs.v2.service.js +158 -0
  21. package/dist/services/accounts/orgs.v2.service.js.map +7 -0
  22. package/dist/services/accounts/pdf-watermark.service.d.ts +93 -0
  23. package/dist/services/accounts/pdf-watermark.service.js +147 -0
  24. package/dist/services/accounts/pdf-watermark.service.js.map +7 -0
  25. package/dist/services/accounts/release-train.service.d.ts +25 -0
  26. package/dist/services/accounts/release-train.service.js +46 -0
  27. package/dist/services/accounts/release-train.service.js.map +7 -0
  28. package/dist/services/accounts/salesplan.service.d.ts +45 -0
  29. package/dist/services/accounts/salesplan.service.js +185 -0
  30. package/dist/services/accounts/salesplan.service.js.map +2 -2
  31. package/dist/services/accounts/token-issuer.service.d.ts +31 -0
  32. package/dist/services/accounts/token-issuer.service.js +63 -0
  33. package/dist/services/accounts/token-issuer.service.js.map +7 -0
  34. package/dist/services/accounts/users.service.d.ts +59 -0
  35. package/dist/services/accounts/users.service.js +296 -4
  36. package/dist/services/accounts/users.service.js.map +2 -2
  37. package/dist/services/console/console.admin.service.d.ts +11 -0
  38. package/dist/services/console/console.admin.service.js +37 -0
  39. package/dist/services/console/console.admin.service.js.map +2 -2
  40. package/dist/services/console/console.channel.service.d.ts +49 -0
  41. package/dist/services/console/console.channel.service.js +123 -0
  42. package/dist/services/console/console.channel.service.js.map +7 -0
  43. package/dist/services/console/console.cluster.service.d.ts +23 -11
  44. package/dist/services/console/console.cluster.service.js +36 -1
  45. package/dist/services/console/console.cluster.service.js.map +2 -2
  46. package/dist/services/console/console.cluster.v2.service.d.ts +43 -0
  47. package/dist/services/console/console.cluster.v2.service.js +219 -0
  48. package/dist/services/console/console.cluster.v2.service.js.map +7 -0
  49. package/dist/services/console/console.clusterplan.service.d.ts +14 -0
  50. package/dist/services/console/console.clusterplan.service.js +59 -0
  51. package/dist/services/console/console.clusterplan.service.js.map +2 -2
  52. package/dist/services/console/console.clusterplantype.service.d.ts +54 -0
  53. package/dist/services/console/console.clusterplantype.service.js +152 -0
  54. package/dist/services/console/console.clusterplantype.service.js.map +7 -0
  55. package/dist/services/console/console.k8scontext.service.d.ts +10 -0
  56. package/dist/services/console/console.k8scontext.service.js +41 -0
  57. package/dist/services/console/console.k8scontext.service.js.map +7 -0
  58. package/dist/services/console/console.storybook-config.service.d.ts +10 -0
  59. package/dist/services/console/console.storybook-config.service.js +40 -0
  60. package/dist/services/console/console.storybook-config.service.js.map +7 -0
  61. package/dist/services/console/generation.service.d.ts +42 -0
  62. package/dist/services/console/generation.service.js +115 -0
  63. package/dist/services/console/generation.service.js.map +2 -2
  64. package/dist/services/external/external.accounts.service.d.ts +27 -0
  65. package/dist/services/external/external.accounts.service.js +80 -0
  66. package/dist/services/external/external.accounts.service.js.map +7 -0
  67. package/dist/services/external/external.console.service.d.ts +37 -0
  68. package/dist/services/external/external.console.service.js +81 -0
  69. package/dist/services/external/external.console.service.js.map +7 -0
  70. package/dist/services/external/external.notifications.service.d.ts +78 -0
  71. package/dist/services/external/external.notifications.service.js +220 -0
  72. package/dist/services/external/external.notifications.service.js.map +7 -0
  73. package/dist/services/external/external.services.spec.d.ts +1 -0
  74. package/dist/services/helpcenter/helpcenter.service.d.ts +42 -0
  75. package/dist/services/helpcenter/helpcenter.service.js +84 -0
  76. package/dist/services/helpcenter/helpcenter.service.js.map +7 -0
  77. package/dist/services/helpcenter/helpcenter.service.spec.d.ts +1 -0
  78. package/dist/services/notifications/notifications.service.d.ts +45 -1
  79. package/dist/services/notifications/notifications.service.js +162 -0
  80. package/dist/services/notifications/notifications.service.js.map +2 -2
  81. package/dist/types/general.types.d.ts +8 -0
  82. package/dist/utils/api.d.ts +1 -1
  83. package/dist/utils/api.js +13 -2
  84. package/dist/utils/api.js.map +2 -2
  85. package/dist/utils/query.d.ts +7 -0
  86. package/dist/utils/query.js +29 -0
  87. package/dist/utils/query.js.map +7 -0
  88. package/dist/utils/sse.d.ts +51 -0
  89. package/dist/utils/sse.js +247 -0
  90. package/dist/utils/sse.js.map +7 -0
  91. package/dist/utils/sse.spec.d.ts +1 -0
  92. package/dist/utils/traceparent.d.ts +12 -0
  93. package/dist/utils/traceparent.js +16 -0
  94. package/dist/utils/traceparent.js.map +7 -0
  95. package/dist/utils/traceparent.spec.d.ts +1 -0
  96. package/package.json +2 -2
@@ -0,0 +1,158 @@
1
+ import { request } from "../../utils/api.js";
2
+ import { HttpError } from "../../utils/errors.js";
3
+ import { toQueryString } from "../../utils/query.js";
4
+ class OrgsV2Service {
5
+ static async getSession(params) {
6
+ const serviceContext = {
7
+ method: {
8
+ name: "OrgsV2Service.getSession",
9
+ url: "v2/session",
10
+ normalizedUrl: "v2/session",
11
+ type: "get"
12
+ },
13
+ source: params.config.metrics?.source || "unset",
14
+ target: { name: "accounts", type: "internal" }
15
+ };
16
+ const response = await request({
17
+ ...params,
18
+ base: { id: "accounts" },
19
+ url: serviceContext.method.url,
20
+ method: serviceContext.method.type,
21
+ metricsDetails: serviceContext,
22
+ responseType: "json"
23
+ });
24
+ if (!response.ok || !response.body) {
25
+ throw new HttpError(
26
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
27
+ response.status,
28
+ response.statusText
29
+ );
30
+ }
31
+ return response.body;
32
+ }
33
+ static async listOrganizations(params) {
34
+ const query = toQueryString(params.params);
35
+ const serviceContext = {
36
+ method: {
37
+ name: "OrgsV2Service.listOrganizations",
38
+ url: `v2/organizations${query}`,
39
+ normalizedUrl: "v2/organizations",
40
+ type: "get"
41
+ },
42
+ source: params.config.metrics?.source || "unset",
43
+ target: { name: "accounts", type: "internal" }
44
+ };
45
+ const response = await request({
46
+ ...params,
47
+ base: { id: "accounts" },
48
+ url: serviceContext.method.url,
49
+ method: serviceContext.method.type,
50
+ metricsDetails: serviceContext,
51
+ responseType: "json"
52
+ });
53
+ if (!response.ok || !response.body) {
54
+ throw new HttpError(
55
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
56
+ response.status,
57
+ response.statusText
58
+ );
59
+ }
60
+ return response.body;
61
+ }
62
+ /**
63
+ * Filtered organization CSV export (GET /v2/organizations/export). Same
64
+ * filter params as `listOrganizations`; the backend walks the cursor
65
+ * server-side and returns the whole CSV as text.
66
+ */
67
+ static async exportCsv(params) {
68
+ const query = toQueryString(params.params);
69
+ const serviceContext = {
70
+ method: {
71
+ name: "OrgsV2Service.exportCsv",
72
+ url: `v2/organizations/export${query}`,
73
+ normalizedUrl: "v2/organizations/export",
74
+ type: "get"
75
+ },
76
+ source: params.config.metrics?.source || "unset",
77
+ target: { name: "accounts", type: "internal" }
78
+ };
79
+ const response = await request({
80
+ ...params,
81
+ base: { id: "accounts" },
82
+ url: serviceContext.method.url,
83
+ method: serviceContext.method.type,
84
+ metricsDetails: serviceContext,
85
+ responseType: "text"
86
+ });
87
+ if (!response.ok || response.body === void 0) {
88
+ throw new HttpError(
89
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
90
+ response.status,
91
+ response.statusText
92
+ );
93
+ }
94
+ return response.body;
95
+ }
96
+ static async getOrganization(params) {
97
+ const serviceContext = {
98
+ method: {
99
+ name: "OrgsV2Service.getOrganization",
100
+ url: `v2/organizations/${encodeURIComponent(params.params.orgId)}`,
101
+ normalizedUrl: "v2/organizations/:orgId",
102
+ type: "get"
103
+ },
104
+ source: params.config.metrics?.source || "unset",
105
+ target: { name: "accounts", type: "internal" }
106
+ };
107
+ const response = await request({
108
+ ...params,
109
+ base: { id: "accounts" },
110
+ url: serviceContext.method.url,
111
+ method: serviceContext.method.type,
112
+ metricsDetails: serviceContext,
113
+ responseType: "json"
114
+ });
115
+ if (!response.ok || !response.body) {
116
+ throw new HttpError(
117
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
118
+ response.status,
119
+ response.statusText
120
+ );
121
+ }
122
+ return response.body;
123
+ }
124
+ static async listMembers(params) {
125
+ const { orgId, ...rest } = params.params;
126
+ const query = toQueryString(rest);
127
+ const serviceContext = {
128
+ method: {
129
+ name: "OrgsV2Service.listMembers",
130
+ url: `v2/organizations/${encodeURIComponent(orgId)}/members${query}`,
131
+ normalizedUrl: "v2/organizations/:orgId/members",
132
+ type: "get"
133
+ },
134
+ source: params.config.metrics?.source || "unset",
135
+ target: { name: "accounts", type: "internal" }
136
+ };
137
+ const response = await request({
138
+ ...params,
139
+ base: { id: "accounts" },
140
+ url: serviceContext.method.url,
141
+ method: serviceContext.method.type,
142
+ metricsDetails: serviceContext,
143
+ responseType: "json"
144
+ });
145
+ if (!response.ok || !response.body) {
146
+ throw new HttpError(
147
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
148
+ response.status,
149
+ response.statusText
150
+ );
151
+ }
152
+ return response.body;
153
+ }
154
+ }
155
+ export {
156
+ OrgsV2Service
157
+ };
158
+ //# sourceMappingURL=orgs.v2.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/accounts/orgs.v2.service.ts"],
4
+ "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type {\n ControlSessionDto,\n CursorPage,\n ListOrganizationsV2Params,\n ListOrgMembersV2Params,\n OrgDetailV2Dto,\n OrgListItemV2Dto,\n OrgMemberV2Dto,\n} from '@camunda/ccma-shared-types'\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\nimport { toQueryString } from '../../utils/query.js'\n\nexport type GetControlSessionRequest = RequestBaseParams\n\nexport interface ListOrganizationsV2Request extends RequestBaseParams {\n params?: ListOrganizationsV2Params\n}\n\nexport interface GetOrganizationV2Request extends RequestBaseParams {\n params: { orgId: string }\n}\n\nexport interface ListOrgMembersV2Request extends RequestBaseParams {\n params: { orgId: string } & ListOrgMembersV2Params\n}\n\n/**\n * Accounts-backend `/v2` read endpoints for the Control frontend.\n * Reads only \u2014 mutations stay on the existing v1 services (spec Q6).\n */\nexport class OrgsV2Service {\n public static async getSession(\n params: GetControlSessionRequest,\n ): Promise<ControlSessionDto> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsV2Service.getSession',\n url: 'v2/session',\n normalizedUrl: 'v2/session',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<ControlSessionDto>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok || !response.body) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async listOrganizations(\n params: ListOrganizationsV2Request,\n ): Promise<CursorPage<OrgListItemV2Dto>> {\n const query = toQueryString(params.params)\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsV2Service.listOrganizations',\n url: `v2/organizations${query}`,\n normalizedUrl: 'v2/organizations',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<CursorPage<OrgListItemV2Dto>>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok || !response.body) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n /**\n * Filtered organization CSV export (GET /v2/organizations/export). Same\n * filter params as `listOrganizations`; the backend walks the cursor\n * server-side and returns the whole CSV as text.\n */\n public static async exportCsv(\n params: ListOrganizationsV2Request,\n ): Promise<string> {\n const query = toQueryString(params.params)\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsV2Service.exportCsv',\n url: `v2/organizations/export${query}`,\n normalizedUrl: 'v2/organizations/export',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<string>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'text',\n })\n\n if (!response.ok || response.body === undefined) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async getOrganization(\n params: GetOrganizationV2Request,\n ): Promise<OrgDetailV2Dto> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsV2Service.getOrganization',\n url: `v2/organizations/${encodeURIComponent(params.params.orgId)}`,\n normalizedUrl: 'v2/organizations/:orgId',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<OrgDetailV2Dto>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok || !response.body) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n\n public static async listMembers(\n params: ListOrgMembersV2Request,\n ): Promise<CursorPage<OrgMemberV2Dto>> {\n const { orgId, ...rest } = params.params\n const query = toQueryString(rest)\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: 'OrgsV2Service.listMembers',\n url: `v2/organizations/${encodeURIComponent(orgId)}/members${query}`,\n normalizedUrl: 'v2/organizations/:orgId/members',\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<CursorPage<OrgMemberV2Dto>>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n\n if (!response.ok || !response.body) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n\n return response.body\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,93 @@
1
+ import type { RequestBaseParams } from '../../types/general.types.js';
2
+ export interface PdfWatermarkProjectDto {
3
+ uuid: string;
4
+ name: string;
5
+ confidential: boolean;
6
+ template: string;
7
+ angle: number;
8
+ rows: string[];
9
+ hasPdf: boolean;
10
+ pdfFilename?: string;
11
+ createdBy: string;
12
+ created: Date;
13
+ updated: Date;
14
+ }
15
+ export interface PdfWatermarkAuditEntryDto {
16
+ uuid: string;
17
+ projectUuid: string;
18
+ projectName: string;
19
+ userId: string;
20
+ userEmail: string;
21
+ customText: string;
22
+ created: Date;
23
+ }
24
+ export interface CreatePdfWatermarkProjectParams extends RequestBaseParams {
25
+ body: {
26
+ name: string;
27
+ confidential: boolean;
28
+ template: string;
29
+ angle: number;
30
+ password?: string;
31
+ };
32
+ }
33
+ export interface UpdatePdfWatermarkProjectParams extends RequestBaseParams {
34
+ params: {
35
+ uuid: string;
36
+ };
37
+ body: {
38
+ name?: string;
39
+ template?: string;
40
+ angle?: number;
41
+ rows?: string[];
42
+ };
43
+ }
44
+ export interface PdfWatermarkProjectIdParams extends RequestBaseParams {
45
+ params: {
46
+ uuid: string;
47
+ };
48
+ }
49
+ export interface SetPdfWatermarkPdfParams extends RequestBaseParams {
50
+ params: {
51
+ uuid: string;
52
+ };
53
+ body: {
54
+ pdfBase64: string;
55
+ filename: string;
56
+ password?: string;
57
+ };
58
+ }
59
+ export interface PdfWatermarkPasswordParams extends RequestBaseParams {
60
+ params: {
61
+ uuid: string;
62
+ };
63
+ body: {
64
+ password?: string;
65
+ };
66
+ }
67
+ export interface RecordPdfWatermarkAuditParams extends RequestBaseParams {
68
+ params: {
69
+ uuid: string;
70
+ };
71
+ body: {
72
+ projectName: string;
73
+ customText: string;
74
+ userEmail: string;
75
+ };
76
+ }
77
+ /** PDF watermark projects (god-tool): templates, entries, watermarked PDFs. */
78
+ export declare class PdfWatermarkService {
79
+ static listProjects(params: RequestBaseParams): Promise<PdfWatermarkProjectDto[]>;
80
+ static getProject(params: PdfWatermarkProjectIdParams): Promise<PdfWatermarkProjectDto | undefined>;
81
+ static createProject(params: CreatePdfWatermarkProjectParams): Promise<PdfWatermarkProjectDto | undefined>;
82
+ static updateProject(params: UpdatePdfWatermarkProjectParams): Promise<PdfWatermarkProjectDto | undefined>;
83
+ static deleteProject(params: PdfWatermarkProjectIdParams): Promise<void>;
84
+ /** Upload/replace the project's source PDF (base64; ≤15MB in accounts). */
85
+ static setPdf(params: SetPdfWatermarkPdfParams): Promise<void>;
86
+ /** Check a confidential project's password. */
87
+ static unlock(params: PdfWatermarkPasswordParams): Promise<boolean>;
88
+ /** Decrypted source-PDF bytes for client-side watermarking. */
89
+ static getPdfBytes(params: PdfWatermarkPasswordParams): Promise<Blob>;
90
+ /** Record a watermarked-download audit entry. */
91
+ static recordAudit(params: RecordPdfWatermarkAuditParams): Promise<void>;
92
+ static listAudit(params: RequestBaseParams): Promise<PdfWatermarkAuditEntryDto[]>;
93
+ }
@@ -0,0 +1,147 @@
1
+ import { request } from "../../utils/api.js";
2
+ import { HttpError } from "../../utils/errors.js";
3
+ const BASE = "api/pdf-watermark";
4
+ const run = async (name, url, normalizedUrl, method, params, body, responseType = "json") => {
5
+ const serviceContext = {
6
+ method: { name, url, normalizedUrl, type: method },
7
+ source: params.config.metrics?.source || "unset",
8
+ target: { name: "accounts", type: "internal" }
9
+ };
10
+ const response = await request({
11
+ config: params.config,
12
+ base: { id: "accounts" },
13
+ url,
14
+ method,
15
+ metricsDetails: serviceContext,
16
+ body,
17
+ responseType
18
+ });
19
+ if (!response.ok) {
20
+ throw new HttpError(
21
+ `${name}: ${response.status} ${response.statusText}`,
22
+ response.status,
23
+ response.statusText
24
+ );
25
+ }
26
+ return response.body;
27
+ };
28
+ class PdfWatermarkService {
29
+ static async listProjects(params) {
30
+ return await run(
31
+ "PdfWatermarkService.listProjects",
32
+ `${BASE}/projects`,
33
+ `${BASE}/projects`,
34
+ "get",
35
+ params
36
+ ) ?? [];
37
+ }
38
+ static async getProject(params) {
39
+ return run(
40
+ "PdfWatermarkService.getProject",
41
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}`,
42
+ `${BASE}/projects/:uuid`,
43
+ "get",
44
+ params
45
+ );
46
+ }
47
+ static async createProject(params) {
48
+ return run(
49
+ "PdfWatermarkService.createProject",
50
+ `${BASE}/projects`,
51
+ `${BASE}/projects`,
52
+ "post",
53
+ params,
54
+ params.body
55
+ );
56
+ }
57
+ static async updateProject(params) {
58
+ return run(
59
+ "PdfWatermarkService.updateProject",
60
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}`,
61
+ `${BASE}/projects/:uuid`,
62
+ "put",
63
+ params,
64
+ params.body
65
+ );
66
+ }
67
+ static async deleteProject(params) {
68
+ await run(
69
+ "PdfWatermarkService.deleteProject",
70
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}`,
71
+ `${BASE}/projects/:uuid`,
72
+ "delete",
73
+ params,
74
+ void 0,
75
+ "none"
76
+ );
77
+ }
78
+ /** Upload/replace the project's source PDF (base64; ≤15MB in accounts). */
79
+ static async setPdf(params) {
80
+ await run(
81
+ "PdfWatermarkService.setPdf",
82
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/pdf`,
83
+ `${BASE}/projects/:uuid/pdf`,
84
+ "put",
85
+ params,
86
+ params.body,
87
+ "none"
88
+ );
89
+ }
90
+ /** Check a confidential project's password. */
91
+ static async unlock(params) {
92
+ const body = await run(
93
+ "PdfWatermarkService.unlock",
94
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/unlock`,
95
+ `${BASE}/projects/:uuid/unlock`,
96
+ "post",
97
+ params,
98
+ params.body
99
+ );
100
+ return Boolean(body?.ok);
101
+ }
102
+ /** Decrypted source-PDF bytes for client-side watermarking. */
103
+ static async getPdfBytes(params) {
104
+ const body = await run(
105
+ "PdfWatermarkService.getPdfBytes",
106
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/pdf-decrypt`,
107
+ `${BASE}/projects/:uuid/pdf-decrypt`,
108
+ "post",
109
+ params,
110
+ params.body,
111
+ "blob"
112
+ );
113
+ if (!body) {
114
+ throw new HttpError(
115
+ "PdfWatermarkService.getPdfBytes: empty response body",
116
+ 500,
117
+ "empty response body"
118
+ );
119
+ }
120
+ return body;
121
+ }
122
+ /** Record a watermarked-download audit entry. */
123
+ static async recordAudit(params) {
124
+ await run(
125
+ "PdfWatermarkService.recordAudit",
126
+ `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/audit`,
127
+ `${BASE}/projects/:uuid/audit`,
128
+ "post",
129
+ params,
130
+ params.body,
131
+ "none"
132
+ );
133
+ }
134
+ static async listAudit(params) {
135
+ return await run(
136
+ "PdfWatermarkService.listAudit",
137
+ `${BASE}/audit`,
138
+ `${BASE}/audit`,
139
+ "get",
140
+ params
141
+ ) ?? [];
142
+ }
143
+ }
144
+ export {
145
+ PdfWatermarkService
146
+ };
147
+ //# sourceMappingURL=pdf-watermark.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/accounts/pdf-watermark.service.ts"],
4
+ "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type {\n RequestBaseMethodType,\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\nconst BASE = 'api/pdf-watermark'\n\nexport interface PdfWatermarkProjectDto {\n uuid: string\n name: string\n confidential: boolean\n template: string\n angle: number\n rows: string[]\n hasPdf: boolean\n pdfFilename?: string\n createdBy: string\n created: Date\n updated: Date\n}\n\nexport interface PdfWatermarkAuditEntryDto {\n uuid: string\n projectUuid: string\n projectName: string\n userId: string\n userEmail: string\n customText: string\n created: Date\n}\n\nexport interface CreatePdfWatermarkProjectParams extends RequestBaseParams {\n body: {\n name: string\n confidential: boolean\n template: string\n angle: number\n password?: string\n }\n}\n\nexport interface UpdatePdfWatermarkProjectParams extends RequestBaseParams {\n params: { uuid: string }\n body: {\n name?: string\n template?: string\n angle?: number\n rows?: string[]\n }\n}\n\nexport interface PdfWatermarkProjectIdParams extends RequestBaseParams {\n params: { uuid: string }\n}\n\nexport interface SetPdfWatermarkPdfParams extends RequestBaseParams {\n params: { uuid: string }\n body: {\n pdfBase64: string\n filename: string\n password?: string\n }\n}\n\nexport interface PdfWatermarkPasswordParams extends RequestBaseParams {\n params: { uuid: string }\n body: { password?: string }\n}\n\nexport interface RecordPdfWatermarkAuditParams extends RequestBaseParams {\n params: { uuid: string }\n body: {\n projectName: string\n customText: string\n userEmail: string\n }\n}\n\n/** Shared request runner: all PDF-watermark routes live on the accounts base. */\nconst run = async <T>(\n name: string,\n url: string,\n normalizedUrl: string,\n method: RequestBaseMethodType,\n params: RequestBaseParams,\n body?: object,\n responseType: 'json' | 'none' | 'blob' = 'json',\n): Promise<T | undefined> => {\n const serviceContext: RequestBaseServiceContext = {\n method: { name, url, normalizedUrl, type: method },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n const response = await request<T>({\n config: params.config,\n base: { id: 'accounts' },\n url,\n method,\n metricsDetails: serviceContext,\n body,\n responseType,\n })\n if (!response.ok) {\n throw new HttpError(\n `${name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n}\n\n/** PDF watermark projects (god-tool): templates, entries, watermarked PDFs. */\nexport class PdfWatermarkService {\n public static async listProjects(\n params: RequestBaseParams,\n ): Promise<PdfWatermarkProjectDto[]> {\n return (\n (await run<PdfWatermarkProjectDto[]>(\n 'PdfWatermarkService.listProjects',\n `${BASE}/projects`,\n `${BASE}/projects`,\n 'get',\n params,\n )) ?? []\n )\n }\n\n public static async getProject(\n params: PdfWatermarkProjectIdParams,\n ): Promise<PdfWatermarkProjectDto | undefined> {\n return run<PdfWatermarkProjectDto>(\n 'PdfWatermarkService.getProject',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}`,\n `${BASE}/projects/:uuid`,\n 'get',\n params,\n )\n }\n\n public static async createProject(\n params: CreatePdfWatermarkProjectParams,\n ): Promise<PdfWatermarkProjectDto | undefined> {\n return run<PdfWatermarkProjectDto>(\n 'PdfWatermarkService.createProject',\n `${BASE}/projects`,\n `${BASE}/projects`,\n 'post',\n params,\n params.body,\n )\n }\n\n public static async updateProject(\n params: UpdatePdfWatermarkProjectParams,\n ): Promise<PdfWatermarkProjectDto | undefined> {\n return run<PdfWatermarkProjectDto>(\n 'PdfWatermarkService.updateProject',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}`,\n `${BASE}/projects/:uuid`,\n 'put',\n params,\n params.body,\n )\n }\n\n public static async deleteProject(\n params: PdfWatermarkProjectIdParams,\n ): Promise<void> {\n await run(\n 'PdfWatermarkService.deleteProject',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}`,\n `${BASE}/projects/:uuid`,\n 'delete',\n params,\n undefined,\n 'none',\n )\n }\n\n /** Upload/replace the project's source PDF (base64; \u226415MB in accounts). */\n public static async setPdf(params: SetPdfWatermarkPdfParams): Promise<void> {\n await run(\n 'PdfWatermarkService.setPdf',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/pdf`,\n `${BASE}/projects/:uuid/pdf`,\n 'put',\n params,\n params.body,\n 'none',\n )\n }\n\n /** Check a confidential project's password. */\n public static async unlock(\n params: PdfWatermarkPasswordParams,\n ): Promise<boolean> {\n const body = await run<{ ok?: boolean }>(\n 'PdfWatermarkService.unlock',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/unlock`,\n `${BASE}/projects/:uuid/unlock`,\n 'post',\n params,\n params.body,\n )\n return Boolean(body?.ok)\n }\n\n /** Decrypted source-PDF bytes for client-side watermarking. */\n public static async getPdfBytes(\n params: PdfWatermarkPasswordParams,\n ): Promise<Blob> {\n const body = await run<Blob>(\n 'PdfWatermarkService.getPdfBytes',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/pdf-decrypt`,\n `${BASE}/projects/:uuid/pdf-decrypt`,\n 'post',\n params,\n params.body,\n 'blob',\n )\n if (!body) {\n throw new HttpError(\n 'PdfWatermarkService.getPdfBytes: empty response body',\n 500,\n 'empty response body',\n )\n }\n return body\n }\n\n /** Record a watermarked-download audit entry. */\n public static async recordAudit(\n params: RecordPdfWatermarkAuditParams,\n ): Promise<void> {\n await run(\n 'PdfWatermarkService.recordAudit',\n `${BASE}/projects/${encodeURIComponent(params.params.uuid)}/audit`,\n `${BASE}/projects/:uuid/audit`,\n 'post',\n params,\n params.body,\n 'none',\n )\n }\n\n public static async listAudit(\n params: RequestBaseParams,\n ): Promise<PdfWatermarkAuditEntryDto[]> {\n return (\n (await run<PdfWatermarkAuditEntryDto[]>(\n 'PdfWatermarkService.listAudit',\n `${BASE}/audit`,\n `${BASE}/audit`,\n 'get',\n params,\n )) ?? []\n )\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,25 @@
1
+ import type { RequestBaseParams } from '../../types/general.types.js';
2
+ /**
3
+ * Known Self-Managed release-train names, mirrored from accounts' hardcoded
4
+ * list (there is no list-all endpoint — the backend only serves get-by-name,
5
+ * so the UI iterates this set and lets the user search other names manually).
6
+ */
7
+ export declare const KNOWN_RELEASE_TRAINS: readonly ["8.10-alpha", "8.9-minor", "8.8-patch", "8.7-patch", "8.6-patch", "8.5-patch"];
8
+ /**
9
+ * Release info for a Self-Managed train. The payload is version metadata keyed
10
+ * by component; only `consoleVersion` is rendered today, the rest stays opaque.
11
+ */
12
+ export interface ReleaseTrainInfoDto {
13
+ consoleVersion?: string;
14
+ [key: string]: unknown;
15
+ }
16
+ export interface GetReleaseTrainParams extends RequestBaseParams {
17
+ params: {
18
+ /** Train name, e.g. `8.8-patch`. */
19
+ name: string;
20
+ };
21
+ }
22
+ export declare class ReleaseTrainService {
23
+ /** Release info for one SM train (`GET api/releases/release-train/:name`). */
24
+ static get(params: GetReleaseTrainParams): Promise<ReleaseTrainInfoDto | undefined>;
25
+ }
@@ -0,0 +1,46 @@
1
+ import { request } from "../../utils/api.js";
2
+ import { HttpError } from "../../utils/errors.js";
3
+ const KNOWN_RELEASE_TRAINS = [
4
+ "8.10-alpha",
5
+ "8.9-minor",
6
+ "8.8-patch",
7
+ "8.7-patch",
8
+ "8.6-patch",
9
+ "8.5-patch"
10
+ ];
11
+ class ReleaseTrainService {
12
+ /** Release info for one SM train (`GET api/releases/release-train/:name`). */
13
+ static async get(params) {
14
+ const serviceContext = {
15
+ method: {
16
+ name: `ReleaseTrainService.get`,
17
+ url: `api/releases/release-train/${encodeURIComponent(params.params.name)}`,
18
+ normalizedUrl: `api/releases/release-train/:name`,
19
+ type: "get"
20
+ },
21
+ source: params.config.metrics?.source || "unset",
22
+ target: { name: "accounts", type: "internal" }
23
+ };
24
+ const response = await request({
25
+ ...params,
26
+ base: { id: "accounts" },
27
+ url: serviceContext.method.url,
28
+ method: serviceContext.method.type,
29
+ metricsDetails: serviceContext,
30
+ responseType: "json"
31
+ });
32
+ if (!response.ok) {
33
+ throw new HttpError(
34
+ `${serviceContext.method.name}: ${response.status} ${response.statusText}`,
35
+ response.status,
36
+ response.statusText
37
+ );
38
+ }
39
+ return response.body;
40
+ }
41
+ }
42
+ export {
43
+ KNOWN_RELEASE_TRAINS,
44
+ ReleaseTrainService
45
+ };
46
+ //# sourceMappingURL=release-train.service.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/services/accounts/release-train.service.ts"],
4
+ "sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type {\n RequestBaseParams,\n RequestBaseServiceContext,\n} from '../../types/general.types.js'\nimport { request } from '../../utils/api.js'\nimport { HttpError } from '../../utils/errors.js'\n\n/**\n * Known Self-Managed release-train names, mirrored from accounts' hardcoded\n * list (there is no list-all endpoint \u2014 the backend only serves get-by-name,\n * so the UI iterates this set and lets the user search other names manually).\n */\nexport const KNOWN_RELEASE_TRAINS = [\n '8.10-alpha',\n '8.9-minor',\n '8.8-patch',\n '8.7-patch',\n '8.6-patch',\n '8.5-patch',\n] as const\n\n/**\n * Release info for a Self-Managed train. The payload is version metadata keyed\n * by component; only `consoleVersion` is rendered today, the rest stays opaque.\n */\nexport interface ReleaseTrainInfoDto {\n consoleVersion?: string\n [key: string]: unknown\n}\n\nexport interface GetReleaseTrainParams extends RequestBaseParams {\n params: {\n /** Train name, e.g. `8.8-patch`. */\n name: string\n }\n}\n\nexport class ReleaseTrainService {\n /** Release info for one SM train (`GET api/releases/release-train/:name`). */\n public static async get(\n params: GetReleaseTrainParams,\n ): Promise<ReleaseTrainInfoDto | undefined> {\n const serviceContext: RequestBaseServiceContext = {\n method: {\n name: `ReleaseTrainService.get`,\n url: `api/releases/release-train/${encodeURIComponent(params.params.name)}`,\n normalizedUrl: `api/releases/release-train/:name`,\n type: 'get',\n },\n source: params.config.metrics?.source || 'unset',\n target: { name: 'accounts', type: 'internal' },\n }\n\n const response = await request<ReleaseTrainInfoDto>({\n ...params,\n base: { id: 'accounts' },\n url: serviceContext.method.url,\n method: serviceContext.method.type,\n metricsDetails: serviceContext,\n responseType: 'json',\n })\n if (!response.ok) {\n throw new HttpError(\n `${serviceContext.method.name}: ${response.status} ${response.statusText}`,\n response.status,\n response.statusText,\n )\n }\n return response.body\n }\n}\n"],
5
+ "mappings": "AAUA,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAOnB,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAkBO,MAAM,oBAAoB;AAAA;AAAA,EAE/B,aAAoB,IAClB,QAC0C;AAC1C,UAAM,iBAA4C;AAAA,MAChD,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,KAAK,8BAA8B,mBAAmB,OAAO,OAAO,IAAI,CAAC;AAAA,QACzE,eAAe;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,OAAO,OAAO,SAAS,UAAU;AAAA,MACzC,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC/C;AAEA,UAAM,WAAW,MAAM,QAA6B;AAAA,MAClD,GAAG;AAAA,MACH,MAAM,EAAE,IAAI,WAAW;AAAA,MACvB,KAAK,eAAe,OAAO;AAAA,MAC3B,QAAQ,eAAe,OAAO;AAAA,MAC9B,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,GAAG,eAAe,OAAO,IAAI,KAAK,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,QACxE,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AACF;",
6
+ "names": []
7
+ }
@@ -1,5 +1,50 @@
1
+ import { type Limits, type SalesPlanDto, SalesPlanType } from '@camunda/ccma-shared-types';
1
2
  import type { RequestBaseParams } from '../../types/general.types.js';
3
+ export type GetSalesPlansRequest = RequestBaseParams;
4
+ export interface CreateSalesPlanRequest extends RequestBaseParams {
5
+ params: {
6
+ name: string;
7
+ type: SalesPlanType;
8
+ version: number;
9
+ };
10
+ }
11
+ export interface UpdateSalesPlanRequest extends RequestBaseParams {
12
+ params: {
13
+ salesPlanUuid: string;
14
+ name: string;
15
+ version: number;
16
+ force: boolean;
17
+ clusterPlanConfigurationMap: Record<string, unknown>;
18
+ };
19
+ }
20
+ export interface UpdateSalesPlanMetadataRequest extends RequestBaseParams {
21
+ params: {
22
+ salesPlanUuid: string;
23
+ metadata: {
24
+ limits?: Limits;
25
+ description?: string;
26
+ };
27
+ name?: string;
28
+ };
29
+ }
30
+ export interface UpdateSalesPlanReservationsRequest extends RequestBaseParams {
31
+ params: {
32
+ orgId: string;
33
+ clusterPlanTypesToReserved: Record<string, number>;
34
+ };
35
+ }
36
+ export interface DeleteSalesPlanRequest extends RequestBaseParams {
37
+ params: {
38
+ uuid: string;
39
+ };
40
+ }
2
41
  export declare class SalesPlanService {
42
+ static getAll(params: GetSalesPlansRequest): Promise<SalesPlanDto[]>;
43
+ static create(params: CreateSalesPlanRequest): Promise<SalesPlanDto>;
44
+ static update(params: UpdateSalesPlanRequest): Promise<void>;
45
+ static updateMetadata(params: UpdateSalesPlanMetadataRequest): Promise<void>;
46
+ static updateReservations(params: UpdateSalesPlanReservationsRequest): Promise<void>;
47
+ static delete(params: DeleteSalesPlanRequest): Promise<void>;
3
48
  static deleteClusterPlanType(params: {
4
49
  uuid: string;
5
50
  force?: boolean;