@uug-ai/models 1.7.17 → 1.7.41

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 (2) hide show
  1. package/dist/types.d.ts +593 -682
  2. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -1758,6 +1758,45 @@ export interface paths {
1758
1758
  patch?: never;
1759
1759
  trace?: never;
1760
1760
  };
1761
+ "/internal/auditauthorizationinfo": {
1762
+ parameters: {
1763
+ query?: never;
1764
+ header?: never;
1765
+ path?: never;
1766
+ cookie?: never;
1767
+ };
1768
+ /**
1769
+ * Get AuditAuthorizationInfo (schema generation only)
1770
+ * @description Internal endpoint used only to ensure AuditAuthorizationInfo schema is generated in OpenAPI spec
1771
+ */
1772
+ get: {
1773
+ parameters: {
1774
+ query?: never;
1775
+ header?: never;
1776
+ path?: never;
1777
+ cookie?: never;
1778
+ };
1779
+ requestBody?: never;
1780
+ responses: {
1781
+ /** @description OK */
1782
+ 200: {
1783
+ headers: {
1784
+ [name: string]: unknown;
1785
+ };
1786
+ content: {
1787
+ "application/json": components["schemas"]["models.AuditAuthorizationInfo"];
1788
+ };
1789
+ };
1790
+ };
1791
+ };
1792
+ put?: never;
1793
+ post?: never;
1794
+ delete?: never;
1795
+ options?: never;
1796
+ head?: never;
1797
+ patch?: never;
1798
+ trace?: never;
1799
+ };
1761
1800
  "/internal/auditevent": {
1762
1801
  parameters: {
1763
1802
  query?: never;
@@ -1797,6 +1836,45 @@ export interface paths {
1797
1836
  patch?: never;
1798
1837
  trace?: never;
1799
1838
  };
1839
+ "/internal/auditeventstatus": {
1840
+ parameters: {
1841
+ query?: never;
1842
+ header?: never;
1843
+ path?: never;
1844
+ cookie?: never;
1845
+ };
1846
+ /**
1847
+ * Get AuditEventStatus (schema generation only)
1848
+ * @description Internal endpoint used only to ensure AuditEventStatus schema is generated in OpenAPI spec
1849
+ */
1850
+ get: {
1851
+ parameters: {
1852
+ query?: never;
1853
+ header?: never;
1854
+ path?: never;
1855
+ cookie?: never;
1856
+ };
1857
+ requestBody?: never;
1858
+ responses: {
1859
+ /** @description OK */
1860
+ 200: {
1861
+ headers: {
1862
+ [name: string]: unknown;
1863
+ };
1864
+ content: {
1865
+ "application/json": components["schemas"]["models.AuditEventStatus"];
1866
+ };
1867
+ };
1868
+ };
1869
+ };
1870
+ put?: never;
1871
+ post?: never;
1872
+ delete?: never;
1873
+ options?: never;
1874
+ head?: never;
1875
+ patch?: never;
1876
+ trace?: never;
1877
+ };
1800
1878
  "/internal/auditfieldchange": {
1801
1879
  parameters: {
1802
1880
  query?: never;
@@ -1836,6 +1914,45 @@ export interface paths {
1836
1914
  patch?: never;
1837
1915
  trace?: never;
1838
1916
  };
1917
+ "/internal/auditrequestinfo": {
1918
+ parameters: {
1919
+ query?: never;
1920
+ header?: never;
1921
+ path?: never;
1922
+ cookie?: never;
1923
+ };
1924
+ /**
1925
+ * Get AuditRequestInfo (schema generation only)
1926
+ * @description Internal endpoint used only to ensure AuditRequestInfo schema is generated in OpenAPI spec
1927
+ */
1928
+ get: {
1929
+ parameters: {
1930
+ query?: never;
1931
+ header?: never;
1932
+ path?: never;
1933
+ cookie?: never;
1934
+ };
1935
+ requestBody?: never;
1936
+ responses: {
1937
+ /** @description OK */
1938
+ 200: {
1939
+ headers: {
1940
+ [name: string]: unknown;
1941
+ };
1942
+ content: {
1943
+ "application/json": components["schemas"]["models.AuditRequestInfo"];
1944
+ };
1945
+ };
1946
+ };
1947
+ };
1948
+ put?: never;
1949
+ post?: never;
1950
+ delete?: never;
1951
+ options?: never;
1952
+ head?: never;
1953
+ patch?: never;
1954
+ trace?: never;
1955
+ };
1839
1956
  "/internal/callerinfo": {
1840
1957
  parameters: {
1841
1958
  query?: never;
@@ -20985,6 +21102,45 @@ export interface paths {
20985
21102
  patch?: never;
20986
21103
  trace?: never;
20987
21104
  };
21105
+ "/internal/pipelinesourcedevice": {
21106
+ parameters: {
21107
+ query?: never;
21108
+ header?: never;
21109
+ path?: never;
21110
+ cookie?: never;
21111
+ };
21112
+ /**
21113
+ * Get PipelineSourceDevice (schema generation only)
21114
+ * @description Internal endpoint used only to ensure PipelineSourceDevice schema is generated in OpenAPI spec
21115
+ */
21116
+ get: {
21117
+ parameters: {
21118
+ query?: never;
21119
+ header?: never;
21120
+ path?: never;
21121
+ cookie?: never;
21122
+ };
21123
+ requestBody?: never;
21124
+ responses: {
21125
+ /** @description OK */
21126
+ 200: {
21127
+ headers: {
21128
+ [name: string]: unknown;
21129
+ };
21130
+ content: {
21131
+ "application/json": components["schemas"]["models.PipelineSourceDevice"];
21132
+ };
21133
+ };
21134
+ };
21135
+ };
21136
+ put?: never;
21137
+ post?: never;
21138
+ delete?: never;
21139
+ options?: never;
21140
+ head?: never;
21141
+ patch?: never;
21142
+ trace?: never;
21143
+ };
20988
21144
  "/internal/plan": {
20989
21145
  parameters: {
20990
21146
  query?: never;
@@ -29485,8 +29641,7 @@ export interface components {
29485
29641
  /** @description legacy: read by v20130101 only */
29486
29642
  export_files?: components["schemas"]["models.ExportFile"][];
29487
29643
  export_files_count?: number;
29488
- /**
29489
- * @description ExportHeartbeatAgeSeconds is computed at API response time
29644
+ /** @description ExportHeartbeatAgeSeconds is computed at API response time
29490
29645
  * (NOT persisted — bson:"-") and ships the server-side delta
29491
29646
  * between now and ExportUpdatedAt so the frontend can render a
29492
29647
  * "stuck" state without depending on the user's local clock
@@ -29495,46 +29650,39 @@ export interface components {
29495
29650
  * (legacy / pre-feature tasks); a zero value means the heartbeat
29496
29651
  * was just written. The FE only interprets this field in
29497
29652
  * combination with the in-flight signal — see isExportActive
29498
- * and getExportUiState for the rule.
29499
- */
29653
+ * and getExportUiState for the rule. */
29500
29654
  export_heartbeat_age_seconds?: number;
29501
29655
  export_in_progress?: boolean;
29502
29656
  /** @description "0% -> 100%" */
29503
29657
  export_progress?: number;
29504
29658
  export_requested?: boolean;
29505
29659
  export_revision?: number;
29506
- /**
29507
- * @description ExportSelectionDirty signals that the curated bundle composition
29660
+ /** @description ExportSelectionDirty signals that the curated bundle composition
29508
29661
  * (include_in_export flags on case_media / attachments, or a newly
29509
29662
  * added media row) changed since the last successful export
29510
29663
  * completion. Bumped to true by curation toggles and media inserts
29511
29664
  * in hub-api; cleared by hub-pipeline-export in CompleteExport.
29512
29665
  * The FE uses this to disable the Regenerate action when no
29513
29666
  * changes are pending and to surface a "selection changed" hint
29514
- * next to the export status badge.
29515
- */
29667
+ * next to the export status badge. */
29516
29668
  export_selection_dirty?: boolean;
29517
29669
  /** @description An export task, is containing multiple video in a compressed file format (.zip) */
29518
29670
  export_status?: string;
29519
- /**
29520
- * @description ExportUpdatedAt is a heartbeat written by hub-pipeline-export
29671
+ /** @description ExportUpdatedAt is a heartbeat written by hub-pipeline-export
29521
29672
  * every time it transitions the export state (claim, status
29522
29673
  * updates, per-file download, release, complete) and by hub-api
29523
29674
  * when a new export run is requested. It lets the API detect
29524
29675
  * orphaned runs whose worker died without releasing the lock:
29525
29676
  * when (now - ExportUpdatedAt) exceeds the staleness threshold,
29526
29677
  * isExportActive treats the lock as released so the user can
29527
- * retry instead of being blocked by a 409 forever.
29528
- */
29678
+ * retry instead of being blocked by a 409 forever. */
29529
29679
  export_updated_at?: string;
29530
29680
  id?: string;
29531
29681
  is_private?: boolean;
29532
29682
  labels?: string[];
29533
29683
  legal_hold?: boolean;
29534
- /**
29535
- * @description Number of source case_media rows attached to this task. Mirrors
29536
- * case_media documents where role == "source" and task_id matches.
29537
- */
29684
+ /** @description Number of source case_media rows attached to this task. Mirrors
29685
+ * case_media documents where role == "source" and task_id matches. */
29538
29686
  media_count?: number;
29539
29687
  media_date?: string;
29540
29688
  media_datetime?: string;
@@ -29546,16 +29694,13 @@ export interface components {
29546
29694
  notes_short?: string;
29547
29695
  notify_assignees?: boolean;
29548
29696
  organisationId?: string;
29549
- /**
29550
- * @description ProjectId optionally places the case/task in a project within its organisation.
29551
- * A nil value keeps it organisation-wide.
29552
- */
29697
+ /** @description ProjectId optionally places the case/task in a project within its organisation.
29698
+ * A nil value keeps it organisation-wide. */
29553
29699
  projectId?: string;
29554
29700
  reporter_email?: string;
29555
29701
  reporter_id?: string;
29556
29702
  reporter_profile?: string;
29557
- /**
29558
- * @description Retention / lifecycle.
29703
+ /** @description Retention / lifecycle.
29559
29704
  *
29560
29705
  * RetentionDays captures the *policy intent*: how many days the
29561
29706
  * case should be kept after its retention anchor (typically the
@@ -29582,8 +29727,7 @@ export interface components {
29582
29727
  * regardless of ExpiresAt. It is intentionally a separate flag
29583
29728
  * from the retention date so audits can distinguish "kept longer
29584
29729
  * because investigator extended" from "kept because under legal
29585
- * hold". Managed by a dedicated permission.
29586
- */
29730
+ * hold". Managed by a dedicated permission. */
29587
29731
  retention_days?: number;
29588
29732
  sequenceId?: string;
29589
29733
  sprite_url?: string;
@@ -29600,10 +29744,8 @@ export interface components {
29600
29744
  title?: string;
29601
29745
  user_id?: string;
29602
29746
  username?: string;
29603
- /**
29604
- * @description This is used for a single export, for a bulk export, we will use the first video as thumbnail and sprite.
29605
- * Referencing to some media: video, thumbnail and sprite
29606
- */
29747
+ /** @description This is used for a single export, for a bulk export, we will use the first video as thumbnail and sprite.
29748
+ * Referencing to some media: video, thumbnail and sprite */
29607
29749
  video_url?: string;
29608
29750
  videoFile?: string;
29609
29751
  videoProvider?: string;
@@ -29650,6 +29792,7 @@ export interface components {
29650
29792
  caseMediaId?: string;
29651
29793
  file?: string;
29652
29794
  organisationId?: string;
29795
+ projectId?: string;
29653
29796
  provider?: string;
29654
29797
  status?: components["schemas"]["models.CaseMediaStatus"];
29655
29798
  statusError?: string;
@@ -29760,25 +29903,21 @@ export interface components {
29760
29903
  params?: {
29761
29904
  [key: string]: unknown;
29762
29905
  };
29763
- /**
29764
- * @description SourceAttachmentId points at a video CaseAttachment by its id.
29906
+ /** @description SourceAttachmentId points at a video CaseAttachment by its id.
29765
29907
  * When both SourceCaseMediaId and SourceVideoFile are empty the API
29766
29908
  * materialises (idempotently — reuses the attachment's linked row
29767
29909
  * when present) a Role=source CaseMedia from the attachment's stored
29768
29910
  * video and applies the edit to that row, so an attached video can
29769
- * be redacted with the same flow as a device recording.
29770
- */
29911
+ * be redacted with the same flow as a device recording. */
29771
29912
  sourceAttachmentId?: string;
29772
29913
  sourceCaseMediaId?: string;
29773
- /**
29774
- * @description SourceVideoFile points at a legacy task.export_files entry by its
29914
+ /** @description SourceVideoFile points at a legacy task.export_files entry by its
29775
29915
  * storage key. When SourceCaseMediaId is empty the API resolves
29776
29916
  * this key against the task's ExportFiles, lazily creates a
29777
29917
  * Role=source CaseMedia row for it (idempotent — reuses an
29778
29918
  * existing row with the same video_file when present), and then
29779
29919
  * applies the edit to that row. Lets pre-migration cases be
29780
- * redacted without requiring a workspace-wide backfill.
29781
- */
29920
+ * redacted without requiring a workspace-wide backfill. */
29782
29921
  sourceVideoFile?: string;
29783
29922
  supersedesId?: string;
29784
29923
  };
@@ -29926,6 +30065,20 @@ export interface components {
29926
30065
  /** @description Request fields (sent by client) */
29927
30066
  cursor?: string;
29928
30067
  hasMore?: boolean;
30068
+ /** @description IncludeTotal asks the server to also count everything the filter matches,
30069
+ * not just the page being returned, and report it as Total.
30070
+ *
30071
+ * It is opt-in because the count is a second query over the whole matched
30072
+ * set while the page itself stops at Limit, so its cost scales with the
30073
+ * tenant rather than with the response. Most callers page for display and
30074
+ * never read Total; making them pay for it is how a cheap list turns into
30075
+ * an expensive one, and it is why this defaults to off.
30076
+ *
30077
+ * A caller that omits it gets Total unset rather than zero-as-a-count:
30078
+ * Total is omitempty, so "not asked for" and "asked for, and the answer is
30079
+ * nought" are the same wire value. Callers that need to tell the two apart
30080
+ * must rely on having asked. */
30081
+ includeTotal?: boolean;
29929
30082
  limit?: number;
29930
30083
  /** @description Response fields (returned by server) */
29931
30084
  nextCursor?: string;
@@ -29933,6 +30086,8 @@ export interface components {
29933
30086
  page?: number;
29934
30087
  pageSize?: number;
29935
30088
  prevCursor?: string;
30089
+ /** @description Total is the size of the whole matched set, populated only when the
30090
+ * request set IncludeTotal. It is not the length of the page. */
29936
30091
  total?: number;
29937
30092
  };
29938
30093
  "api.DebugResponse": {
@@ -29987,10 +30142,8 @@ export interface components {
29987
30142
  metadata?: components["schemas"]["api.Metadata"];
29988
30143
  };
29989
30144
  "api.DeleteCaseAttachmentResponse": {
29990
- /**
29991
- * @description Id of the removed attachment, echoed back for client cache
29992
- * invalidation.
29993
- */
30145
+ /** @description Id of the removed attachment, echoed back for client cache
30146
+ * invalidation. */
29994
30147
  id?: string;
29995
30148
  };
29996
30149
  "api.DeleteCaseAttachmentSuccessResponse": {
@@ -32130,26 +32283,18 @@ export interface components {
32130
32283
  metadata?: components["schemas"]["api.Metadata"];
32131
32284
  };
32132
32285
  "api.IngestRequest": {
32133
- /**
32134
- * @description AnalysisId targets the recording via its analysis document _id (an
32135
- * ObjectID hex), as an alternative to MediaKey.
32136
- */
32286
+ /** @description AnalysisId targets the recording via its analysis document _id (an
32287
+ * ObjectID hex), as an alternative to MediaKey. */
32137
32288
  analysisId?: string;
32138
- /**
32139
- * @description MediaKey is the recording KEY the result belongs to — the stable string
32289
+ /** @description MediaKey is the recording KEY the result belongs to — the stable string
32140
32290
  * stored as media.videoFile / analysis.key (NOT the media document _id).
32141
- * Provide this or AnalysisId (MediaKey wins when both are present).
32142
- */
32291
+ * Provide this or AnalysisId (MediaKey wins when both are present). */
32143
32292
  mediaKey?: string;
32144
- /**
32145
- * @description Operation is the kind selector — the registry key the ingest dispatcher
32146
- * routes on (e.g. "detection").
32147
- */
32293
+ /** @description Operation is the kind selector — the registry key the ingest dispatcher
32294
+ * routes on (e.g. "detection"). */
32148
32295
  operation?: string;
32149
- /**
32150
- * @description Payload is the kind's typed result body, validated and normalised by the
32151
- * kind's handler (for "detection" this is a PostDetectionsRequest).
32152
- */
32296
+ /** @description Payload is the kind's typed result body, validated and normalised by the
32297
+ * kind's handler (for "detection" this is a PostDetectionsRequest). */
32153
32298
  payload?: number[];
32154
32299
  };
32155
32300
  "api.IngestResponse": {
@@ -32232,6 +32377,7 @@ export interface components {
32232
32377
  name?: string;
32233
32378
  names?: string[];
32234
32379
  sort?: string;
32380
+ timeRanges?: components["schemas"]["models.TimeRange"][];
32235
32381
  };
32236
32382
  "api.MarkerEventFilter": {
32237
32383
  deviceKeys?: string[];
@@ -32376,22 +32522,20 @@ export interface components {
32376
32522
  metadata?: components["schemas"]["api.Metadata"];
32377
32523
  };
32378
32524
  "api.PostDetectionsRequest": {
32379
- /**
32380
- * @description AnalysisId targets the recording via its analysis document _id (an
32381
- * ObjectID hex), as an alternative to MediaKey.
32382
- */
32525
+ /** @description AnalysisId targets the recording via its analysis document _id (an
32526
+ * ObjectID hex), as an alternative to MediaKey. */
32383
32527
  analysisId?: string;
32384
32528
  categories?: components["schemas"]["models.DetectionCategory"][];
32385
32529
  /** @description "pixel" | "normalized" */
32386
32530
  coordinateSpace?: string;
32387
32531
  media?: components["schemas"]["models.DetectionMedia"];
32388
- /**
32389
- * @description MediaKey is the recording KEY the run belongs to - the stable string that
32532
+ /** @description MediaKey is the recording KEY the run belongs to - the stable string that
32390
32533
  * is stored as media.videoFile and analysis.key (NOT the media document's
32391
32534
  * _id). The server resolves it against analysis.key. Provide this or
32392
- * AnalysisId (MediaKey wins when both are present).
32393
- */
32535
+ * AnalysisId (MediaKey wins when both are present). */
32394
32536
  mediaKey?: string;
32537
+ /** @description Name is an optional user-facing label for the run. */
32538
+ name?: string;
32395
32539
  schemaVersion?: string;
32396
32540
  source?: components["schemas"]["models.DetectionSource"];
32397
32541
  /** @description Task is an optional run discriminator; defaults to "detection". */
@@ -32435,10 +32579,8 @@ export interface components {
32435
32579
  fileName?: string;
32436
32580
  fileSize?: number;
32437
32581
  provider?: string;
32438
- /**
32439
- * @description SignedURL is a vault-signed URL that can be used to fetch the file
32440
- * after upload. It carries an HMAC signature and a TTL.
32441
- */
32582
+ /** @description SignedURL is a vault-signed URL that can be used to fetch the file
32583
+ * after upload. It carries an HMAC signature and a TTL. */
32442
32584
  signedUrl?: string;
32443
32585
  };
32444
32586
  "api.PublishFileSuccessResponse": {
@@ -32684,14 +32826,13 @@ export interface components {
32684
32826
  faceRedaction?: components["schemas"]["models.FaceRedaction"];
32685
32827
  fileName?: string;
32686
32828
  mode?: components["schemas"]["models.RedactionMode"];
32687
- /**
32688
- * @description OrganisationId scopes the redaction job to the owning organisation. It is
32829
+ /** @description OrganisationId scopes the redaction job to the owning organisation. It is
32689
32830
  * carried on the request struct itself (not only on the transport envelope)
32690
32831
  * so the worker can resolve the same Request whether the struct arrives on an
32691
32832
  * on-demand PipelineEvent (event.Payload) or a hub-workflows stage dispatch
32692
- * (run.User) — i.e. the request is self-contained and transport agnostic.
32693
- */
32833
+ * (run.User) — i.e. the request is self-contained and transport agnostic. */
32694
32834
  organisationId?: string;
32835
+ projectId?: string;
32695
32836
  signedUrl?: string;
32696
32837
  taskId?: string;
32697
32838
  };
@@ -33277,17 +33418,13 @@ export interface components {
33277
33418
  metadata?: components["schemas"]["api.Metadata"];
33278
33419
  };
33279
33420
  "api.UploadCaseAttachmentRequest": {
33280
- /**
33281
- * @description Name overrides the filename recorded on the attachment. Defaults
33282
- * to the multipart part filename when omitted.
33283
- */
33421
+ /** @description Name overrides the filename recorded on the attachment. Defaults
33422
+ * to the multipart part filename when omitted. */
33284
33423
  name?: string;
33285
- /**
33286
- * @description RelatedCaseMediaId optionally links the attachment to a specific
33424
+ /** @description RelatedCaseMediaId optionally links the attachment to a specific
33287
33425
  * case_media entry it documents or annotates (annotated screenshot
33288
33426
  * of a redacted clip, etc.). Hex ObjectID; must belong to the same
33289
- * task.
33290
- */
33427
+ * task. */
33291
33428
  relatedCaseMediaId?: string;
33292
33429
  };
33293
33430
  "api.UploadCaseAttachmentResponse": {
@@ -33357,25 +33494,27 @@ export interface components {
33357
33494
  triggerType?: components["schemas"]["models.WorkflowTriggerType"];
33358
33495
  };
33359
33496
  "api.WorkflowRunStatus": {
33360
- /**
33361
- * @description Dispatched / Resolved are the sizes of the run's dispatched and resolved
33362
- * operation sets, exposed as a coarse progress hint.
33363
- */
33497
+ /** @description Dispatched / Resolved are the sizes of the run's dispatched and resolved
33498
+ * operation sets, exposed as a coarse progress hint. */
33364
33499
  dispatched?: number;
33500
+ /** @description DispatchedOperations / ResolvedOperations name the stages behind the
33501
+ * Dispatched / Resolved counts, in dispatch/resolution order, so a surface
33502
+ * can render per-stage progress (e.g. "pose done, redaction running")
33503
+ * instead of only a run-level running/completed flip for multi-stage runs. */
33504
+ dispatchedOperations?: string[];
33365
33505
  end?: number;
33366
33506
  /** @description HasResults is true when the run accumulated any stage output. */
33367
33507
  hasResults?: boolean;
33368
33508
  key?: string;
33369
33509
  origin?: string;
33370
33510
  resolved?: number;
33511
+ resolvedOperations?: string[];
33371
33512
  runId?: string;
33372
33513
  sourceRef?: string;
33373
33514
  /** @description Start / End are unix seconds; End is 0 while the run is still open. */
33374
33515
  start?: number;
33375
- /**
33376
- * @description State is the derived lifecycle: running | completed | noResult
33377
- * (models.WorkflowRunState).
33378
- */
33516
+ /** @description State is the derived lifecycle: running | completed | noResult
33517
+ * (models.WorkflowRunState). */
33379
33518
  state?: string;
33380
33519
  workflowId?: string;
33381
33520
  workflowName?: string;
@@ -33546,10 +33685,8 @@ export interface components {
33546
33685
  in_process?: number;
33547
33686
  key?: string;
33548
33687
  organisationId?: string;
33549
- /**
33550
- * @description ProjectId optionally places the analysis in a project within its organisation.
33551
- * A nil value keeps the analysis organisation-wide.
33552
- */
33688
+ /** @description ProjectId optionally places the analysis in a project within its organisation.
33689
+ * A nil value keeps the analysis organisation-wide. */
33553
33690
  projectId?: string;
33554
33691
  provider?: string;
33555
33692
  requiredOperations?: string[];
@@ -33643,52 +33780,87 @@ export interface components {
33643
33780
  "models.Audit": {
33644
33781
  createdAt?: string;
33645
33782
  createdBy?: string;
33646
- /**
33647
- * @description LastAction is a short semantic label describing the most recent change
33783
+ /** @description LastAction is a short semantic label describing the most recent change
33648
33784
  * (e.g. "role.assigned", "member.suspended", "device.renamed"). For the
33649
- * complete history, query AuditEvent by TargetType/TargetId.
33650
- */
33785
+ * complete history, query AuditEvent by TargetType/TargetId. */
33651
33786
  lastAction?: string;
33652
33787
  updatedAt?: string;
33653
33788
  updatedBy?: string;
33654
33789
  };
33790
+ "models.AuditAuthorizationInfo": {
33791
+ granted?: boolean;
33792
+ permission?: string;
33793
+ policy?: string;
33794
+ resourceId?: string;
33795
+ resourceType?: string;
33796
+ scope?: string;
33797
+ };
33655
33798
  "models.AuditEvent": {
33656
- /**
33657
- * @description Action is a short semantic label, e.g. "case.commented", "device.renamed",
33658
- * "member.suspended".
33659
- */
33799
+ /** @description Action is a short semantic label, e.g. "case.commented", "device.renamed",
33800
+ * "member.suspended". */
33660
33801
  action?: string;
33661
- /**
33662
- * @description ActorId is the user who performed the action; ActorName is denormalised so
33663
- * history can be rendered without a lookup.
33664
- */
33802
+ /** @description ActorId is the user who performed the action; ActorName is denormalised so
33803
+ * history can be rendered without a lookup. */
33665
33804
  actorId?: string;
33666
33805
  actorName?: string;
33806
+ /** @description ActorType identifies the principal kind, e.g. "user", "apikey" or "system". */
33807
+ actorType?: string;
33808
+ /** @description AuthorizationInfo records the permission decisions actually made for the
33809
+ * operation. Authentication and trusted system events may leave it empty. */
33810
+ authorizationInfo?: components["schemas"]["models.AuditAuthorizationInfo"][];
33811
+ /** @description Category groups the action by subsystem. */
33812
+ category?: string;
33667
33813
  /** @description Changes optionally captures the field-level diff for this event. */
33668
33814
  changes?: components["schemas"]["models.AuditFieldChange"][];
33669
33815
  id?: string;
33670
- /** @description Metadata holds contextual key/value pairs (ip, userAgent, requestId, ...). */
33816
+ /** @description Metadata holds additional action-specific context. */
33671
33817
  metadata?: {
33672
33818
  [key: string]: string;
33673
33819
  };
33820
+ /** @description Operation is the coarse CRUD-style action class. */
33821
+ operation?: string;
33674
33822
  /** @description OrganisationId scopes the event to a tenant for org-wide audit queries. */
33675
33823
  organisationId?: string;
33824
+ /** @description ProjectId optionally narrows the event to a project within the organisation.
33825
+ * Organisation-wide actions leave it nil. */
33826
+ projectId?: string;
33827
+ /** @description Request contains transport and correlation evidence captured at ingress. */
33828
+ request?: components["schemas"]["models.AuditRequestInfo"];
33829
+ /** @description SchemaVersion identifies the persisted audit event contract. */
33830
+ schemaVersion?: number;
33831
+ /** @description Source identifies the service that produced the event. */
33832
+ source?: string;
33833
+ /** @description Status records the operation result independently of authorization. */
33834
+ status?: components["schemas"]["models.AuditEventStatus"];
33676
33835
  targetId?: string;
33677
- /**
33678
- * @description TargetType and TargetId identify the entity the action was performed on
33836
+ targetName?: string;
33837
+ /** @description TargetType and TargetId identify the entity the action was performed on
33679
33838
  * (e.g. TargetType "case" with the case id). Query these to render an
33680
33839
  * entity's audit history. TargetId is a string so it can hold either an
33681
- * ObjectID hex or a non-ObjectID key (such as a media key).
33682
- */
33840
+ * ObjectID hex or a non-ObjectID key (such as a media key). TargetName is the
33841
+ * denormalised point-in-time label of the target. */
33683
33842
  targetType?: string;
33684
33843
  /** @description Timestamp is when the action occurred. */
33685
33844
  timestamp?: string;
33686
33845
  };
33846
+ "models.AuditEventStatus": {
33847
+ code?: string;
33848
+ outcome?: string;
33849
+ };
33687
33850
  "models.AuditFieldChange": {
33688
33851
  field?: string;
33689
33852
  newValue?: string;
33690
33853
  oldValue?: string;
33691
33854
  };
33855
+ "models.AuditRequestInfo": {
33856
+ correlationId?: string;
33857
+ id?: string;
33858
+ ip?: string;
33859
+ method?: string;
33860
+ path?: string;
33861
+ traceId?: string;
33862
+ userAgent?: string;
33863
+ };
33692
33864
  /** @enum {string} */
33693
33865
  "models.BaseRole": "guest" | "editor" | "admin" | "owner" | "application";
33694
33866
  "models.CameraMetadata": {
@@ -33746,132 +33918,99 @@ export interface components {
33746
33918
  "models.CaseAttachment": {
33747
33919
  createdAt?: number;
33748
33920
  createdBy?: string;
33749
- /**
33750
- * @description Storage pointer into Vault (same abstraction as CaseMedia.File /
33921
+ /** @description Storage pointer into Vault (same abstraction as CaseMedia.File /
33751
33922
  * CaseMedia.Provider). Provider identifies the storage solution;
33752
- * File is the object key inside it.
33753
- */
33923
+ * File is the object key inside it. */
33754
33924
  file?: string;
33755
33925
  id?: string;
33756
- /**
33757
- * @description IncludeInExport and IncludeInShare are per-attachment curation
33926
+ /** @description IncludeInExport and IncludeInShare are per-attachment curation
33758
33927
  * flags. Same semantics as the namesakes on CaseMedia: defaulted
33759
33928
  * to true at upload time, toggled via PATCH, consulted by the
33760
33929
  * export pipeline and the share recipient endpoint, and frozen
33761
33930
  * into CaseShare.AttachmentSelection at CreateShare time.
33762
33931
  *
33763
33932
  * BSON tags deliberately omit `,omitempty` so a `false` value is
33764
- * persisted faithfully instead of being dropped to the default.
33765
- */
33933
+ * persisted faithfully instead of being dropped to the default. */
33766
33934
  includeInExport?: boolean;
33767
33935
  includeInShare?: boolean;
33768
33936
  mimeType?: string;
33769
- /**
33770
- * @description Name is the original filename at upload time. Users may rename
33937
+ /** @description Name is the original filename at upload time. Users may rename
33771
33938
  * the attachment afterwards without renaming the underlying object
33772
- * in Vault.
33773
- */
33939
+ * in Vault. */
33774
33940
  name?: string;
33775
33941
  organisationId?: string;
33776
- /**
33777
- * @description ProjectId optionally places the attachment in a project within its organisation.
33778
- * A nil value keeps it organisation-wide.
33779
- */
33942
+ /** @description ProjectId optionally places the attachment in a project within its organisation.
33943
+ * A nil value keeps it organisation-wide. */
33780
33944
  projectId?: string;
33781
33945
  provider?: string;
33782
- /**
33783
- * @description RelatedCaseMediaId optionally links the attachment to a specific
33946
+ /** @description RelatedCaseMediaId optionally links the attachment to a specific
33784
33947
  * case_media entry it documents or annotates (for example, an
33785
33948
  * annotated screenshot of a redacted clip). Nil for free-standing
33786
- * case-level attachments.
33787
- */
33949
+ * case-level attachments. */
33788
33950
  relatedCaseMediaId?: string;
33789
- /**
33790
- * @description Sha256 is the hex-encoded SHA-256 of the uploaded bytes,
33951
+ /** @description Sha256 is the hex-encoded SHA-256 of the uploaded bytes,
33791
33952
  * computed by hub-api while streaming the upload to Vault. Used
33792
33953
  * for de-duplication detection and integrity checks on large
33793
- * files. Optional — older entries may not have it.
33794
- */
33954
+ * files. Optional — older entries may not have it. */
33795
33955
  sha256?: string;
33796
- /**
33797
- * @description Size in bytes of the stored object. Useful for UI display and
33956
+ /** @description Size in bytes of the stored object. Useful for UI display and
33798
33957
  * for sanity-checking that the Vault object still matches what we
33799
- * recorded.
33800
- */
33958
+ * recorded. */
33801
33959
  size?: number;
33802
- /**
33803
- * @description TaskId / OrganisationId scope the row to its parent case and
33960
+ /** @description TaskId / OrganisationId scope the row to its parent case and
33804
33961
  * tenant. Required on every row in the case_attachments collection
33805
33962
  * so list/get queries can index on them directly without joining
33806
- * against the tasks collection.
33807
- */
33963
+ * against the tasks collection. */
33808
33964
  taskId?: string;
33809
- /**
33810
- * @description Optional derived preview generated by hub-api on upload (a
33965
+ /** @description Optional derived preview generated by hub-api on upload (a
33811
33966
  * downscaled JPEG for images, the first page rendered to an image
33812
33967
  * for PDFs, etc.). Absence is fine — the UI falls back to a
33813
- * kind-based icon.
33814
- */
33968
+ * kind-based icon. */
33815
33969
  thumbnailFile?: string;
33816
33970
  thumbnailProvider?: string;
33817
33971
  thumbnailUrl?: string;
33818
- /**
33819
- * @description Type is a coarse classification of the attachment used by the UI
33972
+ /** @description Type is a coarse classification of the attachment used by the UI
33820
33973
  * to pick an icon / viewer. MimeType is the source of truth for
33821
- * content negotiation; Type is derived from it at upload time.
33822
- */
33974
+ * content negotiation; Type is derived from it at upload time. */
33823
33975
  type?: components["schemas"]["models.CaseAttachmentType"];
33824
33976
  updatedAt?: number;
33825
- /**
33826
- * @description Url / ThumbnailUrl are signed by hub-api at fetch time and never
33977
+ /** @description Url / ThumbnailUrl are signed by hub-api at fetch time and never
33827
33978
  * persisted. They should be excluded from list-cases projections
33828
- * to keep that endpoint light.
33829
- */
33979
+ * to keep that endpoint light. */
33830
33980
  url?: string;
33831
33981
  };
33832
33982
  /** @enum {string} */
33833
33983
  "models.CaseAttachmentType": "pdf" | "image" | "document" | "audio" | "video" | "other";
33834
33984
  "models.CaseMedia": {
33835
- /**
33836
- * @description Action describes what the edit does. Only meaningful when
33837
- * Role = "edit". See CaseMediaAction.
33838
- */
33985
+ /** @description Action describes what the edit does. Only meaningful when
33986
+ * Role = "edit". See CaseMediaAction. */
33839
33987
  action?: components["schemas"]["models.CaseMediaAction"];
33840
- /**
33841
- * @description Analysis is a snapshot of the AnalysisWrapper associated with
33988
+ /** @description Analysis is a snapshot of the AnalysisWrapper associated with
33842
33989
  * the source media at attach time, including the per-operation
33843
33990
  * lifecycle fields (AsyncOperations / RequiredOperations /
33844
33991
  * ResolvedOperations) plus the analysis data (classify, counting,
33845
33992
  * faceRedaction, …) so the detail page and the face-redaction
33846
33993
  * edit modal can render without an extra lookup against the
33847
- * `analysis` collection. Only populated on Role = "source".
33848
- */
33994
+ * `analysis` collection. Only populated on Role = "source". */
33849
33995
  analysis?: components["schemas"]["models.AnalysisWrapper"];
33850
- /**
33851
- * @description Optional job linkage — back-pointers to the analysis / face
33852
- * redaction documents that drove the edit, when applicable.
33853
- */
33996
+ /** @description Optional job linkage — back-pointers to the analysis / face
33997
+ * redaction documents that drove the edit, when applicable. */
33854
33998
  analysisId?: string;
33855
33999
  cameraId?: string;
33856
34000
  createdAt?: number;
33857
34001
  createdBy?: string;
33858
- /**
33859
- * @description EditType is a sub-variant of Action (for example "face_blur",
34002
+ /** @description EditType is a sub-variant of Action (for example "face_blur",
33860
34003
  * "face_pixelate", "face_mask" when Action = "redaction"). Display
33861
34004
  * labels are derived from this in the UI. Canonical values are
33862
- * declared as CaseMediaEditType constants below.
33863
- */
34005
+ * declared as CaseMediaEditType constants below. */
33864
34006
  editType?: components["schemas"]["models.CaseMediaEditType"];
33865
34007
  endTimestamp?: number;
33866
34008
  faceRedactionId?: string;
33867
- /**
33868
- * @description Produced artefact (populated on Role = "edit" once the worker
33869
- * completes; for Role = "source" these mirror VideoFile/VideoProvider).
33870
- */
34009
+ /** @description Produced artefact (populated on Role = "edit" once the worker
34010
+ * completes; for Role = "source" these mirror VideoFile/VideoProvider). */
33871
34011
  file?: string;
33872
34012
  id?: string;
33873
- /**
33874
- * @description IncludeInExport and IncludeInShare are per-row curation flags. A
34013
+ /** @description IncludeInExport and IncludeInShare are per-row curation flags. A
33875
34014
  * case_media is included in an export bundle / share recipient view
33876
34015
  * when the corresponding flag is true. Both default to true at
33877
34016
  * insert time (set explicitly by the create path — the Go zero
@@ -33884,23 +34023,19 @@ export interface components {
33884
34023
  * from the source they resolve to.
33885
34024
  *
33886
34025
  * BSON tags deliberately omit `,omitempty` so a `false` value is
33887
- * persisted faithfully instead of being dropped to the default.
33888
- */
34026
+ * persisted faithfully instead of being dropped to the default. */
33889
34027
  includeInExport?: boolean;
33890
34028
  includeInShare?: boolean;
33891
- /**
33892
- * @description Media is a full snapshot of the source Media document captured at
34029
+ /** @description Media is a full snapshot of the source Media document captured at
33893
34030
  * attach time. It is only populated on Role = "source" and is what
33894
34031
  * the media-detail page and edit modal consume — the flat fields
33895
34032
  * above stay in place because they are queried directly by the
33896
34033
  * export pipeline and the case-level summarisers. The snapshot
33897
34034
  * makes the case self-contained: edits to or deletions of the
33898
- * original media row do not affect what the case shows.
33899
- */
34035
+ * original media row do not affect what the case shows. */
33900
34036
  media?: components["schemas"]["models.Media"];
33901
34037
  organisationId?: string;
33902
- /**
33903
- * @description OriginAttachmentId marks a Role=source row that was materialised
34038
+ /** @description OriginAttachmentId marks a Role=source row that was materialised
33904
34039
  * from a video CaseAttachment (see the case_attachments collection)
33905
34040
  * so a case's attached videos can flow through the same
33906
34041
  * workflow-run and redaction machinery as device recordings. It
@@ -33908,89 +34043,66 @@ export interface components {
33908
34043
  * out of the normal media playlist and default to
33909
34044
  * IncludeInExport=false / IncludeInShare=false at insert time (the
33910
34045
  * owning attachment carries its own export/share curation). Only
33911
- * meaningful on Role = "source".
33912
- */
34046
+ * meaningful on Role = "source". */
33913
34047
  originAttachmentId?: string;
33914
- /**
33915
- * @description Params carries kind-specific parameters used to produce the edit.
34048
+ /** @description Params carries kind-specific parameters used to produce the edit.
33916
34049
  * For Action = "composite" it is expected to contain an
33917
34050
  * "operations" array whose elements have an "op" discriminator
33918
- * matching one of the single-op CaseMediaAction values.
33919
- */
34051
+ * matching one of the single-op CaseMediaAction values. */
33920
34052
  params?: {
33921
34053
  [key: string]: unknown;
33922
34054
  };
33923
- /**
33924
- * @description ParentId links an edit (Role = "edit") to the case_media entry it
34055
+ /** @description ParentId links an edit (Role = "edit") to the case_media entry it
33925
34056
  * was produced from. For composite edits the parent is still a single
33926
- * source — the individual operations are described in Params.
33927
- */
34057
+ * source — the individual operations are described in Params. */
33928
34058
  parentId?: string;
33929
- /**
33930
- * @description ProjectId optionally places the case media in a project within its organisation.
33931
- * A nil value keeps it organisation-wide.
33932
- */
34059
+ /** @description ProjectId optionally places the case media in a project within its organisation.
34060
+ * A nil value keeps it organisation-wide. */
33933
34061
  projectId?: string;
33934
34062
  provider?: string;
33935
- /**
33936
- * @description Role describes whether this entry represents a source attached to
33937
- * the case or an edit derived from another entry. See CaseMediaRole.
33938
- */
34063
+ /** @description Role describes whether this entry represents a source attached to
34064
+ * the case or an edit derived from another entry. See CaseMediaRole. */
33939
34065
  role?: components["schemas"]["models.CaseMediaRole"];
33940
- /**
33941
- * @description SelectedVersionId is only meaningful on Role = "source" rows and
34066
+ /** @description SelectedVersionId is only meaningful on Role = "source" rows and
33942
34067
  * records which version of the source the case should display and
33943
34068
  * export. When set it points at an Role = "edit" CaseMedia entry
33944
34069
  * that descends from this source (directly via ParentId or
33945
34070
  * transitively via SupersedesId). When empty, consumers fall back
33946
34071
  * to the default behaviour (use the latest completed edit if any,
33947
34072
  * otherwise the source itself). Persisted so the choice survives
33948
- * across sessions and is honoured by the export pipeline.
33949
- */
34073
+ * across sessions and is honoured by the export pipeline. */
33950
34074
  selectedVersionId?: string;
33951
- /**
33952
- * @description Source snapshot fields (populated on Role = "source"; mirrored from
34075
+ /** @description Source snapshot fields (populated on Role = "source"; mirrored from
33953
34076
  * Media at attach time so the case stays self-contained even after
33954
- * the original media document is cleaned up).
33955
- */
34077
+ * the original media document is cleaned up). */
33956
34078
  sourceMediaId?: string;
33957
34079
  spriteFile?: string;
33958
34080
  spriteInterval?: number;
33959
34081
  spriteProvider?: string;
33960
- /**
33961
- * @description SpriteUrl is a signed playback URL for SpriteFile and is populated
33962
- * by the API at fetch time. Not persisted.
33963
- */
34082
+ /** @description SpriteUrl is a signed playback URL for SpriteFile and is populated
34083
+ * by the API at fetch time. Not persisted. */
33964
34084
  spriteUrl?: string;
33965
- /**
33966
- * @description Lifecycle (only meaningful on Role = "edit"). For sources this is
33967
- * implicitly Completed at creation time.
33968
- */
34085
+ /** @description Lifecycle (only meaningful on Role = "edit"). For sources this is
34086
+ * implicitly Completed at creation time. */
33969
34087
  status?: components["schemas"]["models.CaseMediaStatus"];
33970
34088
  statusError?: string;
33971
34089
  storageSolution?: string;
33972
- /**
33973
- * @description SupersedesId points at the previous version this entry replaces,
33974
- * preserving the full edit chain for auditing / rollback.
33975
- */
34090
+ /** @description SupersedesId points at the previous version this entry replaces,
34091
+ * preserving the full edit chain for auditing / rollback. */
33976
34092
  supersedesId?: string;
33977
34093
  taskId?: string;
33978
34094
  thumbnailFile?: string;
33979
34095
  thumbnailProvider?: string;
33980
- /**
33981
- * @description ThumbnailUrl is a signed playback URL for ThumbnailFile and is
33982
- * populated by the API at fetch time. Not persisted.
33983
- */
34096
+ /** @description ThumbnailUrl is a signed playback URL for ThumbnailFile and is
34097
+ * populated by the API at fetch time. Not persisted. */
33984
34098
  thumbnailUrl?: string;
33985
34099
  timestamp?: number;
33986
34100
  updatedAt?: number;
33987
34101
  /** @description Url is signed by the API at fetch time and not persisted. */
33988
34102
  url?: string;
33989
- /**
33990
- * @description Version is monotonically increasing within
34103
+ /** @description Version is monotonically increasing within
33991
34104
  * (TaskId, ParentId, Action, EditType). The most recent completed
33992
- * version is the one the export pipeline picks up.
33993
- */
34105
+ * version is the one the export pipeline picks up. */
33994
34106
  version?: number;
33995
34107
  videoFile?: string;
33996
34108
  videoProvider?: string;
@@ -34004,12 +34116,10 @@ export interface components {
34004
34116
  /** @enum {string} */
34005
34117
  "models.CaseMediaStatus": "queued" | "processing" | "completed" | "failed";
34006
34118
  "models.CaseShare": {
34007
- /**
34008
- * @description AttachmentSelection is the per-share snapshot of the
34119
+ /** @description AttachmentSelection is the per-share snapshot of the
34009
34120
  * task.Attachments[] ids the recipient is allowed to browse.
34010
34121
  * Same nil/empty/non-empty semantics as Selection — and the same
34011
- * reason the bson tag drops `,omitempty`.
34012
- */
34122
+ * reason the bson tag drops `,omitempty`. */
34013
34123
  attachment_selection?: string[];
34014
34124
  created_at?: number;
34015
34125
  email?: string;
@@ -34019,13 +34129,10 @@ export interface components {
34019
34129
  organisation_id?: string;
34020
34130
  /** @description e.g. ["view"] */
34021
34131
  permissions?: string[];
34022
- /**
34023
- * @description ProjectId optionally places the case share in a project within its organisation.
34024
- * A nil value keeps it organisation-wide.
34025
- */
34132
+ /** @description ProjectId optionally places the case share in a project within its organisation.
34133
+ * A nil value keeps it organisation-wide. */
34026
34134
  projectId?: string;
34027
- /**
34028
- * @description Selection is the per-share snapshot of the case_media ids the
34135
+ /** @description Selection is the per-share snapshot of the case_media ids the
34029
34136
  * recipient is allowed to browse, captured at CreateShare time.
34030
34137
  * It is the source of truth for what this specific token resolves
34031
34138
  * to — task.ShareSelection is only used as the owner-side
@@ -34046,8 +34153,7 @@ export interface components {
34046
34153
  * re-binding the share to whatever template the owner happens to
34047
34154
  * have in place at read time. The JSON tag keeps `omitempty`
34048
34155
  * because the frontend treats a missing field identically to
34049
- * `[]`.
34050
- */
34156
+ * `[]`. */
34051
34157
  selection?: string[];
34052
34158
  task_id?: string;
34053
34159
  token?: string;
@@ -34124,20 +34230,16 @@ export interface components {
34124
34230
  audit?: components["schemas"]["models.Audit"];
34125
34231
  author?: string;
34126
34232
  content?: string;
34127
- /**
34128
- * @description RBAC information
34233
+ /** @description RBAC information
34129
34234
  * DeviceId is a unique identifier for the device, it can be used to identify the device in the system.
34130
- * OrganisationId is used to identify the organisation that owns the device.
34131
- */
34235
+ * OrganisationId is used to identify the organisation that owns the device. */
34132
34236
  deviceId?: string;
34133
34237
  id?: string;
34134
34238
  organisationId?: string;
34135
34239
  /** @description ID of the parent comment, if this is a reply */
34136
34240
  parentId?: string;
34137
- /**
34138
- * @description ProjectId optionally places the comment in a project within its organisation.
34139
- * A nil value keeps the comment organisation-wide.
34140
- */
34241
+ /** @description ProjectId optionally places the comment in a project within its organisation.
34242
+ * A nil value keeps the comment organisation-wide. */
34141
34243
  projectId?: string;
34142
34244
  timestamps?: number[];
34143
34245
  /** @description Comment information */
@@ -34287,10 +34389,8 @@ export interface components {
34287
34389
  motionRegions?: components["schemas"]["models.Region"][];
34288
34390
  organisationId?: string;
34289
34391
  outputList?: string[];
34290
- /**
34291
- * @description ProjectId optionally places the alert in a project within its organisation.
34292
- * A nil value keeps the alert organisation-wide.
34293
- */
34392
+ /** @description ProjectId optionally places the alert in a project within its organisation.
34393
+ * A nil value keeps the alert organisation-wide. */
34294
34394
  projectId?: string;
34295
34395
  pushbullet_apikey?: string;
34296
34396
  pushover_apikey?: string;
@@ -34436,43 +34536,33 @@ export interface components {
34436
34536
  categories?: components["schemas"]["models.DetectionCategory"][];
34437
34537
  /** @description CreatedAt is set by the server when the run is first stored (epoch millis). */
34438
34538
  createdAt?: number;
34439
- /**
34440
- * @description DeviceId is denormalised from the recording for convenient filtering and
34441
- * cascade cleanup; it is not authoritative.
34442
- */
34539
+ /** @description DeviceId is denormalised from the recording for convenient filtering and
34540
+ * cascade cleanup; it is not authoritative. */
34443
34541
  deviceId?: string;
34444
34542
  /** @description Id is the MongoDB document id, assigned on first insert. */
34445
34543
  id?: string;
34446
- /**
34447
- * @description Key is the recording/media key the run belongs to. It is the stable
34448
- * identity the collection is keyed by (survives re-analysis).
34449
- */
34544
+ /** @description Key is the recording/media key the run belongs to. It is the stable
34545
+ * identity the collection is keyed by (survives re-analysis). */
34450
34546
  key?: string;
34451
34547
  media?: components["schemas"]["models.DetectionMedia"];
34452
- /**
34453
- * @description OriginalBoxForm records the box geometry form the producer sent
34454
- * ("xywh", "xyxy", or "mixed") before conversion to the editor's TrackBox.
34455
- */
34548
+ /** @description Name is an optional user-facing label for the run. */
34549
+ name?: string;
34550
+ /** @description OriginalBoxForm records the box geometry form the producer sent
34551
+ * ("xywh", "xyxy", or "mixed") before conversion to the editor's TrackBox. */
34456
34552
  originalBoxForm?: string;
34457
- /**
34458
- * @description OriginalCoordinateSpace records the coordinate space the producer sent
34553
+ /** @description OriginalCoordinateSpace records the coordinate space the producer sent
34459
34554
  * ("pixel" or "normalized") before the server normalised it on write.
34460
- * Tracks are always stored normalised; this preserves the original for audit.
34461
- */
34555
+ * Tracks are always stored normalised; this preserves the original for audit. */
34462
34556
  originalCoordinateSpace?: string;
34463
- /**
34464
- * @description RecordingTimestamp is the start time (epoch seconds) of the recording the
34557
+ /** @description RecordingTimestamp is the start time (epoch seconds) of the recording the
34465
34558
  * run belongs to, denormalised from the analysis on write. It lets cleanup
34466
34559
  * expire a run on the same retention clock as its recording rather than by
34467
- * the (possibly much later) post time.
34468
- */
34560
+ * the (possibly much later) post time. */
34469
34561
  recordingTimestamp?: number;
34470
34562
  schemaVersion?: string;
34471
34563
  source?: components["schemas"]["models.DetectionSource"];
34472
- /**
34473
- * @description Task is a forward-compatibility discriminator for the kind of run.
34474
- * Defaults to "detection" when omitted.
34475
- */
34564
+ /** @description Task is a forward-compatibility discriminator for the kind of run.
34565
+ * Defaults to "detection" when omitted. */
34476
34566
  task?: string;
34477
34567
  tracks?: components["schemas"]["models.FaceRedactionTrack"][];
34478
34568
  /** @description UpdatedAt is set by the server every time the run is written (epoch millis). */
@@ -34486,10 +34576,8 @@ export interface components {
34486
34576
  /** @description producer identifier / editor layer label */
34487
34577
  name?: string;
34488
34578
  nmsIou?: number;
34489
- /**
34490
- * @description RotationApplied indicates whether boxes are against the rotated/oriented
34491
- * frame. Defaults to true on the wire; a nil pointer is treated as true.
34492
- */
34579
+ /** @description RotationApplied indicates whether boxes are against the rotated/oriented
34580
+ * frame. Defaults to true on the wire; a nil pointer is treated as true. */
34493
34581
  rotationApplied?: boolean;
34494
34582
  /** @description ULID/UUID; upsert key */
34495
34583
  runId?: string;
@@ -34515,21 +34603,17 @@ export interface components {
34515
34603
  agentLastSeen?: number;
34516
34604
  /** @description Deprecated - to be removed */
34517
34605
  analytics?: components["schemas"]["models.DeprecatedHeartbeat"][];
34518
- /**
34519
- * @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
34606
+ /** @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
34520
34607
  * more verbose information about the device's current state, capabilities, or configuration.
34521
- * for example the linked sites details, etc.
34522
- */
34608
+ * for example the linked sites details, etc. */
34523
34609
  atRuntimeMetadata?: components["schemas"]["models.DeviceAtRuntimeMetadata"];
34524
34610
  /** @description Audit information */
34525
34611
  audit?: components["schemas"]["models.Audit"];
34526
34612
  /** @description Device Specific Metadata */
34527
34613
  cameraMetadata?: components["schemas"]["models.CameraMetadata"];
34528
- /**
34529
- * @description Device status
34614
+ /** @description Device status
34530
34615
  * Note: Status is used to identify the status of the device, such as online, offline, maintenance, etc."
34531
- * LastSeenTimestamp is used to identify the last time the device was seen online.
34532
- */
34616
+ * LastSeenTimestamp is used to identify the last time the device was seen online. */
34533
34617
  connectionStart?: number;
34534
34618
  /** @description Type of deployment used e.g. "factory", "docker", "docker compose", "kubernetes" */
34535
34619
  deployment?: string;
@@ -34537,13 +34621,11 @@ export interface components {
34537
34621
  deviceLastSeen?: number;
34538
34622
  /** @description threshold in milliseconds to consider a device offline, based on agentLastSeen */
34539
34623
  disconnectedThreshold?: number;
34540
- /**
34541
- * @description FeaturePermissions is used to identify the permissions of the device, such as read, write, delete, etc.
34624
+ /** @description FeaturePermissions is used to identify the permissions of the device, such as read, write, delete, etc.
34542
34625
  * It is a map of feature names to permissions.
34543
34626
  * For example, "camera" can have permissions like "read", "write", "delete", etc.
34544
34627
  * This allows for fine-grained control over what features are accessible by users or groups.
34545
- * FeaturePermissions can be used to implement Role-Based Access Control (RBAC) for devices.
34546
- */
34628
+ * FeaturePermissions can be used to implement Role-Based Access Control (RBAC) for devices. */
34547
34629
  featurePermissions?: components["schemas"]["models.DeviceFeaturePermissions"];
34548
34630
  gpsMetadata?: components["schemas"]["models.GPSMetadata"];
34549
34631
  groupIds?: string[];
@@ -34553,11 +34635,9 @@ export interface components {
34553
34635
  id?: string;
34554
34636
  /** @description threshold in milliseconds to consider a device idle, based on deviceLastSeen */
34555
34637
  idleThreshold?: number;
34556
- /**
34557
- * @description Device information
34638
+ /** @description Device information
34558
34639
  * Note: DeviceId is a unique identifier for the device, it can be used to identify the device in the system.
34559
- * DeviceType is used to identify the type of device, such as camera, sensor, access control, etc.
34560
- */
34640
+ * DeviceType is used to identify the type of device, such as camera, sensor, access control, etc. */
34561
34641
  key?: string;
34562
34642
  /** @description Latest Media information */
34563
34643
  latestMedia?: components["schemas"]["models.Media"];
@@ -34570,26 +34650,20 @@ export interface components {
34570
34650
  metadata?: components["schemas"]["models.DeviceMetadata"];
34571
34651
  /** @description e.g. "Front Door Camera" */
34572
34652
  name?: string;
34573
- /**
34574
- * @description RBAC information
34653
+ /** @description RBAC information
34575
34654
  * Note: SiteId is used to identify the site where the device is located.
34576
34655
  * GroupId is used to identify the group of devices.
34577
34656
  * OrganisationId is used to identify the organisation that owns the device.
34578
- * FeaturePermissions is used to identify the permissions of the device, such as read, write, delete, etc.
34579
- */
34657
+ * FeaturePermissions is used to identify the permissions of the device, such as read, write, delete, etc. */
34580
34658
  organisationId?: string;
34581
- /**
34582
- * @description ProjectId optionally places the device in a project within its
34583
- * organisation. A nil value keeps the device organisation-wide. It narrows
34584
- * access on top of OrganisationId; it never replaces it.
34585
- */
34659
+ /** @description ProjectId places the device in exactly one project within its organisation.
34660
+ * A nil or zero legacy value resolves to that organisation's default project;
34661
+ * it does not make the device organisation-wide. */
34586
34662
  projectId?: string;
34587
- /**
34588
- * @description Versioning information
34663
+ /** @description Versioning information
34589
34664
  * Note: Version is used to identify the version of the device software.
34590
34665
  * ReleaseHash is used to identify the release hash of the device software, it can be used to identify the specific build of the device software.
34591
- * Deployment is used to identify the deployment type of the device, such as factory, docker, docker compose, kubernetes, etc.
34592
- */
34666
+ * Deployment is used to identify the deployment type of the device, such as factory, docker, docker compose, kubernetes, etc. */
34593
34667
  repository?: string;
34594
34668
  siteIds?: string[];
34595
34669
  /** @description Type of device e.g. "camera", "sensor", "access_control" */
@@ -34739,6 +34813,7 @@ export interface components {
34739
34813
  /** @description Add fields relevant to event stage */
34740
34814
  eventData?: string;
34741
34815
  name?: string;
34816
+ sourceDevice?: components["schemas"]["models.PipelineSourceDevice"];
34742
34817
  };
34743
34818
  "models.ExportFile": {
34744
34819
  camera_id?: string;
@@ -34756,13 +34831,11 @@ export interface components {
34756
34831
  video_url?: string;
34757
34832
  };
34758
34833
  "models.FaceRedaction": {
34759
- /**
34760
- * @description CaseMediaId back-references the case_media entry (role=edit,
34834
+ /** @description CaseMediaId back-references the case_media entry (role=edit,
34761
34835
  * action=redaction) created when the redaction is submitted. The
34762
34836
  * lifecycle (queued/processing/completed/failed) is owned by that
34763
34837
  * case_media document; this struct only carries the tracks/inputs
34764
- * the user has defined.
34765
- */
34838
+ * the user has defined. */
34766
34839
  caseMediaId?: string;
34767
34840
  id?: string;
34768
34841
  tracks?: components["schemas"]["models.FaceRedactionTrack"][];
@@ -34771,10 +34844,8 @@ export interface components {
34771
34844
  classId?: number;
34772
34845
  classified?: string;
34773
34846
  colorStr?: string[];
34774
- /**
34775
- * @description Confidence, ClassId and Shape preserve track-level provenance from a
34776
- * detection run; empty for tracks created by the editor.
34777
- */
34847
+ /** @description Confidence, ClassId and Shape preserve track-level provenance from a
34848
+ * detection run; empty for tracks created by the editor. */
34778
34849
  confidence?: number;
34779
34850
  deletedFrames?: number[];
34780
34851
  /** @description frame -> [x1, y1, x2, y2] */
@@ -34974,17 +35045,13 @@ export interface components {
34974
35045
  name?: string;
34975
35046
  /** @description RBAC information */
34976
35047
  organisationId?: string;
34977
- /**
34978
- * @description ProjectId optionally places the group in a project within its organisation.
34979
- * A nil value keeps the group organisation-wide.
34980
- */
35048
+ /** @description ProjectId optionally places the group in a project within its organisation.
35049
+ * A nil value keeps the group organisation-wide. */
34981
35050
  projectId?: string;
34982
35051
  /** @description Nested sites */
34983
35052
  sites?: string[];
34984
- /**
34985
- * @description Media file information (by default "vault", however might change
34986
- * in the future (integration with other storage solutions, next to Vault).
34987
- */
35053
+ /** @description Media file information (by default "vault", however might change
35054
+ * in the future (integration with other storage solutions, next to Vault). */
34988
35055
  storageSolution?: string;
34989
35056
  /** @description Deprecated */
34990
35057
  user_id?: string;
@@ -35008,11 +35075,9 @@ export interface components {
35008
35075
  value?: string;
35009
35076
  };
35010
35077
  "models.Health": {
35011
- /**
35012
- * @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
35078
+ /** @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
35013
35079
  * more verbose information about the device's current state, capabilities, or configuration.
35014
- * for example the linked sites details, etc.
35015
- */
35080
+ * for example the linked sites details, etc. */
35016
35081
  atRuntimeMetadata?: components["schemas"]["models.HealthAtRuntimeMetadata"];
35017
35082
  /** @description Audit information */
35018
35083
  audit?: components["schemas"]["models.Audit"];
@@ -35089,10 +35154,8 @@ export interface components {
35089
35154
  /** @description last time the IO was seen */
35090
35155
  lastSeenTimestamp?: number;
35091
35156
  organisationId?: string;
35092
- /**
35093
- * @description ProjectId optionally places the IO in a project within its organisation.
35094
- * A nil value keeps the IO organisation-wide.
35095
- */
35157
+ /** @description ProjectId optionally places the IO in a project within its organisation.
35158
+ * A nil value keeps the IO organisation-wide. */
35096
35159
  projectId?: string;
35097
35160
  /** @description input or output */
35098
35161
  type?: string;
@@ -35119,10 +35182,8 @@ export interface components {
35119
35182
  name?: string;
35120
35183
  organisationId?: string;
35121
35184
  owner_id?: string;
35122
- /**
35123
- * @description ProjectId optionally places the label in a project within its organisation.
35124
- * A nil value keeps the label organisation-wide.
35125
- */
35185
+ /** @description ProjectId optionally places the label in a project within its organisation.
35186
+ * A nil value keeps the label organisation-wide. */
35126
35187
  projectId?: string;
35127
35188
  type?: string[];
35128
35189
  user_id?: string;
@@ -35154,11 +35215,9 @@ export interface components {
35154
35215
  name?: string;
35155
35216
  };
35156
35217
  "models.Marker": {
35157
- /**
35158
- * @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
35218
+ /** @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
35159
35219
  * more verbose information about the device's current state, capabilities, or configuration.
35160
- * for example the linked sites details, etc.
35161
- */
35220
+ * for example the linked sites details, etc. */
35162
35221
  atRuntimeMetadata?: components["schemas"]["models.MarkerAtRuntimeMetadata"];
35163
35222
  /** @description Audit information */
35164
35223
  audit?: components["schemas"]["models.Audit"];
@@ -35169,12 +35228,10 @@ export interface components {
35169
35228
  * @example Person forcably opened a door
35170
35229
  */
35171
35230
  description?: string;
35172
- /**
35173
- * @description Detections links this marker to the detection track(s) it was derived from,
35231
+ /** @description Detections links this marker to the detection track(s) it was derived from,
35174
35232
  * enabling on-demand bounding-box overlays on the recording. Each entry points
35175
35233
  * at a stored detection track (see DetectionRef). A marker usually links to a
35176
- * single track but may reference several; empty when no detection link is known.
35177
- */
35234
+ * single track but may reference several; empty when no detection link is known. */
35178
35235
  detections?: components["schemas"]["models.DetectionRef"][];
35179
35236
  /**
35180
35237
  * @description RBAC information
@@ -35228,10 +35285,8 @@ export interface components {
35228
35285
  * @example 686a906345c1df594pad69f0
35229
35286
  */
35230
35287
  organisationId?: string;
35231
- /**
35232
- * @description ProjectId optionally places the marker in a project within its organisation.
35233
- * A nil value keeps the marker organisation-wide.
35234
- */
35288
+ /** @description ProjectId optionally places the marker in a project within its organisation.
35289
+ * A nil value keeps the marker organisation-wide. */
35235
35290
  projectId?: string;
35236
35291
  /**
35237
35292
  * @description SiteId is used to identify the site where the marker is located
@@ -35372,10 +35427,8 @@ export interface components {
35372
35427
  startTimestamp?: number;
35373
35428
  };
35374
35429
  "models.MarkerMetadata": {
35375
- /**
35376
- * @description BoundingBox is the normalized [0,1] region of the detection within the frame,
35377
- * suitable for drawing overlays. Nil when no spatial information is available.
35378
- */
35430
+ /** @description BoundingBox is the normalized [0,1] region of the detection within the frame,
35431
+ * suitable for drawing overlays. Nil when no spatial information is available. */
35379
35432
  boundingBox?: components["schemas"]["models.MarkerBox"];
35380
35433
  /** @description Additional comments or description of the marker */
35381
35434
  comments?: components["schemas"]["models.Comment"];
@@ -35399,11 +35452,9 @@ export interface components {
35399
35452
  * @example v1.4.0
35400
35453
  */
35401
35454
  modelVersion?: string;
35402
- /**
35403
- * @description Raw is an escape hatch for pipeline-specific metadata that does not warrant a
35455
+ /** @description Raw is an escape hatch for pipeline-specific metadata that does not warrant a
35404
35456
  * first-class field. Values here are not indexed or validated; promote anything
35405
- * you need to query into a typed field instead.
35406
- */
35457
+ * you need to query into a typed field instead. */
35407
35458
  raw?: {
35408
35459
  [key: string]: unknown;
35409
35460
  };
@@ -35453,11 +35504,9 @@ export interface components {
35453
35504
  };
35454
35505
  "models.MarkerSummary": {
35455
35506
  categoryNames?: string[];
35456
- /**
35457
- * @description Detections mirrors the source marker's Detections so the frontend can map a
35507
+ /** @description Detections mirrors the source marker's Detections so the frontend can map a
35458
35508
  * summarised marker to its detection track(s) — and toggle their bounding-box
35459
- * overlay — without a second query. Empty when the marker has no detection link.
35460
- */
35509
+ * overlay — without a second query. Empty when the marker has no detection link. */
35461
35510
  detections?: components["schemas"]["models.DetectionRef"][];
35462
35511
  endTimestamp?: number;
35463
35512
  eventNames?: string[];
@@ -35509,22 +35558,18 @@ export interface components {
35509
35558
  markers?: components["schemas"]["models.MarkerGroup"][];
35510
35559
  };
35511
35560
  "models.Media": {
35512
- /**
35513
- * @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
35561
+ /** @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
35514
35562
  * more verbose information about the device's current state, capabilities, or configuration.
35515
- * for example the linked sites details, etc.
35516
- */
35563
+ * for example the linked sites details, etc. */
35517
35564
  atRuntimeMetadata?: components["schemas"]["models.MediaAtRuntimeMetadata"];
35518
35565
  /** @description Audit information */
35519
35566
  audit?: components["schemas"]["models.Audit"];
35520
35567
  categoryNames?: string[];
35521
35568
  classificationSummary?: components["schemas"]["models.ClassificationSummary"][];
35522
35569
  countingSummary?: components["schemas"]["models.CountingSummary"][];
35523
- /**
35524
- * @description RBAC information
35570
+ /** @description RBAC information
35525
35571
  * DeviceId is a unique identifier for the device, it can be used to identify the device in the system.
35526
- * OrganisationId is used to identify the organisation that owns the device.
35527
- */
35572
+ * OrganisationId is used to identify the organisation that owns the device. */
35528
35573
  deviceId?: string;
35529
35574
  /** @description device identifier */
35530
35575
  deviceKey?: string;
@@ -35533,36 +35578,33 @@ export interface components {
35533
35578
  duration?: number;
35534
35579
  endTimestamp?: number;
35535
35580
  eventNames?: string[];
35581
+ forwardedAt?: number;
35536
35582
  groupId?: string;
35537
35583
  /** @description Unique identifier for the media file */
35538
35584
  id?: string;
35539
35585
  markerNames?: string[];
35540
- /**
35541
- * @description MarkerSummary is a per-occurrence denormalisation of the markers that overlap
35586
+ /** @description MarkerSummary is a per-occurrence denormalisation of the markers that overlap
35542
35587
  * this media. Unlike the flat markerNames/eventNames/tagNames/categoryNames
35543
35588
  * arrays that back filtering, each entry preserves the correlation between a
35544
35589
  * single marker's name, its category/event/tag names and its time range, for
35545
- * display/detail rendering (icons, listings).
35546
- */
35590
+ * display/detail rendering (icons, listings). */
35547
35591
  markerSummary?: components["schemas"]["models.MarkerSummary"][];
35548
35592
  /** @description Metadata */
35549
35593
  metadata?: components["schemas"]["models.MediaMetadata"];
35550
35594
  organisationId?: string;
35551
- /**
35552
- * @description ProjectId optionally places the media in a project within its organisation.
35553
- * A nil value keeps the media organisation-wide.
35554
- */
35595
+ /** @description ProjectId optionally places the media in a project within its organisation.
35596
+ * A nil value keeps the media organisation-wide. */
35555
35597
  projectId?: string;
35556
35598
  siteId?: string;
35599
+ sourceMediaId?: string;
35600
+ sourceVaultId?: string;
35557
35601
  spriteFile?: string;
35558
35602
  spriteProvider?: string;
35559
35603
  star?: boolean;
35560
35604
  /** @description Time window of media file. */
35561
35605
  startTimestamp?: number;
35562
- /**
35563
- * @description Media file information (by default "vault", however might change
35564
- * in the future (integration with other storage solutions, next to Vault).
35565
- */
35606
+ /** @description Media file information (by default "vault", however might change
35607
+ * in the future (integration with other storage solutions, next to Vault). */
35566
35608
  storageSolution?: string;
35567
35609
  tagNames?: string[];
35568
35610
  thumbnailFile?: string;
@@ -35692,10 +35734,8 @@ export interface components {
35692
35734
  notification_type?: string;
35693
35735
  number_of_media?: string;
35694
35736
  organisationId?: string;
35695
- /**
35696
- * @description ProjectId optionally places the message in a project within its organisation.
35697
- * A nil value keeps the message organisation-wide.
35698
- */
35737
+ /** @description ProjectId optionally places the message in a project within its organisation.
35738
+ * A nil value keeps the message organisation-wide. */
35699
35739
  projectId?: string;
35700
35740
  sequence_id?: string;
35701
35741
  sites?: components["schemas"]["models.Site"][];
@@ -35714,31 +35754,25 @@ export interface components {
35714
35754
  userid?: string;
35715
35755
  };
35716
35756
  "models.Model": {
35717
- /**
35718
- * @description AtRuntimeMetadata are computed or dynamic information about the model that is relevant during its usage or processing.
35757
+ /** @description AtRuntimeMetadata are computed or dynamic information about the model that is relevant during its usage or processing.
35719
35758
  * This information is generated at run time and is not stored into the database. All other information of the model is persisted into the database.
35720
35759
  * and is not altered during runtime.
35721
35760
  * e.g.
35722
35761
  * Media model -> signed URLS for accessing the media, processing status, etc.
35723
- * Device model -> current status (active, inactive), etc.
35724
- */
35762
+ * Device model -> current status (active, inactive), etc. */
35725
35763
  atRuntimeMetadata?: components["schemas"]["models.MediaAtRuntimeMetadata"];
35726
- /**
35727
- * @description Audit information: every model should have audit information to track its creation and modification history.
35728
- * This is important for maintaining data integrity and accountability.
35729
- */
35764
+ /** @description Audit information: every model should have audit information to track its creation and modification history.
35765
+ * This is important for maintaining data integrity and accountability. */
35730
35766
  audit?: components["schemas"]["models.Audit"];
35731
35767
  /** @description Unique identifier for the model, this is used to retrieve the model from the database by its unique ID. */
35732
35768
  id?: string;
35733
- /**
35734
- * @description Metadata is additional information about the model that is not critical for its primary function,
35769
+ /** @description Metadata is additional information about the model that is not critical for its primary function,
35735
35770
  * but can provide useful context or details.
35736
35771
  * e.g.
35737
35772
  * User model -> profile information, preferences, etc.
35738
35773
  * Device model -> location, installation date, etc.
35739
35774
  * Media model -> tags, description, etc.
35740
- * Marker model -> comments, tags, etc.
35741
- */
35775
+ * Marker model -> comments, tags, etc. */
35742
35776
  metadata?: components["schemas"]["models.MediaMetadata"];
35743
35777
  };
35744
35778
  "models.ModelOption": {
@@ -35750,10 +35784,8 @@ export interface components {
35750
35784
  highUpload?: components["schemas"]["models.HighUpload"];
35751
35785
  monitorData?: string;
35752
35786
  name?: string;
35753
- /**
35754
- * @description OrganisationId and ProjectId snapshot the stored source device's ownership;
35755
- * nested user and payload fields are mutable actor/request context instead.
35756
- */
35787
+ /** @description OrganisationId and ProjectId snapshot the stored source device's ownership;
35788
+ * nested user and payload fields are mutable actor/request context instead. */
35757
35789
  organisationId?: string;
35758
35790
  plans?: {
35759
35791
  [key: string]: components["schemas"]["models.Plan"];
@@ -35788,10 +35820,8 @@ export interface components {
35788
35820
  notification_type?: string;
35789
35821
  number_of_media?: string;
35790
35822
  organisationId?: string;
35791
- /**
35792
- * @description ProjectId optionally places the message in a project within its organisation.
35793
- * A nil value keeps the message organisation-wide.
35794
- */
35823
+ /** @description ProjectId optionally places the message in a project within its organisation.
35824
+ * A nil value keeps the message organisation-wide. */
35795
35825
  projectId?: string;
35796
35826
  sequence_id?: string;
35797
35827
  sites?: components["schemas"]["models.Site"][];
@@ -35839,11 +35869,9 @@ export interface components {
35839
35869
  /** @description The user who owns this organisation */
35840
35870
  ownerId?: string;
35841
35871
  settings?: components["schemas"]["models.OrganisationSettings"];
35842
- /**
35843
- * @description Slug is a stable, URL-friendly handle for the organisation (e.g. "acme-corp").
35872
+ /** @description Slug is a stable, URL-friendly handle for the organisation (e.g. "acme-corp").
35844
35873
  * It is unique and decoupled from the display Name so it can be used in URLs
35845
- * and references without breaking when the name changes.
35846
- */
35874
+ * and references without breaking when the name changes. */
35847
35875
  slug?: string;
35848
35876
  /** @description Billing & Subscription */
35849
35877
  subscription?: components["schemas"]["models.Subscription"];
@@ -35863,13 +35891,11 @@ export interface components {
35863
35891
  organisationId?: string;
35864
35892
  /** @description Roles to assign upon acceptance */
35865
35893
  roleIds?: string[];
35866
- /**
35867
- * @description Scope is the granular scope applied to every role in RoleIds when the
35894
+ /** @description Scope is the granular scope applied to every role in RoleIds when the
35868
35895
  * invitation is accepted, i.e. it seeds the Scope of each resulting
35869
35896
  * RoleAssignment. Following the RoleAssignmentScope convention, a zero value
35870
35897
  * grants the roles organisation-wide; populate a dimension to restrict the
35871
- * resulting assignments to specific resources (see RoleAssignmentScope).
35872
- */
35898
+ * resulting assignments to specific resources (see RoleAssignmentScope). */
35873
35899
  scope?: components["schemas"]["models.RoleAssignmentScope"];
35874
35900
  status?: components["schemas"]["models.InvitationStatus"];
35875
35901
  token?: string;
@@ -35901,10 +35927,8 @@ export interface components {
35901
35927
  primaryContact?: components["schemas"]["models.Contact"];
35902
35928
  /** @description Technical/support contact */
35903
35929
  technicalContact?: components["schemas"]["models.Contact"];
35904
- /**
35905
- * @description Regional defaults applied across the organisation for display, scheduling
35906
- * and billing.
35907
- */
35930
+ /** @description Regional defaults applied across the organisation for display, scheduling
35931
+ * and billing. */
35908
35932
  timezone?: string;
35909
35933
  };
35910
35934
  "models.OrganisationUpdate": {
@@ -35920,11 +35944,9 @@ export interface components {
35920
35944
  };
35921
35945
  "models.OrganisationUser": {
35922
35946
  audit?: components["schemas"]["models.Audit"];
35923
- /**
35924
- * @description ExpiresAt optionally bounds the membership in time. It is an overlay on
35947
+ /** @description ExpiresAt optionally bounds the membership in time. It is an overlay on
35925
35948
  * Status: a membership is only effectively active when Status is
35926
- * MembershipStatusActive AND ExpiresAt is unset or in the future.
35927
- */
35949
+ * MembershipStatusActive AND ExpiresAt is unset or in the future. */
35928
35950
  expiresAt?: string;
35929
35951
  id?: string;
35930
35952
  invitedAt?: string;
@@ -35967,11 +35989,9 @@ export interface components {
35967
35989
  };
35968
35990
  date?: number;
35969
35991
  eventStage?: components["schemas"]["models.EventStage"];
35970
- /**
35971
- * @description Stages of the pipeline, e.g., event, monitor, sequence, analysis, throttler, notification
35992
+ /** @description Stages of the pipeline, e.g., event, monitor, sequence, analysis, throttler, notification
35972
35993
  * Idea is that we persist relevant data in each stage, so we have a good understanding what is used
35973
- * or computed at which stage.
35974
- */
35994
+ * or computed at which stage. */
35975
35995
  events?: string[];
35976
35996
  fileName?: string;
35977
35997
  monitorStage?: components["schemas"]["models.MonitorStage"];
@@ -36010,6 +36030,7 @@ export interface components {
36010
36030
  deviceName?: string;
36011
36031
  duration?: string;
36012
36032
  fileSize?: number;
36033
+ forwardedAt?: number;
36013
36034
  /** @description MP4 fragmentation */
36014
36035
  is_fragmented?: boolean;
36015
36036
  key?: string;
@@ -36017,18 +36038,26 @@ export interface components {
36017
36038
  metadata?: components["schemas"]["models.PipelineMetadata"];
36018
36039
  /** @description RBAC */
36019
36040
  organisationId?: string;
36020
- /**
36021
- * @description Result is the typed result a producer stage hands back for a delegated
36041
+ /** @description Result is the typed result a producer stage hands back for a delegated
36022
36042
  * ingest handler (e.g. a DetectionRun-shaped body). It is the result
36023
36043
  * channel the ingest core reads from — distinct from the deprecated
36024
36044
  * PipelineEvent.Data bag, which only carries storage credentials on
36025
- * dispatch and must not be used to carry results.
36026
- */
36045
+ * dispatch and must not be used to carry results. */
36027
36046
  result?: number[];
36028
36047
  /** @description Signed URL */
36029
36048
  signedUrl?: string;
36049
+ sourceMediaId?: string;
36050
+ sourceVaultId?: string;
36030
36051
  timestamp?: number;
36031
36052
  };
36053
+ "models.PipelineSourceDevice": {
36054
+ cloudKey?: string;
36055
+ deviceId?: string;
36056
+ deviceKey?: string;
36057
+ organisationId?: string;
36058
+ ownerUserId?: string;
36059
+ projectId?: string;
36060
+ };
36032
36061
  "models.Plan": {
36033
36062
  /** @description AnalysisLimit is the maximum number of analysis operations allowed */
36034
36063
  analysisLimit?: number;
@@ -36052,7 +36081,9 @@ export interface components {
36052
36081
  };
36053
36082
  "models.Project": {
36054
36083
  audit?: components["schemas"]["models.Audit"];
36084
+ dates?: string[];
36055
36085
  description?: string;
36086
+ hasPincode?: boolean;
36056
36087
  id?: string;
36057
36088
  isActive?: boolean;
36058
36089
  name?: string;
@@ -36103,22 +36134,18 @@ export interface components {
36103
36134
  isActive?: boolean;
36104
36135
  /** @description Organisation this role belongs to */
36105
36136
  organisationId?: string;
36106
- /**
36107
- * @description Pages and FeaturePermissions are two orthogonal authorization axes:
36137
+ /** @description Pages and FeaturePermissions are two orthogonal authorization axes:
36108
36138
  * - Pages controls which UI/nav pages are visible (coarse allow-list).
36109
36139
  * - FeaturePermissions controls the CRUD AccessLevel per feature.
36110
36140
  * Some names appear in both (e.g. sites/groups/roles/settings); that overlap
36111
36141
  * is intentional - visibility and capability are decided independently, and
36112
36142
  * the consuming service resolves them together (page hidden => not shown;
36113
- * feature level => what may be done once on the page).
36114
- */
36143
+ * feature level => what may be done once on the page). */
36115
36144
  pages?: string[];
36116
- /**
36117
- * @description ParentRole is the built-in BaseRole tier this custom role extends. It is a
36145
+ /** @description ParentRole is the built-in BaseRole tier this custom role extends. It is a
36118
36146
  * live tier identifier (NOT an ObjectID reference to another Role document):
36119
36147
  * it sets the effective tier/RoleLevel for coarse gating and bounds which
36120
- * pages the role may grant. See BaseRole.
36121
- */
36148
+ * pages the role may grant. See BaseRole. */
36122
36149
  role?: components["schemas"]["models.BaseRole"];
36123
36150
  roleName?: string;
36124
36151
  timeWindow?: components["schemas"]["models.TimeWindow"];
@@ -36126,11 +36153,9 @@ export interface components {
36126
36153
  };
36127
36154
  "models.RoleAssignment": {
36128
36155
  audit?: components["schemas"]["models.Audit"];
36129
- /**
36130
- * @description ExpiresAt optionally bounds the assignment in time. It is an overlay on
36156
+ /** @description ExpiresAt optionally bounds the assignment in time. It is an overlay on
36131
36157
  * IsActive: an assignment is only effectively active when IsActive is true
36132
- * AND ExpiresAt is unset or in the future. Use IsEffectivelyActive().
36133
- */
36158
+ * AND ExpiresAt is unset or in the future. Use IsEffectivelyActive(). */
36134
36159
  expiresAt?: string;
36135
36160
  id?: string;
36136
36161
  /** @description Administrative enable/disable switch (independent of expiry) */
@@ -36169,10 +36194,8 @@ export interface components {
36169
36194
  images?: components["schemas"]["models.Media"][];
36170
36195
  notified?: boolean;
36171
36196
  organisationId?: string;
36172
- /**
36173
- * @description ProjectId optionally places the sequence in a project within its organisation.
36174
- * A nil value keeps the sequence organisation-wide.
36175
- */
36197
+ /** @description ProjectId optionally places the sequence in a project within its organisation.
36198
+ * A nil value keeps the sequence organisation-wide. */
36176
36199
  projectId?: string;
36177
36200
  start?: number;
36178
36201
  user_id?: string;
@@ -36221,17 +36244,13 @@ export interface components {
36221
36244
  name?: string;
36222
36245
  /** @description RBAC information */
36223
36246
  organisationId?: string;
36224
- /**
36225
- * @description ProjectId optionally places the site in a project within its organisation.
36226
- * A nil value keeps the site organisation-wide.
36227
- */
36247
+ /** @description ProjectId optionally places the site in a project within its organisation.
36248
+ * A nil value keeps the site organisation-wide. */
36228
36249
  projectId?: string;
36229
36250
  secret_key?: string;
36230
36251
  storage_uri?: string;
36231
- /**
36232
- * @description Media file information (by default "vault", however might change
36233
- * in the future (integration with other storage solutions, next to Vault).
36234
- */
36252
+ /** @description Media file information (by default "vault", however might change
36253
+ * in the future (integration with other storage solutions, next to Vault). */
36235
36254
  storageSolution?: string;
36236
36255
  /** @description Deprecated */
36237
36256
  user_id?: string;
@@ -36284,20 +36303,16 @@ export interface components {
36284
36303
  value?: unknown;
36285
36304
  };
36286
36305
  "models.StageDependency": {
36287
- /**
36288
- * @description Condition is the predicate evaluated against the run root. Nil means the
36289
- * need matches as soon as its gate (if any) is satisfied.
36290
- */
36306
+ /** @description Condition is the predicate evaluated against the run root. Nil means the
36307
+ * need matches as soon as its gate (if any) is satisfied. */
36291
36308
  condition?: components["schemas"]["models.StageCondition"];
36292
- /**
36293
- * @description Operation is the id of the operation whose presence gates this need: it must
36309
+ /** @description Operation is the id of the operation whose presence gates this need: it must
36294
36310
  * be available on the run — present in Inputs or Results — before the need's
36295
36311
  * Condition is evaluated. It is an operation id, not necessarily a deployed
36296
36312
  * stage: the most common gate, "classify", is the analysis trigger (it arrives
36297
36313
  * in Inputs at open), not a stage. Empty means the need is ungated: a check on
36298
36314
  * the run root itself (device/user/identity, or an input present from open),
36299
- * evaluated as soon as the run opens with nothing to wait for.
36300
- */
36315
+ * evaluated as soon as the run opens with nothing to wait for. */
36301
36316
  operation?: string;
36302
36317
  };
36303
36318
  "models.StageParam": {
@@ -36325,11 +36340,9 @@ export interface components {
36325
36340
  requests?: components["schemas"]["models.StageResourceList"];
36326
36341
  };
36327
36342
  "models.State": {
36328
- /**
36329
- * @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
36343
+ /** @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
36330
36344
  * more verbose information about the device's current state, capabilities, or configuration.
36331
- * for example the linked sites details, etc.
36332
- */
36345
+ * for example the linked sites details, etc. */
36333
36346
  atRuntimeMetadata?: components["schemas"]["models.StateAtRuntimeMetadata"];
36334
36347
  /** @description Audit information */
36335
36348
  audit?: components["schemas"]["models.Audit"];
@@ -36470,8 +36483,7 @@ export interface components {
36470
36483
  /** @description legacy: read by v20130101 only */
36471
36484
  export_files?: components["schemas"]["models.ExportFile"][];
36472
36485
  export_files_count?: number;
36473
- /**
36474
- * @description ExportHeartbeatAgeSeconds is computed at API response time
36486
+ /** @description ExportHeartbeatAgeSeconds is computed at API response time
36475
36487
  * (NOT persisted — bson:"-") and ships the server-side delta
36476
36488
  * between now and ExportUpdatedAt so the frontend can render a
36477
36489
  * "stuck" state without depending on the user's local clock
@@ -36480,46 +36492,39 @@ export interface components {
36480
36492
  * (legacy / pre-feature tasks); a zero value means the heartbeat
36481
36493
  * was just written. The FE only interprets this field in
36482
36494
  * combination with the in-flight signal — see isExportActive
36483
- * and getExportUiState for the rule.
36484
- */
36495
+ * and getExportUiState for the rule. */
36485
36496
  export_heartbeat_age_seconds?: number;
36486
36497
  export_in_progress?: boolean;
36487
36498
  /** @description "0% -> 100%" */
36488
36499
  export_progress?: number;
36489
36500
  export_requested?: boolean;
36490
36501
  export_revision?: number;
36491
- /**
36492
- * @description ExportSelectionDirty signals that the curated bundle composition
36502
+ /** @description ExportSelectionDirty signals that the curated bundle composition
36493
36503
  * (include_in_export flags on case_media / attachments, or a newly
36494
36504
  * added media row) changed since the last successful export
36495
36505
  * completion. Bumped to true by curation toggles and media inserts
36496
36506
  * in hub-api; cleared by hub-pipeline-export in CompleteExport.
36497
36507
  * The FE uses this to disable the Regenerate action when no
36498
36508
  * changes are pending and to surface a "selection changed" hint
36499
- * next to the export status badge.
36500
- */
36509
+ * next to the export status badge. */
36501
36510
  export_selection_dirty?: boolean;
36502
36511
  /** @description An export task, is containing multiple video in a compressed file format (.zip) */
36503
36512
  export_status?: string;
36504
- /**
36505
- * @description ExportUpdatedAt is a heartbeat written by hub-pipeline-export
36513
+ /** @description ExportUpdatedAt is a heartbeat written by hub-pipeline-export
36506
36514
  * every time it transitions the export state (claim, status
36507
36515
  * updates, per-file download, release, complete) and by hub-api
36508
36516
  * when a new export run is requested. It lets the API detect
36509
36517
  * orphaned runs whose worker died without releasing the lock:
36510
36518
  * when (now - ExportUpdatedAt) exceeds the staleness threshold,
36511
36519
  * isExportActive treats the lock as released so the user can
36512
- * retry instead of being blocked by a 409 forever.
36513
- */
36520
+ * retry instead of being blocked by a 409 forever. */
36514
36521
  export_updated_at?: string;
36515
36522
  id?: string;
36516
36523
  is_private?: boolean;
36517
36524
  labels?: string[];
36518
36525
  legal_hold?: boolean;
36519
- /**
36520
- * @description Number of source case_media rows attached to this task. Mirrors
36521
- * case_media documents where role == "source" and task_id matches.
36522
- */
36526
+ /** @description Number of source case_media rows attached to this task. Mirrors
36527
+ * case_media documents where role == "source" and task_id matches. */
36523
36528
  media_count?: number;
36524
36529
  media_date?: string;
36525
36530
  media_datetime?: string;
@@ -36530,16 +36535,13 @@ export interface components {
36530
36535
  notes_short?: string;
36531
36536
  notify_assignees?: boolean;
36532
36537
  organisationId?: string;
36533
- /**
36534
- * @description ProjectId optionally places the case/task in a project within its organisation.
36535
- * A nil value keeps it organisation-wide.
36536
- */
36538
+ /** @description ProjectId optionally places the case/task in a project within its organisation.
36539
+ * A nil value keeps it organisation-wide. */
36537
36540
  projectId?: string;
36538
36541
  reporter_email?: string;
36539
36542
  reporter_id?: string;
36540
36543
  reporter_profile?: string;
36541
- /**
36542
- * @description Retention / lifecycle.
36544
+ /** @description Retention / lifecycle.
36543
36545
  *
36544
36546
  * RetentionDays captures the *policy intent*: how many days the
36545
36547
  * case should be kept after its retention anchor (typically the
@@ -36566,8 +36568,7 @@ export interface components {
36566
36568
  * regardless of ExpiresAt. It is intentionally a separate flag
36567
36569
  * from the retention date so audits can distinguish "kept longer
36568
36570
  * because investigator extended" from "kept because under legal
36569
- * hold". Managed by a dedicated permission.
36570
- */
36571
+ * hold". Managed by a dedicated permission. */
36571
36572
  retention_days?: number;
36572
36573
  sequenceId?: string;
36573
36574
  sprite_url?: string;
@@ -36584,10 +36585,8 @@ export interface components {
36584
36585
  title?: string;
36585
36586
  user_id?: string;
36586
36587
  username?: string;
36587
- /**
36588
- * @description This is used for a single export, for a bulk export, we will use the first video as thumbnail and sprite.
36589
- * Referencing to some media: video, thumbnail and sprite
36590
- */
36588
+ /** @description This is used for a single export, for a bulk export, we will use the first video as thumbnail and sprite.
36589
+ * Referencing to some media: video, thumbnail and sprite */
36591
36590
  video_url?: string;
36592
36591
  videoFile?: string;
36593
36592
  videoProvider?: string;
@@ -36736,10 +36735,8 @@ export interface components {
36736
36735
  };
36737
36736
  "models.TrackBox": {
36738
36737
  classId?: number;
36739
- /**
36740
- * @description Confidence, ClassId and Label preserve the producer's per-box model
36741
- * output so a stored detection run can be re-thresholded or audited later.
36742
- */
36738
+ /** @description Confidence, ClassId and Label preserve the producer's per-box model
36739
+ * output so a stored detection run can be re-thresholded or audited later. */
36743
36740
  confidence?: number;
36744
36741
  edited?: boolean;
36745
36742
  label?: string;
@@ -36977,9 +36974,11 @@ export interface components {
36977
36974
  finished?: boolean;
36978
36975
  forward_timestamp?: number;
36979
36976
  forwarded?: boolean;
36977
+ forwarded_at?: number;
36980
36978
  forwarder_id?: string;
36981
36979
  forwarder_type?: string;
36982
36980
  forwarder_worker?: string;
36981
+ id?: string;
36983
36982
  main_provider?: boolean;
36984
36983
  metadata?: components["schemas"]["models.VaultMediaMetadata"];
36985
36984
  provider?: string;
@@ -37023,18 +37022,14 @@ export interface components {
37023
37022
  time?: string;
37024
37023
  };
37025
37024
  "models.Videowall": {
37026
- /**
37027
- * @description AllowLayoutEdits lets any signed-in viewer (not just the owner) persist
37028
- * changes to Layout. When false only the owner may save.
37029
- */
37025
+ /** @description AllowLayoutEdits lets any signed-in viewer (not just the owner) persist
37026
+ * changes to Layout. When false only the owner may save. */
37030
37027
  allow_layout_edits?: boolean;
37031
37028
  assigned_users?: string[];
37032
37029
  cameras?: string[];
37033
- /**
37034
- * @description DefaultViewingMode chooses which stream quality the wall loads with:
37030
+ /** @description DefaultViewingMode chooses which stream quality the wall loads with:
37035
37031
  * "preview" (SD) or "live" (HD). Empty defaults to "live". Always clamped
37036
- * to "preview" when Liveview only grants preview permission.
37037
- */
37032
+ * to "preview" when Liveview only grants preview permission. */
37038
37033
  default_viewing_mode?: string;
37039
37034
  description?: string;
37040
37035
  expiration?: number;
@@ -37044,22 +37039,18 @@ export interface components {
37044
37039
  id?: string;
37045
37040
  io?: number;
37046
37041
  isActive?: number;
37047
- /**
37048
- * @description Layout stores a shareable custom arrangement of the wall's camera tiles
37042
+ /** @description Layout stores a shareable custom arrangement of the wall's camera tiles
37049
37043
  * (order + per-tile column/row spans). When nil the wall falls back to the
37050
37044
  * default responsive grid. It travels with the wall so it is shared with
37051
- * everyone the wall is shared with.
37052
- */
37045
+ * everyone the wall is shared with. */
37053
37046
  layout?: components["schemas"]["models.VideowallLayout"];
37054
37047
  liveview?: number;
37055
37048
  master_user_id?: string;
37056
37049
  name?: string;
37057
37050
  organisationId?: string;
37058
37051
  pass_code?: string;
37059
- /**
37060
- * @description ProjectId optionally places the videowall in a project within its
37061
- * organisation. A nil value keeps it organisation-wide.
37062
- */
37052
+ /** @description ProjectId optionally places the videowall in a project within its
37053
+ * organisation. A nil value keeps it organisation-wide. */
37063
37054
  projectId?: string;
37064
37055
  /** @description ForceMFA int `json:"force_mfa" bson:"force_mfa"` */
37065
37056
  ptz?: number;
@@ -37092,10 +37083,8 @@ export interface components {
37092
37083
  timezone?: string;
37093
37084
  };
37094
37085
  "models.Workflow": {
37095
- /**
37096
- * @description Audit carries bounded actor/timestamp metadata for database-backed user
37097
- * workflows. It is omitted from Helm-defined global workflows unless set.
37098
- */
37086
+ /** @description Audit carries bounded actor/timestamp metadata for database-backed user
37087
+ * workflows. It is omitted from Helm-defined global workflows unless set. */
37099
37088
  audit?: components["schemas"]["models.Audit"];
37100
37089
  createdAt?: number;
37101
37090
  description?: string;
@@ -37104,29 +37093,22 @@ export interface components {
37104
37093
  id?: string;
37105
37094
  name?: string;
37106
37095
  nodes?: components["schemas"]["models.WorkflowNode"][];
37107
- /**
37108
- * @description OrganisationId is the canonical tenant key. It is persisted as the
37096
+ /** @description OrganisationId is the canonical tenant key. It is persisted as the
37109
37097
  * camelCase `organisationId` field to match the platform-wide convention for
37110
37098
  * organisation-owned domain resources. Database-backed workflows are not yet
37111
37099
  * materially used in deployments, so new documents start with this canonical
37112
- * contract while readers may retain a legacy `organisation_id` fallback.
37113
- */
37100
+ * contract while readers may retain a legacy `organisation_id` fallback. */
37114
37101
  organisationId?: string;
37115
- /**
37116
- * @description ProjectId optionally places the workflow in a project within its organisation.
37117
- * A nil value keeps the workflow organisation-wide.
37118
- */
37102
+ /** @description ProjectId optionally places the workflow in a project within its organisation.
37103
+ * A nil value keeps the workflow organisation-wide. */
37119
37104
  projectId?: string;
37120
- /**
37121
- * @description Source is the workflow's provenance and availability (see WorkflowSource).
37105
+ /** @description Source is the workflow's provenance and availability (see WorkflowSource).
37122
37106
  * Empty means WorkflowSourceUser: an ordinary user workflow scoped to its
37123
37107
  * OrganisationId. WorkflowSourceConfig marks a Helm-defined, deployment-global,
37124
37108
  * read-only workflow. Every workflow persisted before this field existed
37125
- * decodes as user.
37126
- */
37109
+ * decodes as user. */
37127
37110
  source?: components["schemas"]["models.WorkflowSource"];
37128
- /**
37129
- * @description Stages is the workflow's executable stage set: the runtime-authoritative
37111
+ /** @description Stages is the workflow's executable stage set: the runtime-authoritative
37130
37112
  * projection the engine dispatches against. When set it is used as-is (config
37131
37113
  * workflows author it directly in the helm registry form: operation, dispatch,
37132
37114
  * needs, needsMode); when empty it is derived from Nodes+Edges on demand (UI
@@ -37136,23 +37118,18 @@ export interface components {
37136
37118
  * Only the routing fields (Operation, Dispatch, Needs, NeedsMode) are
37137
37119
  * meaningful here; a stage's deployment fields (image, queue, replicas, …) are
37138
37120
  * resolved by Operation against the shared deployed catalog, not per workflow.
37139
- * Operations need only be unique within a single workflow, not globally.
37140
- */
37121
+ * Operations need only be unique within a single workflow, not globally. */
37141
37122
  stages?: components["schemas"]["models.WorkflowStage"][];
37142
- /**
37143
- * @description Trigger is the legacy single-trigger field kept only so workflows persisted
37123
+ /** @description Trigger is the legacy single-trigger field kept only so workflows persisted
37144
37124
  * before Triggers existed still decode (and are not silently dropped on
37145
37125
  * re-save). New code should read and write Triggers; call NormalizeTriggers to
37146
37126
  * fold any legacy value into Triggers.
37147
37127
  *
37148
- * Deprecated: use Triggers.
37149
- */
37128
+ * Deprecated: use Triggers. */
37150
37129
  trigger?: components["schemas"]["models.WorkflowTrigger"];
37151
- /**
37152
- * @description Triggers is the set of activation modes for this workflow. A workflow may
37130
+ /** @description Triggers is the set of activation modes for this workflow. A workflow may
37153
37131
  * carry both an automatic and a manual trigger so it runs on its own for
37154
- * matching recordings and can also be launched on demand from a surface.
37155
- */
37132
+ * matching recordings and can also be launched on demand from a surface. */
37156
37133
  triggers?: components["schemas"]["models.WorkflowTrigger"][];
37157
37134
  updatedAt?: number;
37158
37135
  userId?: string;
@@ -37169,82 +37146,63 @@ export interface components {
37169
37146
  storageSolution?: string;
37170
37147
  };
37171
37148
  "models.WorkflowEdge": {
37172
- /**
37173
- * @description Condition is the structured predicate evaluated against the source stage's
37149
+ /** @description Condition is the structured predicate evaluated against the source stage's
37174
37150
  * result. Nil means the edge is an unconditional dependency. The edge is the
37175
37151
  * authoring source of truth for routing: this Condition is what compiles into
37176
37152
  * the target stage's Needs[].Condition (see WorkflowStage.Needs), which is the
37177
- * derived runtime projection.
37178
- */
37153
+ * derived runtime projection. */
37179
37154
  condition?: components["schemas"]["models.StageCondition"];
37180
37155
  id?: string;
37181
37156
  source?: string;
37182
- /**
37183
- * @description SourcePort optionally selects which of the source stage's declared Outputs
37157
+ /** @description SourcePort optionally selects which of the source stage's declared Outputs
37184
37158
  * (see WorkflowStage.Outputs) this edge reads; Condition is evaluated against
37185
- * that output's result. Empty means the stage's single implicit default port.
37186
- */
37159
+ * that output's result. Empty means the stage's single implicit default port. */
37187
37160
  sourcePort?: string;
37188
37161
  target?: string;
37189
- /**
37190
- * @description TargetPort optionally selects which of the target stage's declared Inputs
37191
- * (see WorkflowStage.Inputs) this edge feeds. Empty means the default port.
37192
- */
37162
+ /** @description TargetPort optionally selects which of the target stage's declared Inputs
37163
+ * (see WorkflowStage.Inputs) this edge feeds. Empty means the default port. */
37193
37164
  targetPort?: string;
37194
37165
  };
37195
37166
  "models.WorkflowNode": {
37196
- /**
37197
- * @description Data holds optional per-instance parameter values for this placement, keyed
37167
+ /** @description Data holds optional per-instance parameter values for this placement, keyed
37198
37168
  * by parameter name. They are validated against and defaulted from the
37199
37169
  * referenced stage's declared Params (see WorkflowStage.Params), layered over
37200
- * the stage's catalog defaults.
37201
- */
37170
+ * the stage's catalog defaults. */
37202
37171
  data?: {
37203
37172
  [key: string]: unknown;
37204
37173
  };
37205
- /**
37206
- * @description Id is this instance's identity within the workflow. It is the stable
37174
+ /** @description Id is this instance's identity within the workflow. It is the stable
37207
37175
  * handle that edges connect to, and the per-instance runtime key when the
37208
- * same stage is placed more than once.
37209
- */
37176
+ * same stage is placed more than once. */
37210
37177
  id?: string;
37211
37178
  label?: string;
37212
- /**
37213
- * @description StageRef is the referenced stage's Operation key (the catalog key shared
37179
+ /** @description StageRef is the referenced stage's Operation key (the catalog key shared
37214
37180
  * by platform- and user-defined stages), not its Mongo Id. Always set:
37215
- * every node is an instance of a catalog stage, resolved at compile time.
37216
- */
37181
+ * every node is an instance of a catalog stage, resolved at compile time. */
37217
37182
  stageRef?: string;
37218
37183
  x?: number;
37219
37184
  y?: number;
37220
37185
  };
37221
37186
  "models.WorkflowRun": {
37222
- /**
37223
- * @description Device identifies the recording the run derives from, with the few fields
37187
+ /** @description Device identifies the recording the run derives from, with the few fields
37224
37188
  * vault-override resolution and logging need (device key/name and where the
37225
37189
  * media is stored/served from). Copied from the recording at hand-off time.
37226
- * Wire-only.
37227
- */
37190
+ * Wire-only. */
37228
37191
  device?: components["schemas"]["models.WorkflowDevice"];
37229
- /**
37230
- * @description Inputs is the immutable start context the run opens with, keyed by the
37192
+ /** @description Inputs is the immutable start context the run opens with, keyed by the
37231
37193
  * upstream operation that produced it (e.g. "classify" → the classification
37232
37194
  * result). Conditions and stages read upstream context from here; it is set
37233
37195
  * once by analysis and never mutated by the run. Persisted at open so a run
37234
- * reloaded mid-flight still sees its start context.
37235
- */
37196
+ * reloaded mid-flight still sees its start context. */
37236
37197
  inputs?: {
37237
37198
  [key: string]: unknown;
37238
37199
  };
37239
- /**
37240
- * @description Key is the media key the run is about. It is copied from the recording at
37200
+ /** @description Key is the media key the run is about. It is copied from the recording at
37241
37201
  * hand-off time and can group all runs for that recording, but is not unique:
37242
37202
  * run state is correlated by Id/RunId because several workflows and manual
37243
- * re-runs may execute over the same key.
37244
- */
37203
+ * re-runs may execute over the same key. */
37245
37204
  key?: string;
37246
- /**
37247
- * @description Operation marks the message's role on the workflows queue (wire-only):
37205
+ /** @description Operation marks the message's role on the workflows queue (wire-only):
37248
37206
  * - "event": a fresh run hand-off from analysis. It opens the run and
37249
37207
  * carries the start context in Inputs (e.g. the classification result).
37250
37208
  * - any other value (e.g. "anpr"): either the engine dispatching that
@@ -37252,21 +37210,17 @@ export interface components {
37252
37210
  * result back (Payload or Results populated). These never collide because the
37253
37211
  * workflows queue only ever carries the "event" open and worker results —
37254
37212
  * a dispatch goes to the worker's own queue — so the engine never has to
37255
- * disambiguate a dispatch from a result.
37256
- */
37213
+ * disambiguate a dispatch from a result. */
37257
37214
  operation?: string;
37258
- /**
37259
- * @description Origin records how this run was opened — the run-side counterpart of the
37215
+ /** @description Origin records how this run was opened — the run-side counterpart of the
37260
37216
  * Workflow's trigger Type. An automatic run was teed off the pipeline by
37261
37217
  * analysis for a matching recording; a manual run was launched on demand by a
37262
37218
  * user from a surface. The engine reads it to skip automatic selection/time
37263
37219
  * gating for on-demand runs; it is persisted so "all runs for a media key" can
37264
37220
  * be filtered by how they started. Empty is treated as automatic for runs
37265
- * opened before origins existed.
37266
- */
37221
+ * opened before origins existed. */
37267
37222
  origin?: components["schemas"]["models.WorkflowRunOrigin"];
37268
- /**
37269
- * @description Payload is the self-describing block envelope a delegated-ingest worker
37223
+ /** @description Payload is the self-describing block envelope a delegated-ingest worker
37270
37224
  * hands back for the platform to persist: one or more typed blocks (e.g. a
37271
37225
  * "detection" block carrying a PostDetectionsRequest, optionally followed by
37272
37226
  * "marker" blocks). It is the channel the shared ingest core reads from,
@@ -37291,11 +37245,9 @@ export interface components {
37291
37245
  *
37292
37246
  * `bson:"-"` is load-bearing: the raw body is ingested into its own
37293
37247
  * collection, never duplicated into the run's persisted state. The engine
37294
- * never sets it on an outbound dispatch, so it never travels engine → worker.
37295
- */
37248
+ * never sets it on an outbound dispatch, so it never travels engine → worker. */
37296
37249
  payload?: number[];
37297
- /**
37298
- * @description RecordingTimestamp is the recording's start time (unix seconds), copied
37250
+ /** @description RecordingTimestamp is the recording's start time (unix seconds), copied
37299
37251
  * from the recording at hand-off time. It is denormalised onto any platform
37300
37252
  * artifact the engine ingests (see Payload) so cleanup expires the artifact
37301
37253
  * on the recording's retention clock rather than the post time. It is set on
@@ -37303,21 +37255,17 @@ export interface components {
37303
37255
  * reads it from the run document when stamping an ingested artifact. It is
37304
37256
  * therefore engine-internal — NOT sent on the engine→worker dispatch and not
37305
37257
  * something a worker has to echo back, so it is not part of the stage
37306
- * contract.
37307
- */
37258
+ * contract. */
37308
37259
  recordingTimestamp?: number;
37309
- /**
37310
- * @description Results is the run's accumulated stage outputs, keyed by operation. Each
37260
+ /** @description Results is the run's accumulated stage outputs, keyed by operation. Each
37311
37261
  * stage worker writes its result under its operation on the way back, and
37312
37262
  * conditions / downstream stages read upstream outputs from here. It grows
37313
37263
  * as the run progresses; the engine records each result into it. Together
37314
- * with Inputs it is the durable condition bag (Results wins on any overlap).
37315
- */
37264
+ * with Inputs it is the durable condition bag (Results wins on any overlap). */
37316
37265
  results?: {
37317
37266
  [key: string]: unknown;
37318
37267
  };
37319
- /**
37320
- * @description RunId is the run's identifier on the wire (the hex of the document Id). It
37268
+ /** @description RunId is the run's identifier on the wire (the hex of the document Id). It
37321
37269
  * is empty on an untargeted analysis hand-off; after workflow matching, the
37322
37270
  * engine derives a distinct document identity per recording, organisation,
37323
37271
  * and workflow. It is set on every engine→worker dispatch. The persisted
@@ -37327,11 +37275,9 @@ export interface components {
37327
37275
  * has been opened (its _id is set) is serialized, so a producer only has to
37328
37276
  * stamp Id and the two representations can never drift. A run without an Id
37329
37277
  * yet (the analysis hand-off) keeps whatever RunId it was given (normally
37330
- * empty, so runId is omitted).
37331
- */
37278
+ * empty, so runId is omitted). */
37332
37279
  runId?: string;
37333
- /**
37334
- * @description SignedURL is a vault-signed, short-lived URL (HMAC signature + TTL) a
37280
+ /** @description SignedURL is a vault-signed, short-lived URL (HMAC signature + TTL) a
37335
37281
  * dispatched stage worker can use to fetch the run's media directly, instead
37336
37282
  * of constructing the request from the raw Storage credentials. It is the
37337
37283
  * signed URL the upstream pipeline already holds for the recording (the same
@@ -37339,19 +37285,15 @@ export interface components {
37339
37285
  * analysis hand-off and carried on the engine→worker dispatch alongside
37340
37286
  * Storage. `bson:"-"` is load-bearing: a signed URL is credential-equivalent
37341
37287
  * and short-lived, so — like Storage — it is wire-only and never lands in the
37342
- * run's persisted state; a stage dispatched after a reload fetches via Storage.
37343
- */
37288
+ * run's persisted state; a stage dispatched after a reload fetches via Storage. */
37344
37289
  signedUrl?: string;
37345
- /**
37346
- * @description SourceRef ties a manual run back to the thing it was launched from — e.g.
37290
+ /** @description SourceRef ties a manual run back to the thing it was launched from — e.g.
37347
37291
  * the case id when launched from a case surface — so sibling runs fanned out
37348
37292
  * from one user action (one seed per selected media key) can be grouped above
37349
37293
  * the run. Empty for automatic runs. It generalises to any run-grouping handle
37350
- * (a case id today; a temporal device-series id is a forward-looking twin).
37351
- */
37294
+ * (a case id today; a temporal device-series id is a forward-looking twin). */
37352
37295
  sourceRef?: string;
37353
- /**
37354
- * @description Stages is the run's self-describing routing: the compiled stage set of the
37296
+ /** @description Stages is the run's self-describing routing: the compiled stage set of the
37355
37297
  * workflow this run executes (the output of Workflow.CompileStages) embedded
37356
37298
  * on the hand-off so the engine can dispatch a workflow it does not hold in
37357
37299
  * its boot-loaded config registry — a user/DB workflow launched manually.
@@ -37361,41 +37303,32 @@ export interface components {
37361
37303
  * legacy/config path: the engine falls back to the config registry keyed by
37362
37304
  * WorkflowId, so config workflows and older hand-offs are unchanged. It is
37363
37305
  * persisted so the return path — a stage result reopening the run on any
37364
- * replica — resolves the same routing without re-fetching the definition.
37365
- */
37306
+ * replica — resolves the same routing without re-fetching the definition. */
37366
37307
  stages?: components["schemas"]["models.WorkflowStage"][];
37367
- /**
37368
- * @description Storage carries the credentials a dispatched stage worker needs to fetch
37308
+ /** @description Storage carries the credentials a dispatched stage worker needs to fetch
37369
37309
  * the media (global Kerberos Storage plus any resolved per-recording vault
37370
37310
  * override). It is populated by the engine only on the engine→worker
37371
37311
  * dispatch hop and is empty on the analysis hand-off and the worker→engine
37372
37312
  * result. `bson:"-"` is load-bearing: credentials never sit in the run's
37373
- * persisted state.
37374
- */
37313
+ * persisted state. */
37375
37314
  storage?: components["schemas"]["models.WorkflowStorage"];
37376
37315
  /** @description TraceId continues the distributed trace across the workflow tail. */
37377
37316
  traceId?: string;
37378
- /**
37379
- * @description User is the curated, secret-free account context a run needs: the
37317
+ /** @description User is the curated, secret-free account context a run needs: the
37380
37318
  * organisation that owns the recording (for logging/scoping) and the account
37381
37319
  * Storage block used to resolve a per-recording vault override. Copied (and
37382
37320
  * scrubbed) from the analysis monitor stage — credential/secret fields and the
37383
37321
  * individual user id never cross the boundary. Wire-only; the persisted scope
37384
- * is OrganisationId.
37385
- */
37322
+ * is OrganisationId. */
37386
37323
  user?: components["schemas"]["models.WorkflowUser"];
37387
- /**
37388
- * @description WorkflowId is the id of the Workflow definition (models.Workflow) this run
37324
+ /** @description WorkflowId is the id of the Workflow definition (models.Workflow) this run
37389
37325
  * executes — the authored graph (nodes/edges/triggers) the run is an execution
37390
37326
  * of. It is empty only on an untargeted analysis hand-off; the engine stamps it
37391
- * as it fans that recording out to each matching config or database workflow.
37392
- */
37327
+ * as it fans that recording out to each matching config or database workflow. */
37393
37328
  workflowId?: string;
37394
- /**
37395
- * @description WorkflowName is the human-readable name of that Workflow, carried so a
37329
+ /** @description WorkflowName is the human-readable name of that Workflow, carried so a
37396
37330
  * dispatch/result is legible in worker context and logs without a lookup.
37397
- * Populated alongside WorkflowId.
37398
- */
37331
+ * Populated alongside WorkflowId. */
37399
37332
  workflowName?: string;
37400
37333
  };
37401
37334
  /** @enum {string} */
@@ -37405,55 +37338,44 @@ export interface components {
37405
37338
  "models.WorkflowStage": {
37406
37339
  /** @description Description explains what the stage does, for the catalog UI. */
37407
37340
  description?: string;
37408
- /**
37409
- * @description Dispatch is when the stage runs: DispatchAlways or DispatchConditional (the
37341
+ /** @description Dispatch is when the stage runs: DispatchAlways or DispatchConditional (the
37410
37342
  * closed Dispatch enum). Empty defaults to DispatchAlways. For a user
37411
37343
  * workflow it is derived from the graph's edges (conditional when the node has
37412
- * at least one incoming edge); see the Routing note above.
37413
- */
37344
+ * at least one incoming edge); see the Routing note above. */
37414
37345
  dispatch?: components["schemas"]["models.Dispatch"];
37415
37346
  /** @description Env is extra environment passed to the stage's workers. */
37416
37347
  env?: {
37417
37348
  [key: string]: string;
37418
37349
  };
37419
- /**
37420
- * @description Id is the catalog entry's Mongo id for user-defined stages. It is empty
37421
- * for platform-defined stages supplied via the runtime registry.
37422
- */
37350
+ /** @description Id is the catalog entry's Mongo id for user-defined stages. It is empty
37351
+ * for platform-defined stages supplied via the runtime registry. */
37423
37352
  id?: string;
37424
- /**
37425
- * @description Inputs and Outputs declare the stage's named ports — the connection points
37353
+ /** @description Inputs and Outputs declare the stage's named ports — the connection points
37426
37354
  * workflow edges attach to (WorkflowEdge.TargetPort / SourcePort). Empty means
37427
- * a single implicit default port.
37428
- */
37355
+ * a single implicit default port. */
37429
37356
  inputs?: components["schemas"]["models.StagePort"][];
37430
37357
  /** @description LogLevel is the worker log verbosity (trace | debug | info | warn | error). */
37431
37358
  logLevel?: string;
37432
37359
  /** @description Name is a human-friendly catalog name shown in the stage library. */
37433
37360
  name?: string;
37434
- /**
37435
- * @description Needs lists the dependencies of a conditional stage — its fan-in. It is the
37361
+ /** @description Needs lists the dependencies of a conditional stage — its fan-in. It is the
37436
37362
  * compiled, runtime-authoritative projection of the workflow's incoming edges
37437
37363
  * (one entry per edge), not an independently editable field. At least one
37438
37364
  * entry is required when Dispatch is DispatchConditional; ignored otherwise.
37439
37365
  * The runtime re-evaluates the stage against the run root whenever the run
37440
37366
  * progresses; each need's Operation gates when its Condition may be read (an
37441
37367
  * empty Operation is ungated, evaluated at open) and the stage fires for the
37442
- * first need whose Condition matches (a nil Condition matches unconditionally).
37443
- */
37368
+ * first need whose Condition matches (a nil Condition matches unconditionally). */
37444
37369
  needs?: components["schemas"]["models.StageDependency"][];
37445
- /**
37446
- * @description NeedsMode controls how multiple Needs combine into a dispatch decision:
37370
+ /** @description NeedsMode controls how multiple Needs combine into a dispatch decision:
37447
37371
  * NeedsModeAny (the default) fires the stage as soon as one need is satisfied
37448
37372
  * (its gate operation available and its condition matching); NeedsModeAll
37449
37373
  * fires the stage only once every need is satisfied (a join). It is
37450
37374
  * meaningful only when Dispatch is DispatchConditional and there is more than
37451
37375
  * one need; with a single need both modes behave identically. Empty defaults
37452
- * to NeedsModeAny.
37453
- */
37376
+ * to NeedsModeAny. */
37454
37377
  needsMode?: components["schemas"]["models.NeedsMode"];
37455
- /**
37456
- * @description Operation uniquely identifies the stage and binds its queue, dispatch and
37378
+ /** @description Operation uniquely identifies the stage and binds its queue, dispatch and
37457
37379
  * resolution. It is the key workflow nodes reference, and the key under which
37458
37380
  * the stage's result is filed in a run's Inputs/Results. Two stages may never
37459
37381
  * share an operation.
@@ -37468,22 +37390,17 @@ export interface components {
37468
37390
  * (e.g. "classify"), which seeds Inputs and can gate a need or be read by a
37469
37391
  * condition, yet is not itself a deployed stage. That is why routing —
37470
37392
  * Needs/gates, conditions, and the run's dispatched/resolved tiers — is keyed
37471
- * by operation (the wider id space), while deployment talks in stages.
37472
- */
37393
+ * by operation (the wider id space), while deployment talks in stages. */
37473
37394
  operation?: string;
37474
37395
  outputs?: components["schemas"]["models.StagePort"][];
37475
- /**
37476
- * @description Params declares the configurable parameters this stage accepts. A node's
37396
+ /** @description Params declares the configurable parameters this stage accepts. A node's
37477
37397
  * Data is validated against and defaulted from these (see WorkflowNode.Data);
37478
- * empty means the stage takes no parameters.
37479
- */
37398
+ * empty means the stage takes no parameters. */
37480
37399
  params?: components["schemas"]["models.StageParam"][];
37481
37400
  /** @description PullPolicy is the image pull policy (e.g. "IfNotPresent", "Always"). */
37482
37401
  pullPolicy?: string;
37483
- /**
37484
- * @description Queue is the queue the stage's workers consume from. Defaults to a name
37485
- * derived from Operation when empty.
37486
- */
37402
+ /** @description Queue is the queue the stage's workers consume from. Defaults to a name
37403
+ * derived from Operation when empty. */
37487
37404
  queue?: string;
37488
37405
  /** @description Replicas is the desired number of worker pods for the stage. */
37489
37406
  replicas?: number;
@@ -37504,18 +37421,15 @@ export interface components {
37504
37421
  vaultOverrideUri?: string;
37505
37422
  };
37506
37423
  "models.WorkflowTrigger": {
37507
- /**
37508
- * @description Conditions further scopes the automatic trigger with the same structured
37424
+ /** @description Conditions further scopes the automatic trigger with the same structured
37509
37425
  * (path, op, value) predicates a stage uses, evaluated against the pre-run
37510
37426
  * envelope (device.*, user.*, and the identity scalars known when a recording
37511
37427
  * arrives). All conditions must hold (AND) and they combine with the compiled
37512
37428
  * Devices shorthand, so `matches`, `in`, `eq`, … apply to device matching the
37513
37429
  * way they do to stages. An empty list adds no constraint. See
37514
- * CompiledConditions and StageCondition.
37515
- */
37430
+ * CompiledConditions and StageCondition. */
37516
37431
  conditions?: components["schemas"]["models.StageCondition"][];
37517
- /**
37518
- * @description Devices restricts the automatic trigger to recordings from the listed
37432
+ /** @description Devices restricts the automatic trigger to recordings from the listed
37519
37433
  * devices, matched by DeviceKey.Key. An empty list means every device is
37520
37434
  * eligible. Mirrors the alert device selection (see CustomAlert.DevicesList).
37521
37435
  *
@@ -37523,28 +37437,21 @@ export interface components {
37523
37437
  * CompiledConditions) into a single StageCondition — device.deviceKey `in`
37524
37438
  * [keys…] — evaluated by the same operator engine stage conditions use, so
37525
37439
  * device scoping and stage matching stay consistent. Author richer scoping
37526
- * (a device-name pattern, an organisation check, …) with Conditions.
37527
- */
37440
+ * (a device-name pattern, an organisation check, …) with Conditions. */
37528
37441
  devices?: components["schemas"]["models.DeviceKey"][];
37529
- /**
37530
- * @description Surfaces lists the UI surfaces a manual trigger can be launched from
37531
- * (manual). Ignored for automatic triggers.
37532
- */
37442
+ /** @description Surfaces lists the UI surfaces a manual trigger can be launched from
37443
+ * (manual). Ignored for automatic triggers. */
37533
37444
  surfaces?: components["schemas"]["models.WorkflowTriggerSurface"][];
37534
- /**
37535
- * @description Type is the activation mode. An empty Type is treated as
37445
+ /** @description Type is the activation mode. An empty Type is treated as
37536
37446
  * WorkflowTriggerAutomatic for backwards compatibility with triggers authored
37537
- * before manual triggers existed.
37538
- */
37447
+ * before manual triggers existed. */
37539
37448
  type?: components["schemas"]["models.WorkflowTriggerType"];
37540
- /**
37541
- * @description WeeklySchedule bounds the automatic trigger to recurring weekly windows,
37449
+ /** @description WeeklySchedule bounds the automatic trigger to recurring weekly windows,
37542
37450
  * each with its own day, time segments and IANA Timezone. An empty schedule
37543
37451
  * means any time is eligible. Reuses the alert weekly-schedule shape so the
37544
37452
  * same editor and evaluation semantics apply. The Timezone on each entry is
37545
37453
  * the user's timezone captured when the schedule was authored. Time is not
37546
- * path-expressible, so it stays a dedicated field rather than a condition.
37547
- */
37454
+ * path-expressible, so it stays a dedicated field rather than a condition. */
37548
37455
  weeklySchedule?: components["schemas"]["models.WeeklySchedule"][];
37549
37456
  };
37550
37457
  /** @enum {string} */
@@ -37589,8 +37496,11 @@ export declare namespace models {
37589
37496
  type AnalyticsLists = components['schemas']['models.AnalyticsLists'];
37590
37497
  type AnalyticsSummary = components['schemas']['models.AnalyticsSummary'];
37591
37498
  type Audit = components['schemas']['models.Audit'];
37499
+ type AuditAuthorizationInfo = components['schemas']['models.AuditAuthorizationInfo'];
37592
37500
  type AuditEvent = components['schemas']['models.AuditEvent'];
37501
+ type AuditEventStatus = components['schemas']['models.AuditEventStatus'];
37593
37502
  type AuditFieldChange = components['schemas']['models.AuditFieldChange'];
37503
+ type AuditRequestInfo = components['schemas']['models.AuditRequestInfo'];
37594
37504
  type CameraMetadata = components['schemas']['models.CameraMetadata'];
37595
37505
  type CameraPreset = components['schemas']['models.CameraPreset'];
37596
37506
  type CameraTour = components['schemas']['models.CameraTour'];
@@ -37769,6 +37679,7 @@ export declare namespace models {
37769
37679
  type PipelineMetadata = components['schemas']['models.PipelineMetadata'];
37770
37680
  type PipelineMetrics = components['schemas']['models.PipelineMetrics'];
37771
37681
  type PipelinePayload = components['schemas']['models.PipelinePayload'];
37682
+ type PipelineSourceDevice = components['schemas']['models.PipelineSourceDevice'];
37772
37683
  type Plan = components['schemas']['models.Plan'];
37773
37684
  type Point = components['schemas']['models.Point'];
37774
37685
  type ProfileSettings = components['schemas']['models.ProfileSettings'];