nominal-api 0.1037.0__py3-none-any.whl → 0.1048.1__py3-none-any.whl

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.

Potentially problematic release.


This version of nominal-api might be problematic. Click here for more details.

nominal_api/_impl.py CHANGED
@@ -4244,6 +4244,107 @@ datasource_TimestampType.__qualname__ = "TimestampType"
4244
4244
  datasource_TimestampType.__module__ = "nominal_api.datasource"
4245
4245
 
4246
4246
 
4247
+ class datasource_VideoFileMetadata(ConjureBeanType):
4248
+ """Metadata specific to video files.
4249
+ """
4250
+
4251
+ @builtins.classmethod
4252
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
4253
+ return {
4254
+ 'timestamp_manifest': ConjureFieldDefinition('timestampManifest', scout_video_api_VideoFileTimestampManifest),
4255
+ 'segment_metadata': ConjureFieldDefinition('segmentMetadata', OptionalTypeWrapper[datasource_VideoSegmentsMetadata])
4256
+ }
4257
+
4258
+ __slots__: List[str] = ['_timestamp_manifest', '_segment_metadata']
4259
+
4260
+ def __init__(self, timestamp_manifest: "scout_video_api_VideoFileTimestampManifest", segment_metadata: Optional["datasource_VideoSegmentsMetadata"] = None) -> None:
4261
+ self._timestamp_manifest = timestamp_manifest
4262
+ self._segment_metadata = segment_metadata
4263
+
4264
+ @builtins.property
4265
+ def timestamp_manifest(self) -> "scout_video_api_VideoFileTimestampManifest":
4266
+ """Specifies how to determine absolute timestamps for each frame in the video.
4267
+ Can be an embedded MCAP manifest, an external sidecar file, or calculated
4268
+ from a starting offset applied to presentation timestamps.
4269
+ """
4270
+ return self._timestamp_manifest
4271
+
4272
+ @builtins.property
4273
+ def segment_metadata(self) -> Optional["datasource_VideoSegmentsMetadata"]:
4274
+ """Cached aggregate metadata about the segments comprising this video file
4275
+ after segmentation has completed. Includes frame counts, duration, and
4276
+ frame rate. Empty until segmentation is complete.
4277
+ Note: Min/max timestamps are stored in DatasetFile.bounds field.
4278
+ Raw file size is stored in DatasetFile.fileSizeBytes.
4279
+ """
4280
+ return self._segment_metadata
4281
+
4282
+
4283
+ datasource_VideoFileMetadata.__name__ = "VideoFileMetadata"
4284
+ datasource_VideoFileMetadata.__qualname__ = "VideoFileMetadata"
4285
+ datasource_VideoFileMetadata.__module__ = "nominal_api.datasource"
4286
+
4287
+
4288
+ class datasource_VideoSegmentsMetadata(ConjureBeanType):
4289
+ """Segment metadata for video files.
4290
+ Lightweight version that excludes bounds and RID since those are stored elsewhere.
4291
+ """
4292
+
4293
+ @builtins.classmethod
4294
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
4295
+ return {
4296
+ 'num_frames': ConjureFieldDefinition('numFrames', int),
4297
+ 'num_segments': ConjureFieldDefinition('numSegments', int),
4298
+ 'scale_factor': ConjureFieldDefinition('scaleFactor', float),
4299
+ 'media_duration_seconds': ConjureFieldDefinition('mediaDurationSeconds', float),
4300
+ 'media_frame_rate': ConjureFieldDefinition('mediaFrameRate', float)
4301
+ }
4302
+
4303
+ __slots__: List[str] = ['_num_frames', '_num_segments', '_scale_factor', '_media_duration_seconds', '_media_frame_rate']
4304
+
4305
+ def __init__(self, media_duration_seconds: float, media_frame_rate: float, num_frames: int, num_segments: int, scale_factor: float) -> None:
4306
+ self._num_frames = num_frames
4307
+ self._num_segments = num_segments
4308
+ self._scale_factor = scale_factor
4309
+ self._media_duration_seconds = media_duration_seconds
4310
+ self._media_frame_rate = media_frame_rate
4311
+
4312
+ @builtins.property
4313
+ def num_frames(self) -> int:
4314
+ """Total number of frames across all segments.
4315
+ """
4316
+ return self._num_frames
4317
+
4318
+ @builtins.property
4319
+ def num_segments(self) -> int:
4320
+ """Number of segments the video was split into.
4321
+ """
4322
+ return self._num_segments
4323
+
4324
+ @builtins.property
4325
+ def scale_factor(self) -> float:
4326
+ """Scale factor applied to timestamps during segmentation.
4327
+ """
4328
+ return self._scale_factor
4329
+
4330
+ @builtins.property
4331
+ def media_duration_seconds(self) -> float:
4332
+ """Total duration of the video in seconds.
4333
+ """
4334
+ return self._media_duration_seconds
4335
+
4336
+ @builtins.property
4337
+ def media_frame_rate(self) -> float:
4338
+ """Average frame rate (FPS) calculated as total frames / duration.
4339
+ """
4340
+ return self._media_frame_rate
4341
+
4342
+
4343
+ datasource_VideoSegmentsMetadata.__name__ = "VideoSegmentsMetadata"
4344
+ datasource_VideoSegmentsMetadata.__qualname__ = "VideoSegmentsMetadata"
4345
+ datasource_VideoSegmentsMetadata.__module__ = "nominal_api.datasource"
4346
+
4347
+
4247
4348
  class datasource_api_BatchGetChannelPrefixTreeRequest(ConjureBeanType):
4248
4349
 
4249
4350
  @builtins.classmethod
@@ -25932,12 +26033,13 @@ class scout_catalog_DatasetFile(ConjureBeanType):
25932
26033
  'ingest_tag_metadata': ConjureFieldDefinition('ingestTagMetadata', OptionalTypeWrapper[scout_catalog_IngestTagMetadata]),
25933
26034
  'origin_file_paths': ConjureFieldDefinition('originFilePaths', OptionalTypeWrapper[List[str]]),
25934
26035
  'ingest_job_rid': ConjureFieldDefinition('ingestJobRid', OptionalTypeWrapper[ingest_api_IngestJobRid]),
25935
- 'deleted_at': ConjureFieldDefinition('deletedAt', OptionalTypeWrapper[str])
26036
+ 'deleted_at': ConjureFieldDefinition('deletedAt', OptionalTypeWrapper[str]),
26037
+ 'metadata': ConjureFieldDefinition('metadata', OptionalTypeWrapper[scout_catalog_DatasetFileMetadata])
25936
26038
  }
25937
26039
 
25938
- __slots__: List[str] = ['_id', '_dataset_rid', '_name', '_handle', '_bounds', '_uploaded_at', '_ingested_at', '_ingest_status', '_timestamp_metadata', '_ingest_tag_metadata', '_origin_file_paths', '_ingest_job_rid', '_deleted_at']
26040
+ __slots__: List[str] = ['_id', '_dataset_rid', '_name', '_handle', '_bounds', '_uploaded_at', '_ingested_at', '_ingest_status', '_timestamp_metadata', '_ingest_tag_metadata', '_origin_file_paths', '_ingest_job_rid', '_deleted_at', '_metadata']
25939
26041
 
25940
- def __init__(self, dataset_rid: str, handle: "scout_catalog_Handle", id: str, ingest_status: "api_IngestStatusV2", name: str, uploaded_at: str, bounds: Optional["scout_catalog_Bounds"] = None, deleted_at: Optional[str] = None, ingest_job_rid: Optional[str] = None, ingest_tag_metadata: Optional["scout_catalog_IngestTagMetadata"] = None, ingested_at: Optional[str] = None, origin_file_paths: Optional[List[str]] = None, timestamp_metadata: Optional["scout_catalog_TimestampMetadata"] = None) -> None:
26042
+ def __init__(self, dataset_rid: str, handle: "scout_catalog_Handle", id: str, ingest_status: "api_IngestStatusV2", name: str, uploaded_at: str, bounds: Optional["scout_catalog_Bounds"] = None, deleted_at: Optional[str] = None, ingest_job_rid: Optional[str] = None, ingest_tag_metadata: Optional["scout_catalog_IngestTagMetadata"] = None, ingested_at: Optional[str] = None, metadata: Optional["scout_catalog_DatasetFileMetadata"] = None, origin_file_paths: Optional[List[str]] = None, timestamp_metadata: Optional["scout_catalog_TimestampMetadata"] = None) -> None:
25941
26043
  self._id = id
25942
26044
  self._dataset_rid = dataset_rid
25943
26045
  self._name = name
@@ -25951,6 +26053,7 @@ class scout_catalog_DatasetFile(ConjureBeanType):
25951
26053
  self._origin_file_paths = origin_file_paths
25952
26054
  self._ingest_job_rid = ingest_job_rid
25953
26055
  self._deleted_at = deleted_at
26056
+ self._metadata = metadata
25954
26057
 
25955
26058
  @builtins.property
25956
26059
  def id(self) -> str:
@@ -26011,12 +26114,76 @@ ingested for any reason or is still being processed, then this value will be emp
26011
26114
  """
26012
26115
  return self._deleted_at
26013
26116
 
26117
+ @builtins.property
26118
+ def metadata(self) -> Optional["scout_catalog_DatasetFileMetadata"]:
26119
+ """File-type-specific metadata. For video files, contains timestamp manifest and segment metadata.
26120
+ """
26121
+ return self._metadata
26122
+
26014
26123
 
26015
26124
  scout_catalog_DatasetFile.__name__ = "DatasetFile"
26016
26125
  scout_catalog_DatasetFile.__qualname__ = "DatasetFile"
26017
26126
  scout_catalog_DatasetFile.__module__ = "nominal_api.scout_catalog"
26018
26127
 
26019
26128
 
26129
+ class scout_catalog_DatasetFileMetadata(ConjureUnionType):
26130
+ """Metadata specific to different file types stored in datasets.
26131
+ """
26132
+ _video: Optional["datasource_VideoFileMetadata"] = None
26133
+
26134
+ @builtins.classmethod
26135
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
26136
+ return {
26137
+ 'video': ConjureFieldDefinition('video', datasource_VideoFileMetadata)
26138
+ }
26139
+
26140
+ def __init__(
26141
+ self,
26142
+ video: Optional["datasource_VideoFileMetadata"] = None,
26143
+ type_of_union: Optional[str] = None
26144
+ ) -> None:
26145
+ if type_of_union is None:
26146
+ if (video is not None) != 1:
26147
+ raise ValueError('a union must contain a single member')
26148
+
26149
+ if video is not None:
26150
+ self._video = video
26151
+ self._type = 'video'
26152
+
26153
+ elif type_of_union == 'video':
26154
+ if video is None:
26155
+ raise ValueError('a union value must not be None')
26156
+ self._video = video
26157
+ self._type = 'video'
26158
+
26159
+ @builtins.property
26160
+ def video(self) -> Optional["datasource_VideoFileMetadata"]:
26161
+ return self._video
26162
+
26163
+ def accept(self, visitor) -> Any:
26164
+ if not isinstance(visitor, scout_catalog_DatasetFileMetadataVisitor):
26165
+ raise ValueError('{} is not an instance of scout_catalog_DatasetFileMetadataVisitor'.format(visitor.__class__.__name__))
26166
+ if self._type == 'video' and self.video is not None:
26167
+ return visitor._video(self.video)
26168
+
26169
+
26170
+ scout_catalog_DatasetFileMetadata.__name__ = "DatasetFileMetadata"
26171
+ scout_catalog_DatasetFileMetadata.__qualname__ = "DatasetFileMetadata"
26172
+ scout_catalog_DatasetFileMetadata.__module__ = "nominal_api.scout_catalog"
26173
+
26174
+
26175
+ class scout_catalog_DatasetFileMetadataVisitor:
26176
+
26177
+ @abstractmethod
26178
+ def _video(self, video: "datasource_VideoFileMetadata") -> Any:
26179
+ pass
26180
+
26181
+
26182
+ scout_catalog_DatasetFileMetadataVisitor.__name__ = "DatasetFileMetadataVisitor"
26183
+ scout_catalog_DatasetFileMetadataVisitor.__qualname__ = "DatasetFileMetadataVisitor"
26184
+ scout_catalog_DatasetFileMetadataVisitor.__module__ = "nominal_api.scout_catalog"
26185
+
26186
+
26020
26187
  class scout_catalog_DatasetFileSortField(ConjureEnumType):
26021
26188
 
26022
26189
  UPLOADED_AT = 'UPLOADED_AT'
@@ -44057,62 +44224,6 @@ scout_compute_api_BucketedEnumPlot.__qualname__ = "BucketedEnumPlot"
44057
44224
  scout_compute_api_BucketedEnumPlot.__module__ = "nominal_api.scout_compute_api"
44058
44225
 
44059
44226
 
44060
- class scout_compute_api_BucketedGeoPlot(ConjureUnionType):
44061
- _time_based: Optional["scout_compute_api_TimeBucketedGeoPlot"] = None
44062
-
44063
- @builtins.classmethod
44064
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
44065
- return {
44066
- 'time_based': ConjureFieldDefinition('timeBased', scout_compute_api_TimeBucketedGeoPlot)
44067
- }
44068
-
44069
- def __init__(
44070
- self,
44071
- time_based: Optional["scout_compute_api_TimeBucketedGeoPlot"] = None,
44072
- type_of_union: Optional[str] = None
44073
- ) -> None:
44074
- if type_of_union is None:
44075
- if (time_based is not None) != 1:
44076
- raise ValueError('a union must contain a single member')
44077
-
44078
- if time_based is not None:
44079
- self._time_based = time_based
44080
- self._type = 'timeBased'
44081
-
44082
- elif type_of_union == 'timeBased':
44083
- if time_based is None:
44084
- raise ValueError('a union value must not be None')
44085
- self._time_based = time_based
44086
- self._type = 'timeBased'
44087
-
44088
- @builtins.property
44089
- def time_based(self) -> Optional["scout_compute_api_TimeBucketedGeoPlot"]:
44090
- return self._time_based
44091
-
44092
- def accept(self, visitor) -> Any:
44093
- if not isinstance(visitor, scout_compute_api_BucketedGeoPlotVisitor):
44094
- raise ValueError('{} is not an instance of scout_compute_api_BucketedGeoPlotVisitor'.format(visitor.__class__.__name__))
44095
- if self._type == 'timeBased' and self.time_based is not None:
44096
- return visitor._time_based(self.time_based)
44097
-
44098
-
44099
- scout_compute_api_BucketedGeoPlot.__name__ = "BucketedGeoPlot"
44100
- scout_compute_api_BucketedGeoPlot.__qualname__ = "BucketedGeoPlot"
44101
- scout_compute_api_BucketedGeoPlot.__module__ = "nominal_api.scout_compute_api"
44102
-
44103
-
44104
- class scout_compute_api_BucketedGeoPlotVisitor:
44105
-
44106
- @abstractmethod
44107
- def _time_based(self, time_based: "scout_compute_api_TimeBucketedGeoPlot") -> Any:
44108
- pass
44109
-
44110
-
44111
- scout_compute_api_BucketedGeoPlotVisitor.__name__ = "BucketedGeoPlotVisitor"
44112
- scout_compute_api_BucketedGeoPlotVisitor.__qualname__ = "BucketedGeoPlotVisitor"
44113
- scout_compute_api_BucketedGeoPlotVisitor.__module__ = "nominal_api.scout_compute_api"
44114
-
44115
-
44116
44227
  class scout_compute_api_BucketedNumericArrayPlot(ConjureBeanType):
44117
44228
  """The array is flattened out into a an arrow stream of bucketed primitive results, with an extra column to
44118
44229
  indicate the index of the array that the bucket corresponds to.
@@ -44810,7 +44921,6 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44810
44921
  _frequency: Optional["scout_compute_api_FrequencyDomain"] = None
44811
44922
  _frequency_v2: Optional["scout_compute_api_FrequencyDomainV2"] = None
44812
44923
  _histogram: Optional["scout_compute_api_Histogram"] = None
44813
- _geo: Optional["scout_compute_api_SummarizeGeo"] = None
44814
44924
  _curve: Optional["scout_compute_api_CurveFit"] = None
44815
44925
 
44816
44926
  @builtins.classmethod
@@ -44824,7 +44934,6 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44824
44934
  'frequency': ConjureFieldDefinition('frequency', scout_compute_api_FrequencyDomain),
44825
44935
  'frequency_v2': ConjureFieldDefinition('frequencyV2', scout_compute_api_FrequencyDomainV2),
44826
44936
  'histogram': ConjureFieldDefinition('histogram', scout_compute_api_Histogram),
44827
- 'geo': ConjureFieldDefinition('geo', scout_compute_api_SummarizeGeo),
44828
44937
  'curve': ConjureFieldDefinition('curve', scout_compute_api_CurveFit)
44829
44938
  }
44830
44939
 
@@ -44838,12 +44947,11 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44838
44947
  frequency: Optional["scout_compute_api_FrequencyDomain"] = None,
44839
44948
  frequency_v2: Optional["scout_compute_api_FrequencyDomainV2"] = None,
44840
44949
  histogram: Optional["scout_compute_api_Histogram"] = None,
44841
- geo: Optional["scout_compute_api_SummarizeGeo"] = None,
44842
44950
  curve: Optional["scout_compute_api_CurveFit"] = None,
44843
44951
  type_of_union: Optional[str] = None
44844
44952
  ) -> None:
44845
44953
  if type_of_union is None:
44846
- if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (frequency_v2 is not None) + (histogram is not None) + (geo is not None) + (curve is not None) != 1:
44954
+ if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (frequency_v2 is not None) + (histogram is not None) + (curve is not None) != 1:
44847
44955
  raise ValueError('a union must contain a single member')
44848
44956
 
44849
44957
  if ranges is not None:
@@ -44870,9 +44978,6 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44870
44978
  if histogram is not None:
44871
44979
  self._histogram = histogram
44872
44980
  self._type = 'histogram'
44873
- if geo is not None:
44874
- self._geo = geo
44875
- self._type = 'geo'
44876
44981
  if curve is not None:
44877
44982
  self._curve = curve
44878
44983
  self._type = 'curve'
@@ -44917,11 +45022,6 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44917
45022
  raise ValueError('a union value must not be None')
44918
45023
  self._histogram = histogram
44919
45024
  self._type = 'histogram'
44920
- elif type_of_union == 'geo':
44921
- if geo is None:
44922
- raise ValueError('a union value must not be None')
44923
- self._geo = geo
44924
- self._type = 'geo'
44925
45025
  elif type_of_union == 'curve':
44926
45026
  if curve is None:
44927
45027
  raise ValueError('a union value must not be None')
@@ -44960,10 +45060,6 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44960
45060
  def histogram(self) -> Optional["scout_compute_api_Histogram"]:
44961
45061
  return self._histogram
44962
45062
 
44963
- @builtins.property
44964
- def geo(self) -> Optional["scout_compute_api_SummarizeGeo"]:
44965
- return self._geo
44966
-
44967
45063
  @builtins.property
44968
45064
  def curve(self) -> Optional["scout_compute_api_CurveFit"]:
44969
45065
  return self._curve
@@ -44987,8 +45083,6 @@ class scout_compute_api_ComputableNode(ConjureUnionType):
44987
45083
  return visitor._frequency_v2(self.frequency_v2)
44988
45084
  if self._type == 'histogram' and self.histogram is not None:
44989
45085
  return visitor._histogram(self.histogram)
44990
- if self._type == 'geo' and self.geo is not None:
44991
- return visitor._geo(self.geo)
44992
45086
  if self._type == 'curve' and self.curve is not None:
44993
45087
  return visitor._curve(self.curve)
44994
45088
 
@@ -45032,10 +45126,6 @@ class scout_compute_api_ComputableNodeVisitor:
45032
45126
  def _histogram(self, histogram: "scout_compute_api_Histogram") -> Any:
45033
45127
  pass
45034
45128
 
45035
- @abstractmethod
45036
- def _geo(self, geo: "scout_compute_api_SummarizeGeo") -> Any:
45037
- pass
45038
-
45039
45129
  @abstractmethod
45040
45130
  def _curve(self, curve: "scout_compute_api_CurveFit") -> Any:
45041
45131
  pass
