@evercam/api 1.0.0-feccd27be → 1.0.0-ff2190f47

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 (70) hide show
  1. package/dist/api/api/3dFirebaseApi.d.ts +71 -26
  2. package/dist/api/api/adminApi.d.ts +24 -10
  3. package/dist/api/api/aiApi.d.ts +95 -3
  4. package/dist/api/api/authzApi.d.ts +4 -1
  5. package/dist/api/api/evercamApi.d.ts +39 -25
  6. package/dist/api/api/evercamLabsApi.d.ts +5 -16
  7. package/dist/api/api/index.d.ts +1 -0
  8. package/dist/api/api/ingestApi.d.ts +43 -31
  9. package/dist/api/api/workflowsApi.d.ts +15 -0
  10. package/dist/api/types/360.d.ts +126 -42
  11. package/dist/api/types/admin.d.ts +1 -1
  12. package/dist/api/types/aiConfigs.d.ts +102 -12
  13. package/dist/api/types/analytics.d.ts +35 -24
  14. package/dist/api/types/apiKey.d.ts +70 -0
  15. package/dist/api/types/auditLogs.d.ts +32 -11
  16. package/dist/api/types/authz.d.ts +71 -0
  17. package/dist/api/types/automation.d.ts +32 -4
  18. package/dist/api/types/axios.d.ts +9 -8
  19. package/dist/api/types/bim.d.ts +12 -6
  20. package/dist/api/types/camera.d.ts +29 -23
  21. package/dist/api/types/comments.d.ts +9 -2
  22. package/dist/api/types/company.d.ts +1 -2
  23. package/dist/api/types/compare.d.ts +1 -1
  24. package/dist/api/types/connector.d.ts +2 -0
  25. package/dist/api/types/detections.d.ts +1 -0
  26. package/dist/api/types/drone.d.ts +1 -2
  27. package/dist/api/types/errors.d.ts +18 -2
  28. package/dist/api/types/gateReport.d.ts +1 -11
  29. package/dist/api/types/gateReportManagement.d.ts +2 -7
  30. package/dist/api/types/hammertech.d.ts +98 -0
  31. package/dist/api/types/index.d.ts +7 -2
  32. package/dist/api/types/ingest.d.ts +179 -25
  33. package/dist/api/types/kit.d.ts +44 -101
  34. package/dist/api/types/media.d.ts +7 -2
  35. package/dist/api/types/notification.d.ts +52 -2
  36. package/dist/api/types/observationEvents.d.ts +141 -0
  37. package/dist/api/types/observations.d.ts +80 -0
  38. package/dist/api/types/planner.d.ts +1 -8
  39. package/dist/api/types/posthog.d.ts +20 -0
  40. package/dist/api/types/project.d.ts +15 -3
  41. package/dist/api/types/recording.d.ts +5 -5
  42. package/dist/api/types/ring.d.ts +16 -16
  43. package/dist/api/types/roi.d.ts +2 -10
  44. package/dist/api/types/routeParams.d.ts +1 -0
  45. package/dist/api/types/shared.d.ts +5 -22
  46. package/dist/api/types/shares.d.ts +0 -13
  47. package/dist/api/types/siteAnalytics.d.ts +1 -3
  48. package/dist/api/types/siteAnalyticsManagement.d.ts +127 -0
  49. package/dist/api/types/siteView.d.ts +12 -8
  50. package/dist/api/types/socket.d.ts +4 -0
  51. package/dist/api/types/storyblok.d.ts +0 -13
  52. package/dist/api/types/timelapse.d.ts +1 -8
  53. package/dist/api/types/user.d.ts +16 -3
  54. package/dist/api/types/workflows.d.ts +108 -0
  55. package/dist/api/utils.d.ts +1 -0
  56. package/dist/index.js +1630 -942
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.umd.cjs +1 -1
  59. package/dist/index.umd.cjs.map +1 -1
  60. package/dist/shared/types/components.d.ts +227 -44
  61. package/dist/shared/types/customDataTableFilters.d.ts +10 -0
  62. package/dist/shared/types/droneUpload.d.ts +93 -0
  63. package/dist/shared/types/index.d.ts +4 -0
  64. package/dist/shared/types/observations.d.ts +25 -0
  65. package/dist/shared/types/report.d.ts +101 -0
  66. package/dist/shared/utils/datePickerValue.d.ts +36 -0
  67. package/dist/shared/utils/datePresets.d.ts +31 -0
  68. package/package.json +3 -1
  69. package/dist/api/types/copilot.d.ts +0 -162
  70. package/dist/api/types/vendorModel.d.ts +0 -15
