@hahnpro/hpc-api 2026.9.6 → 2026.9.8

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 (43) 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/crm.constants.d.ts +12 -0
  6. package/src/lib/crm.constants.js +36 -0
  7. package/src/lib/interfaces/ai.interface.d.ts +16 -0
  8. package/src/lib/interfaces/ai.interface.js +17 -1
  9. package/src/lib/interfaces/authz/capability-bundle.interface.d.ts +6 -3
  10. package/src/lib/interfaces/authz/capability-bundle.interface.js +1 -1
  11. package/src/lib/interfaces/authz/capability.interface.d.ts +7 -4
  12. package/src/lib/interfaces/authz/capability.interface.js +2 -3
  13. package/src/lib/interfaces/authz/feature.interface.d.ts +5 -2
  14. package/src/lib/interfaces/authz/index.d.ts +1 -1
  15. package/src/lib/interfaces/authz/localized-text.interface.d.ts +5 -0
  16. package/src/lib/interfaces/authz/org-group.interface.d.ts +5 -2
  17. package/src/lib/interfaces/authz/org-subscription.interface.d.ts +0 -1
  18. package/src/lib/interfaces/authz/org-subscription.interface.js +0 -1
  19. package/src/lib/interfaces/authz/plan.interface.d.ts +6 -2
  20. package/src/lib/interfaces/authz/plan.interface.js +1 -0
  21. package/src/lib/interfaces/authz/sql-pagination.interface.d.ts +3 -1
  22. package/src/lib/interfaces/crm-autonomy.interface.d.ts +47 -0
  23. package/src/lib/interfaces/index.d.ts +3 -1
  24. package/src/lib/interfaces/index.js +4 -2
  25. package/src/lib/interfaces/resource.interface.d.ts +1 -0
  26. package/src/lib/interfaces/resource.interface.js +1 -0
  27. package/src/lib/interfaces/time-series-value-feed.interface.d.ts +33 -0
  28. package/src/lib/interfaces/time-series-value-feed.interface.js +4 -0
  29. package/src/lib/interfaces/timeseries.interface.d.ts +6 -0
  30. package/src/lib/mock/api.mock.d.ts +4 -1
  31. package/src/lib/mock/api.mock.js +3 -1
  32. package/src/lib/mock/crm.mock.service.d.ts +11 -1
  33. package/src/lib/mock/crm.mock.service.js +56 -0
  34. package/src/lib/mock/index.d.ts +1 -0
  35. package/src/lib/mock/index.js +3 -1
  36. package/src/lib/mock/timeseries-value-feed-management.mock.service.d.ts +12 -0
  37. package/src/lib/mock/timeseries-value-feed-management.mock.service.js +61 -0
  38. package/src/lib/services/crm.service.d.ts +10 -0
  39. package/src/lib/services/crm.service.js +27 -0
  40. package/src/lib/services/index.d.ts +1 -0
  41. package/src/lib/services/index.js +3 -1
  42. package/src/lib/services/timeseries-value-feed-management.service.d.ts +12 -0
  43. 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.6",
3
+ "version": "2026.9.8",
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,4 +1,5 @@
1
1
  import { QueueOptions } from './queue';
2
+ import type { TimeSeriesValueFeedManagementApi } from './interfaces';
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 {
4
5
  readonly httpClient?: HttpClientService;
@@ -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
  }
@@ -51,4 +51,16 @@ export declare const CRM_ASSET_TYPE_NAMES: {
51
51
  readonly touchpoint: "com.hahnpro.crm.touchpoint";
52
52
  readonly deal: "com.hahnpro.crm.deal";
53
53
  };