@@ -45351,7 +45441,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45351
45441
  _cartesian: Optional["scout_compute_api_CartesianPlot"] = None
45352
45442
  _bucketed_cartesian: Optional["scout_compute_api_BucketedCartesianPlot"] = None
45353
45443
  _bucketed_cartesian3d: Optional["scout_compute_api_BucketedCartesian3dPlot"] = None
45354
- _bucketed_geo: Optional["scout_compute_api_BucketedGeoPlot"] = None
45355
45444
  _frequency_domain: Optional["scout_compute_api_FrequencyDomainPlot"] = None
45356
45445
  _frequency_domain_v2: Optional["scout_compute_api_FrequencyDomainPlotV2"] = None
45357
45446
  _numeric_histogram: Optional["scout_compute_api_NumericHistogramPlot"] = None
@@ -45384,7 +45473,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45384
45473
  'cartesian': ConjureFieldDefinition('cartesian', scout_compute_api_CartesianPlot),
45385
45474
  'bucketed_cartesian': ConjureFieldDefinition('bucketedCartesian', scout_compute_api_BucketedCartesianPlot),
45386
45475
  'bucketed_cartesian3d': ConjureFieldDefinition('bucketedCartesian3d', scout_compute_api_BucketedCartesian3dPlot),
45387
- 'bucketed_geo': ConjureFieldDefinition('bucketedGeo', scout_compute_api_BucketedGeoPlot),
45388
45476
  'frequency_domain': ConjureFieldDefinition('frequencyDomain', scout_compute_api_FrequencyDomainPlot),
45389
45477
  'frequency_domain_v2': ConjureFieldDefinition('frequencyDomainV2', scout_compute_api_FrequencyDomainPlotV2),
45390
45478
  'numeric_histogram': ConjureFieldDefinition('numericHistogram', scout_compute_api_NumericHistogramPlot),
@@ -45417,7 +45505,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45417
45505
  cartesian: Optional["scout_compute_api_CartesianPlot"] = None,
45418
45506
  bucketed_cartesian: Optional["scout_compute_api_BucketedCartesianPlot"] = None,
45419
45507
  bucketed_cartesian3d: Optional["scout_compute_api_BucketedCartesian3dPlot"] = None,
45420
- bucketed_geo: Optional["scout_compute_api_BucketedGeoPlot"] = None,
45421
45508
  frequency_domain: Optional["scout_compute_api_FrequencyDomainPlot"] = None,
45422
45509
  frequency_domain_v2: Optional["scout_compute_api_FrequencyDomainPlotV2"] = None,
45423
45510
  numeric_histogram: Optional["scout_compute_api_NumericHistogramPlot"] = None,
@@ -45430,7 +45517,7 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45430
45517
  type_of_union: Optional[str] = None
45431
45518
  ) -> None:
45432
45519
  if type_of_union is None:
45433
- if (range is not None) + (ranges_summary is not None) + (range_value is not None) + (numeric is not None) + (bucketed_numeric is not None) + (numeric_point is not None) + (single_point is not None) + (arrow_numeric is not None) + (arrow_bucketed_numeric is not None) + (enum is not None) + (enum_point is not None) + (bucketed_enum is not None) + (arrow_enum is not None) + (arrow_bucketed_enum is not None) + (paged_log is not None) + (log_point is not None) + (cartesian is not None) + (bucketed_cartesian is not None) + (bucketed_cartesian3d is not None) + (bucketed_geo is not None) + (frequency_domain is not None) + (frequency_domain_v2 is not None) + (numeric_histogram is not None) + (enum_histogram is not None) + (curve_fit is not None) + (grouped is not None) + (array is not None) + (bucketed_struct is not None) + (full_resolution is not None) != 1:
45520
+ if (range is not None) + (ranges_summary is not None) + (range_value is not None) + (numeric is not None) + (bucketed_numeric is not None) + (numeric_point is not None) + (single_point is not None) + (arrow_numeric is not None) + (arrow_bucketed_numeric is not None) + (enum is not None) + (enum_point is not None) + (bucketed_enum is not None) + (arrow_enum is not None) + (arrow_bucketed_enum is not None) + (paged_log is not None) + (log_point is not None) + (cartesian is not None) + (bucketed_cartesian is not None) + (bucketed_cartesian3d is not None) + (frequency_domain is not None) + (frequency_domain_v2 is not None) + (numeric_histogram is not None) + (enum_histogram is not None) + (curve_fit is not None) + (grouped is not None) + (array is not None) + (bucketed_struct is not None) + (full_resolution is not None) != 1:
45434
45521
  raise ValueError('a union must contain a single member')
45435
45522
 
45436
45523
  if range is not None:
@@ -45490,9 +45577,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45490
45577
  if bucketed_cartesian3d is not None:
45491
45578
  self._bucketed_cartesian3d = bucketed_cartesian3d
45492
45579
  self._type = 'bucketedCartesian3d'
45493
- if bucketed_geo is not None:
45494
- self._bucketed_geo = bucketed_geo
45495
- self._type = 'bucketedGeo'
45496
45580
  if frequency_domain is not None:
45497
45581
  self._frequency_domain = frequency_domain
45498
45582
  self._type = 'frequencyDomain'
@@ -45616,11 +45700,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45616
45700
  raise ValueError('a union value must not be None')
45617
45701
  self._bucketed_cartesian3d = bucketed_cartesian3d
45618
45702
  self._type = 'bucketedCartesian3d'
45619
- elif type_of_union == 'bucketedGeo':
45620
- if bucketed_geo is None:
45621
- raise ValueError('a union value must not be None')
45622
- self._bucketed_geo = bucketed_geo
45623
- self._type = 'bucketedGeo'
45624
45703
  elif type_of_union == 'frequencyDomain':
45625
45704
  if frequency_domain is None:
45626
45705
  raise ValueError('a union value must not be None')
@@ -45743,10 +45822,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45743
45822
  def bucketed_cartesian3d(self) -> Optional["scout_compute_api_BucketedCartesian3dPlot"]:
45744
45823
  return self._bucketed_cartesian3d
45745
45824
 
45746
- @builtins.property
45747
- def bucketed_geo(self) -> Optional["scout_compute_api_BucketedGeoPlot"]:
45748
- return self._bucketed_geo
45749
-
45750
45825
  @builtins.property
45751
45826
  def frequency_domain(self) -> Optional["scout_compute_api_FrequencyDomainPlot"]:
45752
45827
  return self._frequency_domain
@@ -45824,8 +45899,6 @@ class scout_compute_api_ComputeNodeResponse(ConjureUnionType):
45824
45899
  return visitor._bucketed_cartesian(self.bucketed_cartesian)
45825
45900
  if self._type == 'bucketedCartesian3d' and self.bucketed_cartesian3d is not None:
45826
45901
  return visitor._bucketed_cartesian3d(self.bucketed_cartesian3d)
45827
- if self._type == 'bucketedGeo' and self.bucketed_geo is not None:
45828
- return visitor._bucketed_geo(self.bucketed_geo)
45829
45902
  if self._type == 'frequencyDomain' and self.frequency_domain is not None:
45830
45903
  return visitor._frequency_domain(self.frequency_domain)
45831
45904
  if self._type == 'frequencyDomainV2' and self.frequency_domain_v2 is not None:
@@ -45929,10 +46002,6 @@ class scout_compute_api_ComputeNodeResponseVisitor:
45929
46002
  def _bucketed_cartesian3d(self, bucketed_cartesian3d: "scout_compute_api_BucketedCartesian3dPlot") -> Any:
45930
46003
  pass
45931
46004
 
45932
- @abstractmethod
45933
- def _bucketed_geo(self, bucketed_geo: "scout_compute_api_BucketedGeoPlot") -> Any:
45934
- pass
45935
-
45936
46005
  @abstractmethod
45937
46006
  def _frequency_domain(self, frequency_domain: "scout_compute_api_FrequencyDomainPlot") -> Any:
45938
46007
  pass
@@ -49795,279 +49864,6 @@ scout_compute_api_FunctionVariables.__qualname__ = "FunctionVariables"
49795
49864
  scout_compute_api_FunctionVariables.__module__ = "nominal_api.scout_compute_api"
49796
49865
 
49797
49866
 
49798
- class scout_compute_api_GeoPoint(ConjureUnionType):
49799
- """Represents a geographic point. Flexible to handle multiple types of geographic coordinate systems.
49800
- """
49801
- _lat_long: Optional["scout_compute_api_LatLongPoint"] = None
49802
-
49803
- @builtins.classmethod
49804
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
49805
- return {
49806
- 'lat_long': ConjureFieldDefinition('latLong', scout_compute_api_LatLongPoint)
49807
- }
49808
-
49809
- def __init__(
49810
- self,
49811
- lat_long: Optional["scout_compute_api_LatLongPoint"] = None,
49812
- type_of_union: Optional[str] = None
49813
- ) -> None:
49814
- if type_of_union is None:
49815
- if (lat_long is not None) != 1:
49816
- raise ValueError('a union must contain a single member')
49817
-
49818
- if lat_long is not None:
49819
- self._lat_long = lat_long
49820
- self._type = 'latLong'
49821
-
49822
- elif type_of_union == 'latLong':
49823
- if lat_long is None:
49824
- raise ValueError('a union value must not be None')
49825
- self._lat_long = lat_long
49826
- self._type = 'latLong'
49827
-
49828
- @builtins.property
49829
- def lat_long(self) -> Optional["scout_compute_api_LatLongPoint"]:
49830
- return self._lat_long
49831
-
49832
- def accept(self, visitor) -> Any:
49833
- if not isinstance(visitor, scout_compute_api_GeoPointVisitor):
49834
- raise ValueError('{} is not an instance of scout_compute_api_GeoPointVisitor'.format(visitor.__class__.__name__))
49835
- if self._type == 'latLong' and self.lat_long is not None:
49836
- return visitor._lat_long(self.lat_long)
49837
-
49838
-
49839
- scout_compute_api_GeoPoint.__name__ = "GeoPoint"
49840
- scout_compute_api_GeoPoint.__qualname__ = "GeoPoint"
49841
- scout_compute_api_GeoPoint.__module__ = "nominal_api.scout_compute_api"
49842
-
49843
-
49844
- class scout_compute_api_GeoPointVisitor:
49845
-
49846
- @abstractmethod
49847
- def _lat_long(self, lat_long: "scout_compute_api_LatLongPoint") -> Any:
49848
- pass
49849
-
49850
-
49851
- scout_compute_api_GeoPointVisitor.__name__ = "GeoPointVisitor"
49852
- scout_compute_api_GeoPointVisitor.__qualname__ = "GeoPointVisitor"
49853
- scout_compute_api_GeoPointVisitor.__module__ = "nominal_api.scout_compute_api"
49854
-
49855
-
49856
- class scout_compute_api_GeoPointWithTimestamp(ConjureBeanType):
49857
-
49858
- @builtins.classmethod
49859
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
49860
- return {
49861
- 'timestamp': ConjureFieldDefinition('timestamp', api_Timestamp),
49862
- 'value': ConjureFieldDefinition('value', scout_compute_api_GeoPoint)
49863
- }
49864
-
49865
- __slots__: List[str] = ['_timestamp', '_value']
49866
-
49867
- def __init__(self, timestamp: "api_Timestamp", value: "scout_compute_api_GeoPoint") -> None:
49868
- self._timestamp = timestamp
49869
- self._value = value
49870
-
49871
- @builtins.property
49872
- def timestamp(self) -> "api_Timestamp":
49873
- return self._timestamp
49874
-
49875
- @builtins.property
49876
- def value(self) -> "scout_compute_api_GeoPoint":
49877
- return self._value
49878
-
49879
-
49880
- scout_compute_api_GeoPointWithTimestamp.__name__ = "GeoPointWithTimestamp"
49881
- scout_compute_api_GeoPointWithTimestamp.__qualname__ = "GeoPointWithTimestamp"
49882
- scout_compute_api_GeoPointWithTimestamp.__module__ = "nominal_api.scout_compute_api"
49883
-
49884
-
49885
- class scout_compute_api_GeoSeries(ConjureUnionType):
49886
- _lat_long_geo_node: Optional["scout_compute_api_LatLongGeo"] = None
49887
-
49888
- @builtins.classmethod
49889
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
49890
- return {
49891
- 'lat_long_geo_node': ConjureFieldDefinition('latLongGeoNode', scout_compute_api_LatLongGeo)
49892
- }
49893
-
49894
- def __init__(
49895
- self,
49896
- lat_long_geo_node: Optional["scout_compute_api_LatLongGeo"] = None,
49897
- type_of_union: Optional[str] = None
49898
- ) -> None:
49899
- if type_of_union is None:
49900
- if (lat_long_geo_node is not None) != 1:
49901
- raise ValueError('a union must contain a single member')
49902
-
49903
- if lat_long_geo_node is not None:
49904
- self._lat_long_geo_node = lat_long_geo_node
49905
- self._type = 'latLongGeoNode'
49906
-
49907
- elif type_of_union == 'latLongGeoNode':
49908
- if lat_long_geo_node is None:
49909
- raise ValueError('a union value must not be None')
49910
- self._lat_long_geo_node = lat_long_geo_node
49911
- self._type = 'latLongGeoNode'
49912
-
49913
- @builtins.property
49914
- def lat_long_geo_node(self) -> Optional["scout_compute_api_LatLongGeo"]:
49915
- return self._lat_long_geo_node
49916
-
49917
- def accept(self, visitor) -> Any:
49918
- if not isinstance(visitor, scout_compute_api_GeoSeriesVisitor):
49919
- raise ValueError('{} is not an instance of scout_compute_api_GeoSeriesVisitor'.format(visitor.__class__.__name__))
49920
- if self._type == 'latLongGeoNode' and self.lat_long_geo_node is not None:
49921
- return visitor._lat_long_geo_node(self.lat_long_geo_node)
49922
-
49923
-
49924
- scout_compute_api_GeoSeries.__name__ = "GeoSeries"
49925
- scout_compute_api_GeoSeries.__qualname__ = "GeoSeries"
49926
- scout_compute_api_GeoSeries.__module__ = "nominal_api.scout_compute_api"
49927
-
49928
-
49929
- class scout_compute_api_GeoSeriesVisitor:
49930
-
49931
- @abstractmethod
49932
- def _lat_long_geo_node(self, lat_long_geo_node: "scout_compute_api_LatLongGeo") -> Any:
49933
- pass
49934
-
49935
-
49936
- scout_compute_api_GeoSeriesVisitor.__name__ = "GeoSeriesVisitor"
49937
- scout_compute_api_GeoSeriesVisitor.__qualname__ = "GeoSeriesVisitor"
49938
- scout_compute_api_GeoSeriesVisitor.__module__ = "nominal_api.scout_compute_api"
49939
-
49940
-
49941
- class scout_compute_api_GeoSummaryStrategy(ConjureUnionType):
49942
- _temporal: Optional["scout_compute_api_GeoTemporalSummary"] = None
49943
-
49944
- @builtins.classmethod
49945
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
49946
- return {
49947
- 'temporal': ConjureFieldDefinition('temporal', scout_compute_api_GeoTemporalSummary)
49948
- }
49949
-
49950
- def __init__(
49951
- self,
49952
- temporal: Optional["scout_compute_api_GeoTemporalSummary"] = None,
49953
- type_of_union: Optional[str] = None
49954
- ) -> None:
49955
- if type_of_union is None:
49956
- if (temporal is not None) != 1:
49957
- raise ValueError('a union must contain a single member')
49958
-
49959
- if temporal is not None:
49960
- self._temporal = temporal
49961
- self._type = 'temporal'
49962
-
49963
- elif type_of_union == 'temporal':
49964
- if temporal is None:
49965
- raise ValueError('a union value must not be None')
49966
- self._temporal = temporal
49967
- self._type = 'temporal'
49968
-
49969
- @builtins.property
49970
- def temporal(self) -> Optional["scout_compute_api_GeoTemporalSummary"]:
49971
- return self._temporal
49972
-
49973
- def accept(self, visitor) -> Any:
49974
- if not isinstance(visitor, scout_compute_api_GeoSummaryStrategyVisitor):
49975
- raise ValueError('{} is not an instance of scout_compute_api_GeoSummaryStrategyVisitor'.format(visitor.__class__.__name__))
49976
- if self._type == 'temporal' and self.temporal is not None:
49977
- return visitor._temporal(self.temporal)
49978
-
49979
-
49980
- scout_compute_api_GeoSummaryStrategy.__name__ = "GeoSummaryStrategy"
49981
- scout_compute_api_GeoSummaryStrategy.__qualname__ = "GeoSummaryStrategy"
49982
- scout_compute_api_GeoSummaryStrategy.__module__ = "nominal_api.scout_compute_api"
49983
-
49984
-
49985
- class scout_compute_api_GeoSummaryStrategyVisitor:
49986
-
49987
- @abstractmethod
49988
- def _temporal(self, temporal: "scout_compute_api_GeoTemporalSummary") -> Any:
49989
- pass
49990
-
49991
-
49992
- scout_compute_api_GeoSummaryStrategyVisitor.__name__ = "GeoSummaryStrategyVisitor"
49993
- scout_compute_api_GeoSummaryStrategyVisitor.__qualname__ = "GeoSummaryStrategyVisitor"
49994
- scout_compute_api_GeoSummaryStrategyVisitor.__module__ = "nominal_api.scout_compute_api"
49995
-
49996
-
49997
- class scout_compute_api_GeoTemporalSummary(ConjureBeanType):
49998
-
49999
- @builtins.classmethod
50000
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50001
- return {
50002
- 'resolution': ConjureFieldDefinition('resolution', int)
50003
- }
50004
-
50005
- __slots__: List[str] = ['_resolution']
50006
-
50007
- def __init__(self, resolution: int) -> None:
50008
- self._resolution = resolution
50009
-
50010
- @builtins.property
50011
- def resolution(self) -> int:
50012
- return self._resolution
50013
-
50014
-
50015
- scout_compute_api_GeoTemporalSummary.__name__ = "GeoTemporalSummary"
50016
- scout_compute_api_GeoTemporalSummary.__qualname__ = "GeoTemporalSummary"
50017
- scout_compute_api_GeoTemporalSummary.__module__ = "nominal_api.scout_compute_api"
50018
-
50019
-
50020
- class scout_compute_api_GeoTimeBucket(ConjureBeanType):
50021
- """Summary of a time-based bucket of geo points.
50022
- """
50023
-
50024
- @builtins.classmethod
50025
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50026
- return {
50027
- 'mean': ConjureFieldDefinition('mean', scout_compute_api_GeoPoint),
50028
- 'count': ConjureFieldDefinition('count', int),
50029
- 'first_point': ConjureFieldDefinition('firstPoint', scout_compute_api_GeoPointWithTimestamp),
50030
- 'last_point': ConjureFieldDefinition('lastPoint', OptionalTypeWrapper[scout_compute_api_GeoPointWithTimestamp])
50031
- }
50032
-
50033
- __slots__: List[str] = ['_mean', '_count', '_first_point', '_last_point']
50034
-
50035
- def __init__(self, count: int, first_point: "scout_compute_api_GeoPointWithTimestamp", mean: "scout_compute_api_GeoPoint", last_point: Optional["scout_compute_api_GeoPointWithTimestamp"] = None) -> None:
50036
- self._mean = mean
50037
- self._count = count
50038
- self._first_point = first_point
50039
- self._last_point = last_point
50040
-
50041
- @builtins.property
50042
- def mean(self) -> "scout_compute_api_GeoPoint":
50043
- """The mean value of the GeoPoints in the bucket.
50044
- """
50045
- return self._mean
50046
-
50047
- @builtins.property
50048
- def count(self) -> int:
50049
- """The number of GeoPoints in the bucket.
50050
- """
50051
- return self._count
50052
-
50053
- @builtins.property
50054
- def first_point(self) -> "scout_compute_api_GeoPointWithTimestamp":
50055
- """The first GeoPoint in the bucket.
50056
- """
50057
- return self._first_point
50058
-
50059
- @builtins.property
50060
- def last_point(self) -> Optional["scout_compute_api_GeoPointWithTimestamp"]:
50061
- """The last GeoPoint in the bucket. Will be empty if the bucket only has a single point.
50062
- """
50063
- return self._last_point
50064
-
50065
-
50066
- scout_compute_api_GeoTimeBucket.__name__ = "GeoTimeBucket"
50067
- scout_compute_api_GeoTimeBucket.__qualname__ = "GeoTimeBucket"
50068
- scout_compute_api_GeoTimeBucket.__module__ = "nominal_api.scout_compute_api"
50069
-
50070
-
50071
49867
  class scout_compute_api_GroupedComputeNodeResponse(ConjureBeanType):