@@ -1,35 +1,36 @@
1
1
  import type { AxiosRequestConfig } from "axios";
2
2
  import type { SwrRequestConfig } from "@evercam/api/types";
3
- import type { _360AssetsQueryParams, _360AssetsRequestPayload, _360QueueQueryParams, _360AssetsUploadPayload, _360AssetsResponse, _360AssetsCountsResponse, _360QueueResponse, _360FloorsResponse, DroneQueueResponse, DroneUploadsResponse, IngestUploadInitResponse, BimUploadsResponse, MobileAssetsQueryParams, MobileCaptureAssetsResponse, BimUploadPayload, BimUploadsQueryParams, CalculateMeasuringOperationRequestPayload, DrawingsRequestPayload, DronesQueryParams, DroneUploadUpdateRequestPayload, FlightImagesQueryParams, Generate360MapRequestPayload, GenerateFloorPayload, InspectionToolRequestPayload, JsonObject, _360WalkV2, _360FloorV2 } from "@evercam/api/types";
4
- import { IngestVersions, IngestTypes } from "@evercam/api/types";
3
+ import type { _360AssetsQueryParams, _360AssetsRequestPayload, _360QueueQueryParams, _360AssetsUploadPayload, _360AssetsResponse, _360AssetsCountsResponse, _360QueueResponse, _360FloorsResponse, DroneQueueResponse, DroneUploadsResponse, IngestUploadInitResponse, BimUploadsResponse, MobileAssetsQueryParams, MobileCaptureAssetsResponse, BimUploadPayload, BimUploadsQueryParams, CalculateMeasuringOperationRequestPayload, DrawingsRequestPayload, DronesQueryParams, DroneCreation, DroneCreated, DroneProcessingTarget, DroneUploadItem, DroneFileAllocation, DroneFileStates, DroneCompletion, DroneDeletion, DroneReprocessResponse, AerialAllocation, AerialUploadStates, AerialShotPage, IngestProcessingProgress, FlightImagesQueryParams, Generate360MapRequestPayload, GenerateFloorPayload, InspectionToolRequestPayload, JsonObject, _360WalkV2, _360FloorV2 } from "@evercam/api/types";
4
+ import { IngestTypes } from "@evercam/api/types";
5
5
  export declare const getIngestApiUrls: (type: string) => string[];
6
6
  export declare const IngestApi: {
7
7
  drone: {
8
- createUpload(projectId: string, params: {
9
- uploadedBy: string;
10
- }): Promise<IngestUploadInitResponse>;
11
- reprocessDrone(id: number, params?: JsonObject): Promise<void>;
8
+ createProcessing(ingestUrl: string, payload: DroneCreation, signal?: AbortSignal): Promise<DroneCreated>;
9
+ getProcessing({ ingestUrl, id }: DroneProcessingTarget, signal?: AbortSignal): Promise<DroneUploadItem>;
10
+ getFlightProcessing(projectId: string, date: string): Promise<DroneUploadItem>;
11
+ allocateFiles({ ingestUrl, id }: DroneProcessingTarget, files: DroneFileAllocation[], signal?: AbortSignal): Promise<DroneFileStates>;
12
+ acknowledgeFiles({ ingestUrl, id }: DroneProcessingTarget, filenames: string[], signal?: AbortSignal): Promise<DroneCompletion>;
13
+ completeProcessing({ ingestUrl, id }: DroneProcessingTarget, signal?: AbortSignal): Promise<DroneCompletion>;
14
+ deleteFiles(id: number, filenames?: string[]): Promise<DroneDeletion>;
15
+ allocateAerialShots({ ingestUrl, id }: DroneProcessingTarget, aerialShots: AerialAllocation[], signal?: AbortSignal): Promise<AerialUploadStates>;
16
+ acknowledgeAerialShots({ ingestUrl, id }: DroneProcessingTarget, filenames: string[], signal?: AbortSignal): Promise<AerialUploadStates>;
17
+ getAerialShots(id: number, params?: {
18
+ cursor?: string;
19
+ limit?: number;
20
+ processingStatus?: string;
21
+ }): Promise<AerialShotPage>;
22
+ deleteAerialShots(id: number, filenames?: string[]): Promise<DroneDeletion>;
23
+ reprocessDrone(id: number, params?: JsonObject): Promise<DroneReprocessResponse>;
12
24
  getDrones(params: {
13
25
  params: Partial<DronesQueryParams>;
14
26
  }): Promise<DroneUploadsResponse>;
27
+ getProcessingProgress(id: number): Promise<IngestProcessingProgress>;
15
28
  getArchive(id: number, params: {
16
29
  dataType: string;
17
- }): Promise<Blob>;
30
+ }): Promise<string>;
18
31
  deleteUpload(id: number): Promise<void>;
