@hahnpro/hpc-api 2026.9.7 → 2026.9.9

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 (35) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/package.json +2 -2
  3. package/src/lib/api.d.ts +2 -0
  4. package/src/lib/api.js +1 -0
  5. package/src/lib/interfaces/authz/capability-bundle.interface.d.ts +6 -3
  6. package/src/lib/interfaces/authz/capability-bundle.interface.js +1 -1
  7. package/src/lib/interfaces/authz/capability.interface.d.ts +7 -4
  8. package/src/lib/interfaces/authz/capability.interface.js +2 -3
  9. package/src/lib/interfaces/authz/feature.interface.d.ts +5 -2
  10. package/src/lib/interfaces/authz/index.d.ts +1 -1
  11. package/src/lib/interfaces/authz/localized-text.interface.d.ts +5 -0
  12. package/src/lib/interfaces/authz/org-group.interface.d.ts +5 -2
  13. package/src/lib/interfaces/authz/org-subscription.interface.d.ts +0 -1
  14. package/src/lib/interfaces/authz/org-subscription.interface.js +0 -1
  15. package/src/lib/interfaces/authz/plan.interface.d.ts +6 -2
  16. package/src/lib/interfaces/authz/plan.interface.js +1 -0
  17. package/src/lib/interfaces/authz/sql-pagination.interface.d.ts +3 -1
  18. package/src/lib/interfaces/index.d.ts +3 -1
  19. package/src/lib/interfaces/index.js +4 -2
  20. package/src/lib/interfaces/resource.interface.d.ts +1 -0
  21. package/src/lib/interfaces/resource.interface.js +1 -0
  22. package/src/lib/interfaces/time-series-value-feed.interface.d.ts +33 -0
  23. package/src/lib/interfaces/time-series-value-feed.interface.js +4 -0
  24. package/src/lib/interfaces/timeseries.interface.d.ts +6 -0
  25. package/src/lib/mock/api.mock.d.ts +4 -1
  26. package/src/lib/mock/api.mock.js +3 -1
  27. package/src/lib/mock/index.d.ts +1 -0
  28. package/src/lib/mock/index.js +3 -1
  29. package/src/lib/mock/timeseries-value-feed-management.mock.service.d.ts +12 -0
  30. package/src/lib/mock/timeseries-value-feed-management.mock.service.js +65 -0
  31. package/src/lib/services/http-client.service.js +1 -2
  32. package/src/lib/services/index.d.ts +1 -0
  33. package/src/lib/services/index.js +3 -1
  34. package/src/lib/services/timeseries-value-feed-management.service.d.ts +12 -0
  35. package/src/lib/services/timeseries-value-feed-management.service.js +25 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # @hahnpro/hpc-api
2
2
 
3
+ # 2026.9.8
4
+
5
+ - Added new timeseries-value-feed-management service
6
+
3
7
  # 2026.9.3
4
8
 
5
9
  - Added `getAssetsByAttachment` to asset service
@@ -12,7 +16,7 @@
12
16
 
13
17
  # 2026.8.5
14
18
 
15
- - added `MostRecentTimeSeriesValueUpdate` and `WebSocketError` types to interfaces
19
+ - Added `MostRecentTimeSeriesValueUpdate` and `WebSocketError` types to interfaces
16
20
 
17
21
  # 2026.8.2
18
22
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hahnpro/hpc-api",
3
- "version": "2026.9.7",
3
+ "version": "2026.9.9",
4
4
  "description": "Module for easy access to the HahnPRO Cloud API",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -15,7 +15,7 @@
