@hahnpro/hpc-api 2026.9.11 → 2026.9.12

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 (36) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +1 -1
  3. package/src/lib/interfaces/index.d.ts +1 -1
  4. package/src/lib/interfaces/index.js +2 -1
  5. package/src/lib/interfaces/reference.interface.d.ts +11 -16
  6. package/src/lib/interfaces/reference.interface.js +7 -1
  7. package/src/lib/interfaces/resource.interface.d.ts +4 -1
  8. package/src/lib/interfaces/resource.interface.js +6 -0
  9. package/src/lib/mock/ai.mock.service.d.ts +3 -1
  10. package/src/lib/mock/ai.mock.service.js +7 -0
  11. package/src/lib/mock/asset.mock.service.d.ts +2 -1
  12. package/src/lib/mock/asset.mock.service.js +3 -0
  13. package/src/lib/mock/content.mock.service.d.ts +2 -1
  14. package/src/lib/mock/content.mock.service.js +3 -0
  15. package/src/lib/mock/event.mock.service.d.ts +2 -1
  16. package/src/lib/mock/event.mock.service.js +3 -0
  17. package/src/lib/mock/logbook.mock.service.d.ts +2 -1
  18. package/src/lib/mock/logbook.mock.service.js +3 -0
  19. package/src/lib/mock/object-reference.mock.service.d.ts +7 -8
  20. package/src/lib/mock/object-reference.mock.service.js +10 -16
  21. package/src/lib/mock/task.mock.service.d.ts +2 -1
  22. package/src/lib/mock/task.mock.service.js +3 -0
  23. package/src/lib/services/ai.service.d.ts +3 -1
  24. package/src/lib/services/ai.service.js +13 -0
  25. package/src/lib/services/asset.service.d.ts +2 -1
  26. package/src/lib/services/asset.service.js +6 -0
  27. package/src/lib/services/content.service.d.ts +2 -1
  28. package/src/lib/services/content.service.js +6 -0
  29. package/src/lib/services/event.service.d.ts +2 -1
  30. package/src/lib/services/event.service.js +6 -0
  31. package/src/lib/services/logbook.service.d.ts +2 -1
  32. package/src/lib/services/logbook.service.js +6 -0
  33. package/src/lib/services/object-reference.service.d.ts +7 -8
  34. package/src/lib/services/object-reference.service.js +9 -3
  35. package/src/lib/services/task.service.d.ts +2 -1
  36. package/src/lib/services/task.service.js +6 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @hahnpro/hpc-api
2
2
 
3
+ # 2026.9.12
4
+
5
+ - Added permission verification support for object references, including reference-check endpoints for resources, AI threads, and user messages
6
+ - Added the `PermissionLevel` enum
7
+ - Added pagination and sorting parameters to object-reference queries
8
+
3
9
  # 2026.9.11
4
10
 
5
11
  - Added `api.knowledge` client, shared types and mock support for pages, revisions, discovery and lifecycle operations #5262
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hahnpro/hpc-api",
3
- "version": "2026.9.11",
3
+ "version": "2026.9.12",
4
4
  "description": "Module for easy access to the HahnPRO Cloud API",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -66,7 +66,7 @@ export { NatsConsumers, natsFlowsPrefix, natsHpcPrefix, NatsStreams } from './na
66
66
  export { NotificationRuleStatus } from './notification-rule.interface';
67
67
  export { OrganizationMembersInviteOrAdd } from './organization.interface';
68
68
  export { OwnerType } from './owner.interface';
69
- export { ObjectReferenceType } from './reference.interface';
69
+ export { ObjectReferenceType, PermissionLevel } from './reference.interface';
70
70
  export { arePopulated, CommandType, EventType, isPopulated, PermissionType, ResourceApiPath, resourceApiPathToTypeMap, ResourceType, } from './resource.interface';
71
71
  export { ACTIVE_TASK_STATUSES, AssigneeType, buildTaskStatusFilter, INACTIVE_TASK_STATUSES, Priority, TaskStatus } from './task.interface';
72
72
  export { RETENTION_VALUES } from './timeseries.interface';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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;
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.PermissionLevel = 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; } });
@@ -85,6 +85,7 @@ var owner_interface_1 = require("./owner.interface");
85
85
  Object.defineProperty(exports, "OwnerType", { enumerable: true, get: function () { return owner_interface_1.OwnerType; } });
86
86
  var reference_interface_1 = require("./reference.interface");
87
87
  Object.defineProperty(exports, "ObjectReferenceType", { enumerable: true, get: function () { return reference_interface_1.ObjectReferenceType; } });
88
+ Object.defineProperty(exports, "PermissionLevel", { enumerable: true, get: function () { return reference_interface_1.PermissionLevel; } });
88
89
  var resource_interface_1 = require("./resource.interface");
89
90
  Object.defineProperty(exports, "arePopulated", { enumerable: true, get: function () { return resource_interface_1.arePopulated; } });
90
91
  Object.defineProperty(exports, "CommandType", { enumerable: true, get: function () { return resource_interface_1.CommandType; } });