19
- prepareForUpload(projectId: string, params: {
20
- uploadedBy: string;
21
- token: string;
22
- }): Promise<void>;
23
- upload(projectId: string, params: {
24
- uploadedBy: string;
25
- token: string;
26
- }, payload: DroneUploadUpdateRequestPayload): Promise<void>;
27
- verifyToken(projectId: string, params: {
28
- token: string;
29
- }): Promise<JsonObject>;
30
32
  calculateMeasuringOperation(projectId: string, params: CalculateMeasuringOperationRequestPayload, ingestUrl?: string): Promise<JsonObject>;
31
33
  inspectionTool(projectId: string, params: InspectionToolRequestPayload): Promise<JsonObject>;
32
- isInspectionEnabled(projectId: string, params?: JsonObject): Promise<JsonObject>;
33
34
  getDroneQueueSize(droneUrl: string): Promise<DroneQueueResponse>;
34
35
  getFlightImages(projectId: string, params: FlightImagesQueryParams): Promise<JsonObject>;
35
36
  checkFlightAvailableFeatures(projectId: string, params: JsonObject): Promise<JsonObject>;
@@ -41,13 +42,15 @@ export declare const IngestApi: {
41
42
  get360AssetsCounts(projectId: string, params: {
42
43
  uploadedBy: string;
43
44
  }): Promise<_360AssetsCountsResponse>;
44
- get360AssetLink(projectId: string, date: string, floor: string, assetType: string, drawingId: string, marker: string | null): Promise<string>;
45
45
  update360(id: number, payload: _360AssetsRequestPayload): Promise<_360WalkV2>;
46
- update360ByProjectDateName(projectId: string, date: string, floor: string, payload: _360AssetsRequestPayload): Promise<_360WalkV2>;
46
+ update360ByProjectDateName(projectId: string, date: string, floor: string, payload: Partial<_360AssetsRequestPayload> & {
47
+ drawingId?: number;
48
+ }): Promise<_360WalkV2>;
47
49
  deleteUpload(id: number): Promise<void>;
48
50
  getArchive(id: number, params: {
49
- dateType: string;
50
- }): Promise<Blob>;
51
+ dataType: string;
52
+ }): Promise<string>;
53
+ get360Progress(id: number): Promise<IngestProcessingProgress>;
51
54
  createUpload(projectId: string, params: _360AssetsRequestPayload): Promise<IngestUploadInitResponse>;
52
55
  upload(id: number, params: JsonObject, payload: _360AssetsUploadPayload): Promise<_360WalkV2>;
53
56
  reprocess360(id: number): Promise<void>;
@@ -64,12 +67,13 @@ export declare const IngestApi: {
64
67
  getDrawingById(id: number, projectExid: string): Promise<_360FloorV2>;
65
68
  updateDrawing(id: number, projectExid: string, payload: GenerateFloorPayload): Promise<_360FloorV2>;
66
69
  deleteDrawing(id: number): Promise<void>;
70
+ restoreDrawing(id: number): Promise<void>;
67
71
  transferWalks(sourceId: number, targetId: number, projectExid: string): Promise<void>;
68
72
  createDrawing(projectExid: string, payload: GenerateFloorPayload, createdBy: string): Promise<_360FloorV2>;
69
73
  fetchDrawingOverlay(id: number, params: {
70
74
  view: boolean;
71
75
  thumbnail?: boolean;
72
- }, onDownloadProgress?: (progress: ProgressEvent) => void): Promise<string>;
76
+ }, onDownloadProgress?: (progress: ProgressEvent) => void, extraConfig?: AxiosRequestConfig): Promise<string>;
73
77
  getFloorArchive(id: number): Promise<string>;