54
+ /**
55
+ * Stable identity for a CRM meeting across its source artifacts, such as an
56
+ * attendance export and a Teams transcript. Keep this independent of source
57
+ * type because both files describe the same meeting.
58
+ */
59
+ export declare function buildCrmMeetingSourceId(title?: string | null, startTime?: Date | null): string;
60
+ /**
61
+ * Stable identity for a participant-specific touchpoint. The complete identity
62
+ * is bounded because appending an email to a bounded meeting identity can still
63
+ * exceed the CRM sourceId contract.
64
+ */
65
+ export declare function buildCrmMeetingParticipantSourceId(title?: string | null, startTime?: Date | null, email?: string | null): string;
54
66
  export declare const PUBLIC_EMAIL_PROVIDERS: readonly ["gmail.com", "googlemail.com", "t-online.de", "yahoo.com", "yahoo.de", "outlook.com", "hotmail.com", "live.com", "web.de", "gmx.de", "gmx.net", "gmx.ch", "freenet.de", "arcor.de", "aol.com", "icloud.com", "me.com"];
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PUBLIC_EMAIL_PROVIDERS = exports.CRM_ASSET_TYPE_NAMES = exports.CRM_ASSET_TYPE_IDS = exports.CRM_DEAL_REMINDER_RULES = exports.CRM_DEAL_REMINDER_SCHEMA_MARKER = exports.CRM_ASSET_TYPES = void 0;
4
+ exports.buildCrmMeetingSourceId = buildCrmMeetingSourceId;
5
+ exports.buildCrmMeetingParticipantSourceId = buildCrmMeetingParticipantSourceId;
4
6
  exports.CRM_ASSET_TYPES = {
5
7
  company: {
6
8
  id: '69cd1e34310cf709b7936192',
@@ -52,6 +54,40 @@ exports.CRM_ASSET_TYPE_NAMES = {
52
54
  touchpoint: exports.CRM_ASSET_TYPES.touchpoint.name,
53
55
  deal: exports.CRM_ASSET_TYPES.deal.name,
54
56
  };
57
+ const CRM_SOURCE_ID_MAX_LENGTH = 128;
58
+ const FNV_1A_64_OFFSET_BASIS = 0xcbf29ce484222325n;
59
+ const FNV_1A_64_PRIME = 0x100000001b3n;
60
+ const FNV_1A_64_MASK = 0xffffffffffffffffn;
61
+ function stableSourceHash(value) {
62
+ let hash = FNV_1A_64_OFFSET_BASIS;
63
+ for (const character of value) {
64
+ hash ^= BigInt(character.codePointAt(0) ?? 0);
65
+ hash = (hash * FNV_1A_64_PRIME) & FNV_1A_64_MASK;
66
+ }
67
+ return hash.toString(36);
68
+ }
69
+ /**
70
+ * Stable identity for a CRM meeting across its source artifacts, such as an
71
+ * attendance export and a Teams transcript. Keep this independent of source
72
+ * type because both files describe the same meeting.
73
+ */
74
+ function buildCrmMeetingSourceId(title, startTime) {
75
+ const normalizedTitle = title?.trim().toLowerCase() || 'untitled';
76
+ const timestamp = startTime instanceof Date && !Number.isNaN(startTime.getTime()) ? startTime.toISOString() : 'unknown';
77
+ const sourceId = `meeting::${normalizedTitle}::${timestamp}`;
78
+ return sourceId.length <= CRM_SOURCE_ID_MAX_LENGTH ? sourceId : `meeting::${stableSourceHash(normalizedTitle)}::${timestamp}`;
79
+ }
80
+ /**
81
+ * Stable identity for a participant-specific touchpoint. The complete identity
82
+ * is bounded because appending an email to a bounded meeting identity can still
83
+ * exceed the CRM sourceId contract.
84
+ */
85
+ function buildCrmMeetingParticipantSourceId(title, startTime, email) {
86
+ const meetingSourceId = buildCrmMeetingSourceId(title, startTime);
87
+ const normalizedEmail = email?.trim().toLowerCase() || 'unknown';
88
+ const sourceId = `${meetingSourceId}::${normalizedEmail}`;
89
+ return sourceId.length <= CRM_SOURCE_ID_MAX_LENGTH ? sourceId : `meeting-participant::${stableSourceHash(sourceId)}`;
90
+ }
55
91
  exports.PUBLIC_EMAIL_PROVIDERS = [
56
92
  'gmail.com',
57
93
  'googlemail.com',
@@ -66,6 +66,7 @@ export declare enum AgentId {
66
66
  ASSET_IDENTIFIER = "asset-identifier-agent",
67
67
  ASSET_MULTI_IDENTIFIER = "asset-multi-identifier-agent",
68
68
  ASSET_WEB = "asset-web-agent",
69
+ CRM = "crm-agent",
69
70
  LOGBOOK = "logbook-agent",
70
71
  MESSAGE = "message-agent",
71
72
  STATUS = "status-agent",
@@ -107,6 +108,20 @@ export declare enum ToolName {
107
108
  LOAD_USER_MESSAGE_ATTACHMENT_REFERENCES = "loadUserMessageAttachmentReferences",
108
109
  SEARCH_IN_ATTACHMENTS = "searchInAttachments",
109
110
  LOAD_ATTACHMENT_ANALYSIS = "loadAttachmentAnalysis",
111
+ SUBMIT_CRM_CANDIDATES = "crmSubmitCandidates",
112
+ ENRICH_CRM_CANDIDATES = "crmEnrichCandidates",
113
+ PROPOSE_CRM_WEB_ENRICHMENT = "crmProposeWebEnrichment",
114
+ APPLY_CRM_WEB_ENRICHMENT = "crmApplyWebEnrichment",
115
+ LIST_CRM_IMPORT_COMPANIES_FOR_WEB_ENRICHMENT = "crmListImportCompaniesForWebEnrichment",
116
+ LINK_CRM_TOUCHPOINT_PARTICIPANT = "crmLinkTouchpointParticipant",
117
+ PREPARE_CRM_IMPORT_PLAN = "crmPrepareImportPlan",
118
+ EXECUTE_CRM_IMPORT_PLAN = "crmExecuteImportPlan",
119
+ IMPORT_CRM_ATTACHMENT = "crmImportAttachment",
120
+ LIST_CRM_OPERATIONS = "crmListOperations",
121
+ GET_CRM_OPERATION = "crmGetOperation",
122
+ LIST_CRM_REVIEWS = "crmListReviews",
123
+ RESOLVE_CRM_REVIEW = "crmResolveReview",
124
+ UNDO_CRM_OPERATION = "crmUndoOperation",
110
125
  WEB_SEARCH = "web_search",
111
126
  USE_SKILL = "useSkill",
112
127
  READ_SKILL_FILE = "readSkillFile",
@@ -131,6 +146,7 @@ export declare enum HandOffTool {
131
146
  export declare enum AiAssistantId {
132
147
  ASSET = "asset-assistant",
133
148
  ASSET_WEB = "asset-web-assistant",
149
+ CRM = "crm-assistant",
134
150
  INCIDENT = "incident-assistant",
135
151
  REPORT = "report-assistant",
136
152
  AXALTA_INCIDENT = "axalta-incident-assistant"
@@ -76,6 +76,7 @@ var AgentId;
76
76
  AgentId["ASSET_IDENTIFIER"] = "asset-identifier-agent";
77
77
  AgentId["ASSET_MULTI_IDENTIFIER"] = "asset-multi-identifier-agent";
78
78
  AgentId["ASSET_WEB"] = "asset-web-agent";
79
+ AgentId["CRM"] = "crm-agent";
79
80
  AgentId["LOGBOOK"] = "logbook-agent";
80
81
  AgentId["MESSAGE"] = "message-agent";
81
82
  AgentId["STATUS"] = "status-agent";
@@ -87,7 +88,7 @@ var AgentId;
87
88
  AgentId["AXALTA_MESSAGE"] = "axalta-message-agent";
88
89
  AgentId["TRIAGE"] = "triage-agent";
89
90
  })(AgentId || (exports.AgentId = AgentId = {}));
90
- exports.ATTACHMENT_CAPABLE_AGENT_IDS = [AgentId.ASSET, AgentId.ASSET_WEB, AgentId.REPORT, AgentId.MESSAGE];
91
+ exports.ATTACHMENT_CAPABLE_AGENT_IDS = [AgentId.ASSET, AgentId.ASSET_WEB, AgentId.CRM, AgentId.REPORT, AgentId.MESSAGE];
91
92
  var ToolName;
92
93
  (function (ToolName) {
93
94
  ToolName["SWITCH_ASSISTANT"] = "switchAssistant";
@@ -118,6 +119,20 @@ var ToolName;
118
119
  ToolName["LOAD_USER_MESSAGE_ATTACHMENT_REFERENCES"] = "loadUserMessageAttachmentReferences";
119
120
  ToolName["SEARCH_IN_ATTACHMENTS"] = "searchInAttachments";
120
121
  ToolName["LOAD_ATTACHMENT_ANALYSIS"] = "loadAttachmentAnalysis";
122
+ ToolName["SUBMIT_CRM_CANDIDATES"] = "crmSubmitCandidates";
123
+ ToolName["ENRICH_CRM_CANDIDATES"] = "crmEnrichCandidates";
124
+ ToolName["PROPOSE_CRM_WEB_ENRICHMENT"] = "crmProposeWebEnrichment";
125
+ ToolName["APPLY_CRM_WEB_ENRICHMENT"] = "crmApplyWebEnrichment";
126
+ ToolName["LIST_CRM_IMPORT_COMPANIES_FOR_WEB_ENRICHMENT"] = "crmListImportCompaniesForWebEnrichment";
127
+ ToolName["LINK_CRM_TOUCHPOINT_PARTICIPANT"] = "crmLinkTouchpointParticipant";
128
+ ToolName["PREPARE_CRM_IMPORT_PLAN"] = "crmPrepareImportPlan";
129
+ ToolName["EXECUTE_CRM_IMPORT_PLAN"] = "crmExecuteImportPlan";
130
+ ToolName["IMPORT_CRM_ATTACHMENT"] = "crmImportAttachment";
131
+ ToolName["LIST_CRM_OPERATIONS"] = "crmListOperations";
132
+ ToolName["GET_CRM_OPERATION"] = "crmGetOperation";
133
+ ToolName["LIST_CRM_REVIEWS"] = "crmListReviews";
134
+ ToolName["RESOLVE_CRM_REVIEW"] = "crmResolveReview";
135
+ ToolName["UNDO_CRM_OPERATION"] = "crmUndoOperation";
121
136
  ToolName["WEB_SEARCH"] = "web_search";
122
137
  ToolName["USE_SKILL"] = "useSkill";
123
138
  ToolName["READ_SKILL_FILE"] = "readSkillFile";
@@ -145,6 +160,7 @@ var AiAssistantId;
145
160
  (function (AiAssistantId) {
146
161
  AiAssistantId["ASSET"] = "asset-assistant";
147
162
  AiAssistantId["ASSET_WEB"] = "asset-web-assistant";
163
+ AiAssistantId["CRM"] = "crm-assistant";
148
164
  AiAssistantId["INCIDENT"] = "incident-assistant";
149
165
  AiAssistantId["REPORT"] = "report-assistant";
150
166
  AiAssistantId["AXALTA_INCIDENT"] = "axalta-incident-assistant";
@@ -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 {
@@ -1,3 +1,4 @@
1
+ import type { CrmContactMergeOverrides, CrmEmailMerge } from './crm.interface';
1
2
  export type CrmAutonomyEntityType = 'company' | 'contact' | 'deal' | 'touchpoint';
2
3
  export type CrmAutonomySource = 'assistant' | 'import' | 'outlook_mail' | 'outlook_calendar' | 'website_webform' | 'workflow';
3
4
  export type CrmConfidenceLevel = 'high' | 'medium' | 'low';
@@ -16,6 +17,16 @@ export interface CrmAutonomyCandidateConfidence {
16
17
  score?: number;
17
18
  reasons: string[];
18
19
  }
20
+ /** Official-web evidence retained with an autonomy operation, never as CRM asset data. */
21
+ export interface CrmAutonomyCandidateProvenance {
22
+ source: 'official_web';
23
+ officialDomain: string;
24
+ sources: Array<{
25
+ sourceUrl: string;
26
+ title?: string;
27
+ fields: string[];
28
+ }>;
29
+ }
19
30
  export interface CrmAutonomyCandidate {
20
31
  candidateId: string;
21
32
  entityType: CrmAutonomyEntityType;
@@ -27,6 +38,9 @@ export interface CrmAutonomyCandidate {
27
38
  parent?: string | null;
28
39
  parentCandidateId?: string;
29
40
  relations?: CrmCandidateRelation[];
41
+ /** Applies only parent/relation links while preserving the target asset data. */
42
+ linkOnly?: boolean;
43
+ provenance?: CrmAutonomyCandidateProvenance;
30
44
  source: CrmAutonomySource;
31
45
  sourceId: string;
32
46
  confidence: CrmAutonomyCandidateConfidence;
@@ -46,6 +60,8 @@ export interface CrmAutonomyCandidateSubmissionRequest {
46
60
  export interface CrmAutonomyCandidateResult {
47
61
  candidateId: string;
48
62
  entityType: CrmAutonomyEntityType;
63
+ /** Action after CRM identity matching, which can differ from the requested action. */
64
+ appliedAction?: 'create' | 'update';
49
65
  decision: CrmAutonomyDecision;
50
66
  assetId?: string;
51
67
  reviewItemId?: string;
@@ -125,12 +141,43 @@ export interface CrmAutonomySubmitCandidatesResponse {
125
141
  operation: CrmAutonomyOperationSummary;
126
142
  reviewItems: CrmAutonomyReviewItemSummary[];
127
143
  }
144
+ export interface CrmAutonomyReviewActionRequest {
145
+ note?: string;
146
+ candidate?: CrmAutonomyCandidate;
147
+ selectedMatchAssetId?: string;
148
+ mergeAssetIds?: string[];
149
+ emailMerge?: CrmEmailMerge;
150
+ overrides?: CrmContactMergeOverrides;
151
+ }
152
+ export interface CrmAutonomyReconcileContactGovernanceRequest {
153
+ operationIds: string[];
154
+ }
155
+ export interface CrmAutonomyReconcileContactGovernanceResponse {
156
+ resolvedCount: number;
157
+ pendingCount: number;
158
+ pendingReasonCodes: Record<string, number>;
159
+ }
160
+ export interface CrmAutonomyOperationQuery {
161
+ status?: CrmAutonomyOperationStatus;
162
+ }
163
+ export interface CrmAutonomyReviewQuery {
164
+ status?: CrmAutonomyReviewStatus;
165
+ }
128
166
  export interface CrmAutonomyListOperationsResponse {
129
167
  items: CrmAutonomyOperationSummary[];
130
168
  }
131
169
  export interface CrmAutonomyListReviewsResponse {
132
170
  items: CrmAutonomyReviewItemSummary[];
133
171
  }
172
+ export interface CrmAutonomyApproveReviewResponse {
173
+ operation: CrmAutonomyOperationSummary;
174
+ reviewItems: CrmAutonomyReviewItemSummary[];
175
+ }
176
+ export interface CrmAutonomyRejectReviewResponse {
177
+ review: CrmAutonomyReviewItemSummary;
178
+ operation: CrmAutonomyOperationSummary;
179
+ reviewItems: CrmAutonomyReviewItemSummary[];
180
+ }
134
181
  export interface CrmAutonomyUndoResponse {
135
182
  undone: boolean;
136
183
  reason?: string;
@@ -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, Translation, UserSettings, VaultSecret, TimeSeriesValueFeed } 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';
@@ -27,6 +27,7 @@ import { OrganizationsMockService } from './organizations.mock.service';
27
27
  import { SearchMockService } from './search.mock.service';
28
28
  import { TaskMockService } from './task.mock.service';
29
29
  import { TimeseriesMockService } from './timeseries.mock.service';
30
+ import { TimeseriesValueFeedManagementMockService } from './timeseries-value-feed-management.mock.service';
30
31
  import { UserMockService } from './user.mock.service';
31
32
  import { VaultMockService } from './vault.mock.service';
32
33
  export interface MockAPIInitData {
@@ -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;
@@ -29,12 +29,13 @@ 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
31
  const timeseries_mock_service_1 = require("./timeseries.mock.service");
32
+ const timeseries_value_feed_management_mock_service_1 = require("./timeseries-value-feed-management.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
  }
@@ -1,4 +1,4 @@
1
- import { Config, CrmDealReminderDeliveryResult, CrmGetDuplicatesQuery, CrmGetDuplicatesResponse, CrmImportParser, CrmImportResponse, CrmMergeContactDuplicatesRequest, CrmMergeContactDuplicatesResponse, SendDealReminderPayload, TokenOption } from '../interfaces';
1
+ import { Config, CrmAutonomyApproveReviewResponse, CrmAutonomyCandidateSubmissionRequest, CrmAutonomyListOperationsResponse, CrmAutonomyListReviewsResponse, CrmAutonomyOperationDetail, CrmAutonomyReconcileContactGovernanceRequest, CrmAutonomyReconcileContactGovernanceResponse, CrmAutonomyRejectReviewResponse, CrmAutonomyReviewActionRequest, CrmAutonomySubmitCandidatesResponse, CrmAutonomyUndoResponse, CrmDealReminderDeliveryResult, CrmGetDuplicatesQuery, CrmGetDuplicatesResponse, CrmImportParser, CrmImportResponse, CrmMergeContactDuplicatesRequest, CrmMergeContactDuplicatesResponse, SendDealReminderPayload, TokenOption } from '../interfaces';
2
2
  import { CrmService } from '../services';
3
3
  import { CrossPlatformFormData } from '../utils';
4
4
  export declare class CrmMockService extends CrmService {
@@ -8,4 +8,14 @@ export declare class CrmMockService extends CrmService {
8
8
  getDuplicates(_query?: CrmGetDuplicatesQuery, _options?: TokenOption): Promise<CrmGetDuplicatesResponse>;
9
9
  mergeDuplicates(dto: CrmMergeContactDuplicatesRequest, _options?: TokenOption): Promise<CrmMergeContactDuplicatesResponse>;
10
10
  sendDealReminder(_payload: SendDealReminderPayload, _options?: TokenOption): Promise<CrmDealReminderDeliveryResult>;
11
+ submitAutonomyCandidates(request: CrmAutonomyCandidateSubmissionRequest, _options?: TokenOption): Promise<CrmAutonomySubmitCandidatesResponse>;
12
+ listAutonomyOperations(_query?: {}, _options?: TokenOption): Promise<CrmAutonomyListOperationsResponse>;
13
+ getAutonomyOperation(operationId: string, _options?: TokenOption): Promise<CrmAutonomyOperationDetail>;
14
+ listAutonomyReviews(_query?: {}, _options?: TokenOption): Promise<CrmAutonomyListReviewsResponse>;
15
+ approveAutonomyReview(_reviewId: string, _action?: CrmAutonomyReviewActionRequest, _options?: TokenOption): Promise<CrmAutonomyApproveReviewResponse>;
16
+ rejectAutonomyReview(reviewId: string, _action?: Pick<CrmAutonomyReviewActionRequest, 'note'>, _options?: TokenOption): Promise<CrmAutonomyRejectReviewResponse>;
17
+ reconcileContactGovernance(_request: CrmAutonomyReconcileContactGovernanceRequest, _options?: TokenOption): Promise<CrmAutonomyReconcileContactGovernanceResponse>;
18
+ undoAutonomyOperation(operationId: string, _options?: TokenOption): Promise<CrmAutonomyUndoResponse>;
19
+ private createAutonomyOperation;
20
+ private createAutonomyReview;
11
21
  }
@@ -67,5 +67,61 @@ class CrmMockService extends services_1.CrmService {
67
67
  delivered: true,
68
68
  };
69
69
  }
70
+ async submitAutonomyCandidates(request, _options = {}) {
71
+ return { operation: this.createAutonomyOperation(request), reviewItems: [] };
72
+ }
73
+ async listAutonomyOperations(_query = {}, _options = {}) {
74
+ return { items: [] };
75
+ }
76
+ async getAutonomyOperation(operationId, _options = {}) {
77
+ return { ...this.createAutonomyOperation(), id: operationId, candidates: [] };
78
+ }
79
+ async listAutonomyReviews(_query = {}, _options = {}) {
80
+ return { items: [] };
81
+ }
82
+ async approveAutonomyReview(_reviewId, _action = {}, _options = {}) {
83
+ return { operation: this.createAutonomyOperation(), reviewItems: [] };
84
+ }
85
+ async rejectAutonomyReview(reviewId, _action = {}, _options = {}) {
86
+ return { review: this.createAutonomyReview(reviewId), operation: this.createAutonomyOperation(), reviewItems: [] };
87
+ }
88
+ async reconcileContactGovernance(_request, _options = {}) {
89
+ return { resolvedCount: 0, pendingCount: 0, pendingReasonCodes: {} };
90
+ }
91
+ async undoAutonomyOperation(operationId, _options = {}) {
92
+ return { undone: true, operation: { ...this.createAutonomyOperation(), id: operationId, status: 'undone' } };
93
+ }
94
+ createAutonomyOperation(request) {
95
+ const now = new Date().toISOString();
96
+ return {
97
+ id: 'mock-crm-autonomy-operation',
98
+ ownerId: 'mock-owner',
99
+ source: request?.source ?? 'assistant',
100
+ sourceId: request?.sourceId ?? 'mock-source',
101
+ idempotencyKey: request?.idempotencyKey ?? 'mock-idempotency-key',
102
+ status: 'executed',
103
+ triggeredBy: { type: 'user', id: 'mock-user' },
104
+ policyVersion: 'mock-policy',
105
+ createdAssetIds: {},
106
+ candidateResults: [],
107
+ createdAt: now,
108
+ updatedAt: now,
109
+ };
110
+ }
111
+ createAutonomyReview(id) {
112
+ const now = new Date().toISOString();
113
+ return {
114
+ id,
115
+ ownerId: 'mock-owner',
116
+ operationId: 'mock-crm-autonomy-operation',
117
+ candidateId: 'mock-candidate',
118
+ entityType: 'contact',
119
+ status: 'rejected',
120
+ appliedRule: 'mock-rule',
121
+ reasonCodes: [],
122
+ createdAt: now,
123
+ updatedAt: now,
124
+ };
125
+ }
70
126
  }
71
127
  exports.CrmMockService = CrmMockService;
@@ -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,61 @@
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({ snapshotUrl: timeSeriesValueFeed?.snapshotUrl, eventsUrl: timeSeriesValueFeed?.eventsUrl, embedUrl: timeSeriesValueFeed?.embedUrl });
53
+ }
54
+ async deleteOne(id) {
55
+ const index = this.data.findIndex((item) => item.id === id);
56
+ if (index >= 0) {
57
+ this.data.splice(index, 1);
58
+ }
59
+ }
60
+ }
61
+ exports.TimeseriesValueFeedManagementMockService = TimeseriesValueFeedManagementMockService;
@@ -1,5 +1,6 @@
1
1
  import { APIBase } from '../api-base';
2
2
  import { Config, TokenOption } from '../interfaces';
3
+ import { CrmAutonomyApproveReviewResponse, CrmAutonomyCandidateSubmissionRequest, CrmAutonomyListOperationsResponse, CrmAutonomyListReviewsResponse, CrmAutonomyOperationDetail, CrmAutonomyOperationQuery, CrmAutonomyReconcileContactGovernanceRequest, CrmAutonomyReconcileContactGovernanceResponse, CrmAutonomyRejectReviewResponse, CrmAutonomyReviewActionRequest, CrmAutonomyReviewItemDetail, CrmAutonomyReviewQuery, CrmAutonomySubmitCandidatesResponse, CrmAutonomyUndoResponse } from '../interfaces/crm-autonomy.interface';
3
4
  import { CrmDealReminderDeliveryResult, CrmGetDuplicatesQuery, CrmGetDuplicatesResponse, CrmImportParser, CrmImportResponse, CrmMergeContactDuplicatesRequest, CrmMergeContactDuplicatesResponse, SendDealReminderPayload } from '../interfaces/crm.interface';
4
5
  import { CrossPlatformFormData } from '../utils';
5
6
  import { HttpClientService } from './http-client.service';
@@ -10,4 +11,13 @@ export declare class CrmService extends APIBase {
10
11
  getDuplicates(query?: CrmGetDuplicatesQuery, options?: TokenOption): Promise<CrmGetDuplicatesResponse>;
11
12
  mergeDuplicates(dto: CrmMergeContactDuplicatesRequest, options?: TokenOption): Promise<CrmMergeContactDuplicatesResponse>;
12
13
  sendDealReminder(payload: SendDealReminderPayload, options?: TokenOption): Promise<CrmDealReminderDeliveryResult>;
14
+ submitAutonomyCandidates(request: CrmAutonomyCandidateSubmissionRequest, options?: TokenOption): Promise<CrmAutonomySubmitCandidatesResponse>;
15
+ listAutonomyOperations(query?: CrmAutonomyOperationQuery, options?: TokenOption): Promise<CrmAutonomyListOperationsResponse>;
16
+ getAutonomyOperation(operationId: string, options?: TokenOption): Promise<CrmAutonomyOperationDetail>;
17
+ listAutonomyReviews(query?: CrmAutonomyReviewQuery, options?: TokenOption): Promise<CrmAutonomyListReviewsResponse>;
18
+ getAutonomyReview(reviewId: string, options?: TokenOption): Promise<CrmAutonomyReviewItemDetail>;
19
+ approveAutonomyReview(reviewId: string, action?: CrmAutonomyReviewActionRequest, options?: TokenOption): Promise<CrmAutonomyApproveReviewResponse>;
20
+ rejectAutonomyReview(reviewId: string, action?: Pick<CrmAutonomyReviewActionRequest, 'note'>, options?: TokenOption): Promise<CrmAutonomyRejectReviewResponse>;
21
+ reconcileContactGovernance(request: CrmAutonomyReconcileContactGovernanceRequest, options?: TokenOption): Promise<CrmAutonomyReconcileContactGovernanceResponse>;
22
+ undoAutonomyOperation(operationId: string, options?: TokenOption): Promise<CrmAutonomyUndoResponse>;
13
23
  }
@@ -29,5 +29,32 @@ class CrmService extends api_base_1.APIBase {
29
29
  sendDealReminder(payload, options = {}) {
30
30
  return this.httpClient.post(`${this.basePath}/deal-reminder/send`, payload, options);
31
31
  }
32
+ submitAutonomyCandidates(request, options = {}) {
33
+ return this.httpClient.post(`${this.basePath}/autonomy/candidates`, request, options);
34
+ }
35
+ listAutonomyOperations(query = {}, options = {}) {
36
+ return this.httpClient.get(`${this.basePath}/autonomy/operations`, { ...options, params: query });
37
+ }
38
+ getAutonomyOperation(operationId, options = {}) {
39
+ return this.httpClient.get(`${this.basePath}/autonomy/operations/${operationId}`, options);
40
+ }
41
+ listAutonomyReviews(query = {}, options = {}) {
42
+ return this.httpClient.get(`${this.basePath}/autonomy/reviews`, { ...options, params: query });
43
+ }
44
+ getAutonomyReview(reviewId, options = {}) {
45
+ return this.httpClient.get(`${this.basePath}/autonomy/reviews/${reviewId}`, options);
46
+ }
47
+ approveAutonomyReview(reviewId, action = {}, options = {}) {
48
+ return this.httpClient.post(`${this.basePath}/autonomy/reviews/${reviewId}/approve`, action, options);
49
+ }
50
+ rejectAutonomyReview(reviewId, action = {}, options = {}) {
51
+ return this.httpClient.post(`${this.basePath}/autonomy/reviews/${reviewId}/reject`, action, options);
52
+ }
53
+ reconcileContactGovernance(request, options = {}) {
54
+ return this.httpClient.post(`${this.basePath}/autonomy/reviews/reconcile-contact-governance`, request, options);
55
+ }
56
+ undoAutonomyOperation(operationId, options = {}) {
57
+ return this.httpClient.post(`${this.basePath}/autonomy/operations/${operationId}/undo`, {}, options);
58
+ }
32
59
  }
33
60
  exports.CrmService = CrmService;
@@ -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;