50072
49868
 
50073
49869
  @builtins.classmethod
@@ -50537,75 +50333,6 @@ scout_compute_api_IntersectRanges.__qualname__ = "IntersectRanges"
50537
50333
  scout_compute_api_IntersectRanges.__module__ = "nominal_api.scout_compute_api"
50538
50334
 
50539
50335
 
50540
- class scout_compute_api_LatLongBounds(ConjureBeanType):
50541
- """The bounds of a lat long geographic area. Represented by the southwest and northeast corners
50542
- of a rectangle, inclusive.
50543
- """
50544
-
50545
- @builtins.classmethod
50546
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50547
- return {
50548
- 'south_west': ConjureFieldDefinition('southWest', scout_compute_api_LatLongPoint),
50549
- 'north_east': ConjureFieldDefinition('northEast', scout_compute_api_LatLongPoint)
50550
- }
50551
-
50552
- __slots__: List[str] = ['_south_west', '_north_east']
50553
-
50554
- def __init__(self, north_east: "scout_compute_api_LatLongPoint", south_west: "scout_compute_api_LatLongPoint") -> None:
50555
- self._south_west = south_west
50556
- self._north_east = north_east
50557
-
50558
- @builtins.property
50559
- def south_west(self) -> "scout_compute_api_LatLongPoint":
50560
- return self._south_west
50561
-
50562
- @builtins.property
50563
- def north_east(self) -> "scout_compute_api_LatLongPoint":
50564
- return self._north_east
50565
-
50566
-
50567
- scout_compute_api_LatLongBounds.__name__ = "LatLongBounds"
50568
- scout_compute_api_LatLongBounds.__qualname__ = "LatLongBounds"
50569
- scout_compute_api_LatLongBounds.__module__ = "nominal_api.scout_compute_api"
50570
-
50571
-
50572
- class scout_compute_api_LatLongGeo(ConjureBeanType):
50573
- """A geo node derived from a lat and long series.
50574
- """
50575
-
50576
- @builtins.classmethod
50577
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50578
- return {
50579
- 'latitude': ConjureFieldDefinition('latitude', scout_compute_api_NumericSeries),
50580
- 'longitude': ConjureFieldDefinition('longitude', scout_compute_api_NumericSeries),
50581
- 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_compute_api_LatLongBounds])
50582
- }
50583
-
50584
- __slots__: List[str] = ['_latitude', '_longitude', '_bounds']
50585
-
50586
- def __init__(self, latitude: "scout_compute_api_NumericSeries", longitude: "scout_compute_api_NumericSeries", bounds: Optional["scout_compute_api_LatLongBounds"] = None) -> None:
50587
- self._latitude = latitude
50588
- self._longitude = longitude
50589
- self._bounds = bounds
50590
-
50591
- @builtins.property
50592
- def latitude(self) -> "scout_compute_api_NumericSeries":
50593
- return self._latitude
50594
-
50595
- @builtins.property
50596
- def longitude(self) -> "scout_compute_api_NumericSeries":
50597
- return self._longitude
50598
-
50599
- @builtins.property
50600
- def bounds(self) -> Optional["scout_compute_api_LatLongBounds"]:
50601
- return self._bounds
50602
-
50603
-
50604
- scout_compute_api_LatLongGeo.__name__ = "LatLongGeo"
50605
- scout_compute_api_LatLongGeo.__qualname__ = "LatLongGeo"
50606
- scout_compute_api_LatLongGeo.__module__ = "nominal_api.scout_compute_api"
50607
-
50608
-
50609
50336
  class scout_compute_api_LatLongPoint(ConjureBeanType):
50610
50337
 
50611
50338
  @builtins.classmethod
@@ -57758,35 +57485,6 @@ scout_compute_api_SummarizeCartesian3d.__qualname__ = "SummarizeCartesian3d"
57758
57485
  scout_compute_api_SummarizeCartesian3d.__module__ = "nominal_api.scout_compute_api"
57759
57486
 
57760
57487
 
57761
- class scout_compute_api_SummarizeGeo(ConjureBeanType):
57762
-
57763
- @builtins.classmethod
57764
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
57765
- return {
57766
- 'input': ConjureFieldDefinition('input', scout_compute_api_GeoSeries),
57767
- 'summary_strategy': ConjureFieldDefinition('summaryStrategy', scout_compute_api_GeoSummaryStrategy)
57768
- }
57769
-
57770
- __slots__: List[str] = ['_input', '_summary_strategy']
57771
-
57772
- def __init__(self, input: "scout_compute_api_GeoSeries", summary_strategy: "scout_compute_api_GeoSummaryStrategy") -> None:
57773
- self._input = input
57774
- self._summary_strategy = summary_strategy
57775
-
57776
- @builtins.property
57777
- def input(self) -> "scout_compute_api_GeoSeries":
57778
- return self._input
57779
-
57780
- @builtins.property
57781
- def summary_strategy(self) -> "scout_compute_api_GeoSummaryStrategy":
57782
- return self._summary_strategy
57783
-
57784
-
57785
- scout_compute_api_SummarizeGeo.__name__ = "SummarizeGeo"
57786
- scout_compute_api_SummarizeGeo.__qualname__ = "SummarizeGeo"
57787
- scout_compute_api_SummarizeGeo.__module__ = "nominal_api.scout_compute_api"
57788
-
57789
-
57790
57488
  class scout_compute_api_SummarizeRanges(ConjureBeanType):
57791
57489
 
57792
57490
  @builtins.classmethod
@@ -58247,37 +57945,6 @@ scout_compute_api_ThresholdingRanges.__qualname__ = "ThresholdingRanges"
58247
57945
  scout_compute_api_ThresholdingRanges.__module__ = "nominal_api.scout_compute_api"
58248
57946
 
58249
57947
 
58250
- class scout_compute_api_TimeBucketedGeoPlot(ConjureBeanType):
58251
-
58252
- @builtins.classmethod
58253
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
58254
- return {
58255
- 'timestamps': ConjureFieldDefinition('timestamps', List[api_Timestamp]),
58256
- 'buckets': ConjureFieldDefinition('buckets', List[scout_compute_api_GeoTimeBucket])
58257
- }
58258
-
58259
- __slots__: List[str] = ['_timestamps', '_buckets']
58260
-
58261
- def __init__(self, buckets: List["scout_compute_api_GeoTimeBucket"], timestamps: List["api_Timestamp"]) -> None:
58262
- self._timestamps = timestamps
58263
- self._buckets = buckets
58264
-
58265
- @builtins.property
58266
- def timestamps(self) -> List["api_Timestamp"]:
58267
- """The end of the bucket, exclusive.
58268
- """
58269
- return self._timestamps
58270
-
58271
- @builtins.property
58272
- def buckets(self) -> List["scout_compute_api_GeoTimeBucket"]:
58273
- return self._buckets
58274
-
58275
-
58276
- scout_compute_api_TimeBucketedGeoPlot.__name__ = "TimeBucketedGeoPlot"
58277
- scout_compute_api_TimeBucketedGeoPlot.__qualname__ = "TimeBucketedGeoPlot"
58278
- scout_compute_api_TimeBucketedGeoPlot.__module__ = "nominal_api.scout_compute_api"
58279
-
58280
-
58281
57948
  class scout_compute_api_TimeDifferenceSeries(ConjureBeanType):
58282
57949
  """Outputs a new series where each value is the difference between the time of the current and previous points.
58283
57950
  """
@@ -63842,141 +63509,6 @@ scout_compute_resolved_api_FrequencyDomainNodeV2Visitor.__qualname__ = "Frequenc
63842
63509
  scout_compute_resolved_api_FrequencyDomainNodeV2Visitor.__module__ = "nominal_api.scout_compute_resolved_api"
63843
63510
 
63844
63511
 
63845
- class scout_compute_resolved_api_GeoNode(ConjureUnionType):
63846
- _lat_long_geo_node: Optional["scout_compute_resolved_api_LatLongGeoNode"] = None
63847
-
63848
- @builtins.classmethod
63849
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
63850
- return {
63851
- 'lat_long_geo_node': ConjureFieldDefinition('latLongGeoNode', scout_compute_resolved_api_LatLongGeoNode)
63852
- }
63853
-
63854
- def __init__(
63855
- self,
63856
- lat_long_geo_node: Optional["scout_compute_resolved_api_LatLongGeoNode"] = None,
63857
- type_of_union: Optional[str] = None
63858
- ) -> None:
63859
- if type_of_union is None:
63860
- if (lat_long_geo_node is not None) != 1:
63861
- raise ValueError('a union must contain a single member')
63862
-
63863
- if lat_long_geo_node is not None:
63864
- self._lat_long_geo_node = lat_long_geo_node
63865
- self._type = 'latLongGeoNode'
63866
-
63867
- elif type_of_union == 'latLongGeoNode':
63868
- if lat_long_geo_node is None:
63869
- raise ValueError('a union value must not be None')
63870
- self._lat_long_geo_node = lat_long_geo_node
63871
- self._type = 'latLongGeoNode'
63872
-
63873
- @builtins.property
63874
- def lat_long_geo_node(self) -> Optional["scout_compute_resolved_api_LatLongGeoNode"]:
63875
- return self._lat_long_geo_node
63876
-
63877
- def accept(self, visitor) -> Any:
63878
- if not isinstance(visitor, scout_compute_resolved_api_GeoNodeVisitor):
63879
- raise ValueError('{} is not an instance of scout_compute_resolved_api_GeoNodeVisitor'.format(visitor.__class__.__name__))
63880
- if self._type == 'latLongGeoNode' and self.lat_long_geo_node is not None:
63881
- return visitor._lat_long_geo_node(self.lat_long_geo_node)
63882
-
63883
-
63884
- scout_compute_resolved_api_GeoNode.__name__ = "GeoNode"
63885
- scout_compute_resolved_api_GeoNode.__qualname__ = "GeoNode"
63886
- scout_compute_resolved_api_GeoNode.__module__ = "nominal_api.scout_compute_resolved_api"
63887
-
63888
-
63889
- class scout_compute_resolved_api_GeoNodeVisitor:
63890
-
63891
- @abstractmethod
63892
- def _lat_long_geo_node(self, lat_long_geo_node: "scout_compute_resolved_api_LatLongGeoNode") -> Any:
63893
- pass
63894
-
63895
-
63896
- scout_compute_resolved_api_GeoNodeVisitor.__name__ = "GeoNodeVisitor"
63897
- scout_compute_resolved_api_GeoNodeVisitor.__qualname__ = "GeoNodeVisitor"
63898
- scout_compute_resolved_api_GeoNodeVisitor.__module__ = "nominal_api.scout_compute_resolved_api"
63899
-
63900
-
63901
- class scout_compute_resolved_api_GeoNodeSummaryStrategy(ConjureUnionType):
63902
- _temporal: Optional["scout_compute_resolved_api_GeoNodeTemporalSummary"] = None
63903
-
63904
- @builtins.classmethod
63905
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
63906
- return {
63907
- 'temporal': ConjureFieldDefinition('temporal', scout_compute_resolved_api_GeoNodeTemporalSummary)
63908
- }
63909
-
63910
- def __init__(
63911
- self,
63912
- temporal: Optional["scout_compute_resolved_api_GeoNodeTemporalSummary"] = None,
63913
- type_of_union: Optional[str] = None
63914
- ) -> None:
63915
- if type_of_union is None:
63916
- if (temporal is not None) != 1:
63917
- raise ValueError('a union must contain a single member')
63918
-
63919
- if temporal is not None:
63920
- self._temporal = temporal
63921
- self._type = 'temporal'
63922
-
63923
- elif type_of_union == 'temporal':
63924
- if temporal is None:
63925
- raise ValueError('a union value must not be None')
63926
- self._temporal = temporal
63927
- self._type = 'temporal'
63928
-
63929
- @builtins.property
63930
- def temporal(self) -> Optional["scout_compute_resolved_api_GeoNodeTemporalSummary"]:
63931
- return self._temporal
63932
-
63933
- def accept(self, visitor) -> Any:
63934
- if not isinstance(visitor, scout_compute_resolved_api_GeoNodeSummaryStrategyVisitor):
63935
- raise ValueError('{} is not an instance of scout_compute_resolved_api_GeoNodeSummaryStrategyVisitor'.format(visitor.__class__.__name__))
63936
- if self._type == 'temporal' and self.temporal is not None:
63937
- return visitor._temporal(self.temporal)
63938
-
63939
-
63940
- scout_compute_resolved_api_GeoNodeSummaryStrategy.__name__ = "GeoNodeSummaryStrategy"
63941
- scout_compute_resolved_api_GeoNodeSummaryStrategy.__qualname__ = "GeoNodeSummaryStrategy"
63942
- scout_compute_resolved_api_GeoNodeSummaryStrategy.__module__ = "nominal_api.scout_compute_resolved_api"
63943
-
63944
-
63945
- class scout_compute_resolved_api_GeoNodeSummaryStrategyVisitor:
63946
-
63947
- @abstractmethod
63948
- def _temporal(self, temporal: "scout_compute_resolved_api_GeoNodeTemporalSummary") -> Any:
63949
- pass
63950
-
63951
-
63952
- scout_compute_resolved_api_GeoNodeSummaryStrategyVisitor.__name__ = "GeoNodeSummaryStrategyVisitor"
63953
- scout_compute_resolved_api_GeoNodeSummaryStrategyVisitor.__qualname__ = "GeoNodeSummaryStrategyVisitor"
63954
- scout_compute_resolved_api_GeoNodeSummaryStrategyVisitor.__module__ = "nominal_api.scout_compute_resolved_api"
63955
-
63956
-
63957
- class scout_compute_resolved_api_GeoNodeTemporalSummary(ConjureBeanType):
63958
-
63959
- @builtins.classmethod
63960
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
63961
- return {
63962
- 'resolution': ConjureFieldDefinition('resolution', int)
63963
- }
63964
-
63965
- __slots__: List[str] = ['_resolution']
63966
-
63967
- def __init__(self, resolution: int) -> None:
63968
- self._resolution = resolution
63969
-
63970
- @builtins.property
63971
- def resolution(self) -> int:
63972
- return self._resolution
63973
-
63974
-
63975
- scout_compute_resolved_api_GeoNodeTemporalSummary.__name__ = "GeoNodeTemporalSummary"
63976
- scout_compute_resolved_api_GeoNodeTemporalSummary.__qualname__ = "GeoNodeTemporalSummary"
63977
- scout_compute_resolved_api_GeoNodeTemporalSummary.__module__ = "nominal_api.scout_compute_resolved_api"
63978
-
63979
-
63980
63512
  class scout_compute_resolved_api_HighPassConfiguration(ConjureBeanType):
63981
63513
 
63982
63514
  @builtins.classmethod
@@ -64191,70 +63723,6 @@ scout_compute_resolved_api_IntersectRangesNode.__qualname__ = "IntersectRangesNo
64191
63723
  scout_compute_resolved_api_IntersectRangesNode.__module__ = "nominal_api.scout_compute_resolved_api"
64192
63724
 
64193
63725
 
64194
- class scout_compute_resolved_api_LatLongBounds(ConjureBeanType):
64195
-
64196
- @builtins.classmethod
64197
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
64198
- return {
64199
- 'south_west': ConjureFieldDefinition('southWest', scout_compute_api_LatLongPoint),
64200
- 'north_east': ConjureFieldDefinition('northEast', scout_compute_api_LatLongPoint)
64201
- }
64202
-
64203
- __slots__: List[str] = ['_south_west', '_north_east']
64204
-
64205
- def __init__(self, north_east: "scout_compute_api_LatLongPoint", south_west: "scout_compute_api_LatLongPoint") -> None:
64206
- self._south_west = south_west
64207
- self._north_east = north_east
64208
-
64209
- @builtins.property
64210
- def south_west(self) -> "scout_compute_api_LatLongPoint":
64211
- return self._south_west
64212
-
64213
- @builtins.property
64214
- def north_east(self) -> "scout_compute_api_LatLongPoint":
64215
- return self._north_east
64216
-
64217
-
64218
- scout_compute_resolved_api_LatLongBounds.__name__ = "LatLongBounds"
64219
- scout_compute_resolved_api_LatLongBounds.__qualname__ = "LatLongBounds"
64220
- scout_compute_resolved_api_LatLongBounds.__module__ = "nominal_api.scout_compute_resolved_api"
64221
-
64222
-
64223
- class scout_compute_resolved_api_LatLongGeoNode(ConjureBeanType):
64224
-
64225
- @builtins.classmethod
64226
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
64227
- return {
64228
- 'latitude': ConjureFieldDefinition('latitude', scout_compute_resolved_api_NumericSeriesNode),
64229
- 'longitude': ConjureFieldDefinition('longitude', scout_compute_resolved_api_NumericSeriesNode),
64230
- 'bounds': ConjureFieldDefinition('bounds', OptionalTypeWrapper[scout_compute_resolved_api_LatLongBounds])
64231
- }
64232
-
64233
- __slots__: List[str] = ['_latitude', '_longitude', '_bounds']
64234
-
64235
- def __init__(self, latitude: "scout_compute_resolved_api_NumericSeriesNode", longitude: "scout_compute_resolved_api_NumericSeriesNode", bounds: Optional["scout_compute_resolved_api_LatLongBounds"] = None) -> None:
64236
- self._latitude = latitude
64237
- self._longitude = longitude
64238
- self._bounds = bounds
64239
-
64240
- @builtins.property
64241
- def latitude(self) -> "scout_compute_resolved_api_NumericSeriesNode":
64242
- return self._latitude
64243
-
64244
- @builtins.property
64245
- def longitude(self) -> "scout_compute_resolved_api_NumericSeriesNode":
64246
- return self._longitude
64247
-
64248
- @builtins.property
64249
- def bounds(self) -> Optional["scout_compute_resolved_api_LatLongBounds"]:
64250
- return self._bounds
64251
-
64252
-
64253
- scout_compute_resolved_api_LatLongGeoNode.__name__ = "LatLongGeoNode"
64254
- scout_compute_resolved_api_LatLongGeoNode.__qualname__ = "LatLongGeoNode"
64255
- scout_compute_resolved_api_LatLongGeoNode.__module__ = "nominal_api.scout_compute_resolved_api"
64256
-
64257
-
64258
63726
  class scout_compute_resolved_api_LiteralRange(ConjureBeanType):
64259
63727
 
64260
63728
  @builtins.classmethod
@@ -67054,7 +66522,6 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67054
66522
  _frequency: Optional["scout_compute_resolved_api_FrequencyDomainNode"] = None
67055
66523
  _frequency_v2: Optional["scout_compute_resolved_api_FrequencyDomainNodeV2"] = None
67056
66524
  _histogram: Optional["scout_compute_resolved_api_HistogramNode"] = None
67057
- _geo: Optional["scout_compute_resolved_api_SummarizeGeoNode"] = None
67058
66525
  _curve: Optional["scout_compute_resolved_api_CurveFitNode"] = None
67059
66526
 
67060
66527
  @builtins.classmethod
@@ -67068,7 +66535,6 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67068
66535
  'frequency': ConjureFieldDefinition('frequency', scout_compute_resolved_api_FrequencyDomainNode),
67069
66536
  'frequency_v2': ConjureFieldDefinition('frequencyV2', scout_compute_resolved_api_FrequencyDomainNodeV2),
67070
66537
  'histogram': ConjureFieldDefinition('histogram', scout_compute_resolved_api_HistogramNode),
67071
- 'geo': ConjureFieldDefinition('geo', scout_compute_resolved_api_SummarizeGeoNode),
67072
66538
  'curve': ConjureFieldDefinition('curve', scout_compute_resolved_api_CurveFitNode)
67073
66539
  }
67074
66540
 
@@ -67082,12 +66548,11 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67082
66548
  frequency: Optional["scout_compute_resolved_api_FrequencyDomainNode"] = None,
