@hahnpro/hpc-api 2025.6.0 → 2025.10.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 (42) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/package.json +1 -1
  3. package/src/lib/interfaces/author.interface.d.ts +6 -0
  4. package/src/lib/interfaces/author.interface.js +2 -0
  5. package/src/lib/interfaces/data.interface.d.ts +2 -2
  6. package/src/lib/interfaces/index.d.ts +37 -29
  7. package/src/lib/interfaces/index.js +4 -3
  8. package/src/lib/interfaces/owner.interface.d.ts +9 -0
  9. package/src/lib/interfaces/owner.interface.js +8 -0
  10. package/src/lib/interfaces/query.interface.d.ts +11 -0
  11. package/src/lib/interfaces/query.interface.js +2 -0
  12. package/src/lib/interfaces/resource.interface.d.ts +25 -19
  13. package/src/lib/interfaces/resource.interface.js +20 -6
  14. package/src/lib/mock/ai.mock.service.d.ts +3 -3
  15. package/src/lib/mock/ai.mock.service.js +2 -2
  16. package/src/lib/mock/asset.mock.service.d.ts +2 -2
  17. package/src/lib/mock/asset.mock.service.js +2 -2
  18. package/src/lib/mock/assetTypes.mock.service.d.ts +2 -2
  19. package/src/lib/mock/assetTypes.mock.service.js +2 -2
  20. package/src/lib/mock/content.mock.service.d.ts +2 -2
  21. package/src/lib/mock/content.mock.service.js +2 -2
  22. package/src/lib/mock/flow-deployment.mock.service.js +2 -1
  23. package/src/lib/mock/flow.mock.service.d.ts +2 -2
  24. package/src/lib/mock/flow.mock.service.js +2 -2
  25. package/src/lib/mock/task.mock.service.d.ts +2 -2
  26. package/src/lib/mock/task.mock.service.js +2 -2
  27. package/src/lib/mock/timeseries.mock.service.d.ts +2 -2
  28. package/src/lib/mock/timeseries.mock.service.js +2 -2
  29. package/src/lib/services/ai.service.d.ts +2 -2
  30. package/src/lib/services/ai.service.js +4 -4
  31. package/src/lib/services/asset.service.d.ts +2 -2
  32. package/src/lib/services/asset.service.js +2 -2
  33. package/src/lib/services/assettypes.service.d.ts +2 -1
  34. package/src/lib/services/assettypes.service.js +3 -0
  35. package/src/lib/services/data.service.d.ts +2 -2
  36. package/src/lib/services/data.service.js +2 -2
  37. package/src/lib/services/flow-deployment.service.d.ts +2 -2
  38. package/src/lib/services/flow-deployment.service.js +1 -1
  39. package/src/lib/services/http-client.service.d.ts +2 -2
  40. package/src/lib/services/http-client.service.js +10 -3
  41. package/src/lib/services/organizations-resources.service.d.ts +3 -2
  42. package/src/lib/services/organizations-resources.service.js +16 -16
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @hahnpro/hpc-api
2
2
 
3
+ ## 2025.6.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Added TokenOptions to AI-Service methods: getAssistants(...) and deleteThread(...)
8
+ - Fixed and optimized SSE message and error handling
9
+ - Optimized encapsulation of the method 'getSseObservable' in the HttpClient class.
10
+ - Added DeleteAssetTypeQuery interface to asset-type-service for deleteOne(...) method.
11
+
12
+ ## 2025.6.1
13
+
14
+ ### Patch Changes
15
+
16
+ - Fixed the parameter type of the deleteOne(...) endpoints: using the DeleteQuery interface instead of only `force: boolean`
17
+
3
18
  ## 2025.6.0
4
19
 
5
20
  ### Major Changes
@@ -30,7 +45,7 @@
30
45
 
31
46
  ## 2025.3.9
32
47
 
33
- - Updated Content Interface and Task Interface, Added `addElementToProperty` and `removeElementToProperty` mehtods to Asset API service
48
+ - Updated Content Interface and Task Interface, Added `addElementToProperty` and `removeElementToProperty` methods to Asset API service
34
49
 
35
50
  ## 2025.3.4
36
51
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hahnpro/hpc-api",
3
- "version": "2025.6.0",
3
+ "version": "2025.10.0",
4
4
  "description": "Module for easy access to the HahnPRO Cloud API",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -0,0 +1,6 @@