74
78
  generate360map(projectId: string, params: Generate360MapRequestPayload): Promise<JsonObject>;
75
79
  get360QueueSize(ingestUrl: string, params?: _360QueueQueryParams): Promise<_360QueueResponse>;
@@ -88,6 +92,9 @@ export declare const IngestApi: {
88
92
  name: string;
89
93
  }, payload: BimUploadPayload): Promise<void>;
90
94
  };
95
+ webhook: {
96
+ notifyBimUpdated(projectId: string, bimIdentifier: string): Promise<void>;
97
+ };
91
98
  mobileCapture: {
92
99
  getProjectMobileAssets(params: MobileAssetsQueryParams, extraConfig?: AxiosRequestConfig): Promise<MobileCaptureAssetsResponse>;
93
100
  getMobileAssetPhoto(assetId: string | number, params: {
@@ -103,24 +110,26 @@ export declare const IngestApi: {
103
110
  ingestVersion: string;
104
111
  id: number;
105
112
  projectId: string;
106
- consumed: boolean;
107
- token: string;
108
113
  flightDate: string;
109
114
  flightGeolocation: string;
110
115
  modelZip: string;
111
116
  orthomosaicZip: string;
112
117
  reportPdf: string;
118
+ processingLog: string;
113
119
  uploadedBy: string;
114
120
  processingStatus: import("@evercam/api/types").IngestProcessingStatus | string;
115
121
  modelCesiumAssetId: string;
116
122
  updatedAt: string;
117
- hasTusLinks: boolean;
123
+ canDelete: boolean;
124
+ canReprocess: boolean;
125
+ hasSteps: boolean;
126
+ aerialShotsCount: number;
118
127
  } | {
119
128
  ingestVersion: string;
120
129
  archive: string;
121
130
  date: string;
122
131
  deviceSerial: string | null;
123
- endPosition: unknown | null;
132
+ endPosition: string | null;
124
133
  floor: string;
125
134
  floorId: number;
126
135
  id: number;
@@ -135,15 +144,18 @@ export declare const IngestApi: {
135
144
  processingStatus: string;
136
145
  projectId: string;
137
146
  report: string;
147
+ processingLog: string;
148
+ hasSteps?: boolean;
138
149
  route: unknown | null;
139
- startPosition: unknown | null;
150
+ startPosition: string | null;
140
151
  tusLinks: unknown | null;
141
152
  updatedAt: string;
142
153
  uploadedBy: string;
143
154
  videoArchive: string;
144
155
  videos: string[];
145
156
  })[]>;
146
- getIngestVersion(ingestUrl: string): IngestVersions;
147
- chooseIngestApiUrl(type: IngestTypes): Promise<string>;
157
+ getIngestNumber(ingestUrl: string): number;
158
+ getIngestVersion(ingestUrl: string): string;
159
+ chooseIngestApiUrl(type: IngestTypes, isTieToNewest?: boolean): Promise<string>;
148
160
  };
149
161
  };
@@ -0,0 +1,15 @@
1
+ import { type ChatListPage, type ChatListParams, type ChatSession } from "@evercam/api/types";
2
+ /**
3
+ * The Evercam Workflows engine, for the admin Chat conversations viewer.
4
+ *
5
+ * The engine speaks camelCase natively, so every call preserves casing rather than
6
+ * running the snake conversion the media API needs. The admin's bearer is attached
7
+ * by the shared request interceptor — an admin resolves `is_admin` on the engine, so
8
+ * `scope=all` returns every user's conversations.
9
+ */
10
+ export declare const WorkflowsApi: {
11
+ chat: {
12
+ listConversations(params?: ChatListParams): Promise<ChatListPage>;
13
+ getConversation(id: string): Promise<ChatSession>;
14
+ };
15
+ };
@@ -1,5 +1,5 @@
1
1
  import { DateType } from "@evercam/api/types/time";
2
- import { GeoPoint, Point3D } from "@evercam/api/types/shared";
2
+ import { GeoPoint, PaginationParams, Point3D } from "@evercam/api/types/shared";
3
3
  export type _360OverlayPosition = {
4
4
  northEast: GeoPoint;
5
5
  northWest: GeoPoint;
@@ -61,6 +61,7 @@ export type _360Floor = {
61
61
  imagesOnlyFeatureFlag?: boolean;
62
62
  forgeBIMFeatureFlag?: boolean;
63
63
  isForgeGravityEnabled?: boolean;
64
+ bimHeight?: number;
64
65
  initialForgeView?: ForgeView | null;
65
66
  enhancedLightFeatureFlag?: boolean;
66
67
  calibrationDetails?: Record<string, unknown>;
@@ -77,7 +78,7 @@ export type _360WalkV2 = {
77
78
  archive: string;
78
79
  date: string;
79
80
  deviceSerial: string | null;
80
- endPosition: unknown | null;
81
+ endPosition: string | null;
81
82
  floor: string;
82
83
  floorId: number;
83
84
  id: number;
@@ -92,8 +93,10 @@ export type _360WalkV2 = {
92
93
  processingStatus: string;
93
94
  projectId: string;
94
95
  report: string;
96
+ processingLog: string;
97
+ hasSteps?: boolean;
95
98
  route: unknown | null;
96
- startPosition: unknown | null;
99
+ startPosition: string | null;
97
100
  tusLinks: unknown | null;
98
101
  updatedAt: string;
99
102
  uploadedBy: string;
@@ -112,13 +115,15 @@ export type _360FloorV2 = {
112
115
  overlayPosition: _360OverlayPosition;
113
116
  insertedAt: string;
114
117
  updatedAt: string;
118
+ deletedAt: string | null;
115
119
  };
116
120
  export type _360Scene = {
117
121
  date: string;
118
- dateID: number;
122
+ dateID: string | number;
119
123
  floors: {
120
124
  floorID: _360FloorId;
121
125
  name: string;
126
+ isValidated?: boolean;
122
127
  }[];
123
128
  polarAngle: number;
124
129
  azimuthAngle: number;
@@ -149,24 +154,7 @@ export type _360ProjectListItem = {
149
154
  providerSuffix: string;
150
155
  timeline: string;
151
156
  uniqueId: string;
152
- };
153
- export type _360FullProject = {
154
- dates: _360SceneWithFloors[];
155
- integrationType: string;
156
- projectId: string;
157
- projectName: string;
158
- providerID: string;
159
- providerPrefix: string;
160
- providerSuffix: string;
161
- timeline: string;
162
- uniqueId: string;
163
- };
164
- export type _360FullFloor = _360Floor & {
165
- id: _360FloorId;
166
- name: string;
167
- };
168
- export type _360SceneWithFloors = _360Scene & {
169
- floors: _360FullFloor[];
157
+ requiresValidation?: boolean;
170
158
  };
171
159
  export type _360ProjectJsonResponse = {
172
160
  dates: _360Scene[];
@@ -181,12 +169,25 @@ export type MobileCaptureSnapshot = {
181
169
  thumbnailUrl: string;
182
170
  };
183
171
  export declare enum _360UrlParams {
184
- DateId = "date_id",
172
+ DateId = "dateId",
185
173
  Date = "date",
186
174
  Floor = "floor",
187
175
  Marker = "marker",
188
176
  PolarAngle = "polarAngle",
189
- AzimuthAngle = "azimuthAngle"
177
+ AzimuthAngle = "azimuthAngle",
178
+ Zoom = "zoom",
179
+ User = "user",
180
+ ViewerMode = "viewer_mode",
181
+ ProjectId = "projectId",
182
+ Unit = "unit",
183
+ LockDate = "lockDate",
184
+ LockFloor = "lockFloor",
185
+ LockMarker = "lockMarker",
186
+ IsWidget = "isWidget",
187
+ MediaLocked = "mediaLocked",
188
+ Debug = "debug",
189
+ RequiresValidation = "requires_validation",
190
+ CommentId = "comment_id"
190
191
  }
191
192
  export declare enum _360AssetType {
192
193
  Video = "video",
@@ -200,11 +201,6 @@ export declare enum _360AssetLabel {
200
201
  Walks = "walks",
201
202
  MobilePhotos = "mobilePhotos"
202
203
  }
203
- export declare enum _360Feature {
204
- BIM = "BIM",
205
- Minimap = "Minimap",
206
- Minimodel = "Minimodel"
207
- }
208
204
  export declare enum _360IntergrationType {
209
205
  Evercam = "Evercam",
210
206
  Matterport = "Matterport",
@@ -215,14 +211,14 @@ export declare enum _360IntergrationType {
215
211
  export declare enum PathMarkerColor {
216
212
  Start = "#00e74c",
217
213
  End = "#fd7567",
214
+ Anchor = "#ffb300",
218
215
  Default = "#2196F3"
219
216
  }
220
- export type _360AssetsQueryParams = {
221
- page: number;
222
- limit: number;
217
+ export type _360AssetsQueryParams = PaginationParams & {
223
218
  projectId: string;
224
219
  date: DateType;
225
220
  floor: string;
221
+ name: string;
226
222
  id: string;
227
223
  };
228
224
  export type _360AssetsRequestPayload = {
@@ -231,7 +227,7 @@ export type _360AssetsRequestPayload = {
231
227
  floor: string;
232
228
  uploadedBy?: string;
233
229
  };
234
- export type DrawingsRequestPayload = {
230
+ export type DrawingsRequestPayload = PaginationParams & {
235
231
  projectId?: string;
236
232
  name?: string;
237
233
  changedBy?: string;
@@ -239,10 +235,9 @@ export type DrawingsRequestPayload = {
239
235
  startDate?: string;
240
236
  endDate?: string;
241
237
  id?: number;
242
- page?: number;
243
- limit?: number;
244
238
  paginate?: boolean;
245
239
  withAsset?: boolean;
240
+ includeDeleted?: boolean;
246
241
  };
247
242
  export type GenerateFloorPayload = {
248
243
  overlay?: {
@@ -266,16 +261,105 @@ export type _360AssetsUploadPayload = {
266
261
  title: string;
267
262
  fileExtension: string;
268
263
  }[];
269
- deviceSerial: string;
270
- startPosition: string;
271
- endPosition: string;
272
- isTimelapse: boolean;
273
- isImagesOnly: boolean;
264
+ deviceSerial?: string;
265
+ startPosition?: string;
266
+ endPosition?: string;
267
+ isTimelapse?: boolean;
268
+ isImagesOnly?: boolean;
274
269
  };
275
270
  export type Generate360MapRequestPayload = {
276
- dateId: string;
271
+ dateId: string | number;
277
272
  floorId: string;
278
- cameraOffset: string;
273
+ cameraOffset: string | number;
279
274
  startPoint: string;
280
275
  endPoint: string;
276
+ drawingId?: number;
277
+ markers?: Array<{
278
+ position: {
279
+ x: number;
280
+ y: number;
281
+ z: number;
282
+ };
283
+ }>;
284
+ startPointIndex?: number;
285
+ endPointIndex?: number;
286
+ };
287
+ export declare enum EModelsType {
288
+ FBX = "FBX",
289
+ PointCloud = "PLY"
290
+ }
291
+ export type _360FloorRef = {
292
+ projectID: string;
293
+ dateID: string | number;
294
+ floorID: _360FloorId;
295
+ };
296
+ export type _360Vector3 = {
297
+ x: number;
298
+ y: number;
299
+ z: number;
300
+ };
301
+ export type _360MarkerData = {
302
+ cameraPosition: _360Vector3;
303
+ nextRoomId: string;
304
+ position: _360Vector3;
305
+ geolocation?: {
306
+ latitude: number;
307
+ longitude: number;
308
+ };
309
+ rotation: {
310
+ _order: string;
311
+ _x: number;
312
+ _y: number;
313
+ _z: number;
314
+ isEuler: boolean;
315
+ x?: number;
316
+ y?: number;
317
+ z?: number;
318
+ };
319
+ };
320
+ export type _360Route = {
321
+ overlayID?: number;
322
+ track?: string;
323
+ cameraHeadingOffset?: number;
324
+ };
325
+ export type _360CalibrationDetails = {
326
+ baseOriginOf360Viewer?: _360Vector3;
327
+ baseOriginOfForgeViewer?: _360Vector3;
328
+ rotationMatrix?: {
329
+ elements: number[];
330
+ };
331
+ scaleMatrix?: {
332
+ elements: number[];
333
+ };
334
+ };
335
+ export type _360FloorData = {
336
+ _3DMarkers: _360MarkerData[];
337
+ fbxModel: string | null;
338
+ fbxModelHQ: string | null;
339
+ pointCloudModelHQ: string | null;
340
+ initialMarker: string;
341
+ cameraRotation: _360CameraRotation;
342
+ steps: number;
343
+ route: _360Route | null;
344
+ sceneScale: number;
345
+ modelViewerFeatureFlag: boolean;
346
+ imagesOnlyFeatureFlag: boolean;
347
+ forgeBIMFeatureFlag: boolean;
348
+ isForgeGravityEnabled: boolean;
349
+ bimHeight?: number | null;
350
+ initialForgeView: ForgeView | null;
351
+ calibrationDetails: _360CalibrationDetails;
352
+ enhancedLightFeatureFlag: boolean;
353
+ };
354
+ export type _360PinData = {
355
+ position: _360Vector3;
356
+ pinType: string;
357
+ name: string;
358
+ pinId?: string;
359
+ cameraExid?: string;
360
+ currentRoom?: string;
361
+ cameraRotation?: {
362
+ polarAngle: number;
363
+ azimuthAngle: number;
364
+ };
281
365
  };
@@ -41,7 +41,7 @@ export type AdminInvite = {
41
41
  resourceId: string;
42
42
  assigner: AdminInviteAssigner;
43
43
  sentCount: number;
44
- lastSentAt: string;
44
+ lastSentAt: string | null;
45
45
  authContext: AdminInviteAuthContext;
46
46
  statusName: string;
47
47
  };
@@ -1,7 +1,9 @@
1
+ import { PaginatedItems, PaginationParams } from "@evercam/api/types";
1
2
  export declare enum AiApp {
2
3
  GateReport = "gate_report",
3
4
  Ppe = "ppe",
4
- SiteAnalytics = "site_analytics"
5
+ SiteAnalytics = "site_analytics",
6
+ Observations360 = "observations_360"
5
7
  }
6
8
  export declare enum AiProvider {
7
9
  Gemini = "gemini",
@@ -11,7 +13,8 @@ export declare enum AiProvider {
11
13
  export declare enum AiConfigsPromptDialogMode {
12
14
  Create = "create",
13
15
  Edit = "edit",
14
- View = "view"
16
+ View = "view",
17
+ Subprompt = "subprompt"
15
18
  }
16
19
  export declare enum AiConfigsKeyDialogMode {
17
20
  Create = "create",
@@ -45,6 +48,11 @@ export declare enum AiPromptModel {
45
48
  ClaudeSonnet46 = "claude-sonnet-4-6",
46
49
  ClaudeHaiku45 = "claude-haiku-4-5"
47
50
  }
51
+ export declare enum AiPromptType {
52
+ Prompt = "prompt",
53
+ Parent = "parent",
54
+ Subprompt = "subprompt"
55
+ }
48
56
  export interface AiPrompt {
49
57
  id: number;
50
58
  title: string | null;
@@ -56,6 +64,9 @@ export interface AiPrompt {
56
64
  createdBy: string;
57
65
  createdAt: string;
58
66
  updatedAt: string;
67
+ promptType: AiPromptType;
68
+ parentId: number | null;
69
+ subpromptCount: number;
59
70
  }
60
71
  export interface AiPromptCreatePayload {
61
72
  title?: string | null;
@@ -64,6 +75,7 @@ export interface AiPromptCreatePayload {
64
75
  model?: string | null;
65
76
  prompt: string;
66
77
  outputSchema?: Record<string, unknown> | null;
78
+ promptType?: AiPromptType.Prompt | AiPromptType.Parent;
67
79
  }
68
80
  export interface AiPromptUpdatePayload {
69
81
  title?: string | null;
@@ -73,23 +85,23 @@ export interface AiPromptUpdatePayload {
73
85
  prompt?: string;
74
86
  outputSchema?: Record<string, unknown> | null;
75
87
  }
76
- export type AiPromptQueryParams = {
88
+ export type AiPromptQueryParams = PaginationParams & {
77
89
  app?: string;
78
90
  purpose?: string;
79
91
  model?: string;
80
92
  search?: string;
81
93
  createdBy?: string;
82
- page?: number;
83
- limit?: number;
94
+ promptType?: AiPromptType;
95
+ includeSubprompts?: boolean;
84
96
  };
85
- export interface AiPromptListResponse {
86
- items: AiPrompt[];
87
- total: number;
88
- page: number;
89
- limit: number;
90
- from: number;
91
- to: number;
97
+ export interface AiSubpromptCreatePayload {
98
+ title?: string | null;
99
+ purpose: string;
100
+ model?: string | null;
101
+ prompt: string;
102
+ outputSchema?: Record<string, unknown> | null;
92
103
  }
104
+ export type AiPromptListResponse = PaginatedItems<AiPrompt>;
93
105
  export interface AiPromptCreateResponse {
94
106
  created: boolean;
95
107
  data: AiPrompt;
@@ -152,3 +164,81 @@ export interface AiApiKeyDeleteResponse {
152
164
  count: number;
153
165
  message: string;
154
166
  }
167
+ export declare enum AiObservationFeasibilityStatus {
168
+ Prod = "prod",
169
+ Beta = "beta",
170
+ Parked = "parked"
171
+ }
172
+ export declare enum AiObservationTimeDetection {
173
+ PerSecond = "per_second",
174
+ PerMinute = "per_minute",
175
+ Hourly = "hourly",
176
+ Daily = "daily"
177
+ }
178
+ export interface AiObservationFeasibilityConfig {
179
+ bg: string;
180
+ fg: string;
181
+ border: string;
182
+ label: string;
183
+ }
184
+ export declare const AI_OBSERVATION_FEASIBILITY_CONFIGS: Record<AiObservationFeasibilityStatus, AiObservationFeasibilityConfig>;
185
+ export interface AiObservationType {
186
+ id: number;
187
+ observationCode: string;
188
+ name: string;
189
+ description: string | null;
190
+ type: string;
191
+ rules: Record<string, unknown> | null;
192
+ timeDetection: string | null;
193
+ every: number | null;
194
+ severity: number | null;
195
+ feasibilityStatus: AiObservationFeasibilityStatus;
196
+ promptId: number | null;
197
+ promptName: string | null;
198
+ insertedAt: string;
199
+ updatedAt: string;
200
+ }
201
+ export interface AiObservationTypeCreatePayload {
202
+ observationCode: string;
203
+ name: string;
204
+ description?: string | null;
205
+ type: string;
206
+ rules?: Record<string, unknown> | null;
207
+ timeDetection?: string | null;
208
+ every?: number | null;
209
+ severity?: number | null;
210
+ feasibilityStatus: AiObservationFeasibilityStatus;
211
+ promptId?: number | null;
212
+ }
213
+ export type AiObservationTypeUpdatePayload = Partial<Omit<AiObservationTypeCreatePayload, "observationCode">>;
214
+ export type AiObservationTypeQueryParams = {
215
+ search?: string;
216
+ feasibilityStatus?: string;
217
+ sourceType?: string;
218
+ type?: string;
219
+ page?: number;
220
+ limit?: number;
221
+ };
222
+ export interface AiObservationTypeListResponse {
223
+ items: AiObservationType[];
224
+ total: number;
225
+ page: number;
226
+ limit: number;
227
+ from: number;
228
+ to: number;
229
+ }
230
+ export interface AiObservationTypeCreateResponse {
231
+ created: boolean;
232
+ data: AiObservationType;
233
+ message: string;
234
+ }
235
+ export interface AiObservationTypeUpdateResponse {
236
+ updated: boolean;
237
+ id: number | string;
238
+ message: string;
239
+ }
240
+ export interface AiObservationTypeDeleteResponse {
241
+ deleted: boolean;
242
+ count: number;
243
+ message: string;
244
+ }