67083
66549
  frequency_v2: Optional["scout_compute_resolved_api_FrequencyDomainNodeV2"] = None,
67084
66550
  histogram: Optional["scout_compute_resolved_api_HistogramNode"] = None,
67085
- geo: Optional["scout_compute_resolved_api_SummarizeGeoNode"] = None,
67086
66551
  curve: Optional["scout_compute_resolved_api_CurveFitNode"] = None,
67087
66552
  type_of_union: Optional[str] = None
67088
66553
  ) -> None:
67089
66554
  if type_of_union is None:
67090
- if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (frequency_v2 is not None) + (histogram is not None) + (geo is not None) + (curve is not None) != 1:
66555
+ if (ranges is not None) + (series is not None) + (value is not None) + (cartesian is not None) + (cartesian3d is not None) + (frequency is not None) + (frequency_v2 is not None) + (histogram is not None) + (curve is not None) != 1:
67091
66556
  raise ValueError('a union must contain a single member')
67092
66557
 
67093
66558
  if ranges is not None:
@@ -67114,9 +66579,6 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67114
66579
  if histogram is not None:
67115
66580
  self._histogram = histogram
67116
66581
  self._type = 'histogram'
67117
- if geo is not None:
67118
- self._geo = geo
67119
- self._type = 'geo'
67120
66582
  if curve is not None:
67121
66583
  self._curve = curve
67122
66584
  self._type = 'curve'
@@ -67161,11 +66623,6 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67161
66623
  raise ValueError('a union value must not be None')
67162
66624
  self._histogram = histogram
67163
66625
  self._type = 'histogram'
67164
- elif type_of_union == 'geo':
67165
- if geo is None:
67166
- raise ValueError('a union value must not be None')
67167
- self._geo = geo
67168
- self._type = 'geo'
67169
66626
  elif type_of_union == 'curve':
67170
66627
  if curve is None:
67171
66628
  raise ValueError('a union value must not be None')
@@ -67204,10 +66661,6 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67204
66661
  def histogram(self) -> Optional["scout_compute_resolved_api_HistogramNode"]:
67205
66662
  return self._histogram
67206
66663
 
67207
- @builtins.property
67208
- def geo(self) -> Optional["scout_compute_resolved_api_SummarizeGeoNode"]:
67209
- return self._geo
67210
-
67211
66664
  @builtins.property
67212
66665
  def curve(self) -> Optional["scout_compute_resolved_api_CurveFitNode"]:
67213
66666
  return self._curve
@@ -67231,8 +66684,6 @@ class scout_compute_resolved_api_ResolvedNode(ConjureUnionType):
67231
66684
  return visitor._frequency_v2(self.frequency_v2)
67232
66685
  if self._type == 'histogram' and self.histogram is not None:
67233
66686
  return visitor._histogram(self.histogram)
67234
- if self._type == 'geo' and self.geo is not None:
67235
- return visitor._geo(self.geo)
67236
66687
  if self._type == 'curve' and self.curve is not None:
67237
66688
  return visitor._curve(self.curve)
67238
66689
 
@@ -67276,10 +66727,6 @@ class scout_compute_resolved_api_ResolvedNodeVisitor:
67276
66727
  def _histogram(self, histogram: "scout_compute_resolved_api_HistogramNode") -> Any:
67277
66728
  pass
67278
66729
 
67279
- @abstractmethod
67280
- def _geo(self, geo: "scout_compute_resolved_api_SummarizeGeoNode") -> Any:
67281
- pass
67282
-
67283
66730
  @abstractmethod
67284
66731
  def _curve(self, curve: "scout_compute_resolved_api_CurveFitNode") -> Any:
67285
66732
  pass
@@ -68488,35 +67935,6 @@ scout_compute_resolved_api_SummarizeCartesianNode.__qualname__ = "SummarizeCarte
68488
67935
  scout_compute_resolved_api_SummarizeCartesianNode.__module__ = "nominal_api.scout_compute_resolved_api"
68489
67936
 
68490
67937
 
68491
- class scout_compute_resolved_api_SummarizeGeoNode(ConjureBeanType):
68492
-
68493
- @builtins.classmethod
68494
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
68495
- return {
68496
- 'input': ConjureFieldDefinition('input', scout_compute_resolved_api_GeoNode),
68497
- 'summary_strategy': ConjureFieldDefinition('summaryStrategy', scout_compute_resolved_api_GeoNodeSummaryStrategy)
68498
- }
68499
-
68500
- __slots__: List[str] = ['_input', '_summary_strategy']
68501
-
68502
- def __init__(self, input: "scout_compute_resolved_api_GeoNode", summary_strategy: "scout_compute_resolved_api_GeoNodeSummaryStrategy") -> None:
68503
- self._input = input
68504
- self._summary_strategy = summary_strategy
68505
-
68506
- @builtins.property
68507
- def input(self) -> "scout_compute_resolved_api_GeoNode":
68508
- return self._input
68509
-
68510
- @builtins.property
68511
- def summary_strategy(self) -> "scout_compute_resolved_api_GeoNodeSummaryStrategy":
68512
- return self._summary_strategy
68513
-
68514
-
68515
- scout_compute_resolved_api_SummarizeGeoNode.__name__ = "SummarizeGeoNode"
68516
- scout_compute_resolved_api_SummarizeGeoNode.__qualname__ = "SummarizeGeoNode"
68517
- scout_compute_resolved_api_SummarizeGeoNode.__module__ = "nominal_api.scout_compute_resolved_api"
68518
-
68519
-
68520
67938
  class scout_compute_resolved_api_SummarizeRangesNode(ConjureBeanType):
68521
67939
 
68522
67940
  @builtins.classmethod
@@ -75352,6 +74770,42 @@ Nominal connections which have their tags automatically indexed in the underlyin
75352
74770
  _decoder = ConjureDecoder()
75353
74771
  return _decoder.decode(_response.json(), List[scout_datasource_connection_api_Connection], self._return_none_for_unknown_union_types)
75354
74772
 
74773
+ def list_connections_v2(self, auth_header: str, workspaces: List[str] = None, include_archived: Optional[bool] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> "scout_datasource_connection_api_ListConnectionsResponse":
74774
+ """Lists connections with pagination. Returns connections ordered by creation time descending.
74775
+ """
74776
+ workspaces = workspaces if workspaces is not None else []
74777
+ _conjure_encoder = ConjureEncoder()
74778
+
74779
+ _headers: Dict[str, Any] = {
74780
+ 'Accept': 'application/json',
74781
+ 'Authorization': auth_header,
74782
+ }
74783
+
74784
+ _params: Dict[str, Any] = {
74785
+ 'includeArchived': _conjure_encoder.default(include_archived),
74786
+ 'workspaces': _conjure_encoder.default(workspaces),
74787
+ 'pageSize': _conjure_encoder.default(page_size),
74788
+ 'nextPageToken': _conjure_encoder.default(next_page_token),
74789
+ }
74790
+
74791
+ _path_params: Dict[str, str] = {
74792
+ }
74793
+
74794
+ _json: Any = None
74795
+
74796
+ _path = '/data-source/connection/v2/connections'
74797
+ _path = _path.format(**_path_params)
74798
+
74799
+ _response: Response = self._request(
74800
+ 'GET',
74801
+ self._uri + _path,
74802
+ params=_params,
74803
+ headers=_headers,
74804
+ json=_json)
74805
+
74806
+ _decoder = ConjureDecoder()
74807
+ return _decoder.decode(_response.json(), scout_datasource_connection_api_ListConnectionsResponse, self._return_none_for_unknown_union_types)
74808
+
75355
74809
  def archive_connection(self, auth_header: str, rid: str) -> None:
75356
74810
  """Archives a connection, which simply tags the connection for a client to filter.
75357
74811
  """
@@ -76727,6 +76181,35 @@ scout_datasource_connection_api_LimitsConfig.__qualname__ = "LimitsConfig"
76727
76181
  scout_datasource_connection_api_LimitsConfig.__module__ = "nominal_api.scout_datasource_connection_api"
76728
76182
 
76729
76183
 
76184
+ class scout_datasource_connection_api_ListConnectionsResponse(ConjureBeanType):
76185
+
76186
+ @builtins.classmethod
76187
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
76188
+ return {
76189
+ 'connections': ConjureFieldDefinition('connections', List[scout_datasource_connection_api_Connection]),
76190
+ 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[api_Token])
76191
+ }
76192
+
76193
+ __slots__: List[str] = ['_connections', '_next_page_token']
76194
+
76195
+ def __init__(self, connections: List["scout_datasource_connection_api_Connection"], next_page_token: Optional[str] = None) -> None:
76196
+ self._connections = connections
76197
+ self._next_page_token = next_page_token
76198
+
76199
+ @builtins.property
76200
+ def connections(self) -> List["scout_datasource_connection_api_Connection"]:
76201
+ return self._connections
76202
+
76203
+ @builtins.property
76204
+ def next_page_token(self) -> Optional[str]:
76205
+ return self._next_page_token
76206
+
76207
+
76208
+ scout_datasource_connection_api_ListConnectionsResponse.__name__ = "ListConnectionsResponse"
76209
+ scout_datasource_connection_api_ListConnectionsResponse.__qualname__ = "ListConnectionsResponse"
76210
+ scout_datasource_connection_api_ListConnectionsResponse.__module__ = "nominal_api.scout_datasource_connection_api"
76211
+
76212
+
76730
76213
  class scout_datasource_connection_api_NominalChannelNameComponent(ConjureUnionType):
76731
76214
  _channel: Optional["api_Empty"] = None
76732
76215
  _value_of_tag_with_name: Optional[str] = None
@@ -78245,25 +77728,150 @@ scout_favorites_api_SetFavoritesListRequest.__qualname__ = "SetFavoritesListRequ
78245
77728
  scout_favorites_api_SetFavoritesListRequest.__module__ = "nominal_api.scout_favorites_api"
78246
77729
 
78247
77730
 
77731
+ class scout_integrations_api_AlertMessageFields(ConjureBeanType):
77732
+
77733
+ @builtins.classmethod
77734
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
77735
+ return {
77736
+ 'asset_title': ConjureFieldDefinition('assetTitle', str),
77737
+ 'check_title': ConjureFieldDefinition('checkTitle', str),
77738
+ 'check_description': ConjureFieldDefinition('checkDescription', str),
77739
+ 'checklist_title': ConjureFieldDefinition('checklistTitle', str),
77740
+ 'asset_rid': ConjureFieldDefinition('assetRid', scout_rids_api_AssetRid),
77741
+ 'check_lineage_rid': ConjureFieldDefinition('checkLineageRid', scout_rids_api_CheckLineageRid),
77742
+ 'workbook_url': ConjureFieldDefinition('workbookUrl', OptionalTypeWrapper[str]),
77743
+ 'alert_url': ConjureFieldDefinition('alertUrl', OptionalTypeWrapper[str]),
77744
+ 'event_type': ConjureFieldDefinition('eventType', event_EventType),
77745
+ 'priority': ConjureFieldDefinition('priority', scout_api_Priority),
77746
+ 'labels': ConjureFieldDefinition('labels', List[str]),
77747
+ 'alert_type': ConjureFieldDefinition('alertType', scout_integrations_api_AlertType)
77748
+ }
77749
+
77750
+ __slots__: List[str] = ['_asset_title', '_check_title', '_check_description', '_checklist_title', '_asset_rid', '_check_lineage_rid', '_workbook_url', '_alert_url', '_event_type', '_priority', '_labels', '_alert_type']
77751
+
77752
+ def __init__(self, alert_type: "scout_integrations_api_AlertType", asset_rid: str, asset_title: str, check_description: str, check_lineage_rid: str, check_title: str, checklist_title: str, event_type: "event_EventType", labels: List[str], priority: "scout_api_Priority", alert_url: Optional[str] = None, workbook_url: Optional[str] = None) -> None:
77753
+ self._asset_title = asset_title
77754
+ self._check_title = check_title
77755
+ self._check_description = check_description
77756
+ self._checklist_title = checklist_title
77757
+ self._asset_rid = asset_rid
77758
+ self._check_lineage_rid = check_lineage_rid
77759
+ self._workbook_url = workbook_url
77760
+ self._alert_url = alert_url
77761
+ self._event_type = event_type
77762
+ self._priority = priority
77763
+ self._labels = labels
77764
+ self._alert_type = alert_type
77765
+
77766
+ @builtins.property
77767
+ def asset_title(self) -> str:
77768
+ return self._asset_title
77769
+
77770
+ @builtins.property
77771
+ def check_title(self) -> str:
77772
+ return self._check_title
77773
+
77774
+ @builtins.property
77775
+ def check_description(self) -> str:
77776
+ return self._check_description
77777
+
77778
+ @builtins.property
77779
+ def checklist_title(self) -> str:
77780
+ return self._checklist_title
77781
+
77782
+ @builtins.property
77783
+ def asset_rid(self) -> str:
77784
+ return self._asset_rid
77785
+
77786
+ @builtins.property
77787
+ def check_lineage_rid(self) -> str:
77788
+ return self._check_lineage_rid
77789
+
77790
+ @builtins.property
77791
+ def workbook_url(self) -> Optional[str]:
77792
+ """Appended to the end of the message as a button (if supported) or as a text hyperlink.
77793
+ """
77794
+ return self._workbook_url
77795
+
77796
+ @builtins.property
77797
+ def alert_url(self) -> Optional[str]:
77798
+ """Appended to the end of the message as a button (if supported) or as a text hyperlink.
77799
+ """
77800
+ return self._alert_url
77801
+
77802
+ @builtins.property
77803
+ def event_type(self) -> "event_EventType":
77804
+ """Will be prefixed in title and indicated by an icon.
77805
+ """
77806
+ return self._event_type
77807
+
77808
+ @builtins.property
77809
+ def priority(self) -> "scout_api_Priority":
77810
+ return self._priority
77811
+
77812
+ @builtins.property
77813
+ def labels(self) -> List[str]:
77814
+ """Currently exposed as 'tags' on the frontend to match Opsgenie naming. Used by some integrations to filter/route messages.
77815
+ """
77816
+ return self._labels
77817
+
77818
+ @builtins.property
77819
+ def alert_type(self) -> "scout_integrations_api_AlertType":
77820
+ """Determines execution status of the alert, between success, failure, and execution error.
77821
+ """
77822
+ return self._alert_type
77823
+
77824
+
77825
+ scout_integrations_api_AlertMessageFields.__name__ = "AlertMessageFields"
77826
+ scout_integrations_api_AlertMessageFields.__qualname__ = "AlertMessageFields"
77827
+ scout_integrations_api_AlertMessageFields.__module__ = "nominal_api.scout_integrations_api"
77828
+
77829
+
77830
+ class scout_integrations_api_AlertType(ConjureEnumType):
77831
+
77832
+ INVALID = 'INVALID'
77833
+ '''INVALID'''
77834
+ FAILURE = 'FAILURE'
77835
+ '''FAILURE'''
77836
+ RECOVERY = 'RECOVERY'
77837
+ '''RECOVERY'''
77838
+ UNKNOWN = 'UNKNOWN'
77839
+ '''UNKNOWN'''
77840
+
77841
+ def __reduce_ex__(self, proto):
77842
+ return self.__class__, (self.name,)
77843
+
77844
+
77845
+ scout_integrations_api_AlertType.__name__ = "AlertType"
77846
+ scout_integrations_api_AlertType.__qualname__ = "AlertType"
77847
+ scout_integrations_api_AlertType.__module__ = "nominal_api.scout_integrations_api"
77848
+
77849
+
78248
77850
  class scout_integrations_api_CreateIntegrationDetails(ConjureUnionType):
78249
77851
  _create_simple_webhook_details: Optional["scout_integrations_api_CreateSimpleWebhookDetails"] = None
78250
77852
  _create_opsgenie_integration_details: Optional["scout_integrations_api_CreateOpsgenieIntegrationDetails"] = None
77853
+ _create_teams_webhook_integration_details: Optional["scout_integrations_api_CreateTeamsWebhookIntegrationDetails"] = None
77854
+ _create_pager_duty_integration_details: Optional["scout_integrations_api_CreatePagerDutyIntegrationDetails"] = None
78251
77855
 
78252
77856
  @builtins.classmethod
78253
77857
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
78254
77858
  return {
78255
77859
  'create_simple_webhook_details': ConjureFieldDefinition('createSimpleWebhookDetails', scout_integrations_api_CreateSimpleWebhookDetails),
78256
- 'create_opsgenie_integration_details': ConjureFieldDefinition('createOpsgenieIntegrationDetails', scout_integrations_api_CreateOpsgenieIntegrationDetails)
77860
+ 'create_opsgenie_integration_details': ConjureFieldDefinition('createOpsgenieIntegrationDetails', scout_integrations_api_CreateOpsgenieIntegrationDetails),
77861
+ 'create_teams_webhook_integration_details': ConjureFieldDefinition('createTeamsWebhookIntegrationDetails', scout_integrations_api_CreateTeamsWebhookIntegrationDetails),
77862
+ 'create_pager_duty_integration_details': ConjureFieldDefinition('createPagerDutyIntegrationDetails', scout_integrations_api_CreatePagerDutyIntegrationDetails)
78257
77863
  }
78258
77864
 
78259
77865
  def __init__(
78260
77866
  self,
78261
77867
  create_simple_webhook_details: Optional["scout_integrations_api_CreateSimpleWebhookDetails"] = None,
78262
77868
  create_opsgenie_integration_details: Optional["scout_integrations_api_CreateOpsgenieIntegrationDetails"] = None,
77869
+ create_teams_webhook_integration_details: Optional["scout_integrations_api_CreateTeamsWebhookIntegrationDetails"] = None,
77870
+ create_pager_duty_integration_details: Optional["scout_integrations_api_CreatePagerDutyIntegrationDetails"] = None,
78263
77871
  type_of_union: Optional[str] = None
78264
77872
  ) -> None:
78265
77873
  if type_of_union is None:
78266
- if (create_simple_webhook_details is not None) + (create_opsgenie_integration_details is not None) != 1:
77874
+ if (create_simple_webhook_details is not None) + (create_opsgenie_integration_details is not None) + (create_teams_webhook_integration_details is not None) + (create_pager_duty_integration_details is not None) != 1:
78267
77875
  raise ValueError('a union must contain a single member')
78268
77876
 
78269
77877
  if create_simple_webhook_details is not None:
@@ -78272,6 +77880,12 @@ class scout_integrations_api_CreateIntegrationDetails(ConjureUnionType):
78272
77880
  if create_opsgenie_integration_details is not None:
78273
77881
  self._create_opsgenie_integration_details = create_opsgenie_integration_details
78274
77882
  self._type = 'createOpsgenieIntegrationDetails'
77883
+ if create_teams_webhook_integration_details is not None:
77884
+ self._create_teams_webhook_integration_details = create_teams_webhook_integration_details
77885
+ self._type = 'createTeamsWebhookIntegrationDetails'
77886
+ if create_pager_duty_integration_details is not None:
77887
+ self._create_pager_duty_integration_details = create_pager_duty_integration_details
77888
+ self._type = 'createPagerDutyIntegrationDetails'
78275
77889
 
78276
77890
  elif type_of_union == 'createSimpleWebhookDetails':
78277
77891
  if create_simple_webhook_details is None:
@@ -78283,6 +77897,16 @@ class scout_integrations_api_CreateIntegrationDetails(ConjureUnionType):
78283
77897
  raise ValueError('a union value must not be None')
78284
77898
  self._create_opsgenie_integration_details = create_opsgenie_integration_details
78285
77899
  self._type = 'createOpsgenieIntegrationDetails'
77900
+ elif type_of_union == 'createTeamsWebhookIntegrationDetails':
77901
+ if create_teams_webhook_integration_details is None:
77902
+ raise ValueError('a union value must not be None')
77903
+ self._create_teams_webhook_integration_details = create_teams_webhook_integration_details
77904
+ self._type = 'createTeamsWebhookIntegrationDetails'
77905
+ elif type_of_union == 'createPagerDutyIntegrationDetails':
77906
+ if create_pager_duty_integration_details is None:
77907
+ raise ValueError('a union value must not be None')
77908
+ self._create_pager_duty_integration_details = create_pager_duty_integration_details
77909
+ self._type = 'createPagerDutyIntegrationDetails'
78286
77910
 