1
+ export interface Author {
2
+ id: string;
3
+ username?: string;
4
+ impersonatorId?: string;
5
+ impersonatorUsername?: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,4 @@
1
- import { TokenOption } from '.';
1
+ import { DeleteQuery, TokenOption } from '.';
2
2
  export interface Paginated<T> {
3
3
  docs: T[];
4
4
  total: number;
@@ -34,6 +34,6 @@ export interface DataInterface<T> {
34
34
  updateOne(id: string, dto: any, options?: TokenOption & {
35
35
  [key: string]: any;
36
36
  }): Promise<T>;
37
- deleteOne(id: string, force: boolean, options?: TokenOption): Promise<any>;
37
+ deleteOne(id: string, deleteQuery: DeleteQuery, options?: TokenOption): Promise<any>;
38
38
  }
39
39
  export {};
@@ -1,29 +1,37 @@
1
- export { AiAssistant, AssistantMessage, Message, SpeechToken, SystemMessage, Thread, ThreadPopulated, ToolMessage, UserMessage, } from './ai.interface';
2
- export { Alert, AlertCondition, AlertLevel, AlertType, TimeSeriesReference } from './alert.interface';
3
- export { Asset, AssetTypeRevision, AssetRevision, AssetType, Attachment, EventCause, EventLevelOverride, Template, RemoveFromProperty, AddToProperty, } from './asset.interface';
4
- export { ReturnType, Content, ContentAnalysis } from './content.interface';
5
- export { Filter, Paginated, RequestParameter, DataInterface, instanceOfTimePeriod } from './data.interface';
6
- export { Endpoint, EndpointLog, NotificationPayload } from './endpoint.interface';
7
- export { Event, EventLevel, CreateEventDto } from './event.interface';
8
- export { FlowDto, FlowDiagram, FlowRevision, DashboardItem } from './flow.interface';
9
- export { FlowDeployment, FlowDeploymentMetrics, FlowLog, FlowDeploymentStatistic, FlowModel, FlowModelElement, Metrics, FlowConnection, Stats, StatsValues, } from './flow-deployment.interface';
10
- export { FlowFunctionDto, FlowFunctionRevision } from './flow-function.interface';
11
- export { FlowModule } from './flow-module.interface';
12
- export { TokenOption, Issuer, Config } from './http.interface';
13
- export { InvitationRepresentation } from './invitation-representation.interface';
14
- export { KeycloakProfile } from './keycloak-profile.interface';
15
- export { Label, CreateLabelDto, UpdateLabelDto } from './label.interface';
16
- export { NotificationType, Notification } from './notification.interface';
17
- export { TagRule, NotificationRule, StatusRule } from './notification-rule.interface';
18
- export { Organization, OrganizationCreateDto, OrganizationData, OrganizationDataKind, OrganizationDomain, OrganizationName, OrganizationRolesAdjustment, OrganizationSearchQuery, SubscriptionType, UserWithOrgRoles, } from './organization.interface';
19
- export { OrganizationRoleRepresentation } from './organization-role-representation.interface';
20
- export { OrganizationResourcesProgress, OrganizationResourcesProgressDto, OrganizationResourcesProgressErrorDto, } from './organizations-resources.interface';
21
- export { Author, Owner, OwnerType, Resource, ResourceReference } from './resource.interface';
22
- export { JsonSchema, JsonSchemaArray, JsonSchemaForm, JsonSchemaType, JsonSchemaTypeName } from './schema.interface';
23
- export { SearchOptions, SearchResult, SearchSortOption, SortableField } from './search.interface';
24
- export { Secret } from './secret.interface';
25
- export { FileType, Artifact, Storage, StorageProvider } from './storage.interface';
26
- export { Task, LogbookEntry, LogbookEntryDto } from './task.interface';
27
- export { TimeSeries, TimeSeriesBucket, TimeSeriesCondition, TimeSeriesValue, TS_GROUPS } from './timeseries.interface';
28
- export { Permission, Application, TableSetting, TableSettingProfile, UserSettings } from './user-settings.interface';
29
- export { VaultSecret } from './vault.interface';
1
+ export type { AiAssistant, AssistantMessage, Message, SpeechToken, SystemMessage, Thread, ThreadPopulated, ToolMessage, UserMessage, } from './ai.interface';
2
+ export type { Alert, AlertCondition, TimeSeriesReference } from './alert.interface';
3
+ export type { Asset, AssetTypeRevision, AssetRevision, AssetType, Attachment, EventCause, EventLevelOverride, Template, RemoveFromProperty, AddToProperty, } from './asset.interface';
4
+ export type { Author } from './author.interface';
5
+ export type { Content, ContentAnalysis } from './content.interface';
6
+ export type { Filter, Paginated, RequestParameter, DataInterface } from './data.interface';
7
+ export type { Endpoint, EndpointLog, NotificationPayload } from './endpoint.interface';
8
+ export type { Event, EventLevel, CreateEventDto } from './event.interface';
9
+ export type { FlowDto, FlowDiagram, FlowRevision, DashboardItem } from './flow.interface';
10
+ export type { FlowDeployment, FlowDeploymentMetrics, FlowLog, FlowDeploymentStatistic, FlowModel, FlowModelElement, Metrics, FlowConnection, Stats, StatsValues, } from './flow-deployment.interface';
11
+ export type { FlowFunctionDto, FlowFunctionRevision } from './flow-function.interface';
12
+ export type { FlowModule } from './flow-module.interface';
13
+ export type { TokenOption, Issuer, Config } from './http.interface';
14
+ export type { InvitationRepresentation } from './invitation-representation.interface';
15
+ export type { KeycloakProfile } from './keycloak-profile.interface';
16
+ export type { Label, CreateLabelDto, UpdateLabelDto } from './label.interface';
17
+ export type { NotificationType, Notification } from './notification.interface';
18
+ export type { TagRule, NotificationRule, StatusRule } from './notification-rule.interface';
19
+ export type { Owner } from './owner.interface';
20
+ export type { Organization, OrganizationCreateDto, OrganizationData, OrganizationDataKind, OrganizationDomain, OrganizationName, OrganizationRolesAdjustment, OrganizationSearchQuery, SubscriptionType, UserWithOrgRoles, } from './organization.interface';
21
+ export type { OrganizationRoleRepresentation } from './organization-role-representation.interface';
22
+ export type { OrganizationResourcesProgress, OrganizationResourcesProgressDto, OrganizationResourcesProgressErrorDto, } from './organizations-resources.interface';
23
+ export type { Resource, ResourceReference } from './resource.interface';
24
+ export type { JsonSchema, JsonSchemaArray, JsonSchemaForm, JsonSchemaType, JsonSchemaTypeName } from './schema.interface';
25
+ export type { DeleteQuery, DeleteAssetTypeQuery, DeleteAssetQuery } from './query.interface';
26
+ export type { SearchOptions, SearchResult, SearchSortOption, SortableField } from './search.interface';
27
+ export type { Secret } from './secret.interface';
28
+ export type { FileType, Artifact, Storage, StorageProvider } from './storage.interface';
29
+ export type { Task, LogbookEntry, LogbookEntryDto } from './task.interface';
30
+ export type { TimeSeries, TimeSeriesBucket, TimeSeriesCondition, TimeSeriesValue, TS_GROUPS } from './timeseries.interface';
31
+ export type { Permission, Application, TableSetting, TableSettingProfile, UserSettings } from './user-settings.interface';
32
+ export type { VaultSecret } from './vault.interface';
33
+ export { AlertLevel, AlertType } from './alert.interface';
34
+ export { ReturnType } from './content.interface';
35
+ export { instanceOfTimePeriod } from './data.interface';
36
+ export { OwnerType } from './owner.interface';
37
+ export { ResourceType } from './resource.interface';
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OwnerType = exports.instanceOfTimePeriod = exports.ContentAnalysis = exports.ReturnType = exports.AlertType = exports.AlertLevel = void 0;
3
+ exports.ResourceType = exports.OwnerType = exports.instanceOfTimePeriod = exports.ReturnType = exports.AlertType = exports.AlertLevel = void 0;
4
4
  var alert_interface_1 = require("./alert.interface");
5
5
  Object.defineProperty(exports, "AlertLevel", { enumerable: true, get: function () { return alert_interface_1.AlertLevel; } });
6
6
  Object.defineProperty(exports, "AlertType", { enumerable: true, get: function () { return alert_interface_1.AlertType; } });
7
7
  var content_interface_1 = require("./content.interface");
8
8
  Object.defineProperty(exports, "ReturnType", { enumerable: true, get: function () { return content_interface_1.ReturnType; } });
9
- Object.defineProperty(exports, "ContentAnalysis", { enumerable: true, get: function () { return content_interface_1.ContentAnalysis; } });
10
9
  var data_interface_1 = require("./data.interface");
11
10
  Object.defineProperty(exports, "instanceOfTimePeriod", { enumerable: true, get: function () { return data_interface_1.instanceOfTimePeriod; } });
11
+ var owner_interface_1 = require("./owner.interface");
12
+ Object.defineProperty(exports, "OwnerType", { enumerable: true, get: function () { return owner_interface_1.OwnerType; } });
12
13
  var resource_interface_1 = require("./resource.interface");
13
- Object.defineProperty(exports, "OwnerType", { enumerable: true, get: function () { return resource_interface_1.OwnerType; } });
14
+ Object.defineProperty(exports, "ResourceType", { enumerable: true, get: function () { return resource_interface_1.ResourceType; } });
@@ -0,0 +1,9 @@
1
+ export interface Owner {
2
+ id: string;
3
+ type: OwnerType;
4
+ name?: string;
5
+ }
6
+ export declare enum OwnerType {
7
+ ORG = "org",
8
+ USER = "user"
9
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OwnerType = void 0;
4
+ var OwnerType;
5
+ (function (OwnerType) {
6
+ OwnerType["ORG"] = "org";
7
+ OwnerType["USER"] = "user";
8
+ })(OwnerType || (exports.OwnerType = OwnerType = {}));
@@ -0,0 +1,11 @@
1
+ export interface DeleteQuery {
2
+ force?: boolean;
3
+ }
4
+ export interface DeleteAssetTypeQuery extends DeleteQuery {
5
+ removeSubtypesOfSupertype?: boolean;
6
+ removeFromAllowedParents?: boolean;
7
+ }
8
+ export interface DeleteAssetQuery extends DeleteQuery {
9
+ securityCheck?: boolean;
10
+ removeChildren?: boolean;
11
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +1,28 @@
1
+ import { Author } from './author.interface';
2
+ import { Owner } from './owner.interface';
3
+ export declare enum ResourceType {
4
+ ALERT = "alert",
5
+ ASSET = "asset",
6
+ ASSETTYPE = "assettype",
7
+ CONTENT = "content",
8
+ EVENT = "event",
9
+ FLOW = "flow",
10
+ FLOWDEPLOYMENT = "flowdeployment",
11
+ FLOWFUNCTION = "flowfunction",
12
+ FLOWMODULE = "flowmodule",
13
+ LABEL = "label",
14
+ NOTIFICATIONENDPOINT = "notificationendpoint",
15
+ NOTIFICATIONRULE = "notificationrule",
16
+ SECRET = "secret",
17
+ TIMESERIES = "timeseries",
18
+ TASK = "task",
19
+ UNKNOWN = "unknown"
20
+ }
21
+ export interface ResourceReference {
22
+ id: string;
23
+ resourceType: ResourceType;
24
+ dependent?: boolean;
25
+ }
1
26
  export interface Resource {
2
27
  id?: string;
3
28
  name: string;
@@ -13,22 +38,3 @@ export interface Resource {
13
38
  updatedBy?: Author;
14
39
  deletedAt?: string;
15
40
  }
16
- export interface ResourceReference {
17
- id: string;
18
- resourceType: string;
19
- dependent?: boolean;
20
- }
21
- export interface Owner {
22
- id: string;
23
- type: OwnerType;
24
- }
25
- export declare enum OwnerType {
26
- ORG = "org",
27
- USER = "user"
28
- }
29
- export interface Author {
30
- id: string;
31
- username?: string;
32
- impersonatorId?: string;
33
- impersonatorUsername?: string;
34
- }
@@ -1,8 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OwnerType = void 0;
4
- var OwnerType;
5
- (function (OwnerType) {
6
- OwnerType["ORG"] = "org";
7
- OwnerType["USER"] = "user";
8
- })(OwnerType || (exports.OwnerType = OwnerType = {}));
3
+ exports.ResourceType = void 0;
4
+ var ResourceType;
5
+ (function (ResourceType) {
6
+ ResourceType["ALERT"] = "alert";
7
+ ResourceType["ASSET"] = "asset";
8
+ ResourceType["ASSETTYPE"] = "assettype";
9
+ ResourceType["CONTENT"] = "content";
10
+ ResourceType["EVENT"] = "event";
11
+ ResourceType["FLOW"] = "flow";
12
+ ResourceType["FLOWDEPLOYMENT"] = "flowdeployment";
13
+ ResourceType["FLOWFUNCTION"] = "flowfunction";
14
+ ResourceType["FLOWMODULE"] = "flowmodule";
15
+ ResourceType["LABEL"] = "label";
16
+ ResourceType["NOTIFICATIONENDPOINT"] = "notificationendpoint";
17
+ ResourceType["NOTIFICATIONRULE"] = "notificationrule";
18
+ ResourceType["SECRET"] = "secret";
19
+ ResourceType["TIMESERIES"] = "timeseries";
20
+ ResourceType["TASK"] = "task";
21
+ ResourceType["UNKNOWN"] = "unknown";
22
+ })(ResourceType || (exports.ResourceType = ResourceType = {}));
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock } from '.';
2
- import { AiAssistant, Message, Paginated, SpeechToken, Thread, ThreadPopulated } from '../interfaces';
2
+ import { AiAssistant, Message, Paginated, SpeechToken, Thread, ThreadPopulated, TokenOption } from '../interfaces';
3
3
  import { AiService } from '../services';
4
4
  export declare class AiMockService extends APIBaseMock<never> implements AiService {
5
5
  constructor();
@@ -7,7 +7,7 @@ export declare class AiMockService extends APIBaseMock<never> implements AiServi
7
7
  createThread(assistantId: string): Promise<ThreadPopulated>;
8
8
  getLatestAssistantThread(assistantId: string): Promise<ThreadPopulated>;
9
9
  getAssistant(assistantId: string): Promise<AiAssistant>;
10
- getAssistants(): Promise<AiAssistant[]>;
10
+ getAssistants(options?: TokenOption): Promise<AiAssistant[]>;
11
11
  getSpeechToken(): Promise<SpeechToken>;
12
12
  getThreadMessages(threadId: string): Promise<Paginated<Message>>;
13
13
  getThread(threadId: string): Promise<ThreadPopulated>;
@@ -15,5 +15,5 @@ export declare class AiMockService extends APIBaseMock<never> implements AiServi
15
15
  listThreads(): Promise<ThreadPopulated[]>;
16
16
  listAssistantThreads(assistantId: string): Promise<ThreadPopulated[]>;
17
17
  provideFeedback(traceId: string, value: number, comment?: string): Promise<void>;
18
- deleteThread(threadId: string): Promise<Thread>;
18
+ deleteThread(threadId: string, options?: TokenOption): Promise<Thread>;
19
19
  }
@@ -18,7 +18,7 @@ class AiMockService extends _1.APIBaseMock {
18
18
  getAssistant(assistantId) {
19
19
  throw new Error('Method not implemented.');
20
20
  }
21
- getAssistants() {
21
+ getAssistants(options = {}) {
22
22
  throw new Error('Method not implemented.');
23
23
  }
24
24
  getSpeechToken() {
@@ -42,7 +42,7 @@ class AiMockService extends _1.APIBaseMock {
42
42
  provideFeedback(traceId, value, comment) {
43
43
  throw new Error('Method not implemented.');
44
44
  }
45
- deleteThread(threadId) {
45
+ deleteThread(threadId, options = {}) {
46
46
  throw new Error('Method not implemented.');
47
47
  }
48
48
  }
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock, DataMockService, MockAPI, TrashMockService } from '.';
2
- import { AddToProperty, Asset, AssetRevision, Attachment, EventCause, EventLevelOverride, Filter, Paginated, RemoveFromProperty, RequestParameter, TokenOption } from '../interfaces';
2
+ import { AddToProperty, Asset, AssetRevision, Attachment, DeleteQuery, EventCause, EventLevelOverride, Filter, Paginated, RemoveFromProperty, RequestParameter, TokenOption } from '../interfaces';
3
3
  import { AssetService } from '../services';
4
4
  import { CrossPlatformFormData } from '../utils';
5
5
  interface BaseService extends DataMockService<Asset>, TrashMockService<Asset> {
@@ -15,7 +15,7 @@ export declare class AssetMockService extends BaseService implements AssetServic
15
15
  private getAssets;
16
16
  addOne(dto: Asset): Promise<Asset>;
17
17
  count(filter: Filter, options?: TokenOption): Promise<number>;
18
- deleteOne(assetId: string, force?: boolean): Promise<Asset>;
18
+ deleteOne(assetId: string, deleteQuery?: DeleteQuery): Promise<Asset>;
19
19
  getMany(params?: RequestParameter): Promise<Paginated<Asset>>;
20
20
  updateOne(assetId: string, dto: Asset): Promise<Asset>;
21
21
  addAttachment(id: string, form: CrossPlatformFormData): Promise<Asset>;
@@ -37,9 +37,9 @@ class AssetMockService extends BaseService {
37
37
  count(filter, options = {}) {
38
38
  return Promise.resolve(this.data.length);
39
39
  }
40
- deleteOne(assetId, force = false) {
40
+ deleteOne(assetId, deleteQuery = {}) {
41
41
  const asset = this.data.find((v) => v.id === assetId);
42
- if (!asset?.deletedAt && !force) {
42
+ if (!asset?.deletedAt && !deleteQuery.force) {
43
43
  // put asset in paper bin by setting deletedAt prop
44
44
  asset.deletedAt = new Date().toISOString();
45
45
  return Promise.resolve(asset);
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock, DataMockService, TrashMockService } from '.';
2
- import { AssetType, AssetTypeRevision, Paginated, RequestParameter, Template } from '../interfaces';
2
+ import { AssetType, AssetTypeRevision, DeleteAssetTypeQuery, Paginated, RequestParameter, Template } from '../interfaces';
3
3
  import { AssetTypesService } from '../services';
4
4
  interface BaseService extends DataMockService<AssetType>, TrashMockService<AssetType> {
5
5
  }
@@ -10,7 +10,7 @@ export declare class AssetTypesMockService extends BaseService implements AssetT
10
10
  constructor(assetTypes: Array<AssetType | string>, revisions: AssetTypeRevision[]);
11
11
  getMany(params?: RequestParameter): Promise<Paginated<AssetType>>;
12
12
  addOne(dto: AssetType): Promise<AssetType>;
13
- deleteOne(id: string, force?: boolean): Promise<any>;
13
+ deleteOne(id: string, deleteQuery?: DeleteAssetTypeQuery): Promise<any>;
14
14
  updateOne(id: string, dto: AssetType): Promise<AssetType>;
15
15
  getRevisions(id: string): Promise<Paginated<AssetTypeRevision>>;
16
16
  rollback(id: string, revisionId: string): Promise<AssetType>;
@@ -31,9 +31,9 @@ class AssetTypesMockService extends BaseService {
31
31
  this.revisions.push({ ...dto, id, originalId: dto.id });
32
32
  return super.addOne(dto);
33
33
  }
34
- deleteOne(id, force = false) {
34
+ deleteOne(id, deleteQuery = {}) {
35
35
  const assettype = this.data.find((v) => v.id === id);
36
- if (!assettype?.deletedAt && !force) {
36
+ if (!assettype?.deletedAt && !deleteQuery.force) {
37
37
  // put asset in paper bin by setting deletedAt prop
38
38
  assettype.deletedAt = new Date().toISOString();
39
39
  return Promise.resolve(assettype);
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock, DataMockService, TrashMockService } from '.';
2
- import { Content, Paginated, RequestParameter, ReturnType } from '../interfaces';
2
+ import { Content, DeleteQuery, Paginated, RequestParameter, ReturnType } from '../interfaces';
3
3
  import { ContentService } from '../services';
4
4
  import { CrossPlatformFormData } from '../utils';
5
5
  interface BaseService extends DataMockService<Content>, TrashMockService<Content> {
@@ -15,7 +15,7 @@ export declare class ContentMockService extends BaseService implements ContentSe
15
15
  download(id: string, returnType: ReturnType.NODEBUFFER): Promise<Buffer>;
16
16
  download(id: string, returnType: ReturnType.BLOB): Promise<Blob>;
17
17
  download(id: string, returnType: ReturnType.ARRAYBUFFER): Promise<ArrayBuffer>;
18
- deleteOne(contentId: string, force?: boolean): Promise<Content>;
18
+ deleteOne(contentId: string, deleteQuery?: DeleteQuery): Promise<Content>;
19
19
  getMany(params?: RequestParameter): Promise<Paginated<Content>>;
20
20
  upload(form: CrossPlatformFormData): Promise<Content>;
21
21
  }
@@ -60,9 +60,9 @@ class ContentMockService extends BaseService {
60
60
  return Promise.resolve(Buffer.from(this.contentData.get(id)).buffer);
61
61
  }
62
62
  }
63
- deleteOne(contentId, force = false) {
63
+ deleteOne(contentId, deleteQuery = {}) {
64
64
  const content = this.data.find((v) => v.id === contentId);
65
- if (!content?.deletedAt && !force) {
65
+ if (!content?.deletedAt && !deleteQuery.force) {
66
66
  // put content in paper bin by setting deletedAt prop
67
67
  content.deletedAt = new Date().toISOString();
68
68
  return Promise.resolve(content);
@@ -4,6 +4,7 @@ exports.FlowDeploymentMockService = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const ts_mixer_1 = require("ts-mixer");
6
6
  const _1 = require(".");
7
+ const interfaces_1 = require("../interfaces");
7
8
  let BaseService = class BaseService extends _1.APIBaseMock {
8
9
  };
9
10
  BaseService = tslib_1.__decorate([
@@ -123,7 +124,7 @@ class FlowDeploymentMockService extends BaseService {
123
124
  if (prop !== 'assetId') {
124
125
  throw new Error('not implemented');
125
126
  }
126
- return { id: (await this.api.assets.getOne(properties[prop])).id, resourceType: 'asset' };
127
+ return { id: (await this.api.assets.getOne(properties[prop])).id, resourceType: interfaces_1.ResourceType.ASSET };
127
128
  }));
128
129
  }
129
130
  }
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock, DataMockService, TrashMockService } from '.';
2
- import { FlowDeployment, FlowDiagram, FlowDto, FlowRevision, Paginated, RequestParameter } from '../interfaces';
2
+ import { DeleteQuery, FlowDeployment, FlowDiagram, FlowDto, FlowRevision, Paginated, RequestParameter } from '../interfaces';
3
3
  import { FlowService } from '../services';
4
4
  interface BaseService extends DataMockService<FlowDto>, TrashMockService<FlowDto> {
5
5
  }
@@ -9,7 +9,7 @@ export declare class FlowMockService extends BaseService implements FlowService
9
9
  private diagrams;
10
10
  private revisions;
11
11
  constructor(flows: FlowDto[], diagrams: FlowDiagram[], revisions: FlowRevision[]);
12
- deleteOne(id: string, force?: boolean): Promise<FlowDto>;
12
+ deleteOne(id: string, deleteQuery?: DeleteQuery): Promise<FlowDto>;
13
13
  addOne(dto: FlowDto): Promise<FlowDto>;
14
14
  updateOne(id: string, dto: FlowDto): Promise<FlowDto>;
15
15
  isDeploymentOnLatestDiagramVersion(depl: FlowDeployment): Promise<boolean>;
@@ -15,9 +15,9 @@ class FlowMockService extends BaseService {
15
15
  this.diagrams = diagrams;
16
16
  this.revisions = revisions;
17
17
  }
18
- deleteOne(id, force = false) {
18
+ deleteOne(id, deleteQuery = {}) {
19
19
  const flow = this.data.find((v) => v.id === id);
20
- if (!flow?.deletedAt && !force) {
20
+ if (!flow?.deletedAt && !deleteQuery.force) {
21
21
  // put flow in paper bin by setting deletedAt prop
22
22
  flow.deletedAt = new Date().toISOString();
23
23
  return Promise.resolve(flow);
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock, DataMockService, TrashMockService } from '.';
2
- import { LogbookEntry, LogbookEntryDto, Paginated, RequestParameter, Task, TokenOption } from '../interfaces';
2
+ import { DeleteQuery, LogbookEntry, LogbookEntryDto, Paginated, RequestParameter, Task, TokenOption } from '../interfaces';
3
3
  import { TaskService } from '../services';
4
4
  interface BaseService extends DataMockService<Task>, TrashMockService<Task> {
5
5
  }
@@ -9,7 +9,7 @@ export declare class TaskMockService extends BaseService implements TaskService
9
9
  private entries;
10
10
  constructor(tasks: Task[], logbookEntries?: LogbookEntry[]);
11
11
  createTaskAttachedToAsset(dto: any): Promise<Task>;
12
- deleteOne(taskId: string, force?: boolean): Promise<Task>;
12
+ deleteOne(taskId: string, deleteQuery?: DeleteQuery): Promise<Task>;
13
13
  getMany(params?: RequestParameter): Promise<Paginated<Task>>;
14
14
  findByName(name: string, options?: any): Promise<Paginated<Task>>;
15
15
  findByAsset(assetId: string, options?: any): Promise<Paginated<Task>>;
@@ -19,9 +19,9 @@ class TaskMockService extends BaseService {
19
19
  this.data.push(dto);
20
20
  return Promise.resolve(dto);
21
21
  }
22
- deleteOne(taskId, force = false) {
22
+ deleteOne(taskId, deleteQuery = {}) {
23
23
  const task = this.data.find((v) => v.id === taskId);
24
- if (!task?.deletedAt && !force) {
24
+ if (!task?.deletedAt && !deleteQuery.force) {
25
25
  // put content in paper bin by setting deletedAt prop
26
26
  task.deletedAt = new Date().toISOString();
27
27
  return Promise.resolve(task);
@@ -1,5 +1,5 @@
1
1
  import { APIBaseMock, DataMockService, TrashMockService } from '.';
2
- import { Paginated, RequestParameter, TimeSeries, TimeSeriesValue, TS_GROUPS } from '../interfaces';
2
+ import { DeleteQuery, Paginated, RequestParameter, TimeSeries, TimeSeriesValue, TS_GROUPS } from '../interfaces';
3
3
  import { TimeSeriesService } from '../services';
4
4
  interface BaseService extends DataMockService<TimeSeries & {
5
5
  data: TimeSeriesValue[];
@@ -13,7 +13,7 @@ declare class BaseService extends APIBaseMock<TimeSeries & {
13
13
  }
14
14
  export declare class TimeseriesMockService extends BaseService implements TimeSeriesService {
15
15
  constructor(timeseries: TimeSeries[], timeseriesValues: TimeSeriesValue[][]);
16
- deleteOne(tsmId: string, force?: boolean): Promise<TimeSeries>;
16
+ deleteOne(tsmId: string, deleteQuery?: DeleteQuery): Promise<TimeSeries>;
17
17
  getMany(params?: RequestParameter): Promise<Paginated<TimeSeries & {
18
18
  data: TimeSeriesValue[];
19
19
  }>>;
@@ -14,9 +14,9 @@ class TimeseriesMockService extends BaseService {
14
14
  const data = timeseries.map((value, index) => ({ ...value, data: timeseriesValues[index] }));
15
15
  super(data);
16
16
  }
17
- deleteOne(tsmId, force = false) {
17
+ deleteOne(tsmId, deleteQuery = {}) {
18
18
  const tsm = this.data.find((v) => v.id === tsmId);
19
- if (!tsm?.deletedAt && !force) {
19
+ if (!tsm?.deletedAt && !deleteQuery.force) {
20
20
  // put tsm in paper bin by setting deletedAt prop
21
21
  tsm.deletedAt = new Date().toISOString();
22
22
  return Promise.resolve(tsm);
@@ -8,12 +8,12 @@ export declare class AiService extends APIBase {
8
8
  getLatestAssistantThread(assistantId: string): Promise<ThreadPopulated>;
9
9
  listAssistantThreads(assistantId: string): Promise<ThreadPopulated[]>;
10
10
  getAssistant(assistantId: string): Promise<AiAssistant>;
11
- getAssistants(): Promise<AiAssistant[]>;
11
+ getAssistants(options?: TokenOption): Promise<AiAssistant[]>;
12
12
  getSpeechToken(): Promise<SpeechToken>;
13
13
  getThreadMessages(threadId: string): Promise<Paginated<Message>>;
14
14
  getThread(threadId: string): Promise<ThreadPopulated>;
15
15
  getLatestThread(): Promise<ThreadPopulated>;
16
16
  listThreads(assistantIds?: string[], params?: {}, options?: TokenOption): Promise<ThreadPopulated[]>;
17
17
  provideFeedback(traceId: string, value: number, comment?: string): Promise<void>;
18
- deleteThread(threadId: string): Promise<Thread>;
18
+ deleteThread(threadId: string, options?: TokenOption): Promise<Thread>;
19
19
  }
@@ -21,8 +21,8 @@ class AiService extends api_base_1.APIBase {
21
21
  getAssistant(assistantId) {
22
22
  return this.httpClient.get(`${this.basePath}/assistants/${assistantId}`);
23
23
  }
24
- getAssistants() {
25
- return this.httpClient.get(`${this.basePath}/assistants`);
24
+ getAssistants(options = {}) {
25
+ return this.httpClient.get(`${this.basePath}/assistants`, options);
26
26
  }
27
27
  getSpeechToken() {
28
28
  return this.httpClient.get(`${this.basePath}/speech/token`);
@@ -45,8 +45,8 @@ class AiService extends api_base_1.APIBase {
45
45
  provideFeedback(traceId, value, comment) {
46
46
  return this.httpClient.post(`${this.basePath}/feedback`, { traceId, value, comment });
47
47
  }
48
- deleteThread(threadId) {
49
- return this.httpClient.delete(`${this.basePath}/threads/${threadId}`);
48
+ deleteThread(threadId, options = {}) {
49
+ return this.httpClient.delete(`${this.basePath}/threads/${threadId}`, options);
50
50
  }
51
51
  }
52
52
  exports.AiService = AiService;
@@ -1,6 +1,6 @@
1
1
  import { DataService, HttpClientService, TrashService } from '.';
2
2
  import { APIBase } from '../api-base';
3
- import { AddToProperty, Asset, AssetRevision, Attachment, EventCause, EventLevelOverride, Filter, Paginated, RemoveFromProperty, RequestParameter, TokenOption } from '../interfaces';
3
+ import { AddToProperty, Asset, AssetRevision, Attachment, DeleteAssetQuery, EventCause, EventLevelOverride, Filter, Paginated, RemoveFromProperty, RequestParameter, TokenOption } from '../interfaces';
4
4
  import { CrossPlatformFormData } from '../utils';
5
5
  interface BaseService extends DataService<Asset>, TrashService<Asset> {
6
6
  }
@@ -9,7 +9,7 @@ declare class BaseService extends APIBase {
9
9
  export declare class AssetService extends BaseService {
10
10
  constructor(httpClient: HttpClientService);
11
11
  count(filter: Filter, options?: TokenOption): Promise<number>;
12
- deleteOne(id: string, force?: boolean, options?: TokenOption): Promise<any>;
12
+ deleteOne(id: string, deleteQuery?: DeleteAssetQuery, options?: TokenOption): Promise<any>;
13
13
  addAttachment: (id: string, form: CrossPlatformFormData, options?: TokenOption) => Promise<Asset>;
14
14
  addElementToProperty(id: string, dto: AddToProperty): Promise<Asset>;
15
15
  removeElementFromProperty(id: string, dto: RemoveFromProperty): Promise<Asset>;
@@ -27,8 +27,8 @@ class AssetService extends BaseService {
27
27
  const params = { filter: (0, utils_1.getFilterString)(filter) };
28
28
  return this.httpClient.get(`${this.basePath}/count`, { params, ...options });
29
29
  }
30
- deleteOne(id, force = false, options = {}) {
31
- return this.httpClient.delete(`${this.basePath}/${id}`, { params: { force }, ...options });
30
+ deleteOne(id, deleteQuery = {}, options = {}) {
31
+ return this.httpClient.delete(`${this.basePath}/${id}`, { params: deleteQuery, ...options });
32
32
  }
33
33
  addElementToProperty(id, dto) {
34
34
  return this.httpClient.post(`${this.basePath}/${id}/link`, dto);
@@ -1,12 +1,13 @@
1
1
  import { DataService, HttpClientService, TrashService } from '.';
2
2
  import { APIBase } from '../api-base';
3
- import { AssetType, Paginated, Template, TokenOption } from '../interfaces';
3
+ import { AssetType, DeleteAssetTypeQuery, Paginated, Template, TokenOption } from '../interfaces';
4
4
  interface BaseService extends DataService<AssetType>, TrashService<AssetType> {
5
5
  }
6
6
  declare class BaseService extends APIBase {
7
7
  }
8
8
  export declare class AssetTypesService extends BaseService {
9
9
  constructor(httpClient: HttpClientService);
10
+ deleteOne(id: string, deleteQuery?: DeleteAssetTypeQuery, options?: TokenOption): Promise<AssetType>;
10
11
  getRevisions(id: string, options?: TokenOption): Promise<Paginated<AssetType>>;
11
12
  rollback(id: string, revisionId: string, options?: TokenOption): Promise<AssetType>;
12
13
  deleteRevision(id: string, revisionId: string, options?: TokenOption): Promise<any>;
@@ -14,6 +14,9 @@ class AssetTypesService extends BaseService {
14
14
  constructor(httpClient) {
15
15
  super(httpClient, '/assettypes');
16
16
  }
17
+ deleteOne(id, deleteQuery = {}, options = {}) {
18
+ return super.deleteOne(id, deleteQuery, options);
19
+ }
17
20
  getRevisions(id, options = {}) {
18
21
  return this.httpClient.get(`${this.basePath}/${id}/revisions`, options);
19
22
  }
@@ -1,5 +1,5 @@
1
1
  import { APIBase } from '../api-base';
2
- import { Config, DataInterface, Filter, Paginated, RequestParameter, TokenOption } from '../interfaces';
2
+ import { Config, DataInterface, DeleteQuery, Filter, Paginated, RequestParameter, TokenOption } from '../interfaces';
3
3
  export declare class DataService<T> extends APIBase implements DataInterface<T> {
4
4
  addOne(dto: any, options?: TokenOption & {
5
5
  [key: string]: any;
@@ -23,5 +23,5 @@ export declare class DataService<T> extends APIBase implements DataInterface<T>
23
23
  updateOne(id: string, dto: any, options?: TokenOption & {
24
24
  [key: string]: any;
25
25
  }): Promise<T>;
26
- deleteOne(id: string, force?: boolean, options?: TokenOption): Promise<any>;
26
+ deleteOne(id: string, deleteQuery?: DeleteQuery, options?: TokenOption): Promise<any>;
27
27
  }
@@ -36,8 +36,8 @@ class DataService extends api_base_1.APIBase {
36
36
  updateOne(id, dto, options = {}) {
37
37
  return this.httpClient.put(`${this.basePath}/${id}`, dto, options);
38
38
  }
39
- deleteOne(id, force = false, options = {}) {
40
- return this.httpClient.delete(`${this.basePath}/${id}`, { params: { force }, ...options });
39
+ deleteOne(id, deleteQuery = {}, options = {}) {
40
+ return this.httpClient.delete(`${this.basePath}/${id}`, { params: deleteQuery, ...options });
41
41
  }
42
42
  }
43
43
  exports.DataService = DataService;
@@ -1,6 +1,6 @@
1
1
  import { DataService, HttpClientService, TrashService } from '.';
2
2
  import { APIBase } from '../api-base';
3
- import { FlowDeployment, FlowDeploymentMetrics, FlowDeploymentStatistic, FlowLog, ResourceReference, TokenOption } from '../interfaces';
3
+ import { DeleteQuery, FlowDeployment, FlowDeploymentMetrics, FlowDeploymentStatistic, FlowLog, ResourceReference, TokenOption } from '../interfaces';
4
4
  interface BaseService extends DataService<FlowDeployment>, TrashService<FlowDeployment> {
5
5
  }
6
6
  declare class BaseService extends APIBase {
@@ -16,7 +16,7 @@ export declare class FlowDeploymentService extends BaseService {
16
16
  getDeploymentLogs(id: string, options?: TokenOption): Promise<FlowLog[]>;
17
17
  resolveReferences(id: string, recursive?: boolean, types?: string[], options?: TokenOption): Promise<ResourceReference[]>;
18
18
  updateStatus(id: string, desiredStatus: 'running' | 'stopped' | 'deleted' | 'paused', options?: TokenOption): Promise<FlowDeployment>;
19
- deleteOne(id: string, _force?: boolean, options?: TokenOption): Promise<FlowDeployment>;
19
+ deleteOne(id: string, deleteQuery?: DeleteQuery, options?: TokenOption): Promise<FlowDeployment>;
20
20
  waitForRunningStatus(id: string, options?: TokenOption): Promise<void>;
21
21
  addOne(dto: {
22
22
  diagramId: string;
@@ -39,7 +39,7 @@ class FlowDeploymentService extends BaseService {
39
39
  updateStatus(id, desiredStatus, options = {}) {
40
40
  return this.httpClient.put(`${this.basePath}/${id}/status`, { desiredStatus }, options);
41
41
  }
42
- deleteOne(id, _force, options = {}) {
42
+ deleteOne(id, deleteQuery = {}, options = {}) {
43
43
  return this.updateStatus(id, 'deleted', options);
44
44
  }
45
45
  async waitForRunningStatus(id, options = {}) {
@@ -1,7 +1,7 @@
1
1
  import { EventSourceMessage } from '@microsoft/fetch-event-source';
2
2
  import { AxiosInstance, Method } from 'axios';
3
3
  import { EventSource } from 'eventsource';
4
- import { Observable, Subject } from 'rxjs';
4
+ import { Observable } from 'rxjs';
5
5
  import { Config, Issuer, TokenOption } from '../interfaces';
6
6
  import { Queue } from '../queue';
7
7
  import { TokenSet } from '../token-set';
@@ -46,7 +46,7 @@ export declare class HttpClientService {
46
46
  put: <T>(url: string, data: any, config?: Config) => Promise<T>;
47
47
  patch: <T>(url: string, data: any, config?: Config) => Promise<T>;
48
48
  protected request: <T>(method: Method, url: string, config?: Config, data?: any) => Promise<T>;
49
- getSseObservable<T>(path: string, onmessage?: (subject: Subject<T>, event: EventSourceMessage) => void): Observable<T>;
49
+ getSseObservable<T>(path: string, onmessage: (event: EventSourceMessage) => T): Observable<T>;
50
50
  addEventSource(url: string, listener: (event: MessageEvent) => void, errorListener?: (event: MessageEvent) => void, options?: TokenOption): Promise<string>;
51
51
  destroyEventSource(id: string): void;
52
52
  destroyAllEventSources(): void;
@@ -73,7 +73,7 @@ class HttpClientService {
73
73
  this.getAccessToken()
74
74
  .then((token) => {
75
75
  const ctrl = new AbortController();
76
- (0, fetch_event_source_1.fetchEventSource)(`${this.baseURL}/${path}`, {
76
+ (0, fetch_event_source_1.fetchEventSource)(`${this.baseURL.replace(/\/+$/, '')}/${path.replace(/^\/+/, '')}`, {
77
77
  headers: { authorization: 'Bearer ' + token },
78
78
  signal: ctrl.signal,
79
79
  onopen: async (response) => {
@@ -83,8 +83,15 @@ class HttpClientService {
83
83
  }
84
84
  },
85
85
  onmessage(event) {
86
- if (onmessage) {
87
- onmessage(subject, event);
86
+ if (event.id === '' && event.data === '' && event.event === '' && !event.retry) {
87
+ // Skip empty messages used as keep-alive signals
88
+ return;
89
+ }
90
+ try {
91
+ subject.next(onmessage(event));
92
+ }
93
+ catch (error) {
94
+ subject.error({ message: error.message ?? String(error) });
88
95
  }
89
96
  },
90
97
  onclose() {
@@ -16,7 +16,7 @@ export declare class OrganizationsResourcesService extends APIBase {
16
16
  *
17
17
  * @param {string} organizationId - The ID of the organization for which resources are to be created.
18
18
  * @param {string} resourceSetName - The name of the resource set to be used for resource creation from the S3 bucket.
19
- * @returns {Promise<string[]>} A promise that resolves to an array of resource set names.
19
+ * @returns {Promise<string>} - A promise that resolves to the id of the resource creation task.
20
20
  */
21
21
  createResourcesForOrganization(organizationId: string, resourceSetName: string): Promise<string>;
22
22
  /**
@@ -27,7 +27,8 @@ export declare class OrganizationsResourcesService extends APIBase {
27
27
  */
28
28
  getSseObservable(organizationId: string, path: 'creationTask'): Observable<OrganizationResourcesProgressDto>;
29
29
  /**
30
- * Subscribes to server-sent events to receive real-time progress updates on the resource creation task for a specific organization.
30
+ * Subscribes to server-sent events to receive real-time progress updates on the resource creation task for a specific organization
31
+ *
31
32
  * @param {string} organizationId - The ID of the organization to monitor the resource creation progress for.
32
33
  * @returns {Observable<OrganizationResourcesProgress>} An observable that emits progress updates.
33
34
  */
@@ -20,7 +20,7 @@ class OrganizationsResourcesService extends api_base_1.APIBase {
20
20
  *
21
21
  * @param {string} organizationId - The ID of the organization for which resources are to be created.
22
22
  * @param {string} resourceSetName - The name of the resource set to be used for resource creation from the S3 bucket.
23
- * @returns {Promise<string[]>} A promise that resolves to an array of resource set names.
23
+ * @returns {Promise<string>} - A promise that resolves to the id of the resource creation task.
24
24
  */
25
25
  createResourcesForOrganization(organizationId, resourceSetName) {
26
26
  return this.httpClient.post(`${this.basePath}/${organizationId}`, { resourceSetName });
@@ -32,25 +32,25 @@ class OrganizationsResourcesService extends api_base_1.APIBase {
32
32
  * @returns {Observable<OrganizationResourcesProgress>} An observable that emits progress updates.
33
33
  */
34
34
  getSseObservable(organizationId, path) {
35
- return this.httpClient.getSseObservable(`${this.basePath}/${path}/${organizationId}`, (subject, event) => {
36
- if (event.data) {
37
- try {
38
- const data = JSON.parse(event.data);
39
- if ('message' in data) {
40
- subject.error(data);
41
- }
42
- else {
43
- subject.next(data);
44
- }
45
- }
46
- catch (err) {
47
- subject.next(event.data);
48
- }
35
+ return this.httpClient.getSseObservable(`${this.basePath}/${path}/${organizationId}`, (event) => {
36
+ let data = null;
37
+ try {
38
+ data = JSON.parse(event.data);
39
+ }
40
+ catch (err) {
41
+ throw new Error('Failed to parse SSE event data as JSON: ' + (err.message ?? String(err)));
42
+ }
43
+ if ('message' in data) {
44
+ throw new Error(data.message);
45
+ }
46
+ else {
47
+ return data;
49
48
  }
50
49
  });
51
50
  }
52
51
  /**
53
- * Subscribes to server-sent events to receive real-time progress updates on the resource creation task for a specific organization.
52
+ * Subscribes to server-sent events to receive real-time progress updates on the resource creation task for a specific organization
53
+ *
54
54
  * @param {string} organizationId - The ID of the organization to monitor the resource creation progress for.
55
55
  * @returns {Observable<OrganizationResourcesProgress>} An observable that emits progress updates.
56
56
  */