@@ -1,3 +1,9 @@
1
+ import { ResourceType } from './resource.interface';
2
+ export declare enum PermissionLevel {
3
+ READ = "read",
4
+ WRITE = "write",
5
+ NONE = "none"
6
+ }
1
7
  export declare enum ObjectReferenceType {
2
8
  /**
3
9
  * Used for testing purposes to simulate references between objects.
@@ -30,9 +36,9 @@ export interface ObjectReference {
30
36
  id: number;
31
37
  src: string;
32
38
  tgt: string;
33
- srcType: string;
34
- tgtType: string;
35
- relType: string;
39
+ srcType: ResourceType;
40
+ tgtType: ResourceType;
41
+ relType: ObjectReferenceType;
36
42
  createdAt: number;
37
43
  updatedAt: number;
38
44
  createdBy: string;
@@ -48,21 +54,10 @@ export interface ObjectReference {
48
54
  export interface CreateReferenceDto {
49
55
  srcId: string;
50
56
  tgtId: string;
51
- srcType: string;
52
- tgtType: string;
57
+ srcType: ResourceType;
58
+ tgtType: ResourceType;
53
59
  relSrc: string;
54
60
  relType: ObjectReferenceType;
55
- displayData: {
56
- src?: Record<string, unknown>;
57
- tgt?: Record<string, unknown>;
58
- [key: string]: unknown;
59
- };
60
- tgtDeleted?: boolean;
61
- orgId?: string;
62
- srcReadPermissions?: string[];
63
- srcReadWritePermissions?: string[];
64
- tgtReadPermissions?: string[];
65
- tgtReadWritePermissions?: string[];
66
61
  }
67
62
  export interface ReferencesQuery {
68
63
  objId: string;
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectReferenceType = void 0;
3
+ exports.ObjectReferenceType = exports.PermissionLevel = void 0;
4
+ var PermissionLevel;
5
+ (function (PermissionLevel) {
6
+ PermissionLevel["READ"] = "read";
7
+ PermissionLevel["WRITE"] = "write";
8
+ PermissionLevel["NONE"] = "none";
9
+ })(PermissionLevel || (exports.PermissionLevel = PermissionLevel = {}));
4
10
  var ObjectReferenceType;
5
11
  (function (ObjectReferenceType) {
6
12
  /**
@@ -36,11 +36,14 @@ export declare enum ResourceApiPath {
36
36
  FLOWMODULE = "flow/modules",
37
37
  KNOWLEDGE = "knowledge",
38
38
  LABEL = "labels",
39
+ LOGBOOKENTRY = "tasks/logbook",
39
40
  NOTIFICATIONENDPOINT = "notification/endpoints",
40
41
  NOTIFICATIONRULE = "notification/rules",
41
42
  SECRET = "vault/secrets",
42
43
  TIMESERIES = "tsm",
43
- TASK = "tasks"
44
+ TASK = "tasks",
45
+ THREAD = "ai/threads",
46
+ USERMESSAGE = "ai/messages"
44
47
  }
45
48
  export declare const resourceApiPathToTypeMap: Record<ResourceApiPath, ResourceType>;
46
49
  export declare enum EventType {
@@ -40,11 +40,14 @@ var ResourceApiPath;
40
40
  ResourceApiPath["FLOWMODULE"] = "flow/modules";
41
41
  ResourceApiPath["KNOWLEDGE"] = "knowledge";
42
42
  ResourceApiPath["LABEL"] = "labels";
43
+ ResourceApiPath["LOGBOOKENTRY"] = "tasks/logbook";
43
44
  ResourceApiPath["NOTIFICATIONENDPOINT"] = "notification/endpoints";
44
45
  ResourceApiPath["NOTIFICATIONRULE"] = "notification/rules";
45
46
  ResourceApiPath["SECRET"] = "vault/secrets";
46
47
  ResourceApiPath["TIMESERIES"] = "tsm";
47
48
  ResourceApiPath["TASK"] = "tasks";
49
+ ResourceApiPath["THREAD"] = "ai/threads";
50
+ ResourceApiPath["USERMESSAGE"] = "ai/messages";
48
51
  })(ResourceApiPath || (exports.ResourceApiPath = ResourceApiPath = {}));
49
52
  exports.resourceApiPathToTypeMap = {
50
53
  [ResourceApiPath.ALERT]: ResourceType.ALERT,
@@ -58,11 +61,14 @@ exports.resourceApiPathToTypeMap = {
58
61
  [ResourceApiPath.FLOWMODULE]: ResourceType.FLOWMODULE,
59
62
  [ResourceApiPath.KNOWLEDGE]: ResourceType.KNOWLEDGE,
60
63
  [ResourceApiPath.LABEL]: ResourceType.LABEL,
64
+ [ResourceApiPath.LOGBOOKENTRY]: ResourceType.LOGBOOKENTRY,
61
65
  [ResourceApiPath.NOTIFICATIONENDPOINT]: ResourceType.NOTIFICATIONENDPOINT,
62
66
  [ResourceApiPath.NOTIFICATIONRULE]: ResourceType.NOTIFICATIONRULE,
63
67
  [ResourceApiPath.SECRET]: ResourceType.SECRET,
64
68
  [ResourceApiPath.TIMESERIES]: ResourceType.TIMESERIES,
65
69
  [ResourceApiPath.TASK]: ResourceType.TASK,
70
+ [ResourceApiPath.THREAD]: ResourceType.THREAD,
71
+ [ResourceApiPath.USERMESSAGE]: ResourceType.USERMESSAGE,
66
72
  };
67
73
  var EventType;
68
74
  (function (EventType) {
@@ -1,4 +1,4 @@
1
- import { AiAssistant, AiSkill, AiSkillSummary, AudioTranscription, Config, Message, OneShotTaskId, OneShotTaskResult, Paginated, Thread, ThreadPopulated, TokenOption } from '../interfaces';
1
+ import { AiAssistant, AiSkill, AiSkillSummary, AudioTranscription, Config, Message, OneShotTaskId, OneShotTaskResult, Paginated, PermissionLevel, Thread, ThreadPopulated, TokenOption } from '../interfaces';
2
2
  import { AiService } from '../services';
3
3
  import type { CrossPlatformFormData } from '../utils';
4
4
  import { APIBaseMock } from './api-base.mock';
@@ -18,6 +18,8 @@ export declare class AiMockService extends APIBaseMock<never> implements AiServi
18
18
  replaceSkill(_id: string, _form: CrossPlatformFormData, _options?: Config): Promise<AiSkill>;
19
19
  getThreadMessages(threadId: string): Promise<Paginated<Message>>;
20
20
  getThread(threadId: string): Promise<ThreadPopulated>;
21
+ getThreadReferenceCheck(threadId: string, _permissionLevel?: PermissionLevel, _options?: Config): Promise<ThreadPopulated>;
22
+ getUserMessageReferenceCheck(messageId: string, _permissionLevel?: PermissionLevel, _options?: Config): Promise<Message>;
21
23
  getLatestThread(): Promise<ThreadPopulated>;
22
24
  listThreads(): Promise<ThreadPopulated[]>;
23
25
  listAssistantThreads(assistantId: string): Promise<ThreadPopulated[]>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AiMockService = void 0;
4
+ const interfaces_1 = require("../interfaces");
4
5
  const api_base_mock_1 = require("./api-base.mock");
5
6
  class AiMockService extends api_base_mock_1.APIBaseMock {
6
7
  constructor() {
@@ -48,6 +49,12 @@ class AiMockService extends api_base_mock_1.APIBaseMock {
48
49
  getThread(threadId) {
49
50
  throw new Error('Method not implemented.');
50
51
  }
52
+ getThreadReferenceCheck(threadId, _permissionLevel = interfaces_1.PermissionLevel.READ, _options = {}) {
53
+ throw new Error('Method not implemented.');
54
+ }
55
+ getUserMessageReferenceCheck(messageId, _permissionLevel = interfaces_1.PermissionLevel.READ, _options = {}) {
56
+ throw new Error('Method not implemented.');
57
+ }
51
58
  getLatestThread() {
52
59
  throw new Error('Method not implemented.');
53
60
  }
@@ -1,4 +1,4 @@
1
- import { AddToProperty, Asset, AssetRevision, Attachment, DeleteQuery, EventCause, EventLevelOverride, Filter, Paginated, RemoveFromProperty, RequestParameter, SearchResultItem, TokenOption, Translation } from '../interfaces';
1
+ import { AddToProperty, Asset, AssetRevision, Attachment, Config, DeleteQuery, EventCause, EventLevelOverride, Filter, Paginated, PermissionLevel, RemoveFromProperty, RequestParameter, SearchResultItem, TokenOption, Translation } from '../interfaces';
2
2
  import { AssetService } from '../services';
3
3
  import { CrossPlatformFormData } from '../utils';
4
4
  import type { MockAPI } from './api.mock';
@@ -19,6 +19,7 @@ export declare class AssetMockService extends BaseService implements AssetServic
19
19
  constructor(api: MockAPI, assets: Asset[], revisions: AssetRevision[], translations?: Array<Translation & {
20
20
  id: string;
21
21
  }>);
22
+ getReferenceCheck(id: string, _permissionLevel: PermissionLevel, _options?: Config): Promise<Asset>;
22
23
  addElementToProperty(id: string, dto: AddToProperty): Promise<Asset>;
23
24
  removeElementFromProperty(id: string, dto: RemoveFromProperty): Promise<Asset>;
24
25
  private getAssets;
@@ -14,6 +14,9 @@ class AssetMockService extends BaseService {
14
14
  this.revisions = revisions;
15
15
  this.translations = translations;
16
16
  }
17
+ getReferenceCheck(id, _permissionLevel, _options = {}) {
18
+ return this.getOne(id);
19
+ }
17
20
  addElementToProperty(id, dto) {
18
21
  throw new Error('Method not implemented.');
19
22
  }
@@ -1,4 +1,4 @@
1
- import { Content, DeleteQuery, Paginated, RequestParameter, ReturnType } from '../interfaces';
1
+ import { Config, Content, DeleteQuery, Paginated, PermissionLevel, RequestParameter, ReturnType } from '../interfaces';
2
2
  import { ContentService } from '../services';
3
3
  import { CrossPlatformFormData } from '../utils';
4
4
  import { DataMockService } from './data.mock.service';
@@ -14,6 +14,7 @@ declare class BaseService extends BaseService_base {
14
14
  export declare class ContentMockService extends BaseService implements ContentService {
15
15
  private contentData;
16
16
  constructor(contents: Content[], contentData: any[]);
17
+ getReferenceCheck(id: string, _permissionLevel: PermissionLevel, _options?: Config): Promise<Content>;
17
18
  download(id: string, raw?: boolean, options?: any): Promise<Blob | ArrayBuffer>;
18
19
  download(id: string, returnType: ReturnType.TEXT, options?: any): Promise<string>;
19
20
  download(id: string, returnType: ReturnType.JSON, options?: any): Promise<Record<string, unknown>>;
@@ -16,6 +16,9 @@ class ContentMockService extends BaseService {
16
16
  this.contentData.set(contents[i].id, contentData[i]);
17
17
  }
18
18
  }
19
+ getReferenceCheck(id, _permissionLevel, _options = {}) {
20
+ return this.getOne(id);
21
+ }
19
22
  download(id, second, options = {}) {
20
23
  let returnType;
21
24
  if (typeof second === 'boolean' || second == null) {
@@ -1,4 +1,4 @@
1
- import { Event, EventCountByAsset } from '../interfaces';
1
+ import { Config, Event, EventCountByAsset, PermissionLevel } from '../interfaces';
2
2
  import { EventService } from '../services';
3
3
  import { DataMockService } from './data.mock.service';
4
4
  import { ShareMockService } from './share.mock.service';
@@ -9,6 +9,7 @@ declare class BaseService extends BaseService_base {
9
9
  }
10
10
  export declare class EventMockService extends BaseService implements EventService {
11
11
  constructor(events: Event[]);
12
+ getReferenceCheck(id: string, _permissionLevel: PermissionLevel, _options?: Config): Promise<Event>;
12
13
  getEventCountByAsset(assetId: string): Promise<EventCountByAsset>;
13
14
  getLastEventByAssetAndGroup(assetId: string, group: string): Promise<Event>;
14
15
  getLastEventByAssetAndGroups(assetId: string, groups: string[]): Promise<Record<string, string>>;
@@ -12,6 +12,9 @@ class EventMockService extends BaseService {
12
12
  super();
13
13
  this.data = events;
14
14
  }
15
+ getReferenceCheck(id, _permissionLevel, _options = {}) {
16
+ return this.getOne(id);
17
+ }
15
18
  getEventCountByAsset(assetId) {
16
19
  const events = this.data.filter((event) => event.assetRef === assetId);
17
20
  const critical = events.filter((event) => event.level === interfaces_1.EventLevel.Critical).length;
@@ -1,8 +1,9 @@
1
- import { LogbookEntry, LogbookEntryDto, Paginated, TokenOption } from '../interfaces';
1
+ import { Config, LogbookEntry, LogbookEntryDto, Paginated, PermissionLevel, TokenOption } from '../interfaces';
2
2
  import { LogbookService } from '../services';
3
3
  import { APIBaseMock } from './api-base.mock';
4
4
  export declare class LogbookMockService extends APIBaseMock<LogbookEntry> implements LogbookService {
5
5
  constructor(logbookEntries?: LogbookEntry[]);
6
+ getReferenceCheck(id: string, _permissionLevel: PermissionLevel, _options?: Config): Promise<LogbookEntry>;
6
7
  getEntries(taskId: string, limit?: number, offset?: number, _options?: TokenOption): Promise<Paginated<LogbookEntry>>;
7
8
  getEntriesByIds(ids: string[], _options?: TokenOption): Promise<LogbookEntry[]>;
8
9
  addEntry(taskId: string, dto: LogbookEntryDto, _options?: TokenOption): Promise<LogbookEntry>;
@@ -7,6 +7,9 @@ class LogbookMockService extends api_base_mock_1.APIBaseMock {
7
7
  constructor(logbookEntries = []) {
8
8
  super(logbookEntries);
9
9
  }
10
+ getReferenceCheck(id, _permissionLevel, _options = {}) {
11
+ return Promise.resolve(this.data.find((entry) => entry.id === id));
12
+ }
10
13
  async getEntries(taskId, limit = 50, offset = 0, _options = {}) {
11
14
  const taskEntries = this.data.filter((e) => e.taskId === taskId);
12
15
  const docs = taskEntries.slice(offset, offset + limit);
@@ -1,13 +1,12 @@
1
- import { CreateReferenceDto, ObjectReference, ObjectReferenceType, Paginated, ReferencesQuery, TokenOption } from '../interfaces';
1
+ import { Config, CreateReferenceDto, ObjectReference, ObjectReferenceType, Paginated, ReferencesQuery } from '../interfaces';
2
2
  import { ObjectReferenceService } from '../services/object-reference.service';
3
3
  import { APIBaseMock } from './api-base.mock';
4
4
  export declare class ObjectReferenceMockService extends APIBaseMock<ObjectReference> implements ObjectReferenceService {
5
5
  constructor(initialData: ObjectReference[]);
6
- find(query: ReferencesQuery, _options?: TokenOption): Promise<Paginated<ObjectReference>>;
7
- findAll(objId: string, _options?: TokenOption): Promise<ObjectReference[]>;
8
- create(dto: CreateReferenceDto, _options?: TokenOption): Promise<ObjectReference>;
9
- update(referenceId: number, updateData: Partial<Omit<ObjectReference, 'id' | 'createdAt'>>, _options?: TokenOption): Promise<ObjectReference>;
10
- deleteById(refId: string, _options?: TokenOption): Promise<void>;
11
- deleteByReference(src: string, tgt: string, relType: ObjectReferenceType, _options?: TokenOption): Promise<void>;
12
- checkConnection(srcId: string, tgtId: string, type?: ObjectReferenceType, _options?: TokenOption): Promise<boolean>;
6
+ find(query: ReferencesQuery, _options?: Config): Promise<Paginated<ObjectReference>>;
7
+ findAll(objId: string, _options?: Config): Promise<ObjectReference[]>;
8
+ create(dto: CreateReferenceDto, _options?: Config): Promise<ObjectReference>;
9
+ deleteById(refId: string, _options?: Config): Promise<void>;
10
+ deleteByReference(src: string, tgt: string, relType: ObjectReferenceType, _options?: Config): Promise<void>;
11
+ checkConnection(srcId: string, tgtId: string, type?: ObjectReferenceType, _options?: Config): Promise<boolean>;
13
12
  }
@@ -25,10 +25,16 @@ class ObjectReferenceMockService extends api_base_mock_1.APIBaseMock {
25
25
  // Note: connectedObjType filter logic could be added here if needed
26
26
  return true;
27
27
  });
28
+ const limit = query.limit ?? docs.length;
29
+ const page = query.page ?? 1;
30
+ const start = (page - 1) * limit;
31
+ const paginatedDocs = docs.slice(start, start + limit);
28
32
  return {
29
- docs,
33
+ docs: paginatedDocs,
30
34
  total: docs.length,
31
- limit: docs.length,
35
+ limit,
36
+ page,
37
+ pages: limit > 0 ? Math.ceil(docs.length / limit) : 0,
32
38
  };
33
39
  }
34
40
  async findAll(objId, _options = {}) {
@@ -43,8 +49,8 @@ class ObjectReferenceMockService extends api_base_mock_1.APIBaseMock {
43
49
  tgtType: dto.tgtType,
44
50
  relType: dto.relType,
45
51
  relSrc: dto.relSrc,
46
- displayData: dto.displayData,
47
- tgtDeleted: dto.tgtDeleted ?? false,
52
+ displayData: {},
53
+ tgtDeleted: false,
48
54
  createdAt: Date.now(),
49
55
  updatedAt: Date.now(),
50
56
  createdBy: 'mock-user',
@@ -52,18 +58,6 @@ class ObjectReferenceMockService extends api_base_mock_1.APIBaseMock {
52
58
  this.data.push(newRef);
53
59
  return newRef;
54
60
  }
55
- async update(referenceId, updateData, _options = {}) {
56
- const index = this.data.findIndex((ref) => ref.id === referenceId);
57
- if (index === -1) {
58
- throw new Error(`Reference with id ${referenceId} not found`);
59
- }
60
- this.data[index] = {
61
- ...this.data[index],
62
- ...updateData,
63
- updatedAt: Date.now(),
64
- };
65
- return this.data[index];
66
- }
67
61
  async deleteById(refId, _options = {}) {
68
62
  const id = parseInt(refId, 10);
69
63
  this.data = this.data.filter((ref) => ref.id !== id);
@@ -1,4 +1,4 @@
1
- import { DeleteQuery, Paginated, RequestParameter, Task } from '../interfaces';
1
+ import { Config, DeleteQuery, Paginated, PermissionLevel, RequestParameter, Task } from '../interfaces';
2
2
  import { TaskService } from '../services';
3
3
  import type { CreateAbsenceRequest } from '../services/task.service';
4
4
  import { DataMockService } from './data.mock.service';
@@ -13,6 +13,7 @@ declare class BaseService extends BaseService_base {
13
13
  }
14
14
  export declare class TaskMockService extends BaseService implements TaskService {
15
15
  constructor(tasks: Task[]);
16
+ getReferenceCheck(id: string, _permissionLevel: PermissionLevel, _options?: Config): Promise<Task>;
16
17
  createTaskAttachedToAsset(dto: any): Promise<Task>;
17
18
  createAbsence(dto: CreateAbsenceRequest): Promise<Task>;
18
19
  deleteOne(taskId: string, deleteQuery?: DeleteQuery): Promise<Task>;
@@ -11,6 +11,9 @@ class TaskMockService extends BaseService {
11
11
  constructor(tasks) {
12
12
  super(tasks);
13
13
  }
14
+ getReferenceCheck(id, _permissionLevel, _options = {}) {
15
+ return this.getOne(id);
16
+ }
14
17
  async createTaskAttachedToAsset(dto) {
15
18
  this.data.push(dto);
16
19
  return Promise.resolve(dto);
@@ -1,5 +1,5 @@
1
1
  import { APIBase } from '../api-base';
2
- import { AiAssistant, AiAssistantId, AiSkill, AiSkillSummary, AudioTranscription, Config, Message, OneShotTaskId, OneShotTaskResult, Paginated, Thread, ThreadPopulated, TokenOption } from '../interfaces';
2
+ import { AiAssistant, AiAssistantId, AiSkill, AiSkillSummary, AudioTranscription, Config, Message, OneShotTaskId, OneShotTaskResult, Paginated, PermissionLevel, Thread, ThreadPopulated, TokenOption } from '../interfaces';
3
3
  import { CrossPlatformFormData } from '../utils';
4
4
  import { HttpClientService } from './http-client.service';
5
5
  export declare class AiService extends APIBase {
@@ -19,6 +19,8 @@ export declare class AiService extends APIBase {
19
19
  replaceSkill(id: string, form: CrossPlatformFormData, options?: Config): Promise<AiSkill>;
20
20
  getThreadMessages(threadId: string): Promise<Paginated<Message>>;
21
21
  getThread(threadId: string): Promise<ThreadPopulated>;
22
+ getThreadReferenceCheck(threadId: string, permissionLevel?: PermissionLevel, options?: Config): Promise<ThreadPopulated>;
23
+ getUserMessageReferenceCheck(messageId: string, permissionLevel?: PermissionLevel, options?: Config): Promise<Message>;
22
24
  getLatestThread(): Promise<ThreadPopulated>;
23
25
  listThreads(assistantIds?: AiAssistantId[], params?: {}, options?: TokenOption): Promise<ThreadPopulated[]>;
24
26
  provideFeedback(traceId: string, value: number, comment?: string): Promise<void>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AiService = void 0;
4
4
  const api_base_1 = require("../api-base");
5
+ const interfaces_1 = require("../interfaces");
5
6
  const utils_1 = require("../utils");
6
7
  const AUDIO_TRANSCRIPTION_TIMEOUT_MS = 5 * 60000;
7
8
  class AiService extends api_base_1.APIBase {
@@ -62,6 +63,18 @@ class AiService extends api_base_1.APIBase {
62
63
  getThread(threadId) {
63
64
  return this.httpClient.get(`${this.basePath}/threads/${threadId}`);
64
65
  }
66
+ getThreadReferenceCheck(threadId, permissionLevel = interfaces_1.PermissionLevel.NONE, options = {}) {
67
+ return this.httpClient.get(`${this.basePath}/threads/${threadId}/reference-check`, {
68
+ ...options,
69
+ params: { permissionLevel, ...options.params },
70
+ });
71
+ }
72
+ getUserMessageReferenceCheck(messageId, permissionLevel = interfaces_1.PermissionLevel.NONE, options = {}) {
73
+ return this.httpClient.get(`${this.basePath}/messages/${messageId}/reference-check`, {
74
+ ...options,
75
+ params: { permissionLevel, ...options.params },
76
+ });
77
+ }
65
78
  getLatestThread() {
66
79
  return this.httpClient.get(`${this.basePath}/threads/latest`);
67
80
  }
@@ -1,4 +1,4 @@
1
- import { AddToProperty, Asset, AssetRevision, Attachment, DeleteAssetQuery, EventCause, EventLevelOverride, Filter, Paginated, RemoveFromProperty, RequestParameter, SearchResultItem, TokenOption, Translation } from '../interfaces';
1
+ import { AddToProperty, Asset, AssetRevision, Attachment, Config, DeleteAssetQuery, EventCause, EventLevelOverride, Filter, Paginated, PermissionLevel, RemoveFromProperty, RequestParameter, SearchResultItem, TokenOption, Translation } from '../interfaces';
2
2
  import { CrossPlatformFormData } from '../utils';
3
3
  import { DataService } from './data.service';
4
4
  import { HttpClientService } from './http-client.service';
@@ -13,6 +13,7 @@ declare class BaseService extends BaseService_base {
13
13
  }
14
14
  export declare class AssetService extends BaseService {
15
15
  constructor(httpClient: HttpClientService);
16
+ getReferenceCheck(id: string, permissionLevel: PermissionLevel, options?: Config): Promise<Asset>;
16
17
  count(filter: Filter, options?: TokenOption): Promise<number>;
17
18
  deleteOne(id: string, deleteQuery?: DeleteAssetQuery, options?: TokenOption): Promise<any>;
18
19
  addAttachment: (id: string, form: CrossPlatformFormData, options?: TokenOption) => Promise<Asset>;
@@ -20,6 +20,12 @@ class AssetService extends BaseService {
20
20
  });
21
21
  };
22
22
  }
23
+ getReferenceCheck(id, permissionLevel, options = {}) {
24
+ return this.httpClient.get(`${this.basePath}/${id}/reference-check`, {
25
+ ...options,
26
+ params: { ...options.params, permissionLevel },
27
+ });
28
+ }
23
29
  count(filter, options = {}) {
24
30
  const params = { filter: (0, utils_1.getFilterString)(filter) };
25
31
  return this.httpClient.get(`${this.basePath}/count`, { params, ...options });
@@ -1,4 +1,4 @@
1
- import { Config, Content, ReturnType, TokenOption } from '../interfaces';
1
+ import { Config, Content, PermissionLevel, ReturnType, TokenOption } from '../interfaces';
2
2
  import { CrossPlatformFormData } from '../utils';
3
3
  import { DataService } from './data.service';
4
4
  import { HttpClientService } from './http-client.service';
@@ -13,6 +13,7 @@ declare class BaseService extends BaseService_base {
13
13
  }
14
14
  export declare class ContentService extends BaseService {
15
15
  constructor(httpClient: HttpClientService);
16
+ getReferenceCheck(id: string, permissionLevel: PermissionLevel, options?: Config): Promise<Content>;
16
17
  upload: (form: CrossPlatformFormData, options?: Config) => Promise<Content>;
17
18
  download(id: string, raw?: boolean, options?: TokenOption): Promise<Blob | ArrayBuffer>;
18
19
  download(id: string, returnType: ReturnType.TEXT, options?: TokenOption): Promise<string>;
@@ -22,6 +22,12 @@ class ContentService extends BaseService {
22
22
  });
23
23
  };
24
24
  }
25
+ getReferenceCheck(id, permissionLevel, options = {}) {
26
+ return this.httpClient.get(`${this.basePath}/${id}/reference-check`, {
27
+ ...options,
28
+ params: { ...options.params, permissionLevel },
29
+ });
30
+ }
25
31
  async download(id, second, options = {}) {
26
32
  let returnType;
27
33
  if (typeof second === 'boolean' || second == null) {
@@ -1,4 +1,4 @@
1
- import { Event, EventCountByAsset, TokenOption } from '../interfaces';
1
+ import { Config, Event, EventCountByAsset, PermissionLevel, TokenOption } from '../interfaces';
2
2
  import { DataService } from './data.service';
3
3
  import { HttpClientService } from './http-client.service';
4
4
  import { ShareService } from './share.service';
@@ -9,6 +9,7 @@ declare class BaseService extends BaseService_base {
9
9
  }
10
10
  export declare class EventService extends BaseService {
11
11
  constructor(httpClient: HttpClientService);
12
+ getReferenceCheck(id: string, permissionLevel: PermissionLevel, options?: Config): Promise<Event>;
12
13
  getEventCountByAsset(assetId: string, options?: TokenOption): Promise<EventCountByAsset>;
13
14
  getLastEventByAssetAndGroup(assetId: string, group: string, options?: TokenOption): Promise<Event>;
14
15
  getLastEventByAssetAndGroups(assetId: string, groups: string[], options?: TokenOption): Promise<Record<string, string>>;
@@ -10,6 +10,12 @@ class EventService extends BaseService {
10
10
  constructor(httpClient) {
11
11
  super(httpClient, '/events');
12
12
  }
13
+ getReferenceCheck(id, permissionLevel, options = {}) {
14
+ return this.httpClient.get(`${this.basePath}/${id}/reference-check`, {
15
+ ...options,
16
+ params: { ...options.params, permissionLevel },
17
+ });
18
+ }
13
19
  getEventCountByAsset(assetId, options = {}) {
14
20
  return this.httpClient.get(`${this.basePath}/countByAsset/${assetId}`, options);
15
21
  }
@@ -1,8 +1,9 @@
1
1
  import { APIBase } from '../api-base';
2
- import { LogbookEntry, LogbookEntryDto, Paginated, TokenOption } from '../interfaces';
2
+ import { Config, LogbookEntry, LogbookEntryDto, Paginated, PermissionLevel, TokenOption } from '../interfaces';
3
3
  import { HttpClientService } from './http-client.service';
4
4
  export declare class LogbookService extends APIBase {
5
5
  constructor(httpClient: HttpClientService);
6
+ getReferenceCheck(entryId: string, permissionLevel: PermissionLevel, options?: Config): Promise<LogbookEntry>;
6
7
  getEntries(taskId: string, limit?: number, offset?: number, options?: TokenOption): Promise<Paginated<LogbookEntry>>;
7
8
  getEntriesByIds(ids: string[], options?: TokenOption): Promise<LogbookEntry[]>;
8
9
  addEntry(taskId: string, entry: LogbookEntryDto, options?: TokenOption): Promise<LogbookEntry>;
@@ -6,6 +6,12 @@ class LogbookService extends api_base_1.APIBase {
6
6
  constructor(httpClient) {
7
7
  super(httpClient, '/tasks/logbook');
8
8
  }
9
+ getReferenceCheck(entryId, permissionLevel, options = {}) {
10
+ return this.httpClient.get(`${this.basePath}/${entryId}/reference-check`, {
11
+ ...options,
12
+ params: { ...options.params, permissionLevel },
13
+ });
14
+ }
9
15
  getEntries(taskId, limit = 50, offset = 0, options = {}) {
10
16
  return this.httpClient.get(this.basePath, {
11
17
  ...options,
@@ -1,13 +1,12 @@
1
1
  import { APIBase } from '../api-base';
2
- import { CreateReferenceDto, ObjectReference, ObjectReferenceType, Paginated, ReferencesQuery, TokenOption } from '../interfaces';
2
+ import { Config, CreateReferenceDto, ObjectReference, ObjectReferenceType, Paginated, ReferencesQuery } from '../interfaces';
3
3
  import { HttpClientService } from './http-client.service';
4
4
  export declare class ObjectReferenceService extends APIBase {
5
5
  constructor(httpClient: HttpClientService);
6
- find(query: ReferencesQuery, options?: TokenOption): Promise<Paginated<ObjectReference>>;
7
- findAll(objId: string, options?: TokenOption): Promise<ObjectReference[]>;
8
- create(dto: CreateReferenceDto, options?: TokenOption): Promise<ObjectReference>;
9
- update(referenceId: number, updateData: Partial<Omit<ObjectReference, 'id' | 'createdAt'>>, options?: TokenOption): Promise<ObjectReference>;
10
- deleteById(refId: string, options?: TokenOption): Promise<void>;
11
- deleteByReference(src: string, tgt: string, relType: ObjectReferenceType, options?: TokenOption): Promise<void>;
12
- checkConnection(srcId: string, tgtId: string, type?: ObjectReferenceType, options?: TokenOption): Promise<boolean>;
6
+ find(query: ReferencesQuery, options?: Config): Promise<Paginated<ObjectReference>>;
7
+ findAll(objId: string, options?: Config): Promise<ObjectReference[]>;
8
+ create(dto: CreateReferenceDto, options?: Config): Promise<ObjectReference>;
9
+ deleteById(refId: string, options?: Config): Promise<void>;
10
+ deleteByReference(src: string, tgt: string, relType: ObjectReferenceType, options?: Config): Promise<void>;
11
+ checkConnection(srcId: string, tgtId: string, type?: ObjectReferenceType, options?: Config): Promise<boolean>;
13
12
  }
@@ -21,6 +21,15 @@ class ObjectReferenceService extends api_base_1.APIBase {
21
21
  if (query.objIsSrc === true) {
22
22
  params.append('objIsSrc', query.objIsSrc.toString());
23
23
  }
24
+ if (query.limit !== undefined) {
25
+ params.append('limit', query.limit.toString());
26
+ }
27
+ if (query.page !== undefined) {
28
+ params.append('page', query.page.toString());
29
+ }
30
+ if (query.sort) {
31
+ params.append('sort', query.sort);
32
+ }
24
33
  return await this.httpClient.get(`${this.basePath}?${params.toString()}`, options);
25
34
  }
26
35
  async findAll(objId, options = {}) {
@@ -29,9 +38,6 @@ class ObjectReferenceService extends api_base_1.APIBase {
29
38
  async create(dto, options = {}) {
30
39
  return await this.httpClient.post(this.basePath, dto, options);
31
40
  }
32
- async update(referenceId, updateData, options = {}) {
33
- return await this.httpClient.put(`${this.basePath}/${referenceId}`, updateData, options);
34
- }
35
41
  async deleteById(refId, options = {}) {
36
42
  await this.httpClient.delete(`${this.basePath}/${refId}`, options);
37
43
  }
@@ -1,4 +1,4 @@
1
- import { Paginated, Task, TokenOption } from '../interfaces';
1
+ import { Config, Paginated, PermissionLevel, Task, TokenOption } from '../interfaces';
2
2
  import { DataService } from './data.service';
3
3
  import { HttpClientService } from './http-client.service';
4
4
  import { ShareService } from './share.service';
@@ -20,6 +20,7 @@ export interface CreateAbsenceRequest {
20
20
  }
21
21
  export declare class TaskService extends BaseService {
22
22
  constructor(httpClient: HttpClientService);
23
+ getReferenceCheck(id: string, permissionLevel: PermissionLevel, options?: Config): Promise<Task>;
23
24
  createTaskAttachedToAsset(dto: any, options?: TokenOption): Promise<Task>;
24
25
  findByName(name: string, options?: TokenOption): Promise<Paginated<Task>>;
25
26
  findByAsset(assetId: string, options?: TokenOption): Promise<Paginated<Task>>;
@@ -11,6 +11,12 @@ class TaskService extends BaseService {
11
11
  constructor(httpClient) {
12
12
  super(httpClient, '/tasks');
13
13
  }
14
+ getReferenceCheck(id, permissionLevel, options = {}) {
15
+ return this.httpClient.get(`${this.basePath}/${id}/reference-check`, {
16
+ ...options,
17
+ params: { ...options.params, permissionLevel },
18
+ });
19
+ }
14
20
  // we may not need this method (already have the addOne method from ShareService)
15
21
  createTaskAttachedToAsset(dto, options = {}) {
16
22
  return this.httpClient.post(this.basePath, dto, options);