78287
77911
  @builtins.property
78288
77912
  def create_simple_webhook_details(self) -> Optional["scout_integrations_api_CreateSimpleWebhookDetails"]:
@@ -78292,6 +77916,14 @@ class scout_integrations_api_CreateIntegrationDetails(ConjureUnionType):
78292
77916
  def create_opsgenie_integration_details(self) -> Optional["scout_integrations_api_CreateOpsgenieIntegrationDetails"]:
78293
77917
  return self._create_opsgenie_integration_details
78294
77918
 
77919
+ @builtins.property
77920
+ def create_teams_webhook_integration_details(self) -> Optional["scout_integrations_api_CreateTeamsWebhookIntegrationDetails"]:
77921
+ return self._create_teams_webhook_integration_details
77922
+
77923
+ @builtins.property
77924
+ def create_pager_duty_integration_details(self) -> Optional["scout_integrations_api_CreatePagerDutyIntegrationDetails"]:
77925
+ return self._create_pager_duty_integration_details
77926
+
78295
77927
  def accept(self, visitor) -> Any:
78296
77928
  if not isinstance(visitor, scout_integrations_api_CreateIntegrationDetailsVisitor):
78297
77929
  raise ValueError('{} is not an instance of scout_integrations_api_CreateIntegrationDetailsVisitor'.format(visitor.__class__.__name__))
@@ -78299,6 +77931,10 @@ class scout_integrations_api_CreateIntegrationDetails(ConjureUnionType):
78299
77931
  return visitor._create_simple_webhook_details(self.create_simple_webhook_details)
78300
77932
  if self._type == 'createOpsgenieIntegrationDetails' and self.create_opsgenie_integration_details is not None:
78301
77933
  return visitor._create_opsgenie_integration_details(self.create_opsgenie_integration_details)
77934
+ if self._type == 'createTeamsWebhookIntegrationDetails' and self.create_teams_webhook_integration_details is not None:
77935
+ return visitor._create_teams_webhook_integration_details(self.create_teams_webhook_integration_details)
77936
+ if self._type == 'createPagerDutyIntegrationDetails' and self.create_pager_duty_integration_details is not None:
77937
+ return visitor._create_pager_duty_integration_details(self.create_pager_duty_integration_details)
78302
77938
 
78303
77939
 
78304
77940
  scout_integrations_api_CreateIntegrationDetails.__name__ = "CreateIntegrationDetails"
@@ -78316,6 +77952,14 @@ class scout_integrations_api_CreateIntegrationDetailsVisitor:
78316
77952
  def _create_opsgenie_integration_details(self, create_opsgenie_integration_details: "scout_integrations_api_CreateOpsgenieIntegrationDetails") -> Any:
78317
77953
  pass
78318
77954
 
77955
+ @abstractmethod
77956
+ def _create_teams_webhook_integration_details(self, create_teams_webhook_integration_details: "scout_integrations_api_CreateTeamsWebhookIntegrationDetails") -> Any:
77957
+ pass
77958
+
77959
+ @abstractmethod
77960
+ def _create_pager_duty_integration_details(self, create_pager_duty_integration_details: "scout_integrations_api_CreatePagerDutyIntegrationDetails") -> Any:
77961
+ pass
77962
+
78319
77963
 
78320
77964
  scout_integrations_api_CreateIntegrationDetailsVisitor.__name__ = "CreateIntegrationDetailsVisitor"
78321
77965
  scout_integrations_api_CreateIntegrationDetailsVisitor.__qualname__ = "CreateIntegrationDetailsVisitor"
@@ -78395,6 +78039,29 @@ scout_integrations_api_CreateOpsgenieIntegrationDetails.__qualname__ = "CreateOp
78395
78039
  scout_integrations_api_CreateOpsgenieIntegrationDetails.__module__ = "nominal_api.scout_integrations_api"
78396
78040
 
78397
78041
 
78042
+ class scout_integrations_api_CreatePagerDutyIntegrationDetails(ConjureBeanType):
78043
+
78044
+ @builtins.classmethod
78045
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
78046
+ return {
78047
+ 'routing_key': ConjureFieldDefinition('routingKey', str)
78048
+ }
78049
+
78050
+ __slots__: List[str] = ['_routing_key']
78051
+
78052
+ def __init__(self, routing_key: str) -> None:
78053
+ self._routing_key = routing_key
78054
+
78055
+ @builtins.property
78056
+ def routing_key(self) -> str:
78057
+ return self._routing_key
78058
+
78059
+
78060
+ scout_integrations_api_CreatePagerDutyIntegrationDetails.__name__ = "CreatePagerDutyIntegrationDetails"
78061
+ scout_integrations_api_CreatePagerDutyIntegrationDetails.__qualname__ = "CreatePagerDutyIntegrationDetails"
78062
+ scout_integrations_api_CreatePagerDutyIntegrationDetails.__module__ = "nominal_api.scout_integrations_api"
78063
+
78064
+
78398
78065
  class scout_integrations_api_CreateSimpleWebhookDetails(ConjureBeanType):
78399
78066
 
78400
78067
  @builtins.classmethod
@@ -78418,6 +78085,29 @@ scout_integrations_api_CreateSimpleWebhookDetails.__qualname__ = "CreateSimpleWe
78418
78085
  scout_integrations_api_CreateSimpleWebhookDetails.__module__ = "nominal_api.scout_integrations_api"
78419
78086
 
78420
78087
 
78088
+ class scout_integrations_api_CreateTeamsWebhookIntegrationDetails(ConjureBeanType):
78089
+
78090
+ @builtins.classmethod
78091
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
78092
+ return {
78093
+ 'webhook': ConjureFieldDefinition('webhook', str)
78094
+ }
78095
+
78096
+ __slots__: List[str] = ['_webhook']
78097
+
78098
+ def __init__(self, webhook: str) -> None:
78099
+ self._webhook = webhook
78100
+
78101
+ @builtins.property
78102
+ def webhook(self) -> str:
78103
+ return self._webhook
78104
+
78105
+
78106
+ scout_integrations_api_CreateTeamsWebhookIntegrationDetails.__name__ = "CreateTeamsWebhookIntegrationDetails"
78107
+ scout_integrations_api_CreateTeamsWebhookIntegrationDetails.__qualname__ = "CreateTeamsWebhookIntegrationDetails"
78108
+ scout_integrations_api_CreateTeamsWebhookIntegrationDetails.__module__ = "nominal_api.scout_integrations_api"
78109
+
78110
+
78421
78111
  class scout_integrations_api_GenerateSlackWebhookResponse(ConjureBeanType):
78422
78112
 
78423
78113
  @builtins.classmethod
@@ -78506,13 +78196,17 @@ class scout_integrations_api_IntegrationDetails(ConjureUnionType):
78506
78196
  _slack_webhook_integration: Optional["scout_integrations_api_SlackWebhookIntegration"] = None
78507
78197
  _opsgenie_integration: Optional["scout_integrations_api_OpsgenieIntegration"] = None
78508
78198
  _simple_webhook_integration: Optional["scout_integrations_api_SimpleWebhookIntegration"] = None
78199
+ _teams_webhook_integration: Optional["scout_integrations_api_TeamsWebhookIntegration"] = None
78200
+ _pager_duty_integration: Optional["scout_integrations_api_PagerDutyIntegration"] = None
78509
78201
 
78510
78202
  @builtins.classmethod
78511
78203
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
78512
78204
  return {
78513
78205
  'slack_webhook_integration': ConjureFieldDefinition('slackWebhookIntegration', scout_integrations_api_SlackWebhookIntegration),
78514
78206
  'opsgenie_integration': ConjureFieldDefinition('opsgenieIntegration', scout_integrations_api_OpsgenieIntegration),
78515
- 'simple_webhook_integration': ConjureFieldDefinition('simpleWebhookIntegration', scout_integrations_api_SimpleWebhookIntegration)
78207
+ 'simple_webhook_integration': ConjureFieldDefinition('simpleWebhookIntegration', scout_integrations_api_SimpleWebhookIntegration),
78208
+ 'teams_webhook_integration': ConjureFieldDefinition('teamsWebhookIntegration', scout_integrations_api_TeamsWebhookIntegration),
78209
+ 'pager_duty_integration': ConjureFieldDefinition('pagerDutyIntegration', scout_integrations_api_PagerDutyIntegration)
78516
78210
  }
78517
78211
 
78518
78212
  def __init__(
@@ -78520,10 +78214,12 @@ class scout_integrations_api_IntegrationDetails(ConjureUnionType):
78520
78214
  slack_webhook_integration: Optional["scout_integrations_api_SlackWebhookIntegration"] = None,
78521
78215
  opsgenie_integration: Optional["scout_integrations_api_OpsgenieIntegration"] = None,
78522
78216
  simple_webhook_integration: Optional["scout_integrations_api_SimpleWebhookIntegration"] = None,
78217
+ teams_webhook_integration: Optional["scout_integrations_api_TeamsWebhookIntegration"] = None,
78218
+ pager_duty_integration: Optional["scout_integrations_api_PagerDutyIntegration"] = None,
78523
78219
  type_of_union: Optional[str] = None
78524
78220
  ) -> None:
78525
78221
  if type_of_union is None:
78526
- if (slack_webhook_integration is not None) + (opsgenie_integration is not None) + (simple_webhook_integration is not None) != 1:
78222
+ if (slack_webhook_integration is not None) + (opsgenie_integration is not None) + (simple_webhook_integration is not None) + (teams_webhook_integration is not None) + (pager_duty_integration is not None) != 1:
78527
78223
  raise ValueError('a union must contain a single member')
78528
78224
 
78529
78225
  if slack_webhook_integration is not None:
@@ -78535,6 +78231,12 @@ class scout_integrations_api_IntegrationDetails(ConjureUnionType):
78535
78231
  if simple_webhook_integration is not None:
78536
78232
  self._simple_webhook_integration = simple_webhook_integration
78537
78233
  self._type = 'simpleWebhookIntegration'
78234
+ if teams_webhook_integration is not None:
78235
+ self._teams_webhook_integration = teams_webhook_integration
78236
+ self._type = 'teamsWebhookIntegration'
78237
+ if pager_duty_integration is not None:
78238
+ self._pager_duty_integration = pager_duty_integration
78239
+ self._type = 'pagerDutyIntegration'
78538
78240
 
78539
78241
  elif type_of_union == 'slackWebhookIntegration':
78540
78242
  if slack_webhook_integration is None:
@@ -78551,6 +78253,16 @@ class scout_integrations_api_IntegrationDetails(ConjureUnionType):
78551
78253
  raise ValueError('a union value must not be None')
78552
78254
  self._simple_webhook_integration = simple_webhook_integration
78553
78255
  self._type = 'simpleWebhookIntegration'
78256
+ elif type_of_union == 'teamsWebhookIntegration':
78257
+ if teams_webhook_integration is None:
78258
+ raise ValueError('a union value must not be None')
78259
+ self._teams_webhook_integration = teams_webhook_integration
78260
+ self._type = 'teamsWebhookIntegration'
78261
+ elif type_of_union == 'pagerDutyIntegration':
78262
+ if pager_duty_integration is None:
78263
+ raise ValueError('a union value must not be None')
78264
+ self._pager_duty_integration = pager_duty_integration
78265
+ self._type = 'pagerDutyIntegration'
78554
78266
 
78555
78267
  @builtins.property
78556
78268
  def slack_webhook_integration(self) -> Optional["scout_integrations_api_SlackWebhookIntegration"]:
@@ -78564,6 +78276,14 @@ class scout_integrations_api_IntegrationDetails(ConjureUnionType):
78564
78276
  def simple_webhook_integration(self) -> Optional["scout_integrations_api_SimpleWebhookIntegration"]:
78565
78277
  return self._simple_webhook_integration
78566
78278
 
78279
+ @builtins.property
78280
+ def teams_webhook_integration(self) -> Optional["scout_integrations_api_TeamsWebhookIntegration"]:
78281
+ return self._teams_webhook_integration
78282
+
78283
+ @builtins.property
78284
+ def pager_duty_integration(self) -> Optional["scout_integrations_api_PagerDutyIntegration"]:
78285
+ return self._pager_duty_integration
78286
+
78567
78287
  def accept(self, visitor) -> Any:
78568
78288
  if not isinstance(visitor, scout_integrations_api_IntegrationDetailsVisitor):
78569
78289
  raise ValueError('{} is not an instance of scout_integrations_api_IntegrationDetailsVisitor'.format(visitor.__class__.__name__))
@@ -78573,6 +78293,10 @@ class scout_integrations_api_IntegrationDetails(ConjureUnionType):
78573
78293
  return visitor._opsgenie_integration(self.opsgenie_integration)
78574
78294
  if self._type == 'simpleWebhookIntegration' and self.simple_webhook_integration is not None:
78575
78295
  return visitor._simple_webhook_integration(self.simple_webhook_integration)
78296
+ if self._type == 'teamsWebhookIntegration' and self.teams_webhook_integration is not None:
78297
+ return visitor._teams_webhook_integration(self.teams_webhook_integration)
78298
+ if self._type == 'pagerDutyIntegration' and self.pager_duty_integration is not None:
78299
+ return visitor._pager_duty_integration(self.pager_duty_integration)
78576
78300
 
78577
78301
 
78578
78302
  scout_integrations_api_IntegrationDetails.__name__ = "IntegrationDetails"
@@ -78594,6 +78318,14 @@ class scout_integrations_api_IntegrationDetailsVisitor:
78594
78318
  def _simple_webhook_integration(self, simple_webhook_integration: "scout_integrations_api_SimpleWebhookIntegration") -> Any:
78595
78319
  pass
78596
78320
 
78321
+ @abstractmethod
78322
+ def _teams_webhook_integration(self, teams_webhook_integration: "scout_integrations_api_TeamsWebhookIntegration") -> Any:
78323
+ pass
78324
+
78325
+ @abstractmethod
78326
+ def _pager_duty_integration(self, pager_duty_integration: "scout_integrations_api_PagerDutyIntegration") -> Any:
78327
+ pass
78328
+
78597
78329
 
78598
78330
  scout_integrations_api_IntegrationDetailsVisitor.__name__ = "IntegrationDetailsVisitor"
78599
78331
  scout_integrations_api_IntegrationDetailsVisitor.__qualname__ = "IntegrationDetailsVisitor"
@@ -78724,50 +78456,148 @@ class scout_integrations_api_IntegrationsService(Service):
78724
78456
  _path = _path.format(**_path_params)
78725
78457
 
78726
78458
  _response: Response = self._request(
78727
- 'DELETE',
78459
+ 'DELETE',
78460
+ self._uri + _path,
78461
+ params=_params,
78462
+ headers=_headers,
78463
+ json=_json)
78464
+
78465
+ return
78466
+
78467
+ def update_integration_metadata(self, auth_header: str, integration_rid: str, request: "scout_integrations_api_UpdateIntegrationRequest") -> "scout_integrations_api_Integration":
78468
+ """Updates the metadata of an integration.
78469
+ """
78470
+ _conjure_encoder = ConjureEncoder()
78471
+
78472
+ _headers: Dict[str, Any] = {
78473
+ 'Accept': 'application/json',
78474
+ 'Content-Type': 'application/json',
78475
+ 'Authorization': auth_header,
78476
+ }
78477
+
78478
+ _params: Dict[str, Any] = {
78479
+ }
78480
+
78481
+ _path_params: Dict[str, str] = {
78482
+ 'integrationRid': quote(str(_conjure_encoder.default(integration_rid)), safe=''),
78483
+ }
78484
+
78485
+ _json: Any = _conjure_encoder.default(request)
78486
+
78487
+ _path = '/scout/v2/integrations/{integrationRid}'
78488
+ _path = _path.format(**_path_params)
78489
+
78490
+ _response: Response = self._request(
78491
+ 'PUT',
78492
+ self._uri + _path,
78493
+ params=_params,
78494
+ headers=_headers,
78495
+ json=_json)
78496
+
78497
+ _decoder = ConjureDecoder()
78498
+ return _decoder.decode(_response.json(), scout_integrations_api_Integration, self._return_none_for_unknown_union_types)
78499
+
78500
+ def update_integration_details(self, auth_header: str, integration_rid: str, request: "scout_integrations_api_UpdateIntegrationDetailsRequest") -> "scout_integrations_api_Integration":
78501
+ """Updates the integration details for an integration.
78502
+ Intended to allow changing webhooks or rotating API keys.
78503
+ """
78504
+ _conjure_encoder = ConjureEncoder()
78505
+
78506
+ _headers: Dict[str, Any] = {
78507
+ 'Accept': 'application/json',
78508
+ 'Content-Type': 'application/json',
78509
+ 'Authorization': auth_header,
78510
+ }
78511
+
78512
+ _params: Dict[str, Any] = {
78513
+ }
78514
+
78515
+ _path_params: Dict[str, str] = {
78516
+ 'integrationRid': quote(str(_conjure_encoder.default(integration_rid)), safe=''),
78517
+ }
78518
+
78519
+ _json: Any = _conjure_encoder.default(request)
78520
+
78521
+ _path = '/scout/v2/integrations/{integrationRid}/details'
78522
+ _path = _path.format(**_path_params)
78523
+
78524
+ _response: Response = self._request(
78525
+ 'PUT',
78526
+ self._uri + _path,
78527
+ params=_params,
78528
+ headers=_headers,
78529
+ json=_json)
78530
+
78531
+ _decoder = ConjureDecoder()
78532
+ return _decoder.decode(_response.json(), scout_integrations_api_Integration, self._return_none_for_unknown_union_types)
78533
+
78534
+ def get_integration(self, auth_header: str, integration_rid: str) -> "scout_integrations_api_Integration":
78535
+ """Retrieves an integration with the specified integration RID.
78536
+ """
78537
+ _conjure_encoder = ConjureEncoder()
78538
+
78539
+ _headers: Dict[str, Any] = {
78540
+ 'Accept': 'application/json',
78541
+ 'Authorization': auth_header,
78542
+ }
78543
+
78544
+ _params: Dict[str, Any] = {
78545
+ }
78546
+
78547
+ _path_params: Dict[str, str] = {
78548
+ 'integrationRid': quote(str(_conjure_encoder.default(integration_rid)), safe=''),
78549
+ }
78550
+
78551
+ _json: Any = None
78552
+
78553
+ _path = '/scout/v2/integrations/{integrationRid}'
78554
+ _path = _path.format(**_path_params)
78555
+
78556
+ _response: Response = self._request(
78557
+ 'GET',
78728
78558
  self._uri + _path,
78729
78559
  params=_params,
78730
78560
  headers=_headers,
78731
78561
  json=_json)
78732
78562
 
78733
- return
78563
+ _decoder = ConjureDecoder()
78564
+ return _decoder.decode(_response.json(), scout_integrations_api_Integration, self._return_none_for_unknown_union_types)
78734
78565
 
78735
- def update_integration_metadata(self, auth_header: str, integration_rid: str, request: "scout_integrations_api_UpdateIntegrationRequest") -> "scout_integrations_api_Integration":
78736
- """Updates the metadata of an integration.
78566
+ def list_integrations(self, auth_header: str, workspaces: List[str] = None) -> List["scout_integrations_api_Integration"]:
78567
+ """Lists all integrations. Archived integrations are not included.
78737
78568
  """
78569
+ workspaces = workspaces if workspaces is not None else []
78738
78570
  _conjure_encoder = ConjureEncoder()
78739
78571
 
78740
78572
  _headers: Dict[str, Any] = {
78741
78573
  'Accept': 'application/json',
78742
- 'Content-Type': 'application/json',
78743
78574
  'Authorization': auth_header,
78744
78575
  }
78745
78576
 
78746
78577
  _params: Dict[str, Any] = {
78578
+ 'workspaces': _conjure_encoder.default(workspaces),
78747
78579
  }
78748
78580
 
78749
78581
  _path_params: Dict[str, str] = {
78750
- 'integrationRid': quote(str(_conjure_encoder.default(integration_rid)), safe=''),
78751
78582
  }
78752
78583
 
78753
- _json: Any = _conjure_encoder.default(request)
78584
+ _json: Any = None
78754
78585
 
78755
- _path = '/scout/v2/integrations/{integrationRid}'
78586
+ _path = '/scout/v2/integrations/list'
78756
78587
  _path = _path.format(**_path_params)
78757
78588
 
78758
78589
  _response: Response = self._request(
78759
- 'PUT',
78590
+ 'GET',
78760
78591
  self._uri + _path,
78761
78592
  params=_params,
78762
78593
  headers=_headers,
78763
78594
  json=_json)
78764
78595
 
78765
78596
  _decoder = ConjureDecoder()
78766
- return _decoder.decode(_response.json(), scout_integrations_api_Integration, self._return_none_for_unknown_union_types)
78597
+ return _decoder.decode(_response.json(), List[scout_integrations_api_Integration], self._return_none_for_unknown_union_types)
78767
78598
 
78768
- def update_integration_details(self, auth_header: str, integration_rid: str, request: "scout_integrations_api_UpdateIntegrationDetailsRequest") -> "scout_integrations_api_Integration":
78769
- """Updates the integration details for an integration.
78770
- Intended to allow changing webhooks or rotating API keys.
78599
+ def send_message(self, auth_header: str, request: "scout_integrations_api_SendMessageRequest") -> None:
78600
+ """Sends a string message to the specified integration from a checklist execution.
78771
78601
  """