15
15
  "dependencies": {
16
16
  "@microsoft/fetch-event-source": "2.0.1",
17
17
  "axios": "1.20.0",
18
- "eventsource": "5.1.1",
18
+ "eventsource": "5.1.2",
19
19
  "jose": "6.2.12",
20
20
  "jwt-decode": "4.0.0",
21
21
  "p-queue": "9.3.3",
package/src/lib/api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { TimeSeriesValueFeedManagementApi } from './interfaces';
1
2
  import { QueueOptions } from './queue';
2
3
  import { AiService, AlertService, AssetService, AssetTypesService, AuthzService, ContentService, CrmService, DataspaceService, EndpointService, EventService, FlangeSkillControlService, FlowDeploymentService, FlowFunctionService, FlowModuleService, FlowService, HttpClientService, LabelService, LogbookService, NotificationRuleService, NotificationService, ObjectReferenceService, OrganizationsAdministrationService, OrganizationsResourcesService, OrganizationsService, ProxyService, SearchService, TaskService, TimeSeriesService, UserService, VaultService } from './services';
3
4
  export declare class API {
@@ -27,6 +28,7 @@ export declare class API {
27
28
  search: SearchService;
28
29
  tasks: TaskService;
29
30
  timeSeries: TimeSeriesService;
31
+ timeSeriesValueFeedManagement: TimeSeriesValueFeedManagementApi;
30
32
  users: UserService;
31
33
  vault: VaultService;
32
34
  notifications: NotificationService;
package/src/lib/api.js CHANGED
@@ -61,6 +61,7 @@ class API {
61
61
  this.timeSeries = new services_1.TimeSeriesService(this.httpClient);
62
62
  this.users = new services_1.UserService(this.httpClient);
63
63
  this.vault = new services_1.VaultService(this.httpClient);
64
+ this.timeSeriesValueFeedManagement = new services_1.TimeseriesValueFeedManagementService(this.httpClient);
64
65
  this.notifications = new services_1.NotificationService(this.httpClient);
65
66
  this.notificationRules = new services_1.NotificationRuleService(this.httpClient);
66
67
  }
@@ -1,5 +1,5 @@
1
1
  import type { Audited } from './audited.interface';
2
- import type { LocalizedText } from './localized-text.interface';
2
+ import type { LocalizedText, LocalizedTextPatch } from './localized-text.interface';
3
3
  export declare enum CapabilityBundleId {
4
4
  ASSET_TYPE_EDITOR = "asset-type-editor",
5
5
  ASSET_TYPE_VIEWER = "asset-type-viewer",
@@ -12,14 +12,17 @@ export declare enum CapabilityBundleId {
12
12
  FLOW_VIEWER = "flow-viewer",
13
13
  TIME_SERIES_EDITOR = "time-series-editor",
14
14
  TIME_SERIES_VIEWER = "time-series-viewer",
15
- ORGANIZATION_ADMINISTRATION = "organization-administration"
15
+ ORGANIZATION_MANAGEMENT = "organization-management"
16
16
  }
17
17
  export interface CreateCapabilityBundle {
18
18
  id: CapabilityBundleId;
19
19
  name: LocalizedText;
20
20
  description?: LocalizedText | null;
21
21
  }
22
- export type UpdateCapabilityBundle = Partial<Pick<CreateCapabilityBundle, 'name' | 'description'>>;
22
+ export type UpdateCapabilityBundle = {
23
+ name?: LocalizedTextPatch;
24
+ description?: LocalizedTextPatch | null;
25
+ };
23
26
  export interface CapabilityBundle extends Audited<string>, Omit<CreateCapabilityBundle, 'id' | 'description'> {
24
27
  readonly id: CapabilityBundleId;
25
28
  description: LocalizedText | null;
@@ -18,5 +18,5 @@ var CapabilityBundleId;
18
18
  // Time series
19
19
  CapabilityBundleId["TIME_SERIES_EDITOR"] = "time-series-editor";
20
20
  CapabilityBundleId["TIME_SERIES_VIEWER"] = "time-series-viewer";
21
- CapabilityBundleId["ORGANIZATION_ADMINISTRATION"] = "organization-administration";
21
+ CapabilityBundleId["ORGANIZATION_MANAGEMENT"] = "organization-management";
22
22
  })(CapabilityBundleId || (exports.CapabilityBundleId = CapabilityBundleId = {}));
@@ -1,5 +1,5 @@
1
1
  import type { Audited } from './audited.interface';
2
- import type { LocalizedText } from './localized-text.interface';
2
+ import type { LocalizedText, LocalizedTextPatch } from './localized-text.interface';
3
3
  export declare enum CapabilityId {
4
4
  SUPERUSER = "superuser",
5
5
  ALERT_READ = "alert.read",
@@ -94,8 +94,8 @@ export declare enum CapabilityId {
94
94
  ORGANIZATION_CREATE = "organization.create",
95
95
  ORGANIZATION_UPDATE = "organization.update",
96
96
  ORGANIZATION_DELETE = "organization.delete",
97
- ORG_CAPABILITY_READ = "org-capability.read",
98
- ORG_CAPABILITY_BUNDLE_READ = "org-capability-bundle.read",
97
+ ORG_CAPABILITY_READ = "organization-capability.read",
98
+ ORG_CAPABILITY_BUNDLE_READ = "organization-capability-bundle.read",
99
99
  ORG_GROUP_READ = "org-group.read",
100
100
  ORG_GROUP_CREATE = "org-group.create",
101
101
  ORG_GROUP_UPDATE = "org-group.update",
@@ -174,7 +174,10 @@ export interface CreateCapability {
174
174
  type: CapabilityType;
175
175
  action: CapabilityAction;
176
176
  }
177
- export type UpdateCapability = Partial<Pick<CreateCapability, 'name' | 'description' | 'scope' | 'type' | 'action'>>;
177
+ export type UpdateCapability = Partial<Pick<CreateCapability, 'scope' | 'type' | 'action'>> & {
178
+ name?: LocalizedTextPatch;
179
+ description?: LocalizedTextPatch | null;
180
+ };
178
181
  export interface Capability extends Audited<string>, Omit<CreateCapability, 'id' | 'description'> {
179
182
  readonly id: CapabilityId;
180
183
  description: LocalizedText | null;
@@ -125,9 +125,8 @@ var CapabilityId;
125
125
  CapabilityId["ORGANIZATION_UPDATE"] = "organization.update";
126
126
  CapabilityId["ORGANIZATION_DELETE"] = "organization.delete";
127
127
  // Organization capabilities
128
- // TODO noch anpassen, wenn die Endpunkte kommen
129
- CapabilityId["ORG_CAPABILITY_READ"] = "org-capability.read";
130
- CapabilityId["ORG_CAPABILITY_BUNDLE_READ"] = "org-capability-bundle.read";
128
+ CapabilityId["ORG_CAPABILITY_READ"] = "organization-capability.read";
129
+ CapabilityId["ORG_CAPABILITY_BUNDLE_READ"] = "organization-capability-bundle.read";
131
130
  CapabilityId["ORG_GROUP_READ"] = "org-group.read";
132
131
  CapabilityId["ORG_GROUP_CREATE"] = "org-group.create";
133
132
  CapabilityId["ORG_GROUP_UPDATE"] = "org-group.update";
@@ -1,5 +1,5 @@
1
1
  import type { Audited } from './audited.interface';
2
- import type { LocalizedText } from './localized-text.interface';
2
+ import type { LocalizedText, LocalizedTextPatch } from './localized-text.interface';
3
3
  export declare enum FeatureId {
4
4
  ALERTS = "alerts",
5
5
  ASSET_MANAGER = "asset-manager",
@@ -27,7 +27,10 @@ export interface CreateFeature {
27
27
  name: LocalizedText;
28
28
  description?: LocalizedText | null;
29
29
  }
30
- export type UpdateFeature = Partial<Pick<CreateFeature, 'name' | 'description'>>;
30
+ export type UpdateFeature = {
31
+ name?: LocalizedTextPatch;
32
+ description?: LocalizedTextPatch | null;
33
+ };
31
34
  export interface Feature extends Audited<string>, Omit<CreateFeature, 'id' | 'description'> {
32
35
  readonly id: FeatureId;
33
36
  description: LocalizedText | null;
@@ -1,5 +1,5 @@
1
1
  export type { Audited } from './audited.interface';
2
- export type { LocalizedText } from './localized-text.interface';
2
+ export type { LocalizedText, LocalizedTextPatch } from './localized-text.interface';
3
3
  export type { CreateCapabilityBundle, UpdateCapabilityBundle, CapabilityBundle } from './capability-bundle.interface';
4
4
  export type { CreateCapabilityBundleCapability, CapabilityBundleCapability } from './capability-bundle-capability.interface';
5
5
  export type { CreateCapability, UpdateCapability, Capability } from './capability.interface';
@@ -2,3 +2,8 @@
2
2
  * A text value translated by language code, for example `{ de: 'Name', en: 'Name' }`.
3
3
  */
4
4
  export type LocalizedText = Record<string, string>;
5
+ /**
6
+ * A partial version of LocalizedText, allowing for optional translations and null values.
7
+ * This type is useful for patch operations where you may want to update only specific translations or remove them.
8
+ */
9
+ export type LocalizedTextPatch = Partial<Record<string, string | null>>;
@@ -1,5 +1,5 @@
1
1
  import type { Audited } from './audited.interface';
2
- import type { LocalizedText } from './localized-text.interface';
2
+ import type { LocalizedText, LocalizedTextPatch } from './localized-text.interface';
3
3
  export declare enum OrgGroupType {
4
4
  /**
5
5
  * The organization default "default" group, which is not editable
@@ -22,7 +22,10 @@ export interface CreateOrgGroup {
22
22
  description?: LocalizedText | null;
23
23
  type: OrgGroupType;
24
24
  }
25
- export type UpdateOrgGroup = Partial<Pick<CreateOrgGroup, 'name' | 'description'>>;
25
+ export type UpdateOrgGroup = {
26
+ name?: LocalizedTextPatch;
27
+ description?: LocalizedTextPatch | null;
28
+ };
26
29
  export interface OrgGroup extends Audited<string> {
27
30
  readonly id: string;
28
31
  orgId: string;
@@ -2,7 +2,6 @@ import type { Audited } from './audited.interface';
2
2
  import { PlanId } from './plan.interface';
3
3
  export declare enum OrgSubscriptionStatus {
4
4
  ACTIVE = "active",
5
- EXPIRED = "expired",
6
5
  CANCELLED = "cancelled"
7
6
  }
8
7
  export interface CreateOrgSubscription {
@@ -4,6 +4,5 @@ exports.OrgSubscriptionStatus = void 0;
4
4
  var OrgSubscriptionStatus;
5
5
  (function (OrgSubscriptionStatus) {
6
6
  OrgSubscriptionStatus["ACTIVE"] = "active";
7
- OrgSubscriptionStatus["EXPIRED"] = "expired";
8
7
  OrgSubscriptionStatus["CANCELLED"] = "cancelled";
9
8
  })(OrgSubscriptionStatus || (exports.OrgSubscriptionStatus = OrgSubscriptionStatus = {}));
@@ -1,7 +1,8 @@
1
1
  import type { Audited } from './audited.interface';
2
- import type { LocalizedText } from './localized-text.interface';
2
+ import type { LocalizedText, LocalizedTextPatch } from './localized-text.interface';
3
3
  export declare enum PlanId {
4
4
  DEVELOPER = "developer",
5
+ SUPERUSER = "superuser",
5
6
  DEFAULT = "default"
6
7
  }
7
8
  export interface CreatePlan {
@@ -9,7 +10,10 @@ export interface CreatePlan {
9
10
  name: LocalizedText;
10
11
  description?: LocalizedText | null;
11
12
  }
12
- export type UpdatePlan = Partial<Pick<CreatePlan, 'name' | 'description'>>;
13
+ export type UpdatePlan = {
14
+ name?: LocalizedTextPatch;
15
+ description?: LocalizedTextPatch | null;
16
+ };
13
17
  export interface Plan extends Audited<string>, Omit<CreatePlan, 'id' | 'description'> {
14
18
  readonly id: PlanId;
15
19
  description: LocalizedText | null;
@@ -4,5 +4,6 @@ exports.PlanId = void 0;
4
4
  var PlanId;
5
5
  (function (PlanId) {
6
6
  PlanId["DEVELOPER"] = "developer";
7
+ PlanId["SUPERUSER"] = "superuser";
7
8
  PlanId["DEFAULT"] = "default";
8
9
  })(PlanId || (exports.PlanId = PlanId = {}));
@@ -1,9 +1,11 @@
1
1
  export interface SqlPagination {
2
2
  /**
3
3
  * The number of records to skip before starting to collect the result set.
4
- * This is useful for pagination.
5
4
  */
6
5
  skip?: number;
6
+ /**
7
+ * The maximum number of records to return in the result set.
8
+ */
7
9
  take?: number;
8
10
  }
9
11
  export interface SqlPaginationResult<T> extends SqlPagination {
@@ -41,7 +41,9 @@ export type { Secret } from './secret.interface';
41
41
  export type { ServerSentEvent } from './sse.interface';
42
42
  export type { Artifact, FileType, Storage, StorageProvider } from './storage.interface';
43
43
  export type { Assignee, Task } from './task.interface';
44
- export type { MostRecentTimeSeriesValueUpdate, Retention, SearchTimeSeriesResult, SelectedField, TimeSeries, TimeSeriesBucket, TimeseriesChange, TimeSeriesCondition, TimeseriesSubject, TimeSeriesValue, TS_GROUPS, } from './timeseries.interface';
44
+ export type { MostRecentTimeSeriesValueUpdate, Retention, SearchTimeSeriesResult, SelectedField, TimeSeries, TimeSeriesBucket, TimeseriesChange, TimeSeriesCondition, TimeseriesSubject, TimeSeriesValue, TimeSeriesValueFeedMetadata, TS_GROUPS, } from './timeseries.interface';
45
+ export type { CreateTimeSeriesValueFeedDto, TimeSeriesValueFeed, TimeSeriesValueFeedManagementApi, TimeSeriesValueFeedUrls, UpdateTimeSeriesValueFeedDto, } from './time-series-value-feed.interface';
46
+ export { MAX_TIME_SERIES_PER_VALUE_FEED } from './time-series-value-feed.interface';
45
47
  export type { Translation, TranslationData } from './translation.interface';
46
48
  export type { Consent, Permission, TableSetting, TableSettingProfile, UserSettings } from './user-settings.interface';
47
49
  export type { KVSecretVersion, VaultSecret } from './vault.interface';
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LABEL_COLORS = exports.FlowDiagram = exports.Flow = exports.NATS_FLOW_TRIGGER_STATUSES = exports.FlowDeployment = exports.UNKOWN_STATES = exports.STOPPED_STATES = exports.RUNNING_STATES = exports.PROCESSING_STATES = exports.FlowDeploymentStatus = exports.ERROR_STATES = exports.TimeSlotStatus = exports.APPLICATION_AREA = exports.eventLevels = exports.EventLevelOverrideWrapper = exports.EventLevel = exports.NotificationEndpointType = exports.NotificationEndpointStatus = exports.NotificationEndpointSpamProtection = exports.DataspaceWorkflowType = exports.DataspaceAllowedResourceTypes = exports.instanceOfTimePeriod = exports.ReturnType = exports.IndexingStatus = exports.ContentAnalysisStatus = exports.BillingResourceType = exports.ChangeAction = exports.DEFAULT_THRESHOLD_CONDITION = exports.DEFAULT_RELATIVE_CONDITION = exports.DEFAULT_DEADMAN_CONDITION = exports.AlertType = exports.AlertStatus = exports.AlertLevel = exports.ToolType = exports.ToolName = exports.ToolMessageStatus = exports.Role = exports.ReturnToReferrerTool = exports.ReferenceType = exports.OneShotTaskId = exports.HandOffTool = exports.FinishReason = exports.ErrorMessageType = exports.AvailableLanguages = exports.AttachmentHandlingMode = exports.ATTACHMENT_CAPABLE_AGENT_IDS = exports.AssistantMessageStatus = exports.AiAssistantId = exports.AgentId = exports.LogbookEntrySource = void 0;
4
- exports.WebSocketMessageType = exports.SecretType = exports.isUserMessage = exports.isTask = exports.isStorage = exports.isOwner = exports.isLogbookEntry = exports.isEvent = exports.isContentAnalysis = exports.isContent = exports.isAuthor = exports.isAssignee = exports.isAsset = exports.TranslationEditData = exports.RETENTION_VALUES = exports.TaskStatus = exports.Priority = exports.INACTIVE_TASK_STATUSES = exports.buildTaskStatusFilter = exports.AssigneeType = exports.ACTIVE_TASK_STATUSES = exports.ResourceType = exports.resourceApiPathToTypeMap = exports.ResourceApiPath = exports.PermissionType = exports.isPopulated = exports.EventType = exports.CommandType = exports.arePopulated = exports.ObjectReferenceType = exports.OwnerType = exports.OrganizationMembersInviteOrAdd = exports.NotificationRuleStatus = exports.NatsStreams = exports.natsHpcPrefix = exports.natsFlowsPrefix = exports.NatsConsumers = exports.SubscriptionType = void 0;
3
+ exports.FlowDiagram = exports.Flow = exports.NATS_FLOW_TRIGGER_STATUSES = exports.FlowDeployment = exports.UNKOWN_STATES = exports.STOPPED_STATES = exports.RUNNING_STATES = exports.PROCESSING_STATES = exports.FlowDeploymentStatus = exports.ERROR_STATES = exports.TimeSlotStatus = exports.APPLICATION_AREA = exports.eventLevels = exports.EventLevelOverrideWrapper = exports.EventLevel = exports.NotificationEndpointType = exports.NotificationEndpointStatus = exports.NotificationEndpointSpamProtection = exports.DataspaceWorkflowType = exports.DataspaceAllowedResourceTypes = exports.instanceOfTimePeriod = exports.ReturnType = exports.IndexingStatus = exports.ContentAnalysisStatus = exports.BillingResourceType = exports.ChangeAction = exports.DEFAULT_THRESHOLD_CONDITION = exports.DEFAULT_RELATIVE_CONDITION = exports.DEFAULT_DEADMAN_CONDITION = exports.AlertType = exports.AlertStatus = exports.AlertLevel = exports.ToolType = exports.ToolName = exports.ToolMessageStatus = exports.Role = exports.ReturnToReferrerTool = exports.ReferenceType = exports.OneShotTaskId = exports.HandOffTool = exports.FinishReason = exports.ErrorMessageType = exports.AvailableLanguages = exports.AttachmentHandlingMode = exports.ATTACHMENT_CAPABLE_AGENT_IDS = exports.AssistantMessageStatus = exports.AiAssistantId = exports.AgentId = exports.MAX_TIME_SERIES_PER_VALUE_FEED = exports.LogbookEntrySource = void 0;
4
+ exports.WebSocketMessageType = exports.SecretType = exports.isUserMessage = exports.isTask = exports.isStorage = exports.isOwner = exports.isLogbookEntry = exports.isEvent = exports.isContentAnalysis = exports.isContent = exports.isAuthor = exports.isAssignee = exports.isAsset = exports.TranslationEditData = exports.RETENTION_VALUES = exports.TaskStatus = exports.Priority = exports.INACTIVE_TASK_STATUSES = exports.buildTaskStatusFilter = exports.AssigneeType = exports.ACTIVE_TASK_STATUSES = exports.ResourceType = exports.resourceApiPathToTypeMap = exports.ResourceApiPath = exports.PermissionType = exports.isPopulated = exports.EventType = exports.CommandType = exports.arePopulated = exports.ObjectReferenceType = exports.OwnerType = exports.OrganizationMembersInviteOrAdd = exports.NotificationRuleStatus = exports.NatsStreams = exports.natsHpcPrefix = exports.natsFlowsPrefix = exports.NatsConsumers = exports.SubscriptionType = exports.LABEL_COLORS = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  var logbook_interface_1 = require("./logbook.interface");
7
7
  Object.defineProperty(exports, "LogbookEntrySource", { enumerable: true, get: function () { return logbook_interface_1.LogbookEntrySource; } });
8
+ var time_series_value_feed_interface_1 = require("./time-series-value-feed.interface");
9
+ Object.defineProperty(exports, "MAX_TIME_SERIES_PER_VALUE_FEED", { enumerable: true, get: function () { return time_series_value_feed_interface_1.MAX_TIME_SERIES_PER_VALUE_FEED; } });
8
10
  var ai_interface_1 = require("./ai.interface");
9
11
  Object.defineProperty(exports, "AgentId", { enumerable: true, get: function () { return ai_interface_1.AgentId; } });
10
12
  Object.defineProperty(exports, "AiAssistantId", { enumerable: true, get: function () { return ai_interface_1.AiAssistantId; } });
@@ -17,6 +17,7 @@ export declare enum ResourceType {
17
17
  NOTIFICATIONRULE = "notificationrule",
18
18
  SECRET = "secret",
19
19
  TIMESERIES = "timeseries",
20
+ TIMESERIESVALUEFEED = "timeseriesvaluefeed",
20
21
  THREAD = "thread",
21
22
  TASK = "task",
22
23
  UNKNOWN = "unknown",
@@ -20,6 +20,7 @@ var ResourceType;
20
20
  ResourceType["NOTIFICATIONRULE"] = "notificationrule";
21
21
  ResourceType["SECRET"] = "secret";
22
22
  ResourceType["TIMESERIES"] = "timeseries";
23
+ ResourceType["TIMESERIESVALUEFEED"] = "timeseriesvaluefeed";
23
24
  ResourceType["THREAD"] = "thread";
24
25
  ResourceType["TASK"] = "task";
25
26
  ResourceType["UNKNOWN"] = "unknown";
@@ -0,0 +1,33 @@
1
+ import { Paginated, RequestParameter } from './data.interface';
2
+ import { TimeSeriesValueFeedMetadata } from './timeseries.interface';
3
+ export declare const MAX_TIME_SERIES_PER_VALUE_FEED = 100;
4
+ export interface CreateTimeSeriesValueFeedDto {
5
+ ids: string[];
6
+ readPermissions: string[];
7
+ readWritePermissions: string[];
8
+ ttlDays?: number;
9
+ }
10
+ export interface UpdateTimeSeriesValueFeedDto {
11
+ readPermissions: string[];
12
+ readWritePermissions: string[];
13
+ }
14
+ export interface TimeSeriesValueFeedUrls {
15
+ snapshotUrl: string;
16
+ eventsUrl: string;
17
+ embedUrl: string;
18
+ }
19
+ export interface TimeSeriesValueFeedManagementApi {
20
+ create(dto: CreateTimeSeriesValueFeedDto): Promise<TimeSeriesValueFeed>;
21
+ updateOne(id: string, dto: UpdateTimeSeriesValueFeedDto): Promise<TimeSeriesValueFeed>;
22
+ findAll(params?: RequestParameter): Promise<Paginated<TimeSeriesValueFeed>>;
23
+ findUrls(id: string): Promise<TimeSeriesValueFeedUrls>;
24
+ deleteOne(id: string): Promise<void>;
25
+ }
26
+ export interface TimeSeriesValueFeed extends TimeSeriesValueFeedUrls {
27
+ id: string;
28
+ expiresAt?: string;
29
+ status: 'active' | 'expired';
30
+ timeSeries: TimeSeriesValueFeedMetadata[];
31
+ readPermissions: string[];
32
+ readWritePermissions: string[];
33
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_TIME_SERIES_PER_VALUE_FEED = void 0;
4
+ exports.MAX_TIME_SERIES_PER_VALUE_FEED = 100;
@@ -41,6 +41,12 @@ export interface TimeSeriesValue {
41
41
  raw?: number;
42
42
  [key: string]: any;
43
43
  }
44
+ export interface TimeSeriesValueFeedMetadata {
45
+ id: string;
46
+ name: string;
47
+ assetRef?: string;
48
+ assetRef$name?: string;
49
+ }
44
50
  export interface MostRecentTimeSeriesValueUpdate {
45
51
  [assetId: string]: {
46
52
  [timeSeriesName: string]: TimeSeriesValue | null;
@@ -1,5 +1,5 @@
1
1
  import { API } from '../api';
2
- import { Artifact, Asset, AssetRevision, AssetType, Content, Endpoint, Event, FlowDeployment, FlowDiagram, FlowDto, FlowFunctionDto, FlowFunctionRevision, FlowModule, FlowRevision, Label, LogbookEntry, Notification, ObjectReference, Organization, Secret, Task, TimeSeries, TimeSeriesValue, Translation, UserSettings, VaultSecret } from '../interfaces';
2
+ import { Artifact, Asset, AssetRevision, AssetType, Content, Endpoint, Event, FlowDeployment, FlowDiagram, FlowDto, FlowFunctionDto, FlowFunctionRevision, FlowModule, FlowRevision, Label, LogbookEntry, Notification, ObjectReference, Organization, Secret, Task, TimeSeries, TimeSeriesValue, TimeSeriesValueFeed, Translation, UserSettings, VaultSecret } from '../interfaces';
3
3
  import { AiMockService } from './ai.mock.service';
4
4
  import { AlertMockService } from './alert.mock.service';
5
5
  import { AssetMockService } from './asset.mock.service';
@@ -26,6 +26,7 @@ import { OrganizationsResourcesMockService } from './organizations-resources.moc
26
26
  import { OrganizationsMockService } from './organizations.mock.service';
27
27
  import { SearchMockService } from './search.mock.service';
28
28
  import { TaskMockService } from './task.mock.service';
29
+ import { TimeseriesValueFeedManagementMockService } from './timeseries-value-feed-management.mock.service';
29
30
  import { TimeseriesMockService } from './timeseries.mock.service';
30
31
  import { UserMockService } from './user.mock.service';
31
32
  import { VaultMockService } from './vault.mock.service';
@@ -36,6 +37,7 @@ export interface MockAPIInitData {
36
37
  endpoints?: EndpointInit[];
37
38
  secrets?: SecretInit[];
38
39
  timeSeries?: TimeSeriesInit[];
40
+ timeSeriesValueFeeds?: TimeSeriesValueFeed[];
39
41
  tasks?: TaskInit[];
40
42
  events?: EventInit[];
41
43
  users?: UserInit;
@@ -83,6 +85,7 @@ export declare class MockAPI implements API {
83
85
  search: SearchMockService;
84
86
  tasks: TaskMockService;
85
87
  timeSeries: TimeseriesMockService;
88
+ timeSeriesValueFeedManagement: TimeseriesValueFeedManagementMockService;
86
89
  users: UserMockService;
87
90
  vault: VaultMockService;
88
91
  objectReferences: ObjectReferenceMockService;
@@ -28,13 +28,14 @@ const organizations_resources_mock_service_1 = require("./organizations-resource
28
28
  const organizations_mock_service_1 = require("./organizations.mock.service");
29
29
  const search_mock_service_1 = require("./search.mock.service");
30
30
  const task_mock_service_1 = require("./task.mock.service");
31
+ const timeseries_value_feed_management_mock_service_1 = require("./timeseries-value-feed-management.mock.service");
31
32
  const timeseries_mock_service_1 = require("./timeseries.mock.service");
32
33
  const user_mock_service_1 = require("./user.mock.service");
33
34
  const vault_mock_service_1 = require("./vault.mock.service");
34
35
  class MockAPI {
35
36
  constructor(initData) {
36
37
  this.proxy = null;
37
- const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], labels = [], logbookEntries = [], vault = [], notifications = [], organizations = [], objectReferences = [], resourceSetNames = [], translations = [], } = initData;
38
+ const { assets = [], assetRevisions = [], contents = [], endpoints = [], secrets = [], timeSeries = [], tasks = [], events = [], users, flows = [], flowRevisions = [], deployments = [], functions = [], functionRevisions = [], modules = [], diagrams = [], labels = [], logbookEntries = [], vault = [], notifications = [], organizations = [], objectReferences = [], timeSeriesValueFeeds = [], resourceSetNames = [], translations = [], } = initData;
38
39
  // convert init data to normal data that the services usually use
39
40
  const assetTypes = assets
40
41
  .map((v) => v.type)
@@ -239,6 +240,7 @@ class MockAPI {
239
240
  this.search = new search_mock_service_1.SearchMockService();
240
241
  this.tasks = new task_mock_service_1.TaskMockService(tasks1);
241
242
  this.timeSeries = new timeseries_mock_service_1.TimeseriesMockService(timeSeries1, timeSeriesValues);
243
+ this.timeSeriesValueFeedManagement = new timeseries_value_feed_management_mock_service_1.TimeseriesValueFeedManagementMockService(this.timeSeries, timeSeriesValueFeeds);
242
244
  this.users = new user_mock_service_1.UserMockService(users);
243
245
  this.vault = new vault_mock_service_1.VaultMockService(vaultSecrets1);
244
246
  }
@@ -32,4 +32,5 @@ export { TaskMockService } from './task.mock.service';
32
32
  export { TimeseriesMockService } from './timeseries.mock.service';
33
33
  export { UserMockService } from './user.mock.service';
34
34
  export { VaultMockService } from './vault.mock.service';
35
+ export { TimeseriesValueFeedManagementMockService } from './timeseries-value-feed-management.mock.service';
35
36
  export * from './authz';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VaultMockService = exports.UserMockService = exports.TimeseriesMockService = exports.TaskMockService = exports.ShareMockService = exports.SearchMockService = exports.OrganizationsMockService = exports.OrganizationsResourcesMockService = exports.OrganizationsAdministrationMockService = exports.ObjectReferenceMockService = exports.NotificationMockService = exports.NotificationRulesMockService = exports.LogbookMockService = exports.LabelMockService = exports.HttpClientMockService = exports.FlowMockService = exports.FlowModulesMockService = exports.FlowFunctionsMockService = exports.FlowDeploymentMockService = exports.FlangeSkillControlMockService = exports.EventMockService = exports.EndpointMockService = exports.DataspaceMockService = exports.CrmMockService = exports.ContentMockService = exports.AssetTypesMockService = exports.AssetMockService = exports.AlertMockService = exports.AiMockService = exports.TrashMockService = exports.DataMockService = exports.APIBaseMock = exports.sortData = void 0;
3
+ exports.TimeseriesValueFeedManagementMockService = exports.VaultMockService = exports.UserMockService = exports.TimeseriesMockService = exports.TaskMockService = exports.ShareMockService = exports.SearchMockService = exports.OrganizationsMockService = exports.OrganizationsResourcesMockService = exports.OrganizationsAdministrationMockService = exports.ObjectReferenceMockService = exports.NotificationMockService = exports.NotificationRulesMockService = exports.LogbookMockService = exports.LabelMockService = exports.HttpClientMockService = exports.FlowMockService = exports.FlowModulesMockService = exports.FlowFunctionsMockService = exports.FlowDeploymentMockService = exports.FlangeSkillControlMockService = exports.EventMockService = exports.EndpointMockService = exports.DataspaceMockService = exports.CrmMockService = exports.ContentMockService = exports.AssetTypesMockService = exports.AssetMockService = exports.AlertMockService = exports.AiMockService = exports.TrashMockService = exports.DataMockService = exports.APIBaseMock = exports.sortData = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var utils_1 = require("./utils");
6
6
  Object.defineProperty(exports, "sortData", { enumerable: true, get: function () { return utils_1.sortData; } });
@@ -69,4 +69,6 @@ var user_mock_service_1 = require("./user.mock.service");
69
69
  Object.defineProperty(exports, "UserMockService", { enumerable: true, get: function () { return user_mock_service_1.UserMockService; } });
70
70
  var vault_mock_service_1 = require("./vault.mock.service");
71
71
  Object.defineProperty(exports, "VaultMockService", { enumerable: true, get: function () { return vault_mock_service_1.VaultMockService; } });
72
+ var timeseries_value_feed_management_mock_service_1 = require("./timeseries-value-feed-management.mock.service");
73
+ Object.defineProperty(exports, "TimeseriesValueFeedManagementMockService", { enumerable: true, get: function () { return timeseries_value_feed_management_mock_service_1.TimeseriesValueFeedManagementMockService; } });
72
74
  tslib_1.__exportStar(require("./authz"), exports);
@@ -0,0 +1,12 @@
1
+ import { CreateTimeSeriesValueFeedDto, Paginated, RequestParameter, TimeSeriesValueFeed, TimeSeriesValueFeedManagementApi, TimeSeriesValueFeedUrls, UpdateTimeSeriesValueFeedDto } from '../interfaces';
2
+ import { TimeSeriesService } from '../services';
3
+ export declare class TimeseriesValueFeedManagementMockService implements TimeSeriesValueFeedManagementApi {
4
+ private readonly timeSeriesService;
5
+ private readonly data;
6
+ constructor(timeSeriesService: Pick<TimeSeriesService, 'getOne'>, data?: TimeSeriesValueFeed[]);
7
+ create(dto: CreateTimeSeriesValueFeedDto): Promise<TimeSeriesValueFeed>;
8
+ updateOne(id: string, dto: UpdateTimeSeriesValueFeedDto): Promise<TimeSeriesValueFeed>;
9
+ findAll(params?: RequestParameter): Promise<Paginated<TimeSeriesValueFeed>>;
10
+ findUrls(id: string): Promise<TimeSeriesValueFeedUrls>;
11
+ deleteOne(id: string): Promise<void>;
12
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeseriesValueFeedManagementMockService = void 0;
4
+ const utils_1 = require("./utils");
5
+ class TimeseriesValueFeedManagementMockService {
6
+ constructor(timeSeriesService, data = []) {
7
+ this.timeSeriesService = timeSeriesService;
8
+ this.data = data;
9
+ }
10
+ async create(dto) {
11
+ const token = globalThis.crypto.randomUUID();
12
+ const id = globalThis.crypto.randomUUID();
13
+ const expiresAt = dto.ttlDays === undefined ? undefined : new Date();
14
+ if (expiresAt) {
15
+ expiresAt.setDate(expiresAt.getDate() + dto.ttlDays);
16
+ }
17
+ const timeSeriesValueFeed = {
18
+ id,
19
+ timeSeries: await Promise.all(dto.ids.map((id) => this.timeSeriesService.getOne(id))).then((items) => items.map((item) => ({ id: item.id, name: item.name, assetRef: item.assetRef, assetRef$name: item.assetRef$name }))),
20
+ readPermissions: dto.readPermissions,
21
+ readWritePermissions: dto.readWritePermissions,
22
+ status: 'active',
23
+ ...(expiresAt ? { expiresAt: expiresAt.toISOString() } : {}),
24
+ snapshotUrl: `/api/value-feeds/${token}`,
25
+ eventsUrl: `/api/value-feeds/${token}/events`,
26
+ embedUrl: `/api/value-feeds/${token}/embed`,
27
+ };
28
+ this.data.unshift(timeSeriesValueFeed);
29
+ return timeSeriesValueFeed;
30
+ }
31
+ updateOne(id, dto) {
32
+ const timeSeriesValueFeed = this.data.find((item) => item.id === id);
33
+ if (!timeSeriesValueFeed) {
34
+ return Promise.reject(new Error(`Time series value feed '${id}' does not exist`));
35
+ }
36
+ timeSeriesValueFeed.readPermissions = dto.readPermissions;
37
+ timeSeriesValueFeed.readWritePermissions = dto.readWritePermissions;
38
+ return Promise.resolve(timeSeriesValueFeed);
39
+ }
40
+ findAll(params = {}) {
41
+ const data = [...this.data];
42
+ if (params.sort) {
43
+ (0, utils_1.sortData)(data, params.sort);
44
+ }
45
+ const limit = params.limit || 0;
46
+ const page = params.page || 1;
47
+ const docs = limit > 0 ? data.slice((page - 1) * limit, page * limit) : data;
48
+ return Promise.resolve({ docs, total: data.length, limit, page, pages: limit > 0 ? Math.ceil(data.length / limit) || 1 : 1 });
49
+ }
50
+ findUrls(id) {
51
+ const timeSeriesValueFeed = this.data.find((item) => item.id === id);
52
+ return Promise.resolve({
53
+ snapshotUrl: timeSeriesValueFeed?.snapshotUrl,
54
+ eventsUrl: timeSeriesValueFeed?.eventsUrl,
55
+ embedUrl: timeSeriesValueFeed?.embedUrl,
56
+ });
57
+ }
58
+ async deleteOne(id) {
59
+ const index = this.data.findIndex((item) => item.id === id);
60
+ if (index >= 0) {
61
+ this.data.splice(index, 1);
62
+ }
63
+ }
64
+ }
65
+ exports.TimeseriesValueFeedManagementMockService = TimeseriesValueFeedManagementMockService;
@@ -209,14 +209,13 @@ class HttpClientService {
209
209
  async requestAccessToken(additionalOpts = {}) {
210
210
  const issuer = await this.discoverIssuer(`${this.authBaseURL}/realms/${this.realm}`);
211
211
  const timestamp = Date.now() / 1000;
212
- const audience = [...new Set([issuer.issuer, issuer.token_endpoint].filter(Boolean))];
213
212
  const assertionPayload = {
214
213
  iat: timestamp,
215
214
  exp: timestamp + 60,
216
215
  jti: globalThis.crypto.randomUUID(),
217
216
  iss: this.clientId,
218
217
  sub: this.clientId,
219
- aud: audience,
218
+ aud: issuer.issuer,
220
219
  };
221
220
  const supportedAlgos = issuer.token_endpoint_auth_signing_alg_values_supported;
222
221
  const alg = issuer.token_endpoint_auth_signing_alg ??
@@ -29,6 +29,7 @@ export { SearchService } from './search.service';
29
29
  export { ShareService } from './share.service';
30
30
  export { TaskService } from './task.service';
31
31
  export { TimeSeriesService } from './timeseries.service';
32
+ export { TimeseriesValueFeedManagementService } from './timeseries-value-feed-management.service';
32
33
  export { UserService } from './user.service';
33
34
  export { VaultService } from './vault.service';
34
35
  export * from './authz';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VaultService = exports.UserService = exports.TimeSeriesService = exports.TaskService = exports.ShareService = exports.SearchService = exports.ProxyService = exports.OrganizationsService = exports.OrganizationsResourcesService = exports.OrganizationsAdministrationService = exports.ObjectReferenceService = exports.NotificationService = exports.NotificationRuleService = exports.LogbookService = exports.LabelService = exports.HttpClientService = exports.FlowService = exports.FlowModuleService = exports.FlowFunctionService = exports.FlowDeploymentService = exports.FlangeSkillControlService = exports.EventService = exports.EndpointService = exports.DataspaceService = exports.CrmService = exports.ContentService = exports.AuthzService = exports.AssetTypesService = exports.AssetService = exports.AlertService = exports.AiService = exports.TrashService = exports.DataService = void 0;
3
+ exports.VaultService = exports.UserService = exports.TimeseriesValueFeedManagementService = exports.TimeSeriesService = exports.TaskService = exports.ShareService = exports.SearchService = exports.ProxyService = exports.OrganizationsService = exports.OrganizationsResourcesService = exports.OrganizationsAdministrationService = exports.ObjectReferenceService = exports.NotificationService = exports.NotificationRuleService = exports.LogbookService = exports.LabelService = exports.HttpClientService = exports.FlowService = exports.FlowModuleService = exports.FlowFunctionService = exports.FlowDeploymentService = exports.FlangeSkillControlService = exports.EventService = exports.EndpointService = exports.DataspaceService = exports.CrmService = exports.ContentService = exports.AuthzService = exports.AssetTypesService = exports.AssetService = exports.AlertService = exports.AiService = exports.TrashService = exports.DataService = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  var data_service_1 = require("./data.service");
6
6
  Object.defineProperty(exports, "DataService", { enumerable: true, get: function () { return data_service_1.DataService; } });
@@ -64,6 +64,8 @@ var task_service_1 = require("./task.service");
64
64
  Object.defineProperty(exports, "TaskService", { enumerable: true, get: function () { return task_service_1.TaskService; } });
65
65
  var timeseries_service_1 = require("./timeseries.service");
66
66
  Object.defineProperty(exports, "TimeSeriesService", { enumerable: true, get: function () { return timeseries_service_1.TimeSeriesService; } });
67
+ var timeseries_value_feed_management_service_1 = require("./timeseries-value-feed-management.service");
68
+ Object.defineProperty(exports, "TimeseriesValueFeedManagementService", { enumerable: true, get: function () { return timeseries_value_feed_management_service_1.TimeseriesValueFeedManagementService; } });
67
69
  var user_service_1 = require("./user.service");
68
70
  Object.defineProperty(exports, "UserService", { enumerable: true, get: function () { return user_service_1.UserService; } });
69
71
  var vault_service_1 = require("./vault.service");
@@ -0,0 +1,12 @@
1
+ import { CreateTimeSeriesValueFeedDto, Paginated, RequestParameter, TimeSeriesValueFeed, TimeSeriesValueFeedManagementApi, TimeSeriesValueFeedUrls, UpdateTimeSeriesValueFeedDto } from '../interfaces';
2
+ import { HttpClientService } from './http-client.service';
3
+ export declare class TimeseriesValueFeedManagementService implements TimeSeriesValueFeedManagementApi {
4
+ private readonly httpClient;
5
+ private readonly basePath;
6
+ constructor(httpClient: HttpClientService);
7
+ create(dto: CreateTimeSeriesValueFeedDto): Promise<TimeSeriesValueFeed>;
8
+ updateOne(id: string, dto: UpdateTimeSeriesValueFeedDto): Promise<TimeSeriesValueFeed>;
9
+ findAll(params?: RequestParameter): Promise<Paginated<TimeSeriesValueFeed>>;
10
+ findUrls(id: string): Promise<TimeSeriesValueFeedUrls>;
11
+ deleteOne(id: string): Promise<void>;
12
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeseriesValueFeedManagementService = void 0;
4
+ class TimeseriesValueFeedManagementService {
5
+ constructor(httpClient) {
6
+ this.httpClient = httpClient;
7
+ this.basePath = '/value-feed-management';
8
+ }
9
+ create(dto) {
10
+ return this.httpClient.post(this.basePath, dto);
11
+ }
12
+ updateOne(id, dto) {
13
+ return this.httpClient.put(`${this.basePath}/${id}`, dto);
14
+ }
15
+ findAll(params = {}) {
16
+ return this.httpClient.get(this.basePath, { params });
17
+ }
18
+ findUrls(id) {
19
+ return this.httpClient.get(`${this.basePath}/${id}/urls`);
20
+ }
21
+ deleteOne(id) {
22
+ return this.httpClient.delete(`${this.basePath}/${id}`);
23
+ }
24
+ }
25
+ exports.TimeseriesValueFeedManagementService = TimeseriesValueFeedManagementService;