@uug-ai/models 1.7.17 → 1.7.40

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 +590 -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;
@@ -35537,32 +35582,28 @@ export interface components {
35537
35582
  /** @description Unique identifier for the media file */
35538
35583
  id?: string;
35539
35584
  markerNames?: string[];
35540
- /**
35541
- * @description MarkerSummary is a per-occurrence denormalisation of the markers that overlap
35585
+ /** @description MarkerSummary is a per-occurrence denormalisation of the markers that overlap
35542
35586
  * this media. Unlike the flat markerNames/eventNames/tagNames/categoryNames
35543
35587
  * arrays that back filtering, each entry preserves the correlation between a
35544
35588
  * single marker's name, its category/event/tag names and its time range, for
35545
- * display/detail rendering (icons, listings).
35546
- */
35589
+ * display/detail rendering (icons, listings). */
35547
35590
  markerSummary?: components["schemas"]["models.MarkerSummary"][];
35548
35591
  /** @description Metadata */
35549
35592
  metadata?: components["schemas"]["models.MediaMetadata"];
35550
35593
  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
- */
35594
+ /** @description ProjectId optionally places the media in a project within its organisation.
35595
+ * A nil value keeps the media organisation-wide. */
35555
35596
  projectId?: string;
35556
35597
  siteId?: string;
35598
+ sourceMediaId?: string;
35599
+ sourceVaultId?: string;
35557
35600
  spriteFile?: string;
35558
35601
  spriteProvider?: string;
35559
35602
  star?: boolean;
35560
35603
  /** @description Time window of media file. */
35561
35604
  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
- */
35605
+ /** @description Media file information (by default "vault", however might change
35606
+ * in the future (integration with other storage solutions, next to Vault). */
35566
35607
  storageSolution?: string;
35567
35608
  tagNames?: string[];
35568
35609
  thumbnailFile?: string;
@@ -35692,10 +35733,8 @@ export interface components {
35692
35733
  notification_type?: string;
35693
35734
  number_of_media?: string;
35694
35735
  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
- */
35736
+ /** @description ProjectId optionally places the message in a project within its organisation.
35737
+ * A nil value keeps the message organisation-wide. */
35699
35738
  projectId?: string;
35700
35739
  sequence_id?: string;
35701
35740
  sites?: components["schemas"]["models.Site"][];
@@ -35714,31 +35753,25 @@ export interface components {
35714
35753
  userid?: string;
35715
35754
  };
35716
35755
  "models.Model": {
35717
- /**
35718
- * @description AtRuntimeMetadata are computed or dynamic information about the model that is relevant during its usage or processing.
35756
+ /** @description AtRuntimeMetadata are computed or dynamic information about the model that is relevant during its usage or processing.
35719
35757
  * 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
35758
  * and is not altered during runtime.
35721
35759
  * e.g.
35722
35760
  * Media model -> signed URLS for accessing the media, processing status, etc.
35723
- * Device model -> current status (active, inactive), etc.
35724
- */
35761
+ * Device model -> current status (active, inactive), etc. */
35725
35762
  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
- */
35763
+ /** @description Audit information: every model should have audit information to track its creation and modification history.
35764
+ * This is important for maintaining data integrity and accountability. */
35730
35765
  audit?: components["schemas"]["models.Audit"];
35731
35766
  /** @description Unique identifier for the model, this is used to retrieve the model from the database by its unique ID. */
35732
35767
  id?: string;
35733
- /**
35734
- * @description Metadata is additional information about the model that is not critical for its primary function,
35768
+ /** @description Metadata is additional information about the model that is not critical for its primary function,
35735
35769
  * but can provide useful context or details.
35736
35770
  * e.g.
35737
35771
  * User model -> profile information, preferences, etc.
35738
35772
  * Device model -> location, installation date, etc.
35739
35773
  * Media model -> tags, description, etc.
35740
- * Marker model -> comments, tags, etc.
35741
- */
35774
+ * Marker model -> comments, tags, etc. */
35742
35775
  metadata?: components["schemas"]["models.MediaMetadata"];
35743
35776
  };
35744
35777
  "models.ModelOption": {
@@ -35750,10 +35783,8 @@ export interface components {
35750
35783
  highUpload?: components["schemas"]["models.HighUpload"];
35751
35784
  monitorData?: string;
35752
35785
  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
- */
35786
+ /** @description OrganisationId and ProjectId snapshot the stored source device's ownership;
35787
+ * nested user and payload fields are mutable actor/request context instead. */
35757
35788
  organisationId?: string;
35758
35789
  plans?: {
35759
35790
  [key: string]: components["schemas"]["models.Plan"];
@@ -35788,10 +35819,8 @@ export interface components {
35788
35819
  notification_type?: string;
35789
35820
  number_of_media?: string;
35790
35821
  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
- */
35822
+ /** @description ProjectId optionally places the message in a project within its organisation.
35823
+ * A nil value keeps the message organisation-wide. */
35795
35824
  projectId?: string;
35796
35825
  sequence_id?: string;
35797
35826
  sites?: components["schemas"]["models.Site"][];
@@ -35839,11 +35868,9 @@ export interface components {
35839
35868
  /** @description The user who owns this organisation */
35840
35869
  ownerId?: string;
35841
35870
  settings?: components["schemas"]["models.OrganisationSettings"];
35842
- /**
35843
- * @description Slug is a stable, URL-friendly handle for the organisation (e.g. "acme-corp").
35871
+ /** @description Slug is a stable, URL-friendly handle for the organisation (e.g. "acme-corp").
35844
35872
  * 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
- */
35873
+ * and references without breaking when the name changes. */
35847
35874
  slug?: string;
35848
35875
  /** @description Billing & Subscription */
35849
35876
  subscription?: components["schemas"]["models.Subscription"];
@@ -35863,13 +35890,11 @@ export interface components {
35863
35890
  organisationId?: string;
35864
35891
  /** @description Roles to assign upon acceptance */
35865
35892
  roleIds?: string[];
35866
- /**
35867
- * @description Scope is the granular scope applied to every role in RoleIds when the
35893
+ /** @description Scope is the granular scope applied to every role in RoleIds when the
35868
35894
  * invitation is accepted, i.e. it seeds the Scope of each resulting
35869
35895
  * RoleAssignment. Following the RoleAssignmentScope convention, a zero value
35870
35896
  * grants the roles organisation-wide; populate a dimension to restrict the
35871
- * resulting assignments to specific resources (see RoleAssignmentScope).
35872
- */
35897
+ * resulting assignments to specific resources (see RoleAssignmentScope). */
35873
35898
  scope?: components["schemas"]["models.RoleAssignmentScope"];
35874
35899
  status?: components["schemas"]["models.InvitationStatus"];
35875
35900
  token?: string;
@@ -35901,10 +35926,8 @@ export interface components {
35901
35926
  primaryContact?: components["schemas"]["models.Contact"];
35902
35927
  /** @description Technical/support contact */
35903
35928
  technicalContact?: components["schemas"]["models.Contact"];
35904
- /**
35905
- * @description Regional defaults applied across the organisation for display, scheduling
35906
- * and billing.
35907
- */
35929
+ /** @description Regional defaults applied across the organisation for display, scheduling
35930
+ * and billing. */
35908
35931
  timezone?: string;
35909
35932
  };
35910
35933
  "models.OrganisationUpdate": {
@@ -35920,11 +35943,9 @@ export interface components {
35920
35943
  };
35921
35944
  "models.OrganisationUser": {
35922
35945
  audit?: components["schemas"]["models.Audit"];
35923
- /**
35924
- * @description ExpiresAt optionally bounds the membership in time. It is an overlay on
35946
+ /** @description ExpiresAt optionally bounds the membership in time. It is an overlay on
35925
35947
  * Status: a membership is only effectively active when Status is
35926
- * MembershipStatusActive AND ExpiresAt is unset or in the future.
35927
- */
35948
+ * MembershipStatusActive AND ExpiresAt is unset or in the future. */
35928
35949
  expiresAt?: string;
35929
35950
  id?: string;
35930
35951
  invitedAt?: string;
@@ -35967,11 +35988,9 @@ export interface components {
35967
35988
  };
35968
35989
  date?: number;
35969
35990
  eventStage?: components["schemas"]["models.EventStage"];
35970
- /**
35971
- * @description Stages of the pipeline, e.g., event, monitor, sequence, analysis, throttler, notification
35991
+ /** @description Stages of the pipeline, e.g., event, monitor, sequence, analysis, throttler, notification
35972
35992
  * 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
- */
35993
+ * or computed at which stage. */
35975
35994
  events?: string[];
35976
35995
  fileName?: string;
35977
35996
  monitorStage?: components["schemas"]["models.MonitorStage"];
@@ -36017,18 +36036,26 @@ export interface components {
36017
36036
  metadata?: components["schemas"]["models.PipelineMetadata"];
36018
36037
  /** @description RBAC */
36019
36038
  organisationId?: string;
36020
- /**
36021
- * @description Result is the typed result a producer stage hands back for a delegated
36039
+ /** @description Result is the typed result a producer stage hands back for a delegated
36022
36040
  * ingest handler (e.g. a DetectionRun-shaped body). It is the result
36023
36041
  * channel the ingest core reads from — distinct from the deprecated
36024
36042
  * PipelineEvent.Data bag, which only carries storage credentials on
36025
- * dispatch and must not be used to carry results.
36026
- */
36043
+ * dispatch and must not be used to carry results. */
36027
36044
  result?: number[];
36028
36045
  /** @description Signed URL */
36029
36046
  signedUrl?: string;
36047
+ sourceMediaId?: string;
36048
+ sourceVaultId?: string;
36030
36049
  timestamp?: number;
36031
36050
  };
36051
+ "models.PipelineSourceDevice": {
36052
+ cloudKey?: string;
36053
+ deviceId?: string;
36054
+ deviceKey?: string;
36055
+ organisationId?: string;
36056
+ ownerUserId?: string;
36057
+ projectId?: string;
36058
+ };
36032
36059
  "models.Plan": {
36033
36060
  /** @description AnalysisLimit is the maximum number of analysis operations allowed */
36034
36061
  analysisLimit?: number;
@@ -36052,7 +36079,9 @@ export interface components {
36052
36079
  };
36053
36080
  "models.Project": {
36054
36081
  audit?: components["schemas"]["models.Audit"];
36082
+ dates?: string[];
36055
36083
  description?: string;
36084
+ hasPincode?: boolean;
36056
36085
  id?: string;
36057
36086
  isActive?: boolean;
36058
36087
  name?: string;
@@ -36103,22 +36132,18 @@ export interface components {
36103
36132
  isActive?: boolean;
36104
36133
  /** @description Organisation this role belongs to */
36105
36134
  organisationId?: string;
36106
- /**
36107
- * @description Pages and FeaturePermissions are two orthogonal authorization axes:
36135
+ /** @description Pages and FeaturePermissions are two orthogonal authorization axes:
36108
36136
  * - Pages controls which UI/nav pages are visible (coarse allow-list).
36109
36137
  * - FeaturePermissions controls the CRUD AccessLevel per feature.
36110
36138
  * Some names appear in both (e.g. sites/groups/roles/settings); that overlap
36111
36139
  * is intentional - visibility and capability are decided independently, and
36112
36140
  * the consuming service resolves them together (page hidden => not shown;
36113
- * feature level => what may be done once on the page).
36114
- */
36141
+ * feature level => what may be done once on the page). */
36115
36142
  pages?: string[];
36116
- /**
36117
- * @description ParentRole is the built-in BaseRole tier this custom role extends. It is a
36143
+ /** @description ParentRole is the built-in BaseRole tier this custom role extends. It is a
36118
36144
  * live tier identifier (NOT an ObjectID reference to another Role document):
36119
36145
  * it sets the effective tier/RoleLevel for coarse gating and bounds which
36120
- * pages the role may grant. See BaseRole.
36121
- */
36146
+ * pages the role may grant. See BaseRole. */
36122
36147
  role?: components["schemas"]["models.BaseRole"];
36123
36148
  roleName?: string;
36124
36149
  timeWindow?: components["schemas"]["models.TimeWindow"];
@@ -36126,11 +36151,9 @@ export interface components {
36126
36151
  };
36127
36152
  "models.RoleAssignment": {
36128
36153
  audit?: components["schemas"]["models.Audit"];
36129
- /**
36130
- * @description ExpiresAt optionally bounds the assignment in time. It is an overlay on
36154
+ /** @description ExpiresAt optionally bounds the assignment in time. It is an overlay on
36131
36155
  * IsActive: an assignment is only effectively active when IsActive is true
36132
- * AND ExpiresAt is unset or in the future. Use IsEffectivelyActive().
36133
- */
36156
+ * AND ExpiresAt is unset or in the future. Use IsEffectivelyActive(). */
36134
36157
  expiresAt?: string;
36135
36158
  id?: string;
36136
36159
  /** @description Administrative enable/disable switch (independent of expiry) */
@@ -36169,10 +36192,8 @@ export interface components {
36169
36192
  images?: components["schemas"]["models.Media"][];
36170
36193
  notified?: boolean;
36171
36194
  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
- */
36195
+ /** @description ProjectId optionally places the sequence in a project within its organisation.
36196
+ * A nil value keeps the sequence organisation-wide. */
36176
36197
  projectId?: string;
36177
36198
  start?: number;
36178
36199
  user_id?: string;
@@ -36221,17 +36242,13 @@ export interface components {
36221
36242
  name?: string;
36222
36243
  /** @description RBAC information */
36223
36244
  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
- */
36245
+ /** @description ProjectId optionally places the site in a project within its organisation.
36246
+ * A nil value keeps the site organisation-wide. */
36228
36247
  projectId?: string;
36229
36248
  secret_key?: string;
36230
36249
  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
- */
36250
+ /** @description Media file information (by default "vault", however might change
36251
+ * in the future (integration with other storage solutions, next to Vault). */
36235
36252
  storageSolution?: string;
36236
36253
  /** @description Deprecated */
36237
36254
  user_id?: string;
@@ -36284,20 +36301,16 @@ export interface components {
36284
36301
  value?: unknown;
36285
36302
  };
36286
36303
  "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
- */
36304
+ /** @description Condition is the predicate evaluated against the run root. Nil means the
36305
+ * need matches as soon as its gate (if any) is satisfied. */
36291
36306
  condition?: components["schemas"]["models.StageCondition"];
36292
- /**
36293
- * @description Operation is the id of the operation whose presence gates this need: it must
36307
+ /** @description Operation is the id of the operation whose presence gates this need: it must
36294
36308
  * be available on the run — present in Inputs or Results — before the need's
36295
36309
  * Condition is evaluated. It is an operation id, not necessarily a deployed
36296
36310
  * stage: the most common gate, "classify", is the analysis trigger (it arrives
36297
36311
  * in Inputs at open), not a stage. Empty means the need is ungated: a check on
36298
36312
  * 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
- */
36313
+ * evaluated as soon as the run opens with nothing to wait for. */
36301
36314
  operation?: string;
36302
36315
  };
36303
36316
  "models.StageParam": {
@@ -36325,11 +36338,9 @@ export interface components {
36325
36338
  requests?: components["schemas"]["models.StageResourceList"];
36326
36339
  };
36327
36340
  "models.State": {
36328
- /**
36329
- * @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
36341
+ /** @description AtRuntimeMetadata contains metadata that is generated at runtime, which can include
36330
36342
  * more verbose information about the device's current state, capabilities, or configuration.
36331
- * for example the linked sites details, etc.
36332
- */
36343
+ * for example the linked sites details, etc. */
36333
36344
  atRuntimeMetadata?: components["schemas"]["models.StateAtRuntimeMetadata"];
36334
36345
  /** @description Audit information */
36335
36346
  audit?: components["schemas"]["models.Audit"];
@@ -36470,8 +36481,7 @@ export interface components {
36470
36481
  /** @description legacy: read by v20130101 only */
36471
36482
  export_files?: components["schemas"]["models.ExportFile"][];
36472
36483
  export_files_count?: number;
36473
- /**
36474
- * @description ExportHeartbeatAgeSeconds is computed at API response time
36484
+ /** @description ExportHeartbeatAgeSeconds is computed at API response time
36475
36485
  * (NOT persisted — bson:"-") and ships the server-side delta
36476
36486
  * between now and ExportUpdatedAt so the frontend can render a
36477
36487
  * "stuck" state without depending on the user's local clock
@@ -36480,46 +36490,39 @@ export interface components {
36480
36490
  * (legacy / pre-feature tasks); a zero value means the heartbeat
36481
36491
  * was just written. The FE only interprets this field in
36482
36492
  * combination with the in-flight signal — see isExportActive
36483
- * and getExportUiState for the rule.
36484
- */
36493
+ * and getExportUiState for the rule. */
36485
36494
  export_heartbeat_age_seconds?: number;
36486
36495
  export_in_progress?: boolean;
36487
36496
  /** @description "0% -> 100%" */
36488
36497
  export_progress?: number;
36489
36498
  export_requested?: boolean;
36490
36499
  export_revision?: number;
36491
- /**
36492
- * @description ExportSelectionDirty signals that the curated bundle composition
36500
+ /** @description ExportSelectionDirty signals that the curated bundle composition
36493
36501
  * (include_in_export flags on case_media / attachments, or a newly
36494
36502
  * added media row) changed since the last successful export
36495
36503
  * completion. Bumped to true by curation toggles and media inserts
36496
36504
  * in hub-api; cleared by hub-pipeline-export in CompleteExport.
36497
36505
  * The FE uses this to disable the Regenerate action when no
36498
36506
  * changes are pending and to surface a "selection changed" hint
36499
- * next to the export status badge.
36500
- */
36507
+ * next to the export status badge. */
36501
36508
  export_selection_dirty?: boolean;
36502
36509
  /** @description An export task, is containing multiple video in a compressed file format (.zip) */
36503
36510
  export_status?: string;
36504
- /**
36505
- * @description ExportUpdatedAt is a heartbeat written by hub-pipeline-export
36511
+ /** @description ExportUpdatedAt is a heartbeat written by hub-pipeline-export
36506
36512
  * every time it transitions the export state (claim, status
36507
36513
  * updates, per-file download, release, complete) and by hub-api
36508
36514
  * when a new export run is requested. It lets the API detect
36509
36515
  * orphaned runs whose worker died without releasing the lock:
36510
36516
  * when (now - ExportUpdatedAt) exceeds the staleness threshold,
36511
36517
  * isExportActive treats the lock as released so the user can
36512
- * retry instead of being blocked by a 409 forever.
36513
- */
36518
+ * retry instead of being blocked by a 409 forever. */
36514
36519
  export_updated_at?: string;
36515
36520
  id?: string;
36516
36521
  is_private?: boolean;
36517
36522
  labels?: string[];
36518
36523
  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
- */
36524
+ /** @description Number of source case_media rows attached to this task. Mirrors
36525
+ * case_media documents where role == "source" and task_id matches. */
36523
36526
  media_count?: number;
36524
36527
  media_date?: string;
36525
36528
  media_datetime?: string;
@@ -36530,16 +36533,13 @@ export interface components {
36530
36533
  notes_short?: string;
36531
36534
  notify_assignees?: boolean;
36532
36535
  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
- */
36536
+ /** @description ProjectId optionally places the case/task in a project within its organisation.
36537
+ * A nil value keeps it organisation-wide. */
36537
36538
  projectId?: string;
36538
36539
  reporter_email?: string;
36539
36540
  reporter_id?: string;
36540
36541
  reporter_profile?: string;
36541
- /**
36542
- * @description Retention / lifecycle.
36542
+ /** @description Retention / lifecycle.
36543
36543
  *
36544
36544
  * RetentionDays captures the *policy intent*: how many days the
36545
36545
  * case should be kept after its retention anchor (typically the
@@ -36566,8 +36566,7 @@ export interface components {
36566
36566
  * regardless of ExpiresAt. It is intentionally a separate flag
36567
36567
  * from the retention date so audits can distinguish "kept longer
36568
36568
  * because investigator extended" from "kept because under legal
36569
- * hold". Managed by a dedicated permission.
36570
- */
36569
+ * hold". Managed by a dedicated permission. */
36571
36570
  retention_days?: number;
36572
36571
  sequenceId?: string;
36573
36572
  sprite_url?: string;
@@ -36584,10 +36583,8 @@ export interface components {
36584
36583
  title?: string;
36585
36584
  user_id?: string;
36586
36585
  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
- */
36586
+ /** @description This is used for a single export, for a bulk export, we will use the first video as thumbnail and sprite.
36587
+ * Referencing to some media: video, thumbnail and sprite */
36591
36588
  video_url?: string;
36592
36589
  videoFile?: string;
36593
36590
  videoProvider?: string;
@@ -36736,10 +36733,8 @@ export interface components {
36736
36733
  };
36737
36734
  "models.TrackBox": {
36738
36735
  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
- */
36736
+ /** @description Confidence, ClassId and Label preserve the producer's per-box model
36737
+ * output so a stored detection run can be re-thresholded or audited later. */
36743
36738
  confidence?: number;
36744
36739
  edited?: boolean;
36745
36740
  label?: string;
@@ -36980,6 +36975,7 @@ export interface components {
36980
36975
  forwarder_id?: string;
36981
36976
  forwarder_type?: string;
36982
36977
  forwarder_worker?: string;
36978
+ id?: string;
36983
36979
  main_provider?: boolean;
36984
36980
  metadata?: components["schemas"]["models.VaultMediaMetadata"];
36985
36981
  provider?: string;
@@ -37023,18 +37019,14 @@ export interface components {
37023
37019
  time?: string;
37024
37020
  };
37025
37021
  "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
- */
37022
+ /** @description AllowLayoutEdits lets any signed-in viewer (not just the owner) persist
37023
+ * changes to Layout. When false only the owner may save. */
37030
37024
  allow_layout_edits?: boolean;
37031
37025
  assigned_users?: string[];
37032
37026
  cameras?: string[];
37033
- /**
37034
- * @description DefaultViewingMode chooses which stream quality the wall loads with:
37027
+ /** @description DefaultViewingMode chooses which stream quality the wall loads with:
37035
37028
  * "preview" (SD) or "live" (HD). Empty defaults to "live". Always clamped
37036
- * to "preview" when Liveview only grants preview permission.
37037
- */
37029
+ * to "preview" when Liveview only grants preview permission. */
37038
37030
  default_viewing_mode?: string;
37039
37031
  description?: string;
37040
37032
  expiration?: number;
@@ -37044,22 +37036,18 @@ export interface components {
37044
37036
  id?: string;
37045
37037
  io?: number;
37046
37038
  isActive?: number;
37047
- /**
37048
- * @description Layout stores a shareable custom arrangement of the wall's camera tiles
37039
+ /** @description Layout stores a shareable custom arrangement of the wall's camera tiles
37049
37040
  * (order + per-tile column/row spans). When nil the wall falls back to the
37050
37041
  * default responsive grid. It travels with the wall so it is shared with
37051
- * everyone the wall is shared with.
37052
- */
37042
+ * everyone the wall is shared with. */
37053
37043
  layout?: components["schemas"]["models.VideowallLayout"];
37054
37044
  liveview?: number;
37055
37045
  master_user_id?: string;
37056
37046
  name?: string;
37057
37047
  organisationId?: string;
37058
37048
  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
- */
37049
+ /** @description ProjectId optionally places the videowall in a project within its
37050
+ * organisation. A nil value keeps it organisation-wide. */
37063
37051
  projectId?: string;
37064
37052
  /** @description ForceMFA int `json:"force_mfa" bson:"force_mfa"` */
37065
37053
  ptz?: number;
@@ -37092,10 +37080,8 @@ export interface components {
37092
37080
  timezone?: string;
37093
37081
  };
37094
37082
  "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
- */
37083
+ /** @description Audit carries bounded actor/timestamp metadata for database-backed user
37084
+ * workflows. It is omitted from Helm-defined global workflows unless set. */
37099
37085
  audit?: components["schemas"]["models.Audit"];
37100
37086
  createdAt?: number;
37101
37087
  description?: string;
@@ -37104,29 +37090,22 @@ export interface components {
37104
37090
  id?: string;
37105
37091
  name?: string;
37106
37092
  nodes?: components["schemas"]["models.WorkflowNode"][];
37107
- /**
37108
- * @description OrganisationId is the canonical tenant key. It is persisted as the
37093
+ /** @description OrganisationId is the canonical tenant key. It is persisted as the
37109
37094
  * camelCase `organisationId` field to match the platform-wide convention for
37110
37095
  * organisation-owned domain resources. Database-backed workflows are not yet
37111
37096
  * materially used in deployments, so new documents start with this canonical
37112
- * contract while readers may retain a legacy `organisation_id` fallback.
37113
- */
37097
+ * contract while readers may retain a legacy `organisation_id` fallback. */
37114
37098
  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
- */
37099
+ /** @description ProjectId optionally places the workflow in a project within its organisation.
37100
+ * A nil value keeps the workflow organisation-wide. */
37119
37101
  projectId?: string;
37120
- /**
37121
- * @description Source is the workflow's provenance and availability (see WorkflowSource).
37102
+ /** @description Source is the workflow's provenance and availability (see WorkflowSource).
37122
37103
  * Empty means WorkflowSourceUser: an ordinary user workflow scoped to its
37123
37104
  * OrganisationId. WorkflowSourceConfig marks a Helm-defined, deployment-global,
37124
37105
  * read-only workflow. Every workflow persisted before this field existed
37125
- * decodes as user.
37126
- */
37106
+ * decodes as user. */
37127
37107
  source?: components["schemas"]["models.WorkflowSource"];
37128
- /**
37129
- * @description Stages is the workflow's executable stage set: the runtime-authoritative
37108
+ /** @description Stages is the workflow's executable stage set: the runtime-authoritative
37130
37109
  * projection the engine dispatches against. When set it is used as-is (config
37131
37110
  * workflows author it directly in the helm registry form: operation, dispatch,
37132
37111
  * needs, needsMode); when empty it is derived from Nodes+Edges on demand (UI
@@ -37136,23 +37115,18 @@ export interface components {
37136
37115
  * Only the routing fields (Operation, Dispatch, Needs, NeedsMode) are
37137
37116
  * meaningful here; a stage's deployment fields (image, queue, replicas, …) are
37138
37117
  * resolved by Operation against the shared deployed catalog, not per workflow.
37139
- * Operations need only be unique within a single workflow, not globally.
37140
- */
37118
+ * Operations need only be unique within a single workflow, not globally. */
37141
37119
  stages?: components["schemas"]["models.WorkflowStage"][];
37142
- /**
37143
- * @description Trigger is the legacy single-trigger field kept only so workflows persisted
37120
+ /** @description Trigger is the legacy single-trigger field kept only so workflows persisted
37144
37121
  * before Triggers existed still decode (and are not silently dropped on
37145
37122
  * re-save). New code should read and write Triggers; call NormalizeTriggers to
37146
37123
  * fold any legacy value into Triggers.
37147
37124
  *
37148
- * Deprecated: use Triggers.
37149
- */
37125
+ * Deprecated: use Triggers. */
37150
37126
  trigger?: components["schemas"]["models.WorkflowTrigger"];
37151
- /**
37152
- * @description Triggers is the set of activation modes for this workflow. A workflow may
37127
+ /** @description Triggers is the set of activation modes for this workflow. A workflow may
37153
37128
  * 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
- */
37129
+ * matching recordings and can also be launched on demand from a surface. */
37156
37130
  triggers?: components["schemas"]["models.WorkflowTrigger"][];
37157
37131
  updatedAt?: number;
37158
37132
  userId?: string;
@@ -37169,82 +37143,63 @@ export interface components {
37169
37143
  storageSolution?: string;
37170
37144
  };
37171
37145
  "models.WorkflowEdge": {
37172
- /**
37173
- * @description Condition is the structured predicate evaluated against the source stage's
37146
+ /** @description Condition is the structured predicate evaluated against the source stage's
37174
37147
  * result. Nil means the edge is an unconditional dependency. The edge is the
37175
37148
  * authoring source of truth for routing: this Condition is what compiles into
37176
37149
  * the target stage's Needs[].Condition (see WorkflowStage.Needs), which is the
37177
- * derived runtime projection.
37178
- */
37150
+ * derived runtime projection. */
37179
37151
  condition?: components["schemas"]["models.StageCondition"];
37180
37152
  id?: string;
37181
37153
  source?: string;
37182
- /**
37183
- * @description SourcePort optionally selects which of the source stage's declared Outputs
37154
+ /** @description SourcePort optionally selects which of the source stage's declared Outputs
37184
37155
  * (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
- */
37156
+ * that output's result. Empty means the stage's single implicit default port. */
37187
37157
  sourcePort?: string;
37188
37158
  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
- */
37159
+ /** @description TargetPort optionally selects which of the target stage's declared Inputs
37160
+ * (see WorkflowStage.Inputs) this edge feeds. Empty means the default port. */
37193
37161
  targetPort?: string;
37194
37162
  };
37195
37163
  "models.WorkflowNode": {
37196
- /**
37197
- * @description Data holds optional per-instance parameter values for this placement, keyed
37164
+ /** @description Data holds optional per-instance parameter values for this placement, keyed
37198
37165
  * by parameter name. They are validated against and defaulted from the
37199
37166
  * referenced stage's declared Params (see WorkflowStage.Params), layered over
37200
- * the stage's catalog defaults.
37201
- */
37167
+ * the stage's catalog defaults. */
37202
37168
  data?: {
37203
37169
  [key: string]: unknown;
37204
37170
  };
37205
- /**
37206
- * @description Id is this instance's identity within the workflow. It is the stable
37171
+ /** @description Id is this instance's identity within the workflow. It is the stable
37207
37172
  * handle that edges connect to, and the per-instance runtime key when the
37208
- * same stage is placed more than once.
37209
- */
37173
+ * same stage is placed more than once. */
37210
37174
  id?: string;
37211
37175
  label?: string;
37212
- /**
37213
- * @description StageRef is the referenced stage's Operation key (the catalog key shared
37176
+ /** @description StageRef is the referenced stage's Operation key (the catalog key shared
37214
37177
  * 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
- */
37178
+ * every node is an instance of a catalog stage, resolved at compile time. */
37217
37179
  stageRef?: string;
37218
37180
  x?: number;
37219
37181
  y?: number;
37220
37182
  };
37221
37183
  "models.WorkflowRun": {
37222
- /**
37223
- * @description Device identifies the recording the run derives from, with the few fields
37184
+ /** @description Device identifies the recording the run derives from, with the few fields
37224
37185
  * vault-override resolution and logging need (device key/name and where the
37225
37186
  * media is stored/served from). Copied from the recording at hand-off time.
37226
- * Wire-only.
37227
- */
37187
+ * Wire-only. */
37228
37188
  device?: components["schemas"]["models.WorkflowDevice"];
37229
- /**
37230
- * @description Inputs is the immutable start context the run opens with, keyed by the
37189
+ /** @description Inputs is the immutable start context the run opens with, keyed by the
37231
37190
  * upstream operation that produced it (e.g. "classify" → the classification
37232
37191
  * result). Conditions and stages read upstream context from here; it is set
37233
37192
  * 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
- */
37193
+ * reloaded mid-flight still sees its start context. */
37236
37194
  inputs?: {
37237
37195
  [key: string]: unknown;
37238
37196
  };
37239
- /**
37240
- * @description Key is the media key the run is about. It is copied from the recording at
37197
+ /** @description Key is the media key the run is about. It is copied from the recording at
37241
37198
  * hand-off time and can group all runs for that recording, but is not unique:
37242
37199
  * run state is correlated by Id/RunId because several workflows and manual
37243
- * re-runs may execute over the same key.
37244
- */
37200
+ * re-runs may execute over the same key. */
37245
37201
  key?: string;
37246
- /**
37247
- * @description Operation marks the message's role on the workflows queue (wire-only):
37202
+ /** @description Operation marks the message's role on the workflows queue (wire-only):
37248
37203
  * - "event": a fresh run hand-off from analysis. It opens the run and
37249
37204
  * carries the start context in Inputs (e.g. the classification result).
37250
37205
  * - any other value (e.g. "anpr"): either the engine dispatching that
@@ -37252,21 +37207,17 @@ export interface components {
37252
37207
  * result back (Payload or Results populated). These never collide because the
37253
37208
  * workflows queue only ever carries the "event" open and worker results —
37254
37209
  * a dispatch goes to the worker's own queue — so the engine never has to
37255
- * disambiguate a dispatch from a result.
37256
- */
37210
+ * disambiguate a dispatch from a result. */
37257
37211
  operation?: string;
37258
- /**
37259
- * @description Origin records how this run was opened — the run-side counterpart of the
37212
+ /** @description Origin records how this run was opened — the run-side counterpart of the
37260
37213
  * Workflow's trigger Type. An automatic run was teed off the pipeline by
37261
37214
  * analysis for a matching recording; a manual run was launched on demand by a
37262
37215
  * user from a surface. The engine reads it to skip automatic selection/time
37263
37216
  * gating for on-demand runs; it is persisted so "all runs for a media key" can
37264
37217
  * be filtered by how they started. Empty is treated as automatic for runs
37265
- * opened before origins existed.
37266
- */
37218
+ * opened before origins existed. */
37267
37219
  origin?: components["schemas"]["models.WorkflowRunOrigin"];
37268
- /**
37269
- * @description Payload is the self-describing block envelope a delegated-ingest worker
37220
+ /** @description Payload is the self-describing block envelope a delegated-ingest worker
37270
37221
  * hands back for the platform to persist: one or more typed blocks (e.g. a
37271
37222
  * "detection" block carrying a PostDetectionsRequest, optionally followed by
37272
37223
  * "marker" blocks). It is the channel the shared ingest core reads from,
@@ -37291,11 +37242,9 @@ export interface components {
37291
37242
  *
37292
37243
  * `bson:"-"` is load-bearing: the raw body is ingested into its own
37293
37244
  * 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
- */
37245
+ * never sets it on an outbound dispatch, so it never travels engine → worker. */
37296
37246
  payload?: number[];
37297
- /**
37298
- * @description RecordingTimestamp is the recording's start time (unix seconds), copied
37247
+ /** @description RecordingTimestamp is the recording's start time (unix seconds), copied
37299
37248
  * from the recording at hand-off time. It is denormalised onto any platform
37300
37249
  * artifact the engine ingests (see Payload) so cleanup expires the artifact
37301
37250
  * on the recording's retention clock rather than the post time. It is set on
@@ -37303,21 +37252,17 @@ export interface components {
37303
37252
  * reads it from the run document when stamping an ingested artifact. It is
37304
37253
  * therefore engine-internal — NOT sent on the engine→worker dispatch and not
37305
37254
  * something a worker has to echo back, so it is not part of the stage
37306
- * contract.
37307
- */
37255
+ * contract. */
37308
37256
  recordingTimestamp?: number;
37309
- /**
37310
- * @description Results is the run's accumulated stage outputs, keyed by operation. Each
37257
+ /** @description Results is the run's accumulated stage outputs, keyed by operation. Each
37311
37258
  * stage worker writes its result under its operation on the way back, and
37312
37259
  * conditions / downstream stages read upstream outputs from here. It grows
37313
37260
  * 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
- */
37261
+ * with Inputs it is the durable condition bag (Results wins on any overlap). */
37316
37262
  results?: {
37317
37263
  [key: string]: unknown;
37318
37264
  };
37319
- /**
37320
- * @description RunId is the run's identifier on the wire (the hex of the document Id). It
37265
+ /** @description RunId is the run's identifier on the wire (the hex of the document Id). It
37321
37266
  * is empty on an untargeted analysis hand-off; after workflow matching, the
37322
37267
  * engine derives a distinct document identity per recording, organisation,
37323
37268
  * and workflow. It is set on every engine→worker dispatch. The persisted
@@ -37327,11 +37272,9 @@ export interface components {
37327
37272
  * has been opened (its _id is set) is serialized, so a producer only has to
37328
37273
  * stamp Id and the two representations can never drift. A run without an Id
37329
37274
  * yet (the analysis hand-off) keeps whatever RunId it was given (normally
37330
- * empty, so runId is omitted).
37331
- */
37275
+ * empty, so runId is omitted). */
37332
37276
  runId?: string;
37333
- /**
37334
- * @description SignedURL is a vault-signed, short-lived URL (HMAC signature + TTL) a
37277
+ /** @description SignedURL is a vault-signed, short-lived URL (HMAC signature + TTL) a
37335
37278
  * dispatched stage worker can use to fetch the run's media directly, instead
37336
37279
  * of constructing the request from the raw Storage credentials. It is the
37337
37280
  * signed URL the upstream pipeline already holds for the recording (the same
@@ -37339,19 +37282,15 @@ export interface components {
37339
37282
  * analysis hand-off and carried on the engine→worker dispatch alongside
37340
37283
  * Storage. `bson:"-"` is load-bearing: a signed URL is credential-equivalent
37341
37284
  * 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
- */
37285
+ * run's persisted state; a stage dispatched after a reload fetches via Storage. */
37344
37286
  signedUrl?: string;
37345
- /**
37346
- * @description SourceRef ties a manual run back to the thing it was launched from — e.g.
37287
+ /** @description SourceRef ties a manual run back to the thing it was launched from — e.g.
37347
37288
  * the case id when launched from a case surface — so sibling runs fanned out
37348
37289
  * from one user action (one seed per selected media key) can be grouped above
37349
37290
  * 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
- */
37291
+ * (a case id today; a temporal device-series id is a forward-looking twin). */
37352
37292
  sourceRef?: string;
37353
- /**
37354
- * @description Stages is the run's self-describing routing: the compiled stage set of the
37293
+ /** @description Stages is the run's self-describing routing: the compiled stage set of the
37355
37294
  * workflow this run executes (the output of Workflow.CompileStages) embedded
37356
37295
  * on the hand-off so the engine can dispatch a workflow it does not hold in
37357
37296
  * its boot-loaded config registry — a user/DB workflow launched manually.
@@ -37361,41 +37300,32 @@ export interface components {
37361
37300
  * legacy/config path: the engine falls back to the config registry keyed by
37362
37301
  * WorkflowId, so config workflows and older hand-offs are unchanged. It is
37363
37302
  * 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
- */
37303
+ * replica — resolves the same routing without re-fetching the definition. */
37366
37304
  stages?: components["schemas"]["models.WorkflowStage"][];
37367
- /**
37368
- * @description Storage carries the credentials a dispatched stage worker needs to fetch
37305
+ /** @description Storage carries the credentials a dispatched stage worker needs to fetch
37369
37306
  * the media (global Kerberos Storage plus any resolved per-recording vault
37370
37307
  * override). It is populated by the engine only on the engine→worker
37371
37308
  * dispatch hop and is empty on the analysis hand-off and the worker→engine
37372
37309
  * result. `bson:"-"` is load-bearing: credentials never sit in the run's
37373
- * persisted state.
37374
- */
37310
+ * persisted state. */
37375
37311
  storage?: components["schemas"]["models.WorkflowStorage"];
37376
37312
  /** @description TraceId continues the distributed trace across the workflow tail. */
37377
37313
  traceId?: string;
37378
- /**
37379
- * @description User is the curated, secret-free account context a run needs: the
37314
+ /** @description User is the curated, secret-free account context a run needs: the
37380
37315
  * organisation that owns the recording (for logging/scoping) and the account
37381
37316
  * Storage block used to resolve a per-recording vault override. Copied (and
37382
37317
  * scrubbed) from the analysis monitor stage — credential/secret fields and the
37383
37318
  * individual user id never cross the boundary. Wire-only; the persisted scope
37384
- * is OrganisationId.
37385
- */
37319
+ * is OrganisationId. */
37386
37320
  user?: components["schemas"]["models.WorkflowUser"];
37387
- /**
37388
- * @description WorkflowId is the id of the Workflow definition (models.Workflow) this run
37321
+ /** @description WorkflowId is the id of the Workflow definition (models.Workflow) this run
37389
37322
  * executes — the authored graph (nodes/edges/triggers) the run is an execution
37390
37323
  * 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
- */
37324
+ * as it fans that recording out to each matching config or database workflow. */
37393
37325
  workflowId?: string;
37394
- /**
37395
- * @description WorkflowName is the human-readable name of that Workflow, carried so a
37326
+ /** @description WorkflowName is the human-readable name of that Workflow, carried so a
37396
37327
  * dispatch/result is legible in worker context and logs without a lookup.
37397
- * Populated alongside WorkflowId.
37398
- */
37328
+ * Populated alongside WorkflowId. */
37399
37329
  workflowName?: string;
37400
37330
  };
37401
37331
  /** @enum {string} */
@@ -37405,55 +37335,44 @@ export interface components {
37405
37335
  "models.WorkflowStage": {
37406
37336
  /** @description Description explains what the stage does, for the catalog UI. */
37407
37337
  description?: string;
37408
- /**
37409
- * @description Dispatch is when the stage runs: DispatchAlways or DispatchConditional (the
37338
+ /** @description Dispatch is when the stage runs: DispatchAlways or DispatchConditional (the
37410
37339
  * closed Dispatch enum). Empty defaults to DispatchAlways. For a user
37411
37340
  * 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
- */
37341
+ * at least one incoming edge); see the Routing note above. */
37414
37342
  dispatch?: components["schemas"]["models.Dispatch"];
37415
37343
  /** @description Env is extra environment passed to the stage's workers. */
37416
37344
  env?: {
37417
37345
  [key: string]: string;
37418
37346
  };
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
- */
37347
+ /** @description Id is the catalog entry's Mongo id for user-defined stages. It is empty
37348
+ * for platform-defined stages supplied via the runtime registry. */
37423
37349
  id?: string;
37424
- /**
37425
- * @description Inputs and Outputs declare the stage's named ports — the connection points
37350
+ /** @description Inputs and Outputs declare the stage's named ports — the connection points
37426
37351
  * workflow edges attach to (WorkflowEdge.TargetPort / SourcePort). Empty means
37427
- * a single implicit default port.
37428
- */
37352
+ * a single implicit default port. */
37429
37353
  inputs?: components["schemas"]["models.StagePort"][];
37430
37354
  /** @description LogLevel is the worker log verbosity (trace | debug | info | warn | error). */
37431
37355
  logLevel?: string;
37432
37356
  /** @description Name is a human-friendly catalog name shown in the stage library. */
37433
37357
  name?: string;
37434
- /**
37435
- * @description Needs lists the dependencies of a conditional stage — its fan-in. It is the
37358
+ /** @description Needs lists the dependencies of a conditional stage — its fan-in. It is the
37436
37359
  * compiled, runtime-authoritative projection of the workflow's incoming edges
37437
37360
  * (one entry per edge), not an independently editable field. At least one
37438
37361
  * entry is required when Dispatch is DispatchConditional; ignored otherwise.
37439
37362
  * The runtime re-evaluates the stage against the run root whenever the run
37440
37363
  * progresses; each need's Operation gates when its Condition may be read (an
37441
37364
  * 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
- */
37365
+ * first need whose Condition matches (a nil Condition matches unconditionally). */
37444
37366
  needs?: components["schemas"]["models.StageDependency"][];
37445
- /**
37446
- * @description NeedsMode controls how multiple Needs combine into a dispatch decision:
37367
+ /** @description NeedsMode controls how multiple Needs combine into a dispatch decision:
37447
37368
  * NeedsModeAny (the default) fires the stage as soon as one need is satisfied
37448
37369
  * (its gate operation available and its condition matching); NeedsModeAll
37449
37370
  * fires the stage only once every need is satisfied (a join). It is
37450
37371
  * meaningful only when Dispatch is DispatchConditional and there is more than
37451
37372
  * one need; with a single need both modes behave identically. Empty defaults
37452
- * to NeedsModeAny.
37453
- */
37373
+ * to NeedsModeAny. */
37454
37374
  needsMode?: components["schemas"]["models.NeedsMode"];
37455
- /**
37456
- * @description Operation uniquely identifies the stage and binds its queue, dispatch and
37375
+ /** @description Operation uniquely identifies the stage and binds its queue, dispatch and
37457
37376
  * resolution. It is the key workflow nodes reference, and the key under which
37458
37377
  * the stage's result is filed in a run's Inputs/Results. Two stages may never
37459
37378
  * share an operation.
@@ -37468,22 +37387,17 @@ export interface components {
37468
37387
  * (e.g. "classify"), which seeds Inputs and can gate a need or be read by a
37469
37388
  * condition, yet is not itself a deployed stage. That is why routing —
37470
37389
  * 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
- */
37390
+ * by operation (the wider id space), while deployment talks in stages. */
37473
37391
  operation?: string;
37474
37392
  outputs?: components["schemas"]["models.StagePort"][];
37475
- /**
37476
- * @description Params declares the configurable parameters this stage accepts. A node's
37393
+ /** @description Params declares the configurable parameters this stage accepts. A node's
37477
37394
  * Data is validated against and defaulted from these (see WorkflowNode.Data);
37478
- * empty means the stage takes no parameters.
37479
- */
37395
+ * empty means the stage takes no parameters. */
37480
37396
  params?: components["schemas"]["models.StageParam"][];
37481
37397
  /** @description PullPolicy is the image pull policy (e.g. "IfNotPresent", "Always"). */
37482
37398
  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
- */
37399
+ /** @description Queue is the queue the stage's workers consume from. Defaults to a name
37400
+ * derived from Operation when empty. */
37487
37401
  queue?: string;
37488
37402
  /** @description Replicas is the desired number of worker pods for the stage. */
37489
37403
  replicas?: number;
@@ -37504,18 +37418,15 @@ export interface components {
37504
37418
  vaultOverrideUri?: string;
37505
37419
  };
37506
37420
  "models.WorkflowTrigger": {
37507
- /**
37508
- * @description Conditions further scopes the automatic trigger with the same structured
37421
+ /** @description Conditions further scopes the automatic trigger with the same structured
37509
37422
  * (path, op, value) predicates a stage uses, evaluated against the pre-run
37510
37423
  * envelope (device.*, user.*, and the identity scalars known when a recording
37511
37424
  * arrives). All conditions must hold (AND) and they combine with the compiled
37512
37425
  * Devices shorthand, so `matches`, `in`, `eq`, … apply to device matching the
37513
37426
  * way they do to stages. An empty list adds no constraint. See
37514
- * CompiledConditions and StageCondition.
37515
- */
37427
+ * CompiledConditions and StageCondition. */
37516
37428
  conditions?: components["schemas"]["models.StageCondition"][];
37517
- /**
37518
- * @description Devices restricts the automatic trigger to recordings from the listed
37429
+ /** @description Devices restricts the automatic trigger to recordings from the listed
37519
37430
  * devices, matched by DeviceKey.Key. An empty list means every device is
37520
37431
  * eligible. Mirrors the alert device selection (see CustomAlert.DevicesList).
37521
37432
  *
@@ -37523,28 +37434,21 @@ export interface components {
37523
37434
  * CompiledConditions) into a single StageCondition — device.deviceKey `in`
37524
37435
  * [keys…] — evaluated by the same operator engine stage conditions use, so
37525
37436
  * device scoping and stage matching stay consistent. Author richer scoping
37526
- * (a device-name pattern, an organisation check, …) with Conditions.
37527
- */
37437
+ * (a device-name pattern, an organisation check, …) with Conditions. */
37528
37438
  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
- */
37439
+ /** @description Surfaces lists the UI surfaces a manual trigger can be launched from
37440
+ * (manual). Ignored for automatic triggers. */
37533
37441
  surfaces?: components["schemas"]["models.WorkflowTriggerSurface"][];
37534
- /**
37535
- * @description Type is the activation mode. An empty Type is treated as
37442
+ /** @description Type is the activation mode. An empty Type is treated as
37536
37443
  * WorkflowTriggerAutomatic for backwards compatibility with triggers authored
37537
- * before manual triggers existed.
37538
- */
37444
+ * before manual triggers existed. */
37539
37445
  type?: components["schemas"]["models.WorkflowTriggerType"];
37540
- /**
37541
- * @description WeeklySchedule bounds the automatic trigger to recurring weekly windows,
37446
+ /** @description WeeklySchedule bounds the automatic trigger to recurring weekly windows,
37542
37447
  * each with its own day, time segments and IANA Timezone. An empty schedule
37543
37448
  * means any time is eligible. Reuses the alert weekly-schedule shape so the
37544
37449
  * same editor and evaluation semantics apply. The Timezone on each entry is
37545
37450
  * 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
- */
37451
+ * path-expressible, so it stays a dedicated field rather than a condition. */
37548
37452
  weeklySchedule?: components["schemas"]["models.WeeklySchedule"][];
37549
37453
  };
37550
37454
  /** @enum {string} */
@@ -37589,8 +37493,11 @@ export declare namespace models {
37589
37493
  type AnalyticsLists = components['schemas']['models.AnalyticsLists'];
37590
37494
  type AnalyticsSummary = components['schemas']['models.AnalyticsSummary'];
37591
37495
  type Audit = components['schemas']['models.Audit'];
37496
+ type AuditAuthorizationInfo = components['schemas']['models.AuditAuthorizationInfo'];
37592
37497
  type AuditEvent = components['schemas']['models.AuditEvent'];
37498
+ type AuditEventStatus = components['schemas']['models.AuditEventStatus'];
37593
37499
  type AuditFieldChange = components['schemas']['models.AuditFieldChange'];
37500
+ type AuditRequestInfo = components['schemas']['models.AuditRequestInfo'];
37594
37501
  type CameraMetadata = components['schemas']['models.CameraMetadata'];
37595
37502
  type CameraPreset = components['schemas']['models.CameraPreset'];
37596
37503
  type CameraTour = components['schemas']['models.CameraTour'];
@@ -37769,6 +37676,7 @@ export declare namespace models {
37769
37676
  type PipelineMetadata = components['schemas']['models.PipelineMetadata'];
37770
37677
  type PipelineMetrics = components['schemas']['models.PipelineMetrics'];
37771
37678
  type PipelinePayload = components['schemas']['models.PipelinePayload'];
37679
+ type PipelineSourceDevice = components['schemas']['models.PipelineSourceDevice'];
37772
37680
  type Plan = components['schemas']['models.Plan'];
37773
37681
  type Point = components['schemas']['models.Point'];
37774
37682
  type ProfileSettings = components['schemas']['models.ProfileSettings'];