78772
78602
  _conjure_encoder = ConjureEncoder()
78773
78603
 
@@ -78781,124 +78611,132 @@ Intended to allow changing webhooks or rotating API keys.
78781
78611
  }
78782
78612
 
78783
78613
  _path_params: Dict[str, str] = {
78784
- 'integrationRid': quote(str(_conjure_encoder.default(integration_rid)), safe=''),
78785
78614
  }
78786
78615
 
78787
78616
  _json: Any = _conjure_encoder.default(request)
78788
78617
 
78789
- _path = '/scout/v2/integrations/{integrationRid}/details'
78618
+ _path = '/scout/v2/integrations/send-message'
78790
78619
  _path = _path.format(**_path_params)
78791
78620
 
78792
78621
  _response: Response = self._request(
78793
- 'PUT',
78622
+ 'POST',
78794
78623
  self._uri + _path,
78795
78624
  params=_params,
78796
78625
  headers=_headers,
78797
78626
  json=_json)
78798
78627
 
78799
- _decoder = ConjureDecoder()
78800
- return _decoder.decode(_response.json(), scout_integrations_api_Integration, self._return_none_for_unknown_union_types)
78628
+ return
78801
78629
 
78802
- def get_integration(self, auth_header: str, integration_rid: str) -> "scout_integrations_api_Integration":
78803
- """Retrieves an integration with the specified integration RID.
78804
- """
78805
- _conjure_encoder = ConjureEncoder()
78806
78630
 
78807
- _headers: Dict[str, Any] = {
78808
- 'Accept': 'application/json',
78809
- 'Authorization': auth_header,
78810
- }
78631
+ scout_integrations_api_IntegrationsService.__name__ = "IntegrationsService"
78632
+ scout_integrations_api_IntegrationsService.__qualname__ = "IntegrationsService"
78633
+ scout_integrations_api_IntegrationsService.__module__ = "nominal_api.scout_integrations_api"
78811
78634
 
78812
- _params: Dict[str, Any] = {
78813
- }
78814
78635
 
78815
- _path_params: Dict[str, str] = {
78816
- 'integrationRid': quote(str(_conjure_encoder.default(integration_rid)), safe=''),
78636
+ class scout_integrations_api_InternalSendMessageRequest(ConjureBeanType):
78637
+
78638
+ @builtins.classmethod
78639
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
78640
+ return {
78641
+ 'integration_rid': ConjureFieldDefinition('integrationRid', scout_integrations_api_IntegrationRid),
78642
+ 'message': ConjureFieldDefinition('message', scout_integrations_api_MessageFields)
78817
78643
  }
78818
78644
 
78819
- _json: Any = None
78645
+ __slots__: List[str] = ['_integration_rid', '_message']
78820
78646
 
78821
- _path = '/scout/v2/integrations/{integrationRid}'
78822
- _path = _path.format(**_path_params)
78647
+ def __init__(self, integration_rid: str, message: "scout_integrations_api_MessageFields") -> None:
78648
+ self._integration_rid = integration_rid
78649
+ self._message = message
78823
78650
 
78824
- _response: Response = self._request(
78825
- 'GET',
78826
- self._uri + _path,
78827
- params=_params,
78828
- headers=_headers,
78829
- json=_json)
78651
+ @builtins.property
78652
+ def integration_rid(self) -> str:
78653
+ return self._integration_rid
78830
78654
 
78831
- _decoder = ConjureDecoder()
78832
- return _decoder.decode(_response.json(), scout_integrations_api_Integration, self._return_none_for_unknown_union_types)
78655
+ @builtins.property
78656
+ def message(self) -> "scout_integrations_api_MessageFields":
78657
+ return self._message
78833
78658
 
78834
- def list_integrations(self, auth_header: str, workspaces: List[str] = None) -> List["scout_integrations_api_Integration"]:
78835
- """Lists all integrations. Archived integrations are not included.
78836
- """
78837
- workspaces = workspaces if workspaces is not None else []
78838
- _conjure_encoder = ConjureEncoder()
78839
78659
 
78840
- _headers: Dict[str, Any] = {
78841
- 'Accept': 'application/json',
78842
- 'Authorization': auth_header,
78843
- }
78660
+ scout_integrations_api_InternalSendMessageRequest.__name__ = "InternalSendMessageRequest"
78661
+ scout_integrations_api_InternalSendMessageRequest.__qualname__ = "InternalSendMessageRequest"
78662
+ scout_integrations_api_InternalSendMessageRequest.__module__ = "nominal_api.scout_integrations_api"
78844
78663
 
78845
- _params: Dict[str, Any] = {
78846
- 'workspaces': _conjure_encoder.default(workspaces),
78847
- }
78848
78664
 
78849
- _path_params: Dict[str, str] = {
78665
+ class scout_integrations_api_MessageFields(ConjureUnionType):
78666
+ _alert: Optional["scout_integrations_api_AlertMessageFields"] = None
78667
+ _resolution_error: Optional["scout_integrations_api_ResolutionFailureMessageFields"] = None
78668
+
78669
+ @builtins.classmethod
78670
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
78671
+ return {
78672
+ 'alert': ConjureFieldDefinition('alert', scout_integrations_api_AlertMessageFields),
78673
+ 'resolution_error': ConjureFieldDefinition('resolutionError', scout_integrations_api_ResolutionFailureMessageFields)
78850
78674
  }
78851
78675
 
78852
- _json: Any = None
78676
+ def __init__(
78677
+ self,
78678
+ alert: Optional["scout_integrations_api_AlertMessageFields"] = None,
78679
+ resolution_error: Optional["scout_integrations_api_ResolutionFailureMessageFields"] = None,
78680
+ type_of_union: Optional[str] = None
78681
+ ) -> None:
78682
+ if type_of_union is None:
78683
+ if (alert is not None) + (resolution_error is not None) != 1:
78684
+ raise ValueError('a union must contain a single member')
78853
78685
 
78854
- _path = '/scout/v2/integrations/list'
78855
- _path = _path.format(**_path_params)
78686
+ if alert is not None:
78687
+ self._alert = alert
78688
+ self._type = 'alert'
78689
+ if resolution_error is not None:
78690
+ self._resolution_error = resolution_error
78691
+ self._type = 'resolutionError'
78856
78692
 
78857
- _response: Response = self._request(
78858
- 'GET',
78859
- self._uri + _path,
78860
- params=_params,
78861
- headers=_headers,
78862
- json=_json)
78693
+ elif type_of_union == 'alert':
78694
+ if alert is None:
78695
+ raise ValueError('a union value must not be None')
78696
+ self._alert = alert
78697
+ self._type = 'alert'
78698
+ elif type_of_union == 'resolutionError':
78699
+ if resolution_error is None:
78700
+ raise ValueError('a union value must not be None')
78701
+ self._resolution_error = resolution_error
78702
+ self._type = 'resolutionError'
78863
78703
 
78864
- _decoder = ConjureDecoder()
78865
- return _decoder.decode(_response.json(), List[scout_integrations_api_Integration], self._return_none_for_unknown_union_types)
78704
+ @builtins.property
78705
+ def alert(self) -> Optional["scout_integrations_api_AlertMessageFields"]:
78706
+ return self._alert
78866
78707
 
78867
- def send_message(self, auth_header: str, request: "scout_integrations_api_SendMessageRequest") -> None:
78868
- """Sends a string message to the specified integration from a checklist execution.
78869
- """
78870
- _conjure_encoder = ConjureEncoder()
78708
+ @builtins.property
78709
+ def resolution_error(self) -> Optional["scout_integrations_api_ResolutionFailureMessageFields"]:
78710
+ return self._resolution_error
78871
78711
 
78872
- _headers: Dict[str, Any] = {
78873
- 'Accept': 'application/json',
78874
- 'Content-Type': 'application/json',
78875
- 'Authorization': auth_header,
78876
- }
78712
+ def accept(self, visitor) -> Any:
78713
+ if not isinstance(visitor, scout_integrations_api_MessageFieldsVisitor):
78714
+ raise ValueError('{} is not an instance of scout_integrations_api_MessageFieldsVisitor'.format(visitor.__class__.__name__))
78715
+ if self._type == 'alert' and self.alert is not None:
78716
+ return visitor._alert(self.alert)
78717
+ if self._type == 'resolutionError' and self.resolution_error is not None:
78718
+ return visitor._resolution_error(self.resolution_error)
78877
78719
 
78878
- _params: Dict[str, Any] = {
78879
- }
78880
78720
 
78881
- _path_params: Dict[str, str] = {
78882
- }
78721
+ scout_integrations_api_MessageFields.__name__ = "MessageFields"
78722
+ scout_integrations_api_MessageFields.__qualname__ = "MessageFields"
78723
+ scout_integrations_api_MessageFields.__module__ = "nominal_api.scout_integrations_api"
78883
78724
 
78884
- _json: Any = _conjure_encoder.default(request)
78885
78725
 
78886
- _path = '/scout/v2/integrations/send-message'
78887
- _path = _path.format(**_path_params)
78726
+ class scout_integrations_api_MessageFieldsVisitor:
78888
78727
 
78889
- _response: Response = self._request(
78890
- 'POST',
78891
- self._uri + _path,
78892
- params=_params,
78893
- headers=_headers,
78894
- json=_json)
78728
+ @abstractmethod
78729
+ def _alert(self, alert: "scout_integrations_api_AlertMessageFields") -> Any:
78730
+ pass
78895
78731
 
78896
- return
78732
+ @abstractmethod
78733
+ def _resolution_error(self, resolution_error: "scout_integrations_api_ResolutionFailureMessageFields") -> Any:
78734
+ pass
78897
78735
 
78898
78736
 
78899
- scout_integrations_api_IntegrationsService.__name__ = "IntegrationsService"
78900
- scout_integrations_api_IntegrationsService.__qualname__ = "IntegrationsService"
78901
- scout_integrations_api_IntegrationsService.__module__ = "nominal_api.scout_integrations_api"
78737
+ scout_integrations_api_MessageFieldsVisitor.__name__ = "MessageFieldsVisitor"
78738
+ scout_integrations_api_MessageFieldsVisitor.__qualname__ = "MessageFieldsVisitor"
78739
+ scout_integrations_api_MessageFieldsVisitor.__module__ = "nominal_api.scout_integrations_api"
78902
78740
 
78903
78741
 
78904
78742
  class scout_integrations_api_NotificationConfiguration(ConjureBeanType):
@@ -79011,6 +78849,83 @@ scout_integrations_api_OpsgenieRegion.__qualname__ = "OpsgenieRegion"
79011
78849
  scout_integrations_api_OpsgenieRegion.__module__ = "nominal_api.scout_integrations_api"
79012
78850
 
79013
78851
 
78852
+ class scout_integrations_api_PagerDutyIntegration(ConjureBeanType):
78853
+
78854
+ @builtins.classmethod
78855
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
78856
+ return {
78857
+ }
78858
+
78859
+ __slots__: List[str] = []
78860
+
78861
+
78862
+
78863
+ scout_integrations_api_PagerDutyIntegration.__name__ = "PagerDutyIntegration"
78864
+ scout_integrations_api_PagerDutyIntegration.__qualname__ = "PagerDutyIntegration"
78865
+ scout_integrations_api_PagerDutyIntegration.__module__ = "nominal_api.scout_integrations_api"
78866
+
78867
+
78868
+ class scout_integrations_api_ResolutionFailureMessageFields(ConjureBeanType):
78869
+
78870
+ @builtins.classmethod
78871
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
78872
+ return {
78873
+ 'checklist_title': ConjureFieldDefinition('checklistTitle', str),
78874
+ 'asset_title': ConjureFieldDefinition('assetTitle', str),
78875
+ 'checklist_rid': ConjureFieldDefinition('checklistRid', scout_rids_api_ChecklistRid),
78876
+ 'asset_rid': ConjureFieldDefinition('assetRid', scout_rids_api_AssetRid),
78877
+ 'unresolved_checks': ConjureFieldDefinition('unresolvedChecks', int),
78878
+ 'total_checks': ConjureFieldDefinition('totalChecks', int),
78879
+ 'labels': ConjureFieldDefinition('labels', List[str])
78880
+ }
78881
+
78882
+ __slots__: List[str] = ['_checklist_title', '_asset_title', '_checklist_rid', '_asset_rid', '_unresolved_checks', '_total_checks', '_labels']
78883
+
78884
+ def __init__(self, asset_rid: str, asset_title: str, checklist_rid: str, checklist_title: str, labels: List[str], total_checks: int, unresolved_checks: int) -> None:
78885
+ self._checklist_title = checklist_title
78886
+ self._asset_title = asset_title
78887
+ self._checklist_rid = checklist_rid
78888
+ self._asset_rid = asset_rid
78889
+ self._unresolved_checks = unresolved_checks
78890
+ self._total_checks = total_checks
78891
+ self._labels = labels
78892
+
78893
+ @builtins.property
78894
+ def checklist_title(self) -> str:
78895
+ return self._checklist_title
78896
+
78897
+ @builtins.property
78898
+ def asset_title(self) -> str:
78899
+ return self._asset_title
78900
+
78901
+ @builtins.property
78902
+ def checklist_rid(self) -> str:
78903
+ return self._checklist_rid
78904
+
78905
+ @builtins.property
78906
+ def asset_rid(self) -> str:
78907
+ return self._asset_rid
78908
+
78909
+ @builtins.property
78910
+ def unresolved_checks(self) -> int:
78911
+ return self._unresolved_checks
78912
+
78913
+ @builtins.property
78914
+ def total_checks(self) -> int:
78915
+ return self._total_checks
78916
+
78917
+ @builtins.property
78918
+ def labels(self) -> List[str]:
78919
+ """Currently exposed as 'tags' on the frontend to match Opsgenie naming. Used by some integrations to filter/route messages.
78920
+ """
78921
+ return self._labels
78922
+
78923
+
78924
+ scout_integrations_api_ResolutionFailureMessageFields.__name__ = "ResolutionFailureMessageFields"
78925
+ scout_integrations_api_ResolutionFailureMessageFields.__qualname__ = "ResolutionFailureMessageFields"
78926
+ scout_integrations_api_ResolutionFailureMessageFields.__module__ = "nominal_api.scout_integrations_api"
78927
+
78928
+
79014
78929
  class scout_integrations_api_SendMessageRequest(ConjureBeanType):
79015
78930
 
79016
78931
  @builtins.classmethod
@@ -79145,25 +79060,47 @@ scout_integrations_api_SlackWebhookIntegration.__qualname__ = "SlackWebhookInteg
79145
79060
  scout_integrations_api_SlackWebhookIntegration.__module__ = "nominal_api.scout_integrations_api"
79146
79061
 
79147
79062
 
79063
+ class scout_integrations_api_TeamsWebhookIntegration(ConjureBeanType):
79064
+
79065
+ @builtins.classmethod
79066
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
79067
+ return {
79068
+ }
79069
+
79070
+ __slots__: List[str] = []
79071
+
79072
+
79073
+
79074
+ scout_integrations_api_TeamsWebhookIntegration.__name__ = "TeamsWebhookIntegration"
79075
+ scout_integrations_api_TeamsWebhookIntegration.__qualname__ = "TeamsWebhookIntegration"
79076
+ scout_integrations_api_TeamsWebhookIntegration.__module__ = "nominal_api.scout_integrations_api"
79077
+
79078
+
79148
79079
  class scout_integrations_api_UpdateIntegrationDetails(ConjureUnionType):
79149
79080
  _simple_webhook: Optional["scout_integrations_api_UpdateSimpleWebhookDetails"] = None
79150
79081
  _opsgenie_integration: Optional["scout_integrations_api_UpdateOpsgenieIntegrationDetails"] = None
79082
+ _teams_webhook: Optional["scout_integrations_api_UpdateTeamsWebhookIntegrationDetails"] = None
79083
+ _pager_duty: Optional["scout_integrations_api_UpdatePagerDutyIntegrationDetails"] = None
79151
79084
 
79152
79085
  @builtins.classmethod
79153
79086
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
79154
79087
  return {
79155
79088
  'simple_webhook': ConjureFieldDefinition('simpleWebhook', scout_integrations_api_UpdateSimpleWebhookDetails),
79156
- 'opsgenie_integration': ConjureFieldDefinition('opsgenieIntegration', scout_integrations_api_UpdateOpsgenieIntegrationDetails)
79089
+ 'opsgenie_integration': ConjureFieldDefinition('opsgenieIntegration', scout_integrations_api_UpdateOpsgenieIntegrationDetails),
79090
+ 'teams_webhook': ConjureFieldDefinition('teamsWebhook', scout_integrations_api_UpdateTeamsWebhookIntegrationDetails),
79091
+ 'pager_duty': ConjureFieldDefinition('pagerDuty', scout_integrations_api_UpdatePagerDutyIntegrationDetails)
79157
79092
  }
79158
79093
 
79159
79094
  def __init__(
79160
79095
  self,
79161
79096
  simple_webhook: Optional["scout_integrations_api_UpdateSimpleWebhookDetails"] = None,
79162
79097
  opsgenie_integration: Optional["scout_integrations_api_UpdateOpsgenieIntegrationDetails"] = None,
79098
+ teams_webhook: Optional["scout_integrations_api_UpdateTeamsWebhookIntegrationDetails"] = None,
79099
+ pager_duty: Optional["scout_integrations_api_UpdatePagerDutyIntegrationDetails"] = None,
79163
79100
  type_of_union: Optional[str] = None
79164
79101
  ) -> None:
79165
79102
  if type_of_union is None:
79166
- if (simple_webhook is not None) + (opsgenie_integration is not None) != 1:
79103
+ if (simple_webhook is not None) + (opsgenie_integration is not None) + (teams_webhook is not None) + (pager_duty is not None) != 1:
79167
79104
  raise ValueError('a union must contain a single member')
79168
79105
 
79169
79106
  if simple_webhook is not None:
@@ -79172,6 +79109,12 @@ class scout_integrations_api_UpdateIntegrationDetails(ConjureUnionType):
79172
79109
  if opsgenie_integration is not None:
79173
79110
  self._opsgenie_integration = opsgenie_integration
79174
79111
  self._type = 'opsgenieIntegration'
79112
+ if teams_webhook is not None:
79113
+ self._teams_webhook = teams_webhook
79114
+ self._type = 'teamsWebhook'
79115
+ if pager_duty is not None:
79116
+ self._pager_duty = pager_duty
79117
+ self._type = 'pagerDuty'
79175
79118
 
79176
79119
  elif type_of_union == 'simpleWebhook':
79177
79120
  if simple_webhook is None:
@@ -79183,6 +79126,16 @@ class scout_integrations_api_UpdateIntegrationDetails(ConjureUnionType):
79183
79126
  raise ValueError('a union value must not be None')
79184
79127
  self._opsgenie_integration = opsgenie_integration
79185
79128
  self._type = 'opsgenieIntegration'
79129
+ elif type_of_union == 'teamsWebhook':
79130
+ if teams_webhook is None:
79131
+ raise ValueError('a union value must not be None')
79132
+ self._teams_webhook = teams_webhook
79133
+ self._type = 'teamsWebhook'
79134
+ elif type_of_union == 'pagerDuty':
79135
+ if pager_duty is None:
79136
+ raise ValueError('a union value must not be None')
79137
+ self._pager_duty = pager_duty
79138
+ self._type = 'pagerDuty'
79186
79139
 
79187
79140
  @builtins.property
79188
79141
  def simple_webhook(self) -> Optional["scout_integrations_api_UpdateSimpleWebhookDetails"]:
@@ -79192,6 +79145,14 @@ class scout_integrations_api_UpdateIntegrationDetails(ConjureUnionType):
79192
79145
  def opsgenie_integration(self) -> Optional["scout_integrations_api_UpdateOpsgenieIntegrationDetails"]:
79193
79146
  return self._opsgenie_integration
79194
79147
 
79148
+ @builtins.property
79149
+ def teams_webhook(self) -> Optional["scout_integrations_api_UpdateTeamsWebhookIntegrationDetails"]:
79150
+ return self._teams_webhook
79151
+
79152
+ @builtins.property
79153
+ def pager_duty(self) -> Optional["scout_integrations_api_UpdatePagerDutyIntegrationDetails"]:
79154
+ return self._pager_duty
79155
+
79195
79156
  def accept(self, visitor) -> Any:
79196
79157
  if not isinstance(visitor, scout_integrations_api_UpdateIntegrationDetailsVisitor):
79197
79158
  raise ValueError('{} is not an instance of scout_integrations_api_UpdateIntegrationDetailsVisitor'.format(visitor.__class__.__name__))
@@ -79199,6 +79160,10 @@ class scout_integrations_api_UpdateIntegrationDetails(ConjureUnionType):
79199
79160
  return visitor._simple_webhook(self.simple_webhook)
79200
79161
  if self._type == 'opsgenieIntegration' and self.opsgenie_integration is not None:
79201
79162
  return visitor._opsgenie_integration(self.opsgenie_integration)
79163
+ if self._type == 'teamsWebhook' and self.teams_webhook is not None:
79164
+ return visitor._teams_webhook(self.teams_webhook)
79165
+ if self._type == 'pagerDuty' and self.pager_duty is not None:
79166
+ return visitor._pager_duty(self.pager_duty)
79202
79167
 
79203
79168
 
79204
79169
  scout_integrations_api_UpdateIntegrationDetails.__name__ = "UpdateIntegrationDetails"
@@ -79216,6 +79181,14 @@ class scout_integrations_api_UpdateIntegrationDetailsVisitor:
79216
79181
  def _opsgenie_integration(self, opsgenie_integration: "scout_integrations_api_UpdateOpsgenieIntegrationDetails") -> Any:
79217
79182
  pass
79218
79183
 
79184
+ @abstractmethod
79185
+ def _teams_webhook(self, teams_webhook: "scout_integrations_api_UpdateTeamsWebhookIntegrationDetails") -> Any:
79186
+ pass
79187
+
79188
+ @abstractmethod
79189
+ def _pager_duty(self, pager_duty: "scout_integrations_api_UpdatePagerDutyIntegrationDetails") -> Any:
79190
+ pass
79191
+
79219
79192
 
79220
79193
  scout_integrations_api_UpdateIntegrationDetailsVisitor.__name__ = "UpdateIntegrationDetailsVisitor"
79221
79194
  scout_integrations_api_UpdateIntegrationDetailsVisitor.__qualname__ = "UpdateIntegrationDetailsVisitor"
@@ -79306,6 +79279,29 @@ scout_integrations_api_UpdateOpsgenieIntegrationDetails.__qualname__ = "UpdateOp
79306
79279
  scout_integrations_api_UpdateOpsgenieIntegrationDetails.__module__ = "nominal_api.scout_integrations_api"
79307
79280
 
79308
79281
 
79282
+ class scout_integrations_api_UpdatePagerDutyIntegrationDetails(ConjureBeanType):
79283
+
79284
+ @builtins.classmethod
79285
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
79286
+ return {
79287
+ 'routing_key': ConjureFieldDefinition('routingKey', str)
79288
+ }
79289
+
79290
+ __slots__: List[str] = ['_routing_key']
79291
+
79292
+ def __init__(self, routing_key: str) -> None:
79293
+ self._routing_key = routing_key
79294
+
79295
+ @builtins.property
79296
+ def routing_key(self) -> str:
79297
+ return self._routing_key
79298
+
79299
+
79300
+ scout_integrations_api_UpdatePagerDutyIntegrationDetails.__name__ = "UpdatePagerDutyIntegrationDetails"
79301
+ scout_integrations_api_UpdatePagerDutyIntegrationDetails.__qualname__ = "UpdatePagerDutyIntegrationDetails"
79302
+ scout_integrations_api_UpdatePagerDutyIntegrationDetails.__module__ = "nominal_api.scout_integrations_api"
79303
+
79304
+
79309
79305
  class scout_integrations_api_UpdateSimpleWebhookDetails(ConjureBeanType):
79310
79306
 
79311
79307
  @builtins.classmethod
@@ -79329,6 +79325,29 @@ scout_integrations_api_UpdateSimpleWebhookDetails.__qualname__ = "UpdateSimpleWe
79329
79325
  scout_integrations_api_UpdateSimpleWebhookDetails.__module__ = "nominal_api.scout_integrations_api"
79330
79326
 
79331
79327
 
79328
+ class scout_integrations_api_UpdateTeamsWebhookIntegrationDetails(ConjureBeanType):
79329
+
79330
+ @builtins.classmethod
79331
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
79332
+ return {
79333
+ 'webhook': ConjureFieldDefinition('webhook', str)
79334
+ }
79335
+
79336
+ __slots__: List[str] = ['_webhook']
79337
+
79338
+ def __init__(self, webhook: str) -> None:
79339
+ self._webhook = webhook
79340
+
79341
+ @builtins.property
79342
+ def webhook(self) -> str:
79343
+ return self._webhook
79344
+
79345
+
79346
+ scout_integrations_api_UpdateTeamsWebhookIntegrationDetails.__name__ = "UpdateTeamsWebhookIntegrationDetails"
79347
+ scout_integrations_api_UpdateTeamsWebhookIntegrationDetails.__qualname__ = "UpdateTeamsWebhookIntegrationDetails"
79348
+ scout_integrations_api_UpdateTeamsWebhookIntegrationDetails.__module__ = "nominal_api.scout_integrations_api"
79349
+
79350
+
79332
79351
  class scout_internal_search_api_BooleanField(ConjureBeanType):
79333
79352
 
79334
79353
  @builtins.classmethod
@@ -81544,13 +81563,14 @@ class scout_notebook_api_NotebookMetadata(ConjureBeanType):
81544
81563
  'lock': ConjureFieldDefinition('lock', scout_notebook_api_Lock),
81545
81564
  'created_by_rid': ConjureFieldDefinition('createdByRid', scout_rids_api_UserRid),
81546
81565
  'created_at': ConjureFieldDefinition('createdAt', str),
81566
+ 'updated_at': ConjureFieldDefinition('updatedAt', OptionalTypeWrapper[str]),
81547
81567
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
81548
81568
  'labels': ConjureFieldDefinition('labels', List[api_Label])
81549
81569
  }
81550
81570
 
81551
- __slots__: List[str] = ['_run_rid', '_data_scope', '_notebook_type', '_title', '_description', '_is_draft', '_is_archived', '_lock', '_created_by_rid', '_created_at', '_properties', '_labels']
81571
+ __slots__: List[str] = ['_run_rid', '_data_scope', '_notebook_type', '_title', '_description', '_is_draft', '_is_archived', '_lock', '_created_by_rid', '_created_at', '_updated_at', '_properties', '_labels']
81552
81572
 
81553
- def __init__(self, created_at: str, created_by_rid: str, data_scope: "scout_notebook_api_NotebookDataScope", description: str, is_archived: bool, is_draft: bool, labels: List[str], lock: "scout_notebook_api_Lock", notebook_type: "scout_notebook_api_NotebookType", properties: Dict[str, str], title: str, run_rid: Optional[str] = None) -> None:
81573
+ def __init__(self, created_at: str, created_by_rid: str, data_scope: "scout_notebook_api_NotebookDataScope", description: str, is_archived: bool, is_draft: bool, labels: List[str], lock: "scout_notebook_api_Lock", notebook_type: "scout_notebook_api_NotebookType", properties: Dict[str, str], title: str, run_rid: Optional[str] = None, updated_at: Optional[str] = None) -> None:
81554
81574
  self._run_rid = run_rid
81555
81575
  self._data_scope = data_scope
81556
81576
  self._notebook_type = notebook_type
@@ -81561,6 +81581,7 @@ class scout_notebook_api_NotebookMetadata(ConjureBeanType):
81561
81581
  self._lock = lock
81562
81582
  self._created_by_rid = created_by_rid
81563
81583
  self._created_at = created_at
81584
+ self._updated_at = updated_at
81564
81585
  self._properties = properties
81565
81586
  self._labels = labels
81566
81587
 
@@ -81606,6 +81627,12 @@ class scout_notebook_api_NotebookMetadata(ConjureBeanType):
81606
81627
  def created_at(self) -> str:
81607
81628
  return self._created_at
81608
81629
 
81630
+ @builtins.property
81631
+ def updated_at(self) -> Optional[str]:
81632
+ """The timestamp when the workbook was last updated
81633
+ """
81634
+ return self._updated_at
81635
+
81609
81636
  @builtins.property
81610
81637
  def properties(self) -> Dict[str, str]:
81611
81638
  return self._properties
@@ -86460,23 +86487,26 @@ scout_savedviews_api_AssetMetricColumn.__module__ = "nominal_api.scout_savedview
86460
86487
 
86461
86488
  class scout_savedviews_api_AssetMetricColumnTimeRange(ConjureUnionType):
86462
86489
  _most_recent_run: Optional["scout_savedviews_api_MostRecentRun"] = None
86463
- _custom: Optional["scout_savedviews_api_CustomTimeRange"] = None
86490
+ _custom: Optional["scout_run_api_CustomTimeframeFilter"] = None
86491
+ _preset: Optional["scout_run_api_PresetTimeframeFilter"] = None
86464
86492
 
86465
86493
  @builtins.classmethod
86466
86494
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
86467
86495
  return {
86468
86496
  'most_recent_run': ConjureFieldDefinition('mostRecentRun', scout_savedviews_api_MostRecentRun),
86469
- 'custom': ConjureFieldDefinition('custom', scout_savedviews_api_CustomTimeRange)
86497
+ 'custom': ConjureFieldDefinition('custom', scout_run_api_CustomTimeframeFilter),
86498
+ 'preset': ConjureFieldDefinition('preset', scout_run_api_PresetTimeframeFilter)
86470
86499
  }
86471
86500
 
86472
86501
  def __init__(
86473
86502
  self,
86474
86503
  most_recent_run: Optional["scout_savedviews_api_MostRecentRun"] = None,
86475
- custom: Optional["scout_savedviews_api_CustomTimeRange"] = None,
86504
+ custom: Optional["scout_run_api_CustomTimeframeFilter"] = None,
86505
+ preset: Optional["scout_run_api_PresetTimeframeFilter"] = None,
86476
86506
  type_of_union: Optional[str] = None
86477
86507
  ) -> None:
86478
86508
  if type_of_union is None:
86479
- if (most_recent_run is not None) + (custom is not None) != 1:
86509
+ if (most_recent_run is not None) + (custom is not None) + (preset is not None) != 1:
86480
86510
  raise ValueError('a union must contain a single member')
86481
86511
 
86482
86512
  if most_recent_run is not None:
@@ -86485,6 +86515,9 @@ class scout_savedviews_api_AssetMetricColumnTimeRange(ConjureUnionType):
86485
86515
  if custom is not None:
86486
86516
  self._custom = custom
86487
86517
  self._type = 'custom'
86518
+ if preset is not None:
86519
+ self._preset = preset
86520
+ self._type = 'preset'
86488
86521
 
86489
86522
  elif type_of_union == 'mostRecentRun':
86490
86523
  if most_recent_run is None:
@@ -86496,15 +86529,24 @@ class scout_savedviews_api_AssetMetricColumnTimeRange(ConjureUnionType):
86496
86529
  raise ValueError('a union value must not be None')
86497
86530
  self._custom = custom
86498
86531
  self._type = 'custom'
86532
+ elif type_of_union == 'preset':
86533
+ if preset is None:
86534
+ raise ValueError('a union value must not be None')
86535
+ self._preset = preset
86536
+ self._type = 'preset'
86499
86537
 
86500
86538
  @builtins.property
86501
86539
  def most_recent_run(self) -> Optional["scout_savedviews_api_MostRecentRun"]:
86502
86540
  return self._most_recent_run
86503
86541
 
86504
86542
  @builtins.property
86505
- def custom(self) -> Optional["scout_savedviews_api_CustomTimeRange"]:
86543
+ def custom(self) -> Optional["scout_run_api_CustomTimeframeFilter"]:
86506
86544
  return self._custom
86507
86545
 
86546
+ @builtins.property
86547
+ def preset(self) -> Optional["scout_run_api_PresetTimeframeFilter"]:
86548
+ return self._preset
86549
+
86508
86550
  def accept(self, visitor) -> Any:
86509
86551
  if not isinstance(visitor, scout_savedviews_api_AssetMetricColumnTimeRangeVisitor):
86510
86552
  raise ValueError('{} is not an instance of scout_savedviews_api_AssetMetricColumnTimeRangeVisitor'.format(visitor.__class__.__name__))
@@ -86512,6 +86554,8 @@ class scout_savedviews_api_AssetMetricColumnTimeRange(ConjureUnionType):
86512
86554
  return visitor._most_recent_run(self.most_recent_run)
86513
86555
  if self._type == 'custom' and self.custom is not None:
86514
86556
  return visitor._custom(self.custom)
86557
+ if self._type == 'preset' and self.preset is not None:
86558
+ return visitor._preset(self.preset)
86515
86559
 
86516
86560
 
86517
86561
  scout_savedviews_api_AssetMetricColumnTimeRange.__name__ = "AssetMetricColumnTimeRange"
@@ -86526,7 +86570,11 @@ class scout_savedviews_api_AssetMetricColumnTimeRangeVisitor:
86526
86570
  pass
86527
86571
 
86528
86572
  @abstractmethod
86529
- def _custom(self, custom: "scout_savedviews_api_CustomTimeRange") -> Any:
86573
+ def _custom(self, custom: "scout_run_api_CustomTimeframeFilter") -> Any:
86574
+ pass
86575
+
86576
+ @abstractmethod
86577
+ def _preset(self, preset: "scout_run_api_PresetTimeframeFilter") -> Any:
86530
86578
  pass
86531
86579
 
86532
86580
 
@@ -86750,35 +86798,6 @@ scout_savedviews_api_CreateSavedViewResponse.__qualname__ = "CreateSavedViewResp
86750
86798
  scout_savedviews_api_CreateSavedViewResponse.__module__ = "nominal_api.scout_savedviews_api"
86751
86799
 
86752
86800
 
86753
- class scout_savedviews_api_CustomTimeRange(ConjureBeanType):
86754
-
86755
- @builtins.classmethod
86756
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
86757
- return {
86758
- 'start_time': ConjureFieldDefinition('startTime', OptionalTypeWrapper[scout_run_api_UtcTimestamp]),
86759
- 'end_time': ConjureFieldDefinition('endTime', OptionalTypeWrapper[scout_run_api_UtcTimestamp])
86760
- }
86761
-
86762
- __slots__: List[str] = ['_start_time', '_end_time']
86763
-
86764
- def __init__(self, end_time: Optional["scout_run_api_UtcTimestamp"] = None, start_time: Optional["scout_run_api_UtcTimestamp"] = None) -> None:
86765
- self._start_time = start_time
86766
- self._end_time = end_time
86767
-
86768
- @builtins.property
86769
- def start_time(self) -> Optional["scout_run_api_UtcTimestamp"]:
86770
- return self._start_time
86771
-
86772
- @builtins.property
86773
- def end_time(self) -> Optional["scout_run_api_UtcTimestamp"]:
86774
- return self._end_time
86775
-
86776
-
86777
- scout_savedviews_api_CustomTimeRange.__name__ = "CustomTimeRange"
86778
- scout_savedviews_api_CustomTimeRange.__qualname__ = "CustomTimeRange"
86779
- scout_savedviews_api_CustomTimeRange.__module__ = "nominal_api.scout_savedviews_api"
86780
-
86781
-
86782
86801
  class scout_savedviews_api_DisplayState(ConjureUnionType):
86783
86802
  _display_state_v1: Optional["scout_savedviews_api_TableState"] = None
86784
86803
 
@@ -90826,6 +90845,41 @@ playlist will be limited to the given bounds.
90826
90845
  _raw.decode_content = True
90827
90846
  return _raw
90828
90847
 
90848
+ def get_playlist_in_bounds_for_channel(self, auth_header: str, request: "scout_video_api_GetPlaylistInBoundsForChannelRequest") -> Any:
90849
+ """Generates an HLS playlist for a video channel series (identified by channel + tags) within an optional set of
90850
+ bounds then generates a playlist for all matching video segments.
90851
+ """
90852
+ _conjure_encoder = ConjureEncoder()
90853
+
90854
+ _headers: Dict[str, Any] = {
90855
+ 'Accept': 'application/octet-stream',
90856
+ 'Content-Type': 'application/json',
90857
+ 'Authorization': auth_header,
90858
+ }
90859
+
90860
+ _params: Dict[str, Any] = {
90861
+ }
90862
+
90863
+ _path_params: Dict[str, str] = {
90864
+ }
90865
+
90866
+ _json: Any = _conjure_encoder.default(request)
90867
+
90868
+ _path = '/video/v1/videos/channel/playlist-in-bounds'
90869
+ _path = _path.format(**_path_params)
90870
+
90871
+ _response: Response = self._request(
90872
+ 'POST',
90873
+ self._uri + _path,
90874
+ params=_params,
90875
+ headers=_headers,
90876
+ stream=True,
90877
+ json=_json)
90878
+
90879
+ _raw = _response.raw
90880
+ _raw.decode_content = True
90881
+ return _raw
90882
+
90829
90883
  def get_segment_summaries_in_bounds(self, auth_header: str, request: "scout_video_api_GetSegmentSummariesInBoundsRequest", video_rid: str) -> List["scout_video_api_SegmentSummary"]:
90830
90884
  """Returns the min and max absolute and media timestamps for each segment in a video that overlap with an
90831
90885
  optional set of bounds.
@@ -90860,6 +90914,39 @@ optional set of bounds.
90860
90914
  _decoder = ConjureDecoder()
90861
90915
  return _decoder.decode(_response.json(), List[scout_video_api_SegmentSummary], self._return_none_for_unknown_union_types)
90862
90916
 
90917
+ def get_segment_summaries_in_bounds_for_channel(self, auth_header: str, request: "scout_video_api_GetSegmentSummariesInBoundsForChannelRequest") -> List["scout_video_api_SegmentSummary"]:
90918
+ """Returns the min and max absolute and media timestamps for each segment matching a video channel series
90919
+ (identified by channel + tags) within the specified bounds.
90920
+ """
90921
+ _conjure_encoder = ConjureEncoder()
90922
+
90923
+ _headers: Dict[str, Any] = {
90924
+ 'Accept': 'application/json',
90925
+ 'Content-Type': 'application/json',
90926
+ 'Authorization': auth_header,
90927
+ }
90928
+
90929
+ _params: Dict[str, Any] = {
90930
+ }
90931
+
90932
+ _path_params: Dict[str, str] = {
90933
+ }
90934
+
90935
+ _json: Any = _conjure_encoder.default(request)
90936
+
90937
+ _path = '/video/v1/videos/channel/segment-summaries-in-bounds'
90938
+ _path = _path.format(**_path_params)
90939
+
90940
+ _response: Response = self._request(
90941
+ 'POST',
90942
+ self._uri + _path,
90943
+ params=_params,
90944
+ headers=_headers,
90945
+ json=_json)
90946
+
90947
+ _decoder = ConjureDecoder()
90948
+ return _decoder.decode(_response.json(), List[scout_video_api_SegmentSummary], self._return_none_for_unknown_union_types)
90949
+
90863
90950
  def get_file_summaries(self, auth_header: str, request: "scout_video_api_GetFileSummariesRequest", video_rid: str) -> "scout_video_api_GetFileSummariesResponse":
90864
90951
  """Returns the min and max absolute timestamps from non-archived video files associated with a given video that
90865
90952
  overlap with an optional set of bounds. The files on the edges of the bounds will be truncated to segments
@@ -91610,6 +91697,38 @@ scout_video_api_GetIngestStatusResponse.__qualname__ = "GetIngestStatusResponse"
91610
91697
  scout_video_api_GetIngestStatusResponse.__module__ = "nominal_api.scout_video_api"
91611
91698
 
91612
91699
 
91700
+ class scout_video_api_GetPlaylistInBoundsForChannelRequest(ConjureBeanType):
91701
+ """Request to get playlist for a video channel series.
91702
+ Uses channel + tags to resolve to video series metadata within the specified video.
91703
+ """
91704
+
91705
+ @builtins.classmethod
91706
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
91707
+ return {
91708
+ 'channel_series': ConjureFieldDefinition('channelSeries', scout_video_api_VideoChannelSeries),
91709
+ 'bounds': ConjureFieldDefinition('bounds', scout_video_api_Bounds)
91710
+ }
91711
+
91712
+ __slots__: List[str] = ['_channel_series', '_bounds']
91713
+
91714
+ def __init__(self, bounds: "scout_video_api_Bounds", channel_series: "scout_video_api_VideoChannelSeries") -> None:
91715
+ self._channel_series = channel_series
91716
+ self._bounds = bounds
91717
+
91718
+ @builtins.property
91719
+ def channel_series(self) -> "scout_video_api_VideoChannelSeries":
91720
+ return self._channel_series
91721
+
91722
+ @builtins.property
91723
+ def bounds(self) -> "scout_video_api_Bounds":
91724
+ return self._bounds
91725
+
91726
+
91727
+ scout_video_api_GetPlaylistInBoundsForChannelRequest.__name__ = "GetPlaylistInBoundsForChannelRequest"
91728
+ scout_video_api_GetPlaylistInBoundsForChannelRequest.__qualname__ = "GetPlaylistInBoundsForChannelRequest"
91729
+ scout_video_api_GetPlaylistInBoundsForChannelRequest.__module__ = "nominal_api.scout_video_api"
91730
+
91731
+
91613
91732
  class scout_video_api_GetPlaylistInBoundsRequest(ConjureBeanType):
91614
91733
 
91615
91734
  @builtins.classmethod
@@ -91668,6 +91787,38 @@ scout_video_api_GetSegmentByTimestampRequest.__qualname__ = "GetSegmentByTimesta
91668
91787
  scout_video_api_GetSegmentByTimestampRequest.__module__ = "nominal_api.scout_video_api"
91669
91788
 
91670
91789
 
91790
+ class scout_video_api_GetSegmentSummariesInBoundsForChannelRequest(ConjureBeanType):
91791
+ """Request to get segment summaries for a video channel series.
91792
+ Uses channel + tags to resolve to video series metadata within the specified bounds.
91793
+ """
91794
+
91795
+ @builtins.classmethod
91796
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
91797
+ return {
91798
+ 'channel_series': ConjureFieldDefinition('channelSeries', scout_video_api_VideoChannelSeries),
91799
+ 'bounds': ConjureFieldDefinition('bounds', scout_video_api_Bounds)
91800
+ }
91801
+
91802
+ __slots__: List[str] = ['_channel_series', '_bounds']
91803
+
91804
+ def __init__(self, bounds: "scout_video_api_Bounds", channel_series: "scout_video_api_VideoChannelSeries") -> None:
91805
+ self._channel_series = channel_series
91806
+ self._bounds = bounds
91807
+
91808
+ @builtins.property
91809
+ def channel_series(self) -> "scout_video_api_VideoChannelSeries":
91810
+ return self._channel_series
91811
+
91812
+ @builtins.property
91813
+ def bounds(self) -> "scout_video_api_Bounds":
91814
+ return self._bounds
91815
+
91816
+
91817
+ scout_video_api_GetSegmentSummariesInBoundsForChannelRequest.__name__ = "GetSegmentSummariesInBoundsForChannelRequest"
91818
+ scout_video_api_GetSegmentSummariesInBoundsForChannelRequest.__qualname__ = "GetSegmentSummariesInBoundsForChannelRequest"
91819
+ scout_video_api_GetSegmentSummariesInBoundsForChannelRequest.__module__ = "nominal_api.scout_video_api"
91820
+
91821
+
91671
91822
  class scout_video_api_GetSegmentSummariesInBoundsRequest(ConjureBeanType):
91672
91823
 
91673
91824
  @builtins.classmethod
@@ -92947,6 +93098,166 @@ scout_video_api_VideoAllSegmentsMetadata.__qualname__ = "VideoAllSegmentsMetadat
92947
93098
  scout_video_api_VideoAllSegmentsMetadata.__module__ = "nominal_api.scout_video_api"
92948
93099
 
92949
93100
 
93101
+ class scout_video_api_VideoAssetChannel(ConjureBeanType):
93102
+ """Reference a video channel via an Asset's data scope
93103
+ """
93104
+
93105
+ @builtins.classmethod
93106
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
93107
+ return {
93108
+ 'asset_rid': ConjureFieldDefinition('assetRid', str),
93109
+ 'data_scope_name': ConjureFieldDefinition('dataScopeName', str),
93110
+ 'channel': ConjureFieldDefinition('channel', str),
93111
+ 'tags': ConjureFieldDefinition('tags', Dict[api_TagName, api_TagValue])
93112
+ }
93113
+
93114
+ __slots__: List[str] = ['_asset_rid', '_data_scope_name', '_channel', '_tags']
93115
+
93116
+ def __init__(self, asset_rid: str, channel: str, data_scope_name: str, tags: Dict[str, str]) -> None:
93117
+ self._asset_rid = asset_rid
93118
+ self._data_scope_name = data_scope_name
93119
+ self._channel = channel
93120
+ self._tags = tags
93121
+
93122
+ @builtins.property
93123
+ def asset_rid(self) -> str:
93124
+ return self._asset_rid
93125
+
93126
+ @builtins.property
93127
+ def data_scope_name(self) -> str:
93128
+ return self._data_scope_name
93129
+
93130
+ @builtins.property
93131
+ def channel(self) -> str:
93132
+ return self._channel
93133
+
93134
+ @builtins.property
93135
+ def tags(self) -> Dict[str, str]:
93136
+ return self._tags
93137
+
93138
+
93139
+ scout_video_api_VideoAssetChannel.__name__ = "VideoAssetChannel"
93140
+ scout_video_api_VideoAssetChannel.__qualname__ = "VideoAssetChannel"
93141
+ scout_video_api_VideoAssetChannel.__module__ = "nominal_api.scout_video_api"
93142
+
93143
+
93144
+ class scout_video_api_VideoChannelSeries(ConjureUnionType):
93145
+ """Union type for referencing a video channel. Allows querying video data via
93146
+ datasource/channel, asset data scopes, or run data scopes.
93147
+ """
93148
+ _data_source: Optional["scout_video_api_VideoDataSourceChannel"] = None
93149
+ _asset: Optional["scout_video_api_VideoAssetChannel"] = None
93150
+
93151
+ @builtins.classmethod
93152
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
93153
+ return {
93154
+ 'data_source': ConjureFieldDefinition('dataSource', scout_video_api_VideoDataSourceChannel),
93155
+ 'asset': ConjureFieldDefinition('asset', scout_video_api_VideoAssetChannel)
93156
+ }
93157
+
93158
+ def __init__(
93159
+ self,
93160
+ data_source: Optional["scout_video_api_VideoDataSourceChannel"] = None,
93161
+ asset: Optional["scout_video_api_VideoAssetChannel"] = None,
93162
+ type_of_union: Optional[str] = None
93163
+ ) -> None:
93164
+ if type_of_union is None:
93165
+ if (data_source is not None) + (asset is not None) != 1:
93166
+ raise ValueError('a union must contain a single member')
93167
+
93168
+ if data_source is not None:
93169
+ self._data_source = data_source
93170
+ self._type = 'dataSource'
93171
+ if asset is not None:
93172
+ self._asset = asset
93173
+ self._type = 'asset'
93174
+
93175
+ elif type_of_union == 'dataSource':
93176
+ if data_source is None:
93177
+ raise ValueError('a union value must not be None')
93178
+ self._data_source = data_source
93179
+ self._type = 'dataSource'
93180
+ elif type_of_union == 'asset':
93181
+ if asset is None:
93182
+ raise ValueError('a union value must not be None')
93183
+ self._asset = asset
93184
+ self._type = 'asset'
93185
+
93186
+ @builtins.property
93187
+ def data_source(self) -> Optional["scout_video_api_VideoDataSourceChannel"]:
93188
+ return self._data_source
93189
+
93190
+ @builtins.property
93191
+ def asset(self) -> Optional["scout_video_api_VideoAssetChannel"]:
93192
+ return self._asset
93193
+
93194
+ def accept(self, visitor) -> Any:
93195
+ if not isinstance(visitor, scout_video_api_VideoChannelSeriesVisitor):
93196
+ raise ValueError('{} is not an instance of scout_video_api_VideoChannelSeriesVisitor'.format(visitor.__class__.__name__))
93197
+ if self._type == 'dataSource' and self.data_source is not None:
93198
+ return visitor._data_source(self.data_source)
93199
+ if self._type == 'asset' and self.asset is not None:
93200
+ return visitor._asset(self.asset)
93201
+
93202
+
93203
+ scout_video_api_VideoChannelSeries.__name__ = "VideoChannelSeries"
93204
+ scout_video_api_VideoChannelSeries.__qualname__ = "VideoChannelSeries"
93205
+ scout_video_api_VideoChannelSeries.__module__ = "nominal_api.scout_video_api"
93206
+
93207
+
93208
+ class scout_video_api_VideoChannelSeriesVisitor:
93209
+
93210
+ @abstractmethod
93211
+ def _data_source(self, data_source: "scout_video_api_VideoDataSourceChannel") -> Any:
93212
+ pass
93213
+
93214
+ @abstractmethod
93215
+ def _asset(self, asset: "scout_video_api_VideoAssetChannel") -> Any:
93216
+ pass
93217
+
93218
+
93219
+ scout_video_api_VideoChannelSeriesVisitor.__name__ = "VideoChannelSeriesVisitor"
93220
+ scout_video_api_VideoChannelSeriesVisitor.__qualname__ = "VideoChannelSeriesVisitor"
93221
+ scout_video_api_VideoChannelSeriesVisitor.__module__ = "nominal_api.scout_video_api"
93222
+
93223
+
93224
+ class scout_video_api_VideoDataSourceChannel(ConjureBeanType):
93225
+ """Reference a video channel directly from a datasource/dataset
93226
+ """
93227
+
93228
+ @builtins.classmethod
93229
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
93230
+ return {
93231
+ 'data_source_rid': ConjureFieldDefinition('dataSourceRid', str),
93232
+ 'channel': ConjureFieldDefinition('channel', str),
93233
+ 'tags': ConjureFieldDefinition('tags', Dict[api_TagName, api_TagValue])
93234
+ }
93235
+
93236
+ __slots__: List[str] = ['_data_source_rid', '_channel', '_tags']
93237
+
93238
+ def __init__(self, channel: str, data_source_rid: str, tags: Dict[str, str]) -> None:
93239
+ self._data_source_rid = data_source_rid
93240
+ self._channel = channel
93241
+ self._tags = tags
93242
+
93243
+ @builtins.property
93244
+ def data_source_rid(self) -> str:
93245
+ return self._data_source_rid
93246
+
93247
+ @builtins.property
93248
+ def channel(self) -> str:
93249
+ return self._channel
93250
+
93251
+ @builtins.property
93252
+ def tags(self) -> Dict[str, str]:
93253
+ return self._tags
93254
+
93255
+
93256
+ scout_video_api_VideoDataSourceChannel.__name__ = "VideoDataSourceChannel"
93257
+ scout_video_api_VideoDataSourceChannel.__qualname__ = "VideoDataSourceChannel"
93258
+ scout_video_api_VideoDataSourceChannel.__module__ = "nominal_api.scout_video_api"
93259
+
93260
+
92950
93261
  class scout_video_api_VideoFile(ConjureBeanType):
92951
93262
  """Representation of a single user-provided video file.
92952
93263
  """
@@ -97280,6 +97591,7 @@ message Points {
97280
97591
  IntegerPoints integer_points = 3;
97281
97592
  ArrayPoints array_points = 4;
97282
97593
  StructPoints struct_points = 5;
97594
+ Uint64Points uint64_points = 6;
97283
97595
  }
97284
97596
  }
97285
97597
 
@@ -97295,6 +97607,10 @@ message IntegerPoints {
97295
97607
  repeated IntegerPoint points = 1;
97296
97608
  }
97297
97609
 
97610
+ message Uint64Points {
97611
+ repeated Uint64Point points = 1;
97612
+ }
97613
+
97298
97614
  message ArrayPoints {
97299
97615
  oneof array_type {
97300
97616
  DoubleArrayPoints double_array_points = 1;
@@ -97329,6 +97645,11 @@ message IntegerPoint {
97329
97645
  int64 value = 2;
97330
97646
  }
97331
97647
 
97648
+ message Uint64Point {
97649
+ google.protobuf.Timestamp timestamp = 1;
97650
+ uint64 value = 2;
97651
+ }
97652
+
97332
97653
  message DoubleArrayPoint {
97333
97654
  google.protobuf.Timestamp timestamp = 1;
97334
97655
  repeated double value = 2;
@@ -97431,6 +97752,7 @@ Logs specifically are supported externally via a separate endpoint.
97431
97752
  _double: Optional[List["storage_writer_api_DoublePoint"]] = None
97432
97753
  _log: Optional[List["storage_writer_api_LogPoint"]] = None
97433
97754
  _int_: Optional[List["storage_writer_api_IntPoint"]] = None
97755
+ _uint64: Optional[List["storage_writer_api_Uint64Point"]] = None
97434
97756
  _array: Optional["storage_writer_api_ArrayPoints"] = None
97435
97757
  _struct: Optional[List["storage_writer_api_StructPoint"]] = None
97436
97758
 
@@ -97441,6 +97763,7 @@ Logs specifically are supported externally via a separate endpoint.
97441
97763
  'double': ConjureFieldDefinition('double', List[storage_writer_api_DoublePoint]),
97442
97764
  'log': ConjureFieldDefinition('log', List[storage_writer_api_LogPoint]),
97443
97765
  'int_': ConjureFieldDefinition('int', List[storage_writer_api_IntPoint]),
97766
+ 'uint64': ConjureFieldDefinition('uint64', List[storage_writer_api_Uint64Point]),
97444
97767
  'array': ConjureFieldDefinition('array', storage_writer_api_ArrayPoints),
97445
97768
  'struct': ConjureFieldDefinition('struct', List[storage_writer_api_StructPoint])
97446
97769
  }
@@ -97451,12 +97774,13 @@ Logs specifically are supported externally via a separate endpoint.
97451
97774
  double: Optional[List["storage_writer_api_DoublePoint"]] = None,
97452
97775
  log: Optional[List["storage_writer_api_LogPoint"]] = None,
97453
97776
  int_: Optional[List["storage_writer_api_IntPoint"]] = None,
97777
+ uint64: Optional[List["storage_writer_api_Uint64Point"]] = None,
97454
97778
  array: Optional["storage_writer_api_ArrayPoints"] = None,
97455
97779
  struct: Optional[List["storage_writer_api_StructPoint"]] = None,
97456
97780
  type_of_union: Optional[str] = None
97457
97781
  ) -> None:
97458
97782
  if type_of_union is None:
97459
- if (string is not None) + (double is not None) + (log is not None) + (int_ is not None) + (array is not None) + (struct is not None) != 1:
97783
+ if (string is not None) + (double is not None) + (log is not None) + (int_ is not None) + (uint64 is not None) + (array is not None) + (struct is not None) != 1:
97460
97784
  raise ValueError('a union must contain a single member')
97461
97785
 
97462
97786
  if string is not None:
@@ -97471,6 +97795,9 @@ Logs specifically are supported externally via a separate endpoint.
97471
97795
  if int_ is not None:
97472
97796
  self._int_ = int_
97473
97797
  self._type = 'int'
97798
+ if uint64 is not None:
97799
+ self._uint64 = uint64
97800
+ self._type = 'uint64'
97474
97801
  if array is not None:
97475
97802
  self._array = array
97476
97803
  self._type = 'array'
@@ -97498,6 +97825,11 @@ Logs specifically are supported externally via a separate endpoint.
97498
97825
  raise ValueError('a union value must not be None')
97499
97826
  self._int_ = int_
97500
97827
  self._type = 'int'
97828
+ elif type_of_union == 'uint64':
97829
+ if uint64 is None:
97830
+ raise ValueError('a union value must not be None')
97831
+ self._uint64 = uint64
97832
+ self._type = 'uint64'
97501
97833
  elif type_of_union == 'array':
97502
97834
  if array is None:
97503
97835
  raise ValueError('a union value must not be None')
@@ -97525,6 +97857,10 @@ Logs specifically are supported externally via a separate endpoint.
97525
97857
  def int_(self) -> Optional[List["storage_writer_api_IntPoint"]]:
97526
97858
  return self._int_
97527
97859
 
97860
+ @builtins.property
97861
+ def uint64(self) -> Optional[List["storage_writer_api_Uint64Point"]]:
97862
+ return self._uint64
97863
+
97528
97864
  @builtins.property
97529
97865
  def array(self) -> Optional["storage_writer_api_ArrayPoints"]:
97530
97866
  return self._array
@@ -97544,6 +97880,8 @@ Logs specifically are supported externally via a separate endpoint.
97544
97880
  return visitor._log(self.log)
97545
97881
  if self._type == 'int' and self.int_ is not None:
97546
97882
  return visitor._int(self.int_)
97883
+ if self._type == 'uint64' and self.uint64 is not None:
97884
+ return visitor._uint64(self.uint64)
97547
97885
  if self._type == 'array' and self.array is not None:
97548
97886
  return visitor._array(self.array)
97549
97887
  if self._type == 'struct' and self.struct is not None:
@@ -97573,6 +97911,10 @@ class storage_writer_api_PointsVisitor:
97573
97911
  def _int(self, int_: List["storage_writer_api_IntPoint"]) -> Any:
97574
97912
  pass
97575
97913
 
97914
+ @abstractmethod
97915
+ def _uint64(self, uint64: List["storage_writer_api_Uint64Point"]) -> Any:
97916
+ pass
97917
+
97576
97918
  @abstractmethod
97577
97919
  def _array(self, array: "storage_writer_api_ArrayPoints") -> Any:
97578
97920
  pass
@@ -97929,6 +98271,35 @@ storage_writer_api_TelegrafMetric.__qualname__ = "TelegrafMetric"
97929
98271
  storage_writer_api_TelegrafMetric.__module__ = "nominal_api.storage_writer_api"
97930
98272
 
97931
98273
 
98274
+ class storage_writer_api_Uint64Point(ConjureBeanType):
98275
+
98276
+ @builtins.classmethod
98277
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
98278
+ return {
98279
+ 'timestamp': ConjureFieldDefinition('timestamp', api_Timestamp),
98280
+ 'value': ConjureFieldDefinition('value', int)
98281
+ }
98282
+
98283
+ __slots__: List[str] = ['_timestamp', '_value']
98284
+
98285
+ def __init__(self, timestamp: "api_Timestamp", value: int) -> None:
98286
+ self._timestamp = timestamp
98287
+ self._value = value
98288
+
98289
+ @builtins.property
98290
+ def timestamp(self) -> "api_Timestamp":
98291
+ return self._timestamp
98292
+
98293
+ @builtins.property
98294
+ def value(self) -> int:
98295
+ return self._value
98296
+
98297
+
98298
+ storage_writer_api_Uint64Point.__name__ = "Uint64Point"
98299
+ storage_writer_api_Uint64Point.__qualname__ = "Uint64Point"
98300
+ storage_writer_api_Uint64Point.__module__ = "nominal_api.storage_writer_api"
98301
+
98302
+
97932
98303
  class storage_writer_api_WriteBatchesRequest(ConjureBeanType):
97933
98304
 
97934
98305
  @builtins.classmethod