nominal-api 0.655.0__py3-none-any.whl → 0.663.2__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
@@ -8805,20 +8805,25 @@ class ingest_api_IngestMetadata(ConjureBeanType):
8805
8805
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
8806
8806
  return {
8807
8807
  'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_TimestampMetadata]),
8808
- 'channel_prefix': ConjureFieldDefinition('channelPrefix', OptionalTypeWrapper[str])
8808
+ 'channel_prefix': ConjureFieldDefinition('channelPrefix', OptionalTypeWrapper[str]),
8809
+ 'tag_columns': ConjureFieldDefinition('tagColumns', OptionalTypeWrapper[Dict[api_TagName, api_ColumnName]]),
8810
+ 'additional_file_tags': ConjureFieldDefinition('additionalFileTags', OptionalTypeWrapper[Dict[api_TagName, api_TagValue]])
8809
8811
  }
8810
8812
 
8811
- __slots__: List[str] = ['_timestamp_metadata', '_channel_prefix']
8813
+ __slots__: List[str] = ['_timestamp_metadata', '_channel_prefix', '_tag_columns', '_additional_file_tags']
8812
8814
 
8813
- def __init__(self, channel_prefix: Optional[str] = None, timestamp_metadata: Optional["ingest_api_TimestampMetadata"] = None) -> None:
8815
+ def __init__(self, additional_file_tags: Optional[Dict[str, str]] = None, channel_prefix: Optional[str] = None, tag_columns: Optional[Dict[str, str]] = None, timestamp_metadata: Optional["ingest_api_TimestampMetadata"] = None) -> None:
8814
8816
  self._timestamp_metadata = timestamp_metadata
8815
8817
  self._channel_prefix = channel_prefix
8818
+ self._tag_columns = tag_columns
8819
+ self._additional_file_tags = additional_file_tags
8816
8820
 
8817
8821
  @builtins.property
8818
8822
  def timestamp_metadata(self) -> Optional["ingest_api_TimestampMetadata"]:
8819
8823
  """
8820
- The timestamp metadata will be recovered from the DatasetFiles table if possible.
8821
- If not found, this field must be populated to successfully reingest.
8824
+ The timestamp metadata will be recovered from the dataset files if possible.
8825
+ Older datasets may have unrecoverable timestamp metadata.
8826
+ If unrecoverable, reingestion will throw MissingMetadataForReingest if not provided in request.
8822
8827
  """
8823
8828
  return self._timestamp_metadata
8824
8829
 
@@ -8826,10 +8831,26 @@ If not found, this field must be populated to successfully reingest.
8826
8831
  def channel_prefix(self) -> Optional[str]:
8827
8832
  """
8828
8833
  Channel prefix to use when reingesting the dataset.
8829
- Defaults to empty string.
8834
+ Defaults to empty string. Not recoverable from prior ingests and must be provided in request if needed.
8830
8835
  """
8831
8836
  return self._channel_prefix
8832
8837
 
8838
+ @builtins.property
8839
+ def tag_columns(self) -> Optional[Dict[str, str]]:
8840
+ """
8841
+ A map of tag names to column names to derive the tag values from.
8842
+ Not recoverable from prior ingests and must be provided in request if needed.
8843
+ """
8844
+ return self._tag_columns
8845
+
8846
+ @builtins.property
8847
+ def additional_file_tags(self) -> Optional[Dict[str, str]]:
8848
+ """
8849
+ Additional tags to apply to all dataset files within the the given dataset.
8850
+ Not recoverable from prior ingests and must be provided in request if needed.
8851
+ """
8852
+ return self._additional_file_tags
8853
+
8833
8854
 
8834
8855
  ingest_api_IngestMetadata.__name__ = "IngestMetadata"
8835
8856
  ingest_api_IngestMetadata.__qualname__ = "IngestMetadata"
@@ -9490,7 +9511,7 @@ existing one.
9490
9511
  """
9491
9512
  Re-ingests data from provided source datasets into either an existing target dataset, or a new one.
9492
9513
  Only supported for CSV and Parquet dataset files.
9493
- Cannot ingest from streaming (V2) datasets due to data loss for tags and streaming data.
9514
+ Will only reingest dataset files and will drop streaming data from datasets.
9494
9515
  """
9495
9516
 
9496
9517
  _headers: Dict[str, Any] = {
@@ -9507,7 +9528,7 @@ Cannot ingest from streaming (V2) datasets due to data loss for tags and streami
9507
9528
 
9508
9529
  _json: Any = ConjureEncoder().default(request)
9509
9530
 
9510
- _path = '/ingest/v1/reingest-dataset'
9531
+ _path = '/ingest/v1/reingest-dataset-files'
9511
9532
  _path = _path.format(**_path_params)
9512
9533
 
9513
9534
  _response: Response = self._request(
@@ -10965,8 +10986,8 @@ Will attempt to reingest from datasets in list order.
10965
10986
  def ingest_metadata(self) -> Dict[str, "ingest_api_IngestMetadata"]:
10966
10987
  """
10967
10988
  Mapping of dataset to ingest metadata.
10968
- Ingest metadata will be recovered from existing files if possible.
10969
- If unrecoverable, will fall back to ingest metadata provided in this field.
10989
+ Ingest metadata only needs to be provided in request if it cannot be recovered from prior ingests.
10990
+ See documentation on each field to determine what metadata can be auto-recovered.
10970
10991
  """
10971
10992
  return self._ingest_metadata
10972
10993
 
@@ -12439,6 +12460,72 @@ ingest_workflow_api_ExtractorJobState.__qualname__ = "ExtractorJobState"
12439
12460
  ingest_workflow_api_ExtractorJobState.__module__ = "nominal_api.ingest_workflow_api"
12440
12461
 
12441
12462
 
12463
+ class ingest_workflow_api_FetchExtractorJobLogsRequest(ConjureBeanType):
12464
+ """
12465
+ Request to fetch logs for all containers in a completed extractor job's pod.
12466
+ """
12467
+
12468
+ @builtins.classmethod
12469
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
12470
+ return {
12471
+ 'workspace_rid': ConjureFieldDefinition('workspaceRid', api_rids_WorkspaceRid),
12472
+ 'log_dataset_rid': ConjureFieldDefinition('logDatasetRid', api_rids_DatasetRid),
12473
+ 'ingest_job_uuid': ConjureFieldDefinition('ingestJobUuid', str),
12474
+ 'bearer_token': ConjureFieldDefinition('bearerToken', str),
12475
+ 'extractor_rid': ConjureFieldDefinition('extractorRid', ingest_api_ContainerizedExtractorRid)
12476
+ }
12477
+
12478
+ __slots__: List[str] = ['_workspace_rid', '_log_dataset_rid', '_ingest_job_uuid', '_bearer_token', '_extractor_rid']
12479
+
12480
+ def __init__(self, bearer_token: str, extractor_rid: str, ingest_job_uuid: str, log_dataset_rid: str, workspace_rid: str) -> None:
12481
+ self._workspace_rid = workspace_rid
12482
+ self._log_dataset_rid = log_dataset_rid
12483
+ self._ingest_job_uuid = ingest_job_uuid
12484
+ self._bearer_token = bearer_token
12485
+ self._extractor_rid = extractor_rid
12486
+
12487
+ @builtins.property
12488
+ def workspace_rid(self) -> str:
12489
+ return self._workspace_rid
12490
+
12491
+ @builtins.property
12492
+ def log_dataset_rid(self) -> str:
12493
+ return self._log_dataset_rid
12494
+
12495
+ @builtins.property
12496
+ def ingest_job_uuid(self) -> str:
12497
+ return self._ingest_job_uuid
12498
+
12499
+ @builtins.property
12500
+ def bearer_token(self) -> str:
12501
+ return self._bearer_token
12502
+
12503
+ @builtins.property
12504
+ def extractor_rid(self) -> str:
12505
+ return self._extractor_rid
12506
+
12507
+
12508
+ ingest_workflow_api_FetchExtractorJobLogsRequest.__name__ = "FetchExtractorJobLogsRequest"
12509
+ ingest_workflow_api_FetchExtractorJobLogsRequest.__qualname__ = "FetchExtractorJobLogsRequest"
12510
+ ingest_workflow_api_FetchExtractorJobLogsRequest.__module__ = "nominal_api.ingest_workflow_api"
12511
+
12512
+
12513
+ class ingest_workflow_api_FetchExtractorJobLogsResponse(ConjureBeanType):
12514
+
12515
+ @builtins.classmethod
12516
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
12517
+ return {
12518
+ }
12519
+
12520
+ __slots__: List[str] = []
12521
+
12522
+
12523
+
12524
+ ingest_workflow_api_FetchExtractorJobLogsResponse.__name__ = "FetchExtractorJobLogsResponse"
12525
+ ingest_workflow_api_FetchExtractorJobLogsResponse.__qualname__ = "FetchExtractorJobLogsResponse"
12526
+ ingest_workflow_api_FetchExtractorJobLogsResponse.__module__ = "nominal_api.ingest_workflow_api"
12527
+
12528
+
12442
12529
  class ingest_workflow_api_GetExtractorJobStateRequest(ConjureBeanType):
12443
12530
 
12444
12531
  @builtins.classmethod
@@ -13394,12 +13481,20 @@ class persistent_compute_api_InvalidComputationType(ConjureEnumType):
13394
13481
  '''INTEGRAL'''
13395
13482
  STALENESS_DETECTION = 'STALENESS_DETECTION'
13396
13483
  '''STALENESS_DETECTION'''
13484
+ TIME_RANGE_FILTER = 'TIME_RANGE_FILTER'
13485
+ '''TIME_RANGE_FILTER'''
13397
13486
  FREQUENCY_DOMAIN = 'FREQUENCY_DOMAIN'
13398
13487
  '''FREQUENCY_DOMAIN'''
13399
13488
  CURVE_FITTING = 'CURVE_FITTING'
13400
13489
  '''CURVE_FITTING'''
13401
13490
  PAGE_SUMMARIZATION_STRATEGY = 'PAGE_SUMMARIZATION_STRATEGY'
13402
13491
  '''PAGE_SUMMARIZATION_STRATEGY'''
13492
+ LOOK_BACK_TOO_FAR = 'LOOK_BACK_TOO_FAR'
13493
+ '''LOOK_BACK_TOO_FAR'''
13494
+ LOG_SERIES = 'LOG_SERIES'
13495
+ '''LOG_SERIES'''
13496
+ LITERAL_RANGES = 'LITERAL_RANGES'
13497
+ '''LITERAL_RANGES'''
13403
13498
  UNKNOWN = 'UNKNOWN'
13404
13499
  '''UNKNOWN'''
13405
13500
 
@@ -18222,7 +18317,7 @@ Throws if the asset already has data scopes with data scope names matching those
18222
18317
 
18223
18318
  return
18224
18319
 
18225
- def unarchive(self, auth_header: str, rid: str) -> None:
18320
+ def unarchive(self, auth_header: str, rid: str, include_linked_workbooks: Optional[bool] = None) -> None:
18226
18321
 
18227
18322
  _headers: Dict[str, Any] = {
18228
18323
  'Accept': 'application/json',
@@ -18230,6 +18325,7 @@ Throws if the asset already has data scopes with data scope names matching those
18230
18325
  }
18231
18326
 
18232
18327
  _params: Dict[str, Any] = {
18328
+ 'includeLinkedWorkbooks': include_linked_workbooks,
18233
18329
  }
18234
18330
 
18235
18331
  _path_params: Dict[str, Any] = {
@@ -22256,6 +22352,89 @@ scout_chartdefinition_api_ChecklistChartDefinitionV1.__qualname__ = "ChecklistCh
22256
22352
  scout_chartdefinition_api_ChecklistChartDefinitionV1.__module__ = "nominal_api.scout_chartdefinition_api"
22257
22353
 
22258
22354
 
22355
+ class scout_chartdefinition_api_ColorStyle(ConjureUnionType):
22356
+ _mapped: Optional[Dict[str, str]] = None
22357
+ _single: Optional[str] = None
22358
+
22359
+ @builtins.classmethod
22360
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
22361
+ return {
22362
+ 'mapped': ConjureFieldDefinition('mapped', Dict[str, scout_api_HexColor]),
22363
+ 'single': ConjureFieldDefinition('single', scout_api_HexColor)
22364
+ }
22365
+
22366
+ def __init__(
22367
+ self,
22368
+ mapped: Optional[Dict[str, str]] = None,
22369
+ single: Optional[str] = None,
22370
+ type_of_union: Optional[str] = None
22371
+ ) -> None:
22372
+ if type_of_union is None:
22373
+ if (mapped is not None) + (single is not None) != 1:
22374
+ raise ValueError('a union must contain a single member')
22375
+
22376
+ if mapped is not None:
22377
+ self._mapped = mapped
22378
+ self._type = 'mapped'
22379
+ if single is not None:
22380
+ self._single = single
22381
+ self._type = 'single'
22382
+
22383
+ elif type_of_union == 'mapped':
22384
+ if mapped is None:
22385
+ raise ValueError('a union value must not be None')
22386
+ self._mapped = mapped
22387
+ self._type = 'mapped'
22388
+ elif type_of_union == 'single':
22389
+ if single is None:
22390
+ raise ValueError('a union value must not be None')
22391
+ self._single = single
22392
+ self._type = 'single'
22393
+
22394
+ @builtins.property
22395
+ def mapped(self) -> Optional[Dict[str, str]]:
22396
+ """
22397
+ Defines specific colors for specific values
22398
+ """
22399
+ return self._mapped
22400
+
22401
+ @builtins.property
22402
+ def single(self) -> Optional[str]:
22403
+ """
22404
+ A single color to apply to the whole plot
22405
+ """
22406
+ return self._single
22407
+
22408
+ def accept(self, visitor) -> Any:
22409
+ if not isinstance(visitor, scout_chartdefinition_api_ColorStyleVisitor):
22410
+ raise ValueError('{} is not an instance of scout_chartdefinition_api_ColorStyleVisitor'.format(visitor.__class__.__name__))
22411
+ if self._type == 'mapped' and self.mapped is not None:
22412
+ return visitor._mapped(self.mapped)
22413
+ if self._type == 'single' and self.single is not None:
22414
+ return visitor._single(self.single)
22415
+
22416
+
22417
+ scout_chartdefinition_api_ColorStyle.__name__ = "ColorStyle"
22418
+ scout_chartdefinition_api_ColorStyle.__qualname__ = "ColorStyle"
22419
+ scout_chartdefinition_api_ColorStyle.__module__ = "nominal_api.scout_chartdefinition_api"
22420
+
22421
+
22422
+ class scout_chartdefinition_api_ColorStyleVisitor:
22423
+
22424
+ @abstractmethod
22425
+ def _mapped(self, mapped: Dict[str, str]) -> Any:
22426
+ pass
22427
+
22428
+ @abstractmethod
22429
+ def _single(self, single: str) -> Any:
22430
+ pass
22431
+
22432
+
22433
+ scout_chartdefinition_api_ColorStyleVisitor.__name__ = "ColorStyleVisitor"
22434
+ scout_chartdefinition_api_ColorStyleVisitor.__qualname__ = "ColorStyleVisitor"
22435
+ scout_chartdefinition_api_ColorStyleVisitor.__module__ = "nominal_api.scout_chartdefinition_api"
22436
+
22437
+
22259
22438
  class scout_chartdefinition_api_DefaultFill(ConjureBeanType):
22260
22439
 
22261
22440
  @builtins.classmethod
@@ -24011,6 +24190,140 @@ scout_chartdefinition_api_NumericValueVisualisationV2Visitor.__qualname__ = "Num
24011
24190
  scout_chartdefinition_api_NumericValueVisualisationV2Visitor.__module__ = "nominal_api.scout_chartdefinition_api"
24012
24191
 
24013
24192
 
24193
+ class scout_chartdefinition_api_OverlayScope(ConjureEnumType):
24194
+
24195
+ ROW = 'ROW'
24196
+ '''ROW'''
24197
+ PANEL = 'PANEL'
24198
+ '''PANEL'''
24199
+ UNKNOWN = 'UNKNOWN'
24200
+ '''UNKNOWN'''
24201
+
24202
+ def __reduce_ex__(self, proto):
24203
+ return self.__class__, (self.name,)
24204
+
24205
+
24206
+ scout_chartdefinition_api_OverlayScope.__name__ = "OverlayScope"
24207
+ scout_chartdefinition_api_OverlayScope.__qualname__ = "OverlayScope"
24208
+ scout_chartdefinition_api_OverlayScope.__module__ = "nominal_api.scout_chartdefinition_api"
24209
+
24210
+
24211
+ class scout_chartdefinition_api_PersistAll(ConjureBeanType):
24212
+
24213
+ @builtins.classmethod
24214
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
24215
+ return {
24216
+ }
24217
+
24218
+ __slots__: List[str] = []
24219
+
24220
+
24221
+
24222
+ scout_chartdefinition_api_PersistAll.__name__ = "PersistAll"
24223
+ scout_chartdefinition_api_PersistAll.__qualname__ = "PersistAll"
24224
+ scout_chartdefinition_api_PersistAll.__module__ = "nominal_api.scout_chartdefinition_api"
24225
+
24226
+
24227
+ class scout_chartdefinition_api_PersistByValue(ConjureBeanType):
24228
+
24229
+ @builtins.classmethod
24230
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
24231
+ return {
24232
+ 'values': ConjureFieldDefinition('values', List[str])
24233
+ }
24234
+
24235
+ __slots__: List[str] = ['_values']
24236
+
24237
+ def __init__(self, values: List[str]) -> None:
24238
+ self._values = values
24239
+
24240
+ @builtins.property
24241
+ def values(self) -> List[str]:
24242
+ return self._values
24243
+
24244
+
24245
+ scout_chartdefinition_api_PersistByValue.__name__ = "PersistByValue"
24246
+ scout_chartdefinition_api_PersistByValue.__qualname__ = "PersistByValue"
24247
+ scout_chartdefinition_api_PersistByValue.__module__ = "nominal_api.scout_chartdefinition_api"
24248
+
24249
+
24250
+ class scout_chartdefinition_api_PersistValueOverlay(ConjureUnionType):
24251
+ _by_value: Optional["scout_chartdefinition_api_PersistByValue"] = None
24252
+ _all: Optional["scout_chartdefinition_api_PersistAll"] = None
24253
+
24254
+ @builtins.classmethod
24255
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
24256
+ return {
24257
+ 'by_value': ConjureFieldDefinition('byValue', scout_chartdefinition_api_PersistByValue),
24258
+ 'all': ConjureFieldDefinition('all', scout_chartdefinition_api_PersistAll)
24259
+ }
24260
+
24261
+ def __init__(
24262
+ self,
24263
+ by_value: Optional["scout_chartdefinition_api_PersistByValue"] = None,
24264
+ all: Optional["scout_chartdefinition_api_PersistAll"] = None,
24265
+ type_of_union: Optional[str] = None
24266
+ ) -> None:
24267
+ if type_of_union is None:
24268
+ if (by_value is not None) + (all is not None) != 1:
24269
+ raise ValueError('a union must contain a single member')
24270
+
24271
+ if by_value is not None:
24272
+ self._by_value = by_value
24273
+ self._type = 'byValue'
24274
+ if all is not None:
24275
+ self._all = all
24276
+ self._type = 'all'
24277
+
24278
+ elif type_of_union == 'byValue':
24279
+ if by_value is None:
24280
+ raise ValueError('a union value must not be None')
24281
+ self._by_value = by_value
24282
+ self._type = 'byValue'
24283
+ elif type_of_union == 'all':
24284
+ if all is None:
24285
+ raise ValueError('a union value must not be None')
24286
+ self._all = all
24287
+ self._type = 'all'
24288
+
24289
+ @builtins.property
24290
+ def by_value(self) -> Optional["scout_chartdefinition_api_PersistByValue"]:
24291
+ return self._by_value
24292
+
24293
+ @builtins.property
24294
+ def all(self) -> Optional["scout_chartdefinition_api_PersistAll"]:
24295
+ return self._all
24296
+
24297
+ def accept(self, visitor) -> Any:
24298
+ if not isinstance(visitor, scout_chartdefinition_api_PersistValueOverlayVisitor):
24299
+ raise ValueError('{} is not an instance of scout_chartdefinition_api_PersistValueOverlayVisitor'.format(visitor.__class__.__name__))
24300
+ if self._type == 'byValue' and self.by_value is not None:
24301
+ return visitor._by_value(self.by_value)
24302
+ if self._type == 'all' and self.all is not None:
24303
+ return visitor._all(self.all)
24304
+
24305
+
24306
+ scout_chartdefinition_api_PersistValueOverlay.__name__ = "PersistValueOverlay"
24307
+ scout_chartdefinition_api_PersistValueOverlay.__qualname__ = "PersistValueOverlay"
24308
+ scout_chartdefinition_api_PersistValueOverlay.__module__ = "nominal_api.scout_chartdefinition_api"
24309
+
24310
+
24311
+ class scout_chartdefinition_api_PersistValueOverlayVisitor:
24312
+
24313
+ @abstractmethod
24314
+ def _by_value(self, by_value: "scout_chartdefinition_api_PersistByValue") -> Any:
24315
+ pass
24316
+
24317
+ @abstractmethod
24318
+ def _all(self, all: "scout_chartdefinition_api_PersistAll") -> Any:
24319
+ pass
24320
+
24321
+
24322
+ scout_chartdefinition_api_PersistValueOverlayVisitor.__name__ = "PersistValueOverlayVisitor"
24323
+ scout_chartdefinition_api_PersistValueOverlayVisitor.__qualname__ = "PersistValueOverlayVisitor"
24324
+ scout_chartdefinition_api_PersistValueOverlayVisitor.__module__ = "nominal_api.scout_chartdefinition_api"
24325
+
24326
+
24014
24327
  class scout_chartdefinition_api_PlotlyPanelDefinition(ConjureUnionType):
24015
24328
  _v1: Optional["scout_chartdefinition_api_PlotlyPanelDefinitionV1"] = None
24016
24329
 
@@ -24124,6 +24437,24 @@ scout_chartdefinition_api_PlotlyPreset.__qualname__ = "PlotlyPreset"
24124
24437
  scout_chartdefinition_api_PlotlyPreset.__module__ = "nominal_api.scout_chartdefinition_api"
24125
24438
 
24126
24439
 
24440
+ class scout_chartdefinition_api_Position(ConjureEnumType):
24441
+
24442
+ TOP = 'TOP'
24443
+ '''TOP'''
24444
+ BOTTOM = 'BOTTOM'
24445
+ '''BOTTOM'''
24446
+ UNKNOWN = 'UNKNOWN'
24447
+ '''UNKNOWN'''
24448
+
24449
+ def __reduce_ex__(self, proto):
24450
+ return self.__class__, (self.name,)
24451
+
24452
+
24453
+ scout_chartdefinition_api_Position.__name__ = "Position"
24454
+ scout_chartdefinition_api_Position.__qualname__ = "Position"
24455
+ scout_chartdefinition_api_Position.__module__ = "nominal_api.scout_chartdefinition_api"
24456
+
24457
+
24127
24458
  class scout_chartdefinition_api_RangeCellConfig(ConjureBeanType):
24128
24459
 
24129
24460
  @builtins.classmethod
@@ -24523,6 +24854,99 @@ scout_chartdefinition_api_TimeSeriesChartDefinitionV1.__qualname__ = "TimeSeries
24523
24854
  scout_chartdefinition_api_TimeSeriesChartDefinitionV1.__module__ = "nominal_api.scout_chartdefinition_api"
24524
24855
 
24525
24856
 
24857
+ class scout_chartdefinition_api_TimeSeriesEnumPlot(ConjureBeanType):
24858
+
24859
+ @builtins.classmethod
24860
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
24861
+ return {
24862
+ 'color': ConjureFieldDefinition('color', scout_chartdefinition_api_ColorStyle),
24863
+ 'position': ConjureFieldDefinition('position', scout_chartdefinition_api_Position),
24864
+ 'persist_value_overlays': ConjureFieldDefinition('persistValueOverlays', scout_chartdefinition_api_PersistValueOverlay),
24865
+ 'overlay_scope': ConjureFieldDefinition('overlayScope', scout_chartdefinition_api_OverlayScope),
24866
+ 'display_inline': ConjureFieldDefinition('displayInline', bool)
24867
+ }
24868
+
24869
+ __slots__: List[str] = ['_color', '_position', '_persist_value_overlays', '_overlay_scope', '_display_inline']
24870
+
24871
+ def __init__(self, color: "scout_chartdefinition_api_ColorStyle", display_inline: bool, overlay_scope: "scout_chartdefinition_api_OverlayScope", persist_value_overlays: "scout_chartdefinition_api_PersistValueOverlay", position: "scout_chartdefinition_api_Position") -> None:
24872
+ self._color = color
24873
+ self._position = position
24874
+ self._persist_value_overlays = persist_value_overlays
24875
+ self._overlay_scope = overlay_scope
24876
+ self._display_inline = display_inline
24877
+
24878
+ @builtins.property
24879
+ def color(self) -> "scout_chartdefinition_api_ColorStyle":
24880
+ """
24881
+ How to color the value ranges
24882
+ """
24883
+ return self._color
24884
+
24885
+ @builtins.property
24886
+ def position(self) -> "scout_chartdefinition_api_Position":
24887
+ """
24888
+ Where to place the plot within the row
24889
+ """
24890
+ return self._position
24891
+
24892
+ @builtins.property
24893
+ def persist_value_overlays(self) -> "scout_chartdefinition_api_PersistValueOverlay":
24894
+ """
24895
+ Render certain values' full-row/full-panel color overlays
24896
+ even when not interacting with the plot
24897
+ """
24898
+ return self._persist_value_overlays
24899
+
24900
+ @builtins.property
24901
+ def overlay_scope(self) -> "scout_chartdefinition_api_OverlayScope":
24902
+ """
24903
+ How far to extend the overlay
24904
+ """
24905
+ return self._overlay_scope
24906
+
24907
+ @builtins.property
24908
+ def display_inline(self) -> bool:
24909
+ """
24910
+ Whether to display the value ranges on the same line or stagger them
24911
+ such that each value gets a line to itself
24912
+ """
24913
+ return self._display_inline
24914
+
24915
+
24916
+ scout_chartdefinition_api_TimeSeriesEnumPlot.__name__ = "TimeSeriesEnumPlot"
24917
+ scout_chartdefinition_api_TimeSeriesEnumPlot.__qualname__ = "TimeSeriesEnumPlot"
24918
+ scout_chartdefinition_api_TimeSeriesEnumPlot.__module__ = "nominal_api.scout_chartdefinition_api"
24919
+
24920
+
24921
+ class scout_chartdefinition_api_TimeSeriesNumericPlot(ConjureBeanType):
24922
+
24923
+ @builtins.classmethod
24924
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
24925
+ return {
24926
+ 'color': ConjureFieldDefinition('color', scout_api_HexColor),
24927
+ 'line_style': ConjureFieldDefinition('lineStyle', scout_chartdefinition_api_LineStyle)
24928
+ }
24929
+
24930
+ __slots__: List[str] = ['_color', '_line_style']
24931
+
24932
+ def __init__(self, color: str, line_style: "scout_chartdefinition_api_LineStyle") -> None:
24933
+ self._color = color
24934
+ self._line_style = line_style
24935
+
24936
+ @builtins.property
24937
+ def color(self) -> str:
24938
+ return self._color
24939
+
24940
+ @builtins.property
24941
+ def line_style(self) -> "scout_chartdefinition_api_LineStyle":
24942
+ return self._line_style
24943
+
24944
+
24945
+ scout_chartdefinition_api_TimeSeriesNumericPlot.__name__ = "TimeSeriesNumericPlot"
24946
+ scout_chartdefinition_api_TimeSeriesNumericPlot.__qualname__ = "TimeSeriesNumericPlot"
24947
+ scout_chartdefinition_api_TimeSeriesNumericPlot.__module__ = "nominal_api.scout_chartdefinition_api"
24948
+
24949
+
24526
24950
  class scout_chartdefinition_api_TimeSeriesPlot(ConjureBeanType):
24527
24951
 
24528
24952
  @builtins.classmethod
@@ -24570,6 +24994,168 @@ scout_chartdefinition_api_TimeSeriesPlot.__qualname__ = "TimeSeriesPlot"
24570
24994
  scout_chartdefinition_api_TimeSeriesPlot.__module__ = "nominal_api.scout_chartdefinition_api"
24571
24995
 
24572
24996
 
24997
+ class scout_chartdefinition_api_TimeSeriesPlotConfig(ConjureUnionType):
24998
+ _numeric: Optional["scout_chartdefinition_api_TimeSeriesNumericPlot"] = None
24999
+ _range: Optional["scout_chartdefinition_api_TimeSeriesRangePlot"] = None
25000
+ _enum: Optional["scout_chartdefinition_api_TimeSeriesEnumPlot"] = None
25001
+
25002
+ @builtins.classmethod
25003
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
25004
+ return {
25005
+ 'numeric': ConjureFieldDefinition('numeric', scout_chartdefinition_api_TimeSeriesNumericPlot),
25006
+ 'range': ConjureFieldDefinition('range', scout_chartdefinition_api_TimeSeriesRangePlot),
25007
+ 'enum': ConjureFieldDefinition('enum', scout_chartdefinition_api_TimeSeriesEnumPlot)
25008
+ }
25009
+
25010
+ def __init__(
25011
+ self,
25012
+ numeric: Optional["scout_chartdefinition_api_TimeSeriesNumericPlot"] = None,
25013
+ range: Optional["scout_chartdefinition_api_TimeSeriesRangePlot"] = None,
25014
+ enum: Optional["scout_chartdefinition_api_TimeSeriesEnumPlot"] = None,
25015
+ type_of_union: Optional[str] = None
25016
+ ) -> None:
25017
+ if type_of_union is None:
25018
+ if (numeric is not None) + (range is not None) + (enum is not None) != 1:
25019
+ raise ValueError('a union must contain a single member')
25020
+
25021
+ if numeric is not None:
25022
+ self._numeric = numeric
25023
+ self._type = 'numeric'
25024
+ if range is not None:
25025
+ self._range = range
25026
+ self._type = 'range'
25027
+ if enum is not None:
25028
+ self._enum = enum
25029
+ self._type = 'enum'
25030
+
25031
+ elif type_of_union == 'numeric':
25032
+ if numeric is None:
25033
+ raise ValueError('a union value must not be None')
25034
+ self._numeric = numeric
25035
+ self._type = 'numeric'
25036
+ elif type_of_union == 'range':
25037
+ if range is None:
25038
+ raise ValueError('a union value must not be None')
25039
+ self._range = range
25040
+ self._type = 'range'
25041
+ elif type_of_union == 'enum':
25042
+ if enum is None:
25043
+ raise ValueError('a union value must not be None')
25044
+ self._enum = enum
25045
+ self._type = 'enum'
25046
+
25047
+ @builtins.property
25048
+ def numeric(self) -> Optional["scout_chartdefinition_api_TimeSeriesNumericPlot"]:
25049
+ return self._numeric
25050
+
25051
+ @builtins.property
25052
+ def range(self) -> Optional["scout_chartdefinition_api_TimeSeriesRangePlot"]:
25053
+ return self._range
25054
+
25055
+ @builtins.property
25056
+ def enum(self) -> Optional["scout_chartdefinition_api_TimeSeriesEnumPlot"]:
25057
+ return self._enum
25058
+
25059
+ def accept(self, visitor) -> Any:
25060
+ if not isinstance(visitor, scout_chartdefinition_api_TimeSeriesPlotConfigVisitor):
25061
+ raise ValueError('{} is not an instance of scout_chartdefinition_api_TimeSeriesPlotConfigVisitor'.format(visitor.__class__.__name__))
25062
+ if self._type == 'numeric' and self.numeric is not None:
25063
+ return visitor._numeric(self.numeric)
25064
+ if self._type == 'range' and self.range is not None:
25065
+ return visitor._range(self.range)
25066
+ if self._type == 'enum' and self.enum is not None:
25067
+ return visitor._enum(self.enum)
25068
+
25069
+
25070
+ scout_chartdefinition_api_TimeSeriesPlotConfig.__name__ = "TimeSeriesPlotConfig"
25071
+ scout_chartdefinition_api_TimeSeriesPlotConfig.__qualname__ = "TimeSeriesPlotConfig"
25072
+ scout_chartdefinition_api_TimeSeriesPlotConfig.__module__ = "nominal_api.scout_chartdefinition_api"
25073
+
25074
+
25075
+ class scout_chartdefinition_api_TimeSeriesPlotConfigVisitor:
25076
+
25077
+ @abstractmethod
25078
+ def _numeric(self, numeric: "scout_chartdefinition_api_TimeSeriesNumericPlot") -> Any:
25079
+ pass
25080
+
25081
+ @abstractmethod
25082
+ def _range(self, range: "scout_chartdefinition_api_TimeSeriesRangePlot") -> Any:
25083
+ pass
25084
+
25085
+ @abstractmethod
25086
+ def _enum(self, enum: "scout_chartdefinition_api_TimeSeriesEnumPlot") -> Any:
25087
+ pass
25088
+
25089
+
25090
+ scout_chartdefinition_api_TimeSeriesPlotConfigVisitor.__name__ = "TimeSeriesPlotConfigVisitor"
25091
+ scout_chartdefinition_api_TimeSeriesPlotConfigVisitor.__qualname__ = "TimeSeriesPlotConfigVisitor"
25092
+ scout_chartdefinition_api_TimeSeriesPlotConfigVisitor.__module__ = "nominal_api.scout_chartdefinition_api"
25093
+
25094
+
25095
+ class scout_chartdefinition_api_TimeSeriesPlotV2(ConjureBeanType):
25096
+
25097
+ @builtins.classmethod
25098
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
25099
+ return {
25100
+ 'variable_name': ConjureFieldDefinition('variableName', scout_channelvariables_api_ChannelVariableName),
25101
+ 'enabled': ConjureFieldDefinition('enabled', OptionalTypeWrapper[bool]),
25102
+ 'y_axis_id': ConjureFieldDefinition('yAxisId', scout_chartdefinition_api_AxisId),
25103
+ 'type': ConjureFieldDefinition('type', scout_chartdefinition_api_TimeSeriesPlotConfig)
25104
+ }
25105
+
25106
+ __slots__: List[str] = ['_variable_name', '_enabled', '_y_axis_id', '_type']
25107
+
25108
+ def __init__(self, type: "scout_chartdefinition_api_TimeSeriesPlotConfig", variable_name: str, y_axis_id: str, enabled: Optional[bool] = None) -> None:
25109
+ self._variable_name = variable_name
25110
+ self._enabled = enabled
25111
+ self._y_axis_id = y_axis_id
25112
+ self._type = type
25113
+
25114
+ @builtins.property
25115
+ def variable_name(self) -> str:
25116
+ return self._variable_name
25117
+
25118
+ @builtins.property
25119
+ def enabled(self) -> Optional[bool]:
25120
+ return self._enabled
25121
+
25122
+ @builtins.property
25123
+ def y_axis_id(self) -> str:
25124
+ return self._y_axis_id
25125
+
25126
+ @builtins.property
25127
+ def type(self) -> "scout_chartdefinition_api_TimeSeriesPlotConfig":
25128
+ return self._type
25129
+
25130
+
25131
+ scout_chartdefinition_api_TimeSeriesPlotV2.__name__ = "TimeSeriesPlotV2"
25132
+ scout_chartdefinition_api_TimeSeriesPlotV2.__qualname__ = "TimeSeriesPlotV2"
25133
+ scout_chartdefinition_api_TimeSeriesPlotV2.__module__ = "nominal_api.scout_chartdefinition_api"
25134
+
25135
+
25136
+ class scout_chartdefinition_api_TimeSeriesRangePlot(ConjureBeanType):
25137
+
25138
+ @builtins.classmethod
25139
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
25140
+ return {
25141
+ 'color': ConjureFieldDefinition('color', scout_api_HexColor)
25142
+ }
25143
+
25144
+ __slots__: List[str] = ['_color']
25145
+
25146
+ def __init__(self, color: str) -> None:
25147
+ self._color = color
25148
+
25149
+ @builtins.property
25150
+ def color(self) -> str:
25151
+ return self._color
25152
+
25153
+
25154
+ scout_chartdefinition_api_TimeSeriesRangePlot.__name__ = "TimeSeriesRangePlot"
25155
+ scout_chartdefinition_api_TimeSeriesRangePlot.__qualname__ = "TimeSeriesRangePlot"
25156
+ scout_chartdefinition_api_TimeSeriesRangePlot.__module__ = "nominal_api.scout_chartdefinition_api"
25157
+
25158
+
24573
25159
  class scout_chartdefinition_api_TimeSeriesRow(ConjureBeanType):
24574
25160
 
24575
25161
  @builtins.classmethod
@@ -24577,15 +25163,17 @@ class scout_chartdefinition_api_TimeSeriesRow(ConjureBeanType):
24577
25163
  return {
24578
25164
  'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]),
24579
25165
  'plots': ConjureFieldDefinition('plots', List[scout_chartdefinition_api_TimeSeriesPlot]),
25166
+ 'plots_v2': ConjureFieldDefinition('plotsV2', OptionalTypeWrapper[List[scout_chartdefinition_api_TimeSeriesPlotV2]]),
24580
25167
  'row_flex_size': ConjureFieldDefinition('rowFlexSize', float),
24581
25168
  'enabled': ConjureFieldDefinition('enabled', OptionalTypeWrapper[bool])
24582
25169
  }
24583
25170
 
24584
- __slots__: List[str] = ['_title', '_plots', '_row_flex_size', '_enabled']
25171
+ __slots__: List[str] = ['_title', '_plots', '_plots_v2', '_row_flex_size', '_enabled']
24585
25172
 
24586
- def __init__(self, plots: List["scout_chartdefinition_api_TimeSeriesPlot"], row_flex_size: float, enabled: Optional[bool] = None, title: Optional[str] = None) -> None:
25173
+ def __init__(self, plots: List["scout_chartdefinition_api_TimeSeriesPlot"], row_flex_size: float, enabled: Optional[bool] = None, plots_v2: Optional[List["scout_chartdefinition_api_TimeSeriesPlotV2"]] = None, title: Optional[str] = None) -> None:
24587
25174
  self._title = title
24588
25175
  self._plots = plots
25176
+ self._plots_v2 = plots_v2
24589
25177
  self._row_flex_size = row_flex_size
24590
25178
  self._enabled = enabled
24591
25179
 
@@ -24597,6 +25185,10 @@ class scout_chartdefinition_api_TimeSeriesRow(ConjureBeanType):
24597
25185
  def plots(self) -> List["scout_chartdefinition_api_TimeSeriesPlot"]:
24598
25186
  return self._plots
24599
25187
 
25188
+ @builtins.property
25189
+ def plots_v2(self) -> Optional[List["scout_chartdefinition_api_TimeSeriesPlotV2"]]:
25190
+ return self._plots_v2
25191
+
24600
25192
  @builtins.property
24601
25193
  def row_flex_size(self) -> float:
24602
25194
  return self._row_flex_size
@@ -26899,6 +27491,10 @@ class scout_checklistexecution_api_InvalidStreamingComputeNode(ConjureEnumType):
26899
27491
  '''INTEGRAL'''
26900
27492
  STALENESS_DETECTION = 'STALENESS_DETECTION'
26901
27493
  '''STALENESS_DETECTION'''
27494
+ LITERAL_RANGES = 'LITERAL_RANGES'
27495
+ '''LITERAL_RANGES'''
27496
+ TIME_RANGE_FILTER = 'TIME_RANGE_FILTER'
27497
+ '''TIME_RANGE_FILTER'''
26902
27498
  UNKNOWN = 'UNKNOWN'
26903
27499
  '''UNKNOWN'''
26904
27500
 
@@ -38927,6 +39523,64 @@ scout_compute_api_LatLongPoint.__qualname__ = "LatLongPoint"
38927
39523
  scout_compute_api_LatLongPoint.__module__ = "nominal_api.scout_compute_api"
38928
39524
 
38929
39525
 
39526
+ class scout_compute_api_LiteralRange(ConjureBeanType):
39527
+ """
39528
+ A literal range of values.
39529
+ """
39530
+
39531
+ @builtins.classmethod
39532
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
39533
+ return {
39534
+ 'start_timestamp': ConjureFieldDefinition('startTimestamp', OptionalTypeWrapper[scout_compute_api_TimestampConstant]),
39535
+ 'end_timestamp': ConjureFieldDefinition('endTimestamp', OptionalTypeWrapper[scout_compute_api_TimestampConstant])
39536
+ }
39537
+
39538
+ __slots__: List[str] = ['_start_timestamp', '_end_timestamp']
39539
+
39540
+ def __init__(self, end_timestamp: Optional["scout_compute_api_TimestampConstant"] = None, start_timestamp: Optional["scout_compute_api_TimestampConstant"] = None) -> None:
39541
+ self._start_timestamp = start_timestamp
39542
+ self._end_timestamp = end_timestamp
39543
+
39544
+ @builtins.property
39545
+ def start_timestamp(self) -> Optional["scout_compute_api_TimestampConstant"]:
39546
+ return self._start_timestamp
39547
+
39548
+ @builtins.property
39549
+ def end_timestamp(self) -> Optional["scout_compute_api_TimestampConstant"]:
39550
+ return self._end_timestamp
39551
+
39552
+
39553
+ scout_compute_api_LiteralRange.__name__ = "LiteralRange"
39554
+ scout_compute_api_LiteralRange.__qualname__ = "LiteralRange"
39555
+ scout_compute_api_LiteralRange.__module__ = "nominal_api.scout_compute_api"
39556
+
39557
+
39558
+ class scout_compute_api_LiteralRanges(ConjureBeanType):
39559
+ """
39560
+ A list of literal ranges.
39561
+ """
39562
+
39563
+ @builtins.classmethod
39564
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
39565
+ return {
39566
+ 'literal_ranges': ConjureFieldDefinition('literalRanges', List[scout_compute_api_LiteralRange])
39567
+ }
39568
+
39569
+ __slots__: List[str] = ['_literal_ranges']
39570
+
39571
+ def __init__(self, literal_ranges: List["scout_compute_api_LiteralRange"]) -> None:
39572
+ self._literal_ranges = literal_ranges
39573
+
39574
+ @builtins.property
39575
+ def literal_ranges(self) -> List["scout_compute_api_LiteralRange"]:
39576
+ return self._literal_ranges
39577
+
39578
+
39579
+ scout_compute_api_LiteralRanges.__name__ = "LiteralRanges"
39580
+ scout_compute_api_LiteralRanges.__qualname__ = "LiteralRanges"
39581
+ scout_compute_api_LiteralRanges.__module__ = "nominal_api.scout_compute_api"
39582
+
39583
+
38930
39584
  class scout_compute_api_LogExactMatchCaseInsensitiveFilter(ConjureBeanType):
38931
39585
  """
38932
39586
  Filters points such that the log message in each point contains an exact case-insensitive match of the
@@ -42268,6 +42922,7 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42268
42922
  _enum_series_equality_ranges_node: Optional["scout_compute_api_EnumSeriesEqualityRanges"] = None
42269
42923
  _function: Optional["scout_compute_api_RangesFunction"] = None
42270
42924
  _intersect_range: Optional["scout_compute_api_IntersectRanges"] = None
42925
+ _literal_ranges: Optional["scout_compute_api_LiteralRanges"] = None
42271
42926
  _min_max_threshold: Optional["scout_compute_api_MinMaxThresholdRanges"] = None
42272
42927
  _not_: Optional["scout_compute_api_NotRanges"] = None
42273
42928
  _on_change: Optional["scout_compute_api_OnChangeRanges"] = None
@@ -42289,6 +42944,7 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42289
42944
  'enum_series_equality_ranges_node': ConjureFieldDefinition('enumSeriesEqualityRangesNode', scout_compute_api_EnumSeriesEqualityRanges),
42290
42945
  'function': ConjureFieldDefinition('function', scout_compute_api_RangesFunction),
42291
42946
  'intersect_range': ConjureFieldDefinition('intersectRange', scout_compute_api_IntersectRanges),
42947
+ 'literal_ranges': ConjureFieldDefinition('literalRanges', scout_compute_api_LiteralRanges),
42292
42948
  'min_max_threshold': ConjureFieldDefinition('minMaxThreshold', scout_compute_api_MinMaxThresholdRanges),
42293
42949
  'not_': ConjureFieldDefinition('not', scout_compute_api_NotRanges),
42294
42950
  'on_change': ConjureFieldDefinition('onChange', scout_compute_api_OnChangeRanges),
@@ -42310,6 +42966,7 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42310
42966
  enum_series_equality_ranges_node: Optional["scout_compute_api_EnumSeriesEqualityRanges"] = None,
42311
42967
  function: Optional["scout_compute_api_RangesFunction"] = None,
42312
42968
  intersect_range: Optional["scout_compute_api_IntersectRanges"] = None,
42969
+ literal_ranges: Optional["scout_compute_api_LiteralRanges"] = None,
42313
42970
  min_max_threshold: Optional["scout_compute_api_MinMaxThresholdRanges"] = None,
42314
42971
  not_: Optional["scout_compute_api_NotRanges"] = None,
42315
42972
  on_change: Optional["scout_compute_api_OnChangeRanges"] = None,
@@ -42325,7 +42982,7 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42325
42982
  type_of_union: Optional[str] = None
42326
42983
  ) -> None:
42327
42984
  if type_of_union is None:
42328
- if (approximate_threshold is not None) + (enum_filter is not None) + (enum_series_equality_ranges_node is not None) + (function is not None) + (intersect_range is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (peak is not None) + (range_numeric_aggregation is not None) + (raw is not None) + (series_crossover_ranges_node is not None) + (series_equality_ranges_node is not None) + (stability_detection is not None) + (stale_range is not None) + (threshold is not None) + (union_range is not None) != 1:
42985
+ if (approximate_threshold is not None) + (enum_filter is not None) + (enum_series_equality_ranges_node is not None) + (function is not None) + (intersect_range is not None) + (literal_ranges is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (peak is not None) + (range_numeric_aggregation is not None) + (raw is not None) + (series_crossover_ranges_node is not None) + (series_equality_ranges_node is not None) + (stability_detection is not None) + (stale_range is not None) + (threshold is not None) + (union_range is not None) != 1:
42329
42986
  raise ValueError('a union must contain a single member')
42330
42987
 
42331
42988
  if approximate_threshold is not None:
@@ -42343,6 +43000,9 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42343
43000
  if intersect_range is not None:
42344
43001
  self._intersect_range = intersect_range
42345
43002
  self._type = 'intersectRange'
43003
+ if literal_ranges is not None:
43004
+ self._literal_ranges = literal_ranges
43005
+ self._type = 'literalRanges'
42346
43006
  if min_max_threshold is not None:
42347
43007
  self._min_max_threshold = min_max_threshold
42348
43008
  self._type = 'minMaxThreshold'
@@ -42405,6 +43065,11 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42405
43065
  raise ValueError('a union value must not be None')
42406
43066
  self._intersect_range = intersect_range
42407
43067
  self._type = 'intersectRange'
43068
+ elif type_of_union == 'literalRanges':
43069
+ if literal_ranges is None:
43070
+ raise ValueError('a union value must not be None')
43071
+ self._literal_ranges = literal_ranges
43072
+ self._type = 'literalRanges'
42408
43073
  elif type_of_union == 'minMaxThreshold':
42409
43074
  if min_max_threshold is None:
42410
43075
  raise ValueError('a union value must not be None')
@@ -42486,6 +43151,10 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42486
43151
  def intersect_range(self) -> Optional["scout_compute_api_IntersectRanges"]:
42487
43152
  return self._intersect_range
42488
43153
 
43154
+ @builtins.property
43155
+ def literal_ranges(self) -> Optional["scout_compute_api_LiteralRanges"]:
43156
+ return self._literal_ranges
43157
+
42489
43158
  @builtins.property
42490
43159
  def min_max_threshold(self) -> Optional["scout_compute_api_MinMaxThresholdRanges"]:
42491
43160
  """
@@ -42553,6 +43222,8 @@ class scout_compute_api_RangeSeries(ConjureUnionType):
42553
43222
  return visitor._function(self.function)
42554
43223
  if self._type == 'intersectRange' and self.intersect_range is not None:
42555
43224
  return visitor._intersect_range(self.intersect_range)
43225
+ if self._type == 'literalRanges' and self.literal_ranges is not None:
43226
+ return visitor._literal_ranges(self.literal_ranges)
42556
43227
  if self._type == 'minMaxThreshold' and self.min_max_threshold is not None:
42557
43228
  return visitor._min_max_threshold(self.min_max_threshold)
42558
43229
  if self._type == 'not' and self.not_ is not None:
@@ -42606,6 +43277,10 @@ class scout_compute_api_RangeSeriesVisitor:
42606
43277
  def _intersect_range(self, intersect_range: "scout_compute_api_IntersectRanges") -> Any:
42607
43278
  pass
42608
43279
 
43280
+ @abstractmethod
43281
+ def _literal_ranges(self, literal_ranges: "scout_compute_api_LiteralRanges") -> Any:
43282
+ pass
43283
+
42609
43284
  @abstractmethod
42610
43285
  def _min_max_threshold(self, min_max_threshold: "scout_compute_api_MinMaxThresholdRanges") -> Any:
42611
43286
  pass
@@ -49844,6 +50519,58 @@ scout_compute_resolved_api_LatLongGeoNode.__qualname__ = "LatLongGeoNode"
49844
50519
  scout_compute_resolved_api_LatLongGeoNode.__module__ = "nominal_api.scout_compute_resolved_api"
49845
50520
 
49846
50521
 
50522
+ class scout_compute_resolved_api_LiteralRange(ConjureBeanType):
50523
+
50524
+ @builtins.classmethod
50525
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50526
+ return {
50527
+ 'start_timestamp': ConjureFieldDefinition('startTimestamp', OptionalTypeWrapper[api_Timestamp]),
50528
+ 'end_timestamp': ConjureFieldDefinition('endTimestamp', OptionalTypeWrapper[api_Timestamp])
50529
+ }
50530
+
50531
+ __slots__: List[str] = ['_start_timestamp', '_end_timestamp']
50532
+
50533
+ def __init__(self, end_timestamp: Optional["api_Timestamp"] = None, start_timestamp: Optional["api_Timestamp"] = None) -> None:
50534
+ self._start_timestamp = start_timestamp
50535
+ self._end_timestamp = end_timestamp
50536
+
50537
+ @builtins.property
50538
+ def start_timestamp(self) -> Optional["api_Timestamp"]:
50539
+ return self._start_timestamp
50540
+
50541
+ @builtins.property
50542
+ def end_timestamp(self) -> Optional["api_Timestamp"]:
50543
+ return self._end_timestamp
50544
+
50545
+
50546
+ scout_compute_resolved_api_LiteralRange.__name__ = "LiteralRange"
50547
+ scout_compute_resolved_api_LiteralRange.__qualname__ = "LiteralRange"
50548
+ scout_compute_resolved_api_LiteralRange.__module__ = "nominal_api.scout_compute_resolved_api"
50549
+
50550
+
50551
+ class scout_compute_resolved_api_LiteralRangesNode(ConjureBeanType):
50552
+
50553
+ @builtins.classmethod
50554
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
50555
+ return {
50556
+ 'literal_ranges': ConjureFieldDefinition('literalRanges', List[scout_compute_resolved_api_LiteralRange])
50557
+ }
50558
+
50559
+ __slots__: List[str] = ['_literal_ranges']
50560
+
50561
+ def __init__(self, literal_ranges: List["scout_compute_resolved_api_LiteralRange"]) -> None:
50562
+ self._literal_ranges = literal_ranges
50563
+
50564
+ @builtins.property
50565
+ def literal_ranges(self) -> List["scout_compute_resolved_api_LiteralRange"]:
50566
+ return self._literal_ranges
50567
+
50568
+
50569
+ scout_compute_resolved_api_LiteralRangesNode.__name__ = "LiteralRangesNode"
50570
+ scout_compute_resolved_api_LiteralRangesNode.__qualname__ = "LiteralRangesNode"
50571
+ scout_compute_resolved_api_LiteralRangesNode.__module__ = "nominal_api.scout_compute_resolved_api"
50572
+
50573
+
49847
50574
  class scout_compute_resolved_api_LogFilterSeriesNode(ConjureBeanType):
49848
50575
 
49849
50576
  @builtins.classmethod
@@ -51402,6 +52129,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51402
52129
  _enum_filter: Optional["scout_compute_resolved_api_EnumFilterRangesNode"] = None
51403
52130
  _extrema: Optional["scout_compute_resolved_api_ExtremaRangesNode"] = None
51404
52131
  _intersect_range: Optional["scout_compute_resolved_api_IntersectRangesNode"] = None
52132
+ _literal_ranges: Optional["scout_compute_resolved_api_LiteralRangesNode"] = None
51405
52133
  _min_max_threshold: Optional["scout_compute_resolved_api_MinMaxThresholdRangesNode"] = None
51406
52134
  _not_: Optional["scout_compute_resolved_api_NotRangesNode"] = None
51407
52135
  _on_change: Optional["scout_compute_resolved_api_OnChangeRangesNode"] = None
@@ -51419,6 +52147,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51419
52147
  'enum_filter': ConjureFieldDefinition('enumFilter', scout_compute_resolved_api_EnumFilterRangesNode),
51420
52148
  'extrema': ConjureFieldDefinition('extrema', scout_compute_resolved_api_ExtremaRangesNode),
51421
52149
  'intersect_range': ConjureFieldDefinition('intersectRange', scout_compute_resolved_api_IntersectRangesNode),
52150
+ 'literal_ranges': ConjureFieldDefinition('literalRanges', scout_compute_resolved_api_LiteralRangesNode),
51422
52151
  'min_max_threshold': ConjureFieldDefinition('minMaxThreshold', scout_compute_resolved_api_MinMaxThresholdRangesNode),
51423
52152
  'not_': ConjureFieldDefinition('not', scout_compute_resolved_api_NotRangesNode),
51424
52153
  'on_change': ConjureFieldDefinition('onChange', scout_compute_resolved_api_OnChangeRangesNode),
@@ -51436,6 +52165,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51436
52165
  enum_filter: Optional["scout_compute_resolved_api_EnumFilterRangesNode"] = None,
51437
52166
  extrema: Optional["scout_compute_resolved_api_ExtremaRangesNode"] = None,
51438
52167
  intersect_range: Optional["scout_compute_resolved_api_IntersectRangesNode"] = None,
52168
+ literal_ranges: Optional["scout_compute_resolved_api_LiteralRangesNode"] = None,
51439
52169
  min_max_threshold: Optional["scout_compute_resolved_api_MinMaxThresholdRangesNode"] = None,
51440
52170
  not_: Optional["scout_compute_resolved_api_NotRangesNode"] = None,
51441
52171
  on_change: Optional["scout_compute_resolved_api_OnChangeRangesNode"] = None,
@@ -51448,7 +52178,7 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51448
52178
  type_of_union: Optional[str] = None
51449
52179
  ) -> None:
51450
52180
  if type_of_union is None:
51451
- if (enum_equality is not None) + (enum_filter is not None) + (extrema is not None) + (intersect_range is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (range_numeric_aggregation is not None) + (series_crossover_ranges_node is not None) + (stale_range is not None) + (stability_detection is not None) + (threshold is not None) + (union_range is not None) != 1:
52181
+ if (enum_equality is not None) + (enum_filter is not None) + (extrema is not None) + (intersect_range is not None) + (literal_ranges is not None) + (min_max_threshold is not None) + (not_ is not None) + (on_change is not None) + (range_numeric_aggregation is not None) + (series_crossover_ranges_node is not None) + (stale_range is not None) + (stability_detection is not None) + (threshold is not None) + (union_range is not None) != 1:
51452
52182
  raise ValueError('a union must contain a single member')
51453
52183
 
51454
52184
  if enum_equality is not None:
@@ -51463,6 +52193,9 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51463
52193
  if intersect_range is not None:
51464
52194
  self._intersect_range = intersect_range
51465
52195
  self._type = 'intersectRange'
52196
+ if literal_ranges is not None:
52197
+ self._literal_ranges = literal_ranges
52198
+ self._type = 'literalRanges'
51466
52199
  if min_max_threshold is not None:
51467
52200
  self._min_max_threshold = min_max_threshold
51468
52201
  self._type = 'minMaxThreshold'
@@ -51511,6 +52244,11 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51511
52244
  raise ValueError('a union value must not be None')
51512
52245
  self._intersect_range = intersect_range
51513
52246
  self._type = 'intersectRange'
52247
+ elif type_of_union == 'literalRanges':
52248
+ if literal_ranges is None:
52249
+ raise ValueError('a union value must not be None')
52250
+ self._literal_ranges = literal_ranges
52251
+ self._type = 'literalRanges'
51514
52252
  elif type_of_union == 'minMaxThreshold':
51515
52253
  if min_max_threshold is None:
51516
52254
  raise ValueError('a union value must not be None')
@@ -51573,6 +52311,10 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51573
52311
  def intersect_range(self) -> Optional["scout_compute_resolved_api_IntersectRangesNode"]:
51574
52312
  return self._intersect_range
51575
52313
 
52314
+ @builtins.property
52315
+ def literal_ranges(self) -> Optional["scout_compute_resolved_api_LiteralRangesNode"]:
52316
+ return self._literal_ranges
52317
+
51576
52318
  @builtins.property
51577
52319
  def min_max_threshold(self) -> Optional["scout_compute_resolved_api_MinMaxThresholdRangesNode"]:
51578
52320
  return self._min_max_threshold
@@ -51620,6 +52362,8 @@ class scout_compute_resolved_api_RangesNode(ConjureUnionType):
51620
52362
  return visitor._extrema(self.extrema)
51621
52363
  if self._type == 'intersectRange' and self.intersect_range is not None:
51622
52364
  return visitor._intersect_range(self.intersect_range)
52365
+ if self._type == 'literalRanges' and self.literal_ranges is not None:
52366
+ return visitor._literal_ranges(self.literal_ranges)
51623
52367
  if self._type == 'minMaxThreshold' and self.min_max_threshold is not None:
51624
52368
  return visitor._min_max_threshold(self.min_max_threshold)
51625
52369
  if self._type == 'not' and self.not_ is not None:
@@ -51663,6 +52407,10 @@ class scout_compute_resolved_api_RangesNodeVisitor:
51663
52407
  def _intersect_range(self, intersect_range: "scout_compute_resolved_api_IntersectRangesNode") -> Any:
51664
52408
  pass
51665
52409
 
52410
+ @abstractmethod
52411
+ def _literal_ranges(self, literal_ranges: "scout_compute_resolved_api_LiteralRangesNode") -> Any:
52412
+ pass
52413
+
51666
52414
  @abstractmethod
51667
52415
  def _min_max_threshold(self, min_max_threshold: "scout_compute_resolved_api_MinMaxThresholdRangesNode") -> Any:
51668
52416
  pass
@@ -56378,17 +57126,21 @@ class scout_datareview_api_DataReview(ConjureBeanType):
56378
57126
  'created_at': ConjureFieldDefinition('createdAt', str),
56379
57127
  'created_by': ConjureFieldDefinition('createdBy', scout_rids_api_UserRid),
56380
57128
  'checklist': ConjureFieldDefinition('checklist', scout_datareview_api_ChecklistEvaluation),
57129
+ 'checklist_ref': ConjureFieldDefinition('checklistRef', scout_checks_api_PinnedChecklistRef),
57130
+ 'check_evaluations': ConjureFieldDefinition('checkEvaluations', List[scout_datareview_api_AutomaticCheckEvaluation]),
56381
57131
  'archived': ConjureFieldDefinition('archived', bool)
56382
57132
  }
56383
57133
 
56384
- __slots__: List[str] = ['_rid', '_run_rid', '_created_at', '_created_by', '_checklist', '_archived']
57134
+ __slots__: List[str] = ['_rid', '_run_rid', '_created_at', '_created_by', '_checklist', '_checklist_ref', '_check_evaluations', '_archived']
56385
57135
 
56386
- def __init__(self, archived: bool, checklist: "scout_datareview_api_ChecklistEvaluation", created_at: str, created_by: str, rid: str, run_rid: str) -> None:
57136
+ def __init__(self, archived: bool, check_evaluations: List["scout_datareview_api_AutomaticCheckEvaluation"], checklist: "scout_datareview_api_ChecklistEvaluation", checklist_ref: "scout_checks_api_PinnedChecklistRef", created_at: str, created_by: str, rid: str, run_rid: str) -> None:
56387
57137
  self._rid = rid
56388
57138
  self._run_rid = run_rid
56389
57139
  self._created_at = created_at
56390
57140
  self._created_by = created_by
56391
57141
  self._checklist = checklist
57142
+ self._checklist_ref = checklist_ref
57143
+ self._check_evaluations = check_evaluations
56392
57144
  self._archived = archived
56393
57145
 
56394
57146
  @builtins.property
@@ -56411,6 +57163,14 @@ class scout_datareview_api_DataReview(ConjureBeanType):
56411
57163
  def checklist(self) -> "scout_datareview_api_ChecklistEvaluation":
56412
57164
  return self._checklist
56413
57165
 
57166
+ @builtins.property
57167
+ def checklist_ref(self) -> "scout_checks_api_PinnedChecklistRef":
57168
+ return self._checklist_ref
57169
+
57170
+ @builtins.property
57171
+ def check_evaluations(self) -> List["scout_datareview_api_AutomaticCheckEvaluation"]:
57172
+ return self._check_evaluations
57173
+
56414
57174
  @builtins.property
56415
57175
  def archived(self) -> bool:
56416
57176
  return self._archived
@@ -72796,18 +73556,27 @@ class scout_workbookcommon_api_EventReference(ConjureBeanType):
72796
73556
  @builtins.classmethod
72797
73557
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
72798
73558
  return {
72799
- 'event_uuid': ConjureFieldDefinition('eventUuid', str)
73559
+ 'event_uuid': ConjureFieldDefinition('eventUuid', str),
73560
+ 'rid': ConjureFieldDefinition('rid', OptionalTypeWrapper[api_rids_EventRid])
72800
73561
  }
72801
73562
 
72802
- __slots__: List[str] = ['_event_uuid']
73563
+ __slots__: List[str] = ['_event_uuid', '_rid']
72803
73564
 
72804
- def __init__(self, event_uuid: str) -> None:
73565
+ def __init__(self, event_uuid: str, rid: Optional[str] = None) -> None:
72805
73566
  self._event_uuid = event_uuid
73567
+ self._rid = rid
72806
73568
 
72807
73569
  @builtins.property
72808
73570
  def event_uuid(self) -> str:
72809
73571
  return self._event_uuid
72810
73572
 
73573
+ @builtins.property
73574
+ def rid(self) -> Optional[str]:
73575
+ """
73576
+ The event's unique identifier. This will soon be a required field.
73577
+ """
73578
+ return self._rid
73579
+
72811
73580
 
72812
73581
  scout_workbookcommon_api_EventReference.__name__ = "EventReference"
72813
73582
  scout_workbookcommon_api_EventReference.__qualname__ = "EventReference"
@@ -73786,42 +74555,42 @@ security_api_workspace_UpdateOrRemoveWorkspaceDisplayNameVisitor.__qualname__ =
73786
74555
  security_api_workspace_UpdateOrRemoveWorkspaceDisplayNameVisitor.__module__ = "nominal_api.security_api_workspace"
73787
74556
 
73788
74557
 
73789
- class security_api_workspace_UpdateOrRemoveWorkspaceIconUrl(ConjureUnionType):
73790
- """The request to update the icon url of the workspace. The request will replace the existing icon url
73791
- with the icon url specified if it's provided. Otherwise, the current icon url will be removed from
74558
+ class security_api_workspace_UpdateOrRemoveWorkspaceSymbol(ConjureUnionType):
74559
+ """The request to update the symbol of the workspace. The request will replace the existing symbol
74560
+ with the symbol specified if it's provided. Otherwise, the current symbol will be removed from
73792
74561
  the workspace."""
73793
- _icon_url: Optional[str] = None
74562
+ _symbol: Optional["security_api_workspace_WorkspaceSymbol"] = None
73794
74563
  _remove_type: Optional["security_api_workspace_RemoveType"] = None
73795
74564
 
73796
74565
  @builtins.classmethod
73797
74566
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
73798
74567
  return {
73799
- 'icon_url': ConjureFieldDefinition('iconUrl', str),
74568
+ 'symbol': ConjureFieldDefinition('symbol', security_api_workspace_WorkspaceSymbol),
73800
74569
  'remove_type': ConjureFieldDefinition('removeType', security_api_workspace_RemoveType)
73801
74570
  }
73802
74571
 
73803
74572
  def __init__(
73804
74573
  self,
73805
- icon_url: Optional[str] = None,
74574
+ symbol: Optional["security_api_workspace_WorkspaceSymbol"] = None,
73806
74575
  remove_type: Optional["security_api_workspace_RemoveType"] = None,
73807
74576
  type_of_union: Optional[str] = None
73808
74577
  ) -> None:
73809
74578
  if type_of_union is None:
73810
- if (icon_url is not None) + (remove_type is not None) != 1:
74579
+ if (symbol is not None) + (remove_type is not None) != 1:
73811
74580
  raise ValueError('a union must contain a single member')
73812
74581
 
73813
- if icon_url is not None:
73814
- self._icon_url = icon_url
73815
- self._type = 'iconUrl'
74582
+ if symbol is not None:
74583
+ self._symbol = symbol
74584
+ self._type = 'symbol'
73816
74585
  if remove_type is not None:
73817
74586
  self._remove_type = remove_type
73818
74587
  self._type = 'removeType'
73819
74588
 
73820
- elif type_of_union == 'iconUrl':
73821
- if icon_url is None:
74589
+ elif type_of_union == 'symbol':
74590
+ if symbol is None:
73822
74591
  raise ValueError('a union value must not be None')
73823
- self._icon_url = icon_url
73824
- self._type = 'iconUrl'
74592
+ self._symbol = symbol
74593
+ self._type = 'symbol'
73825
74594
  elif type_of_union == 'removeType':
73826
74595
  if remove_type is None:
73827
74596
  raise ValueError('a union value must not be None')
@@ -73829,31 +74598,31 @@ the workspace."""
73829
74598
  self._type = 'removeType'
73830
74599
 
73831
74600
  @builtins.property
73832
- def icon_url(self) -> Optional[str]:
73833
- return self._icon_url
74601
+ def symbol(self) -> Optional["security_api_workspace_WorkspaceSymbol"]:
74602
+ return self._symbol
73834
74603
 
73835
74604
  @builtins.property
73836
74605
  def remove_type(self) -> Optional["security_api_workspace_RemoveType"]:
73837
74606
  return self._remove_type
73838
74607
 
73839
74608
  def accept(self, visitor) -> Any:
73840
- if not isinstance(visitor, security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor):
73841
- raise ValueError('{} is not an instance of security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor'.format(visitor.__class__.__name__))
73842
- if self._type == 'iconUrl' and self.icon_url is not None:
73843
- return visitor._icon_url(self.icon_url)
74609
+ if not isinstance(visitor, security_api_workspace_UpdateOrRemoveWorkspaceSymbolVisitor):
74610
+ raise ValueError('{} is not an instance of security_api_workspace_UpdateOrRemoveWorkspaceSymbolVisitor'.format(visitor.__class__.__name__))
74611
+ if self._type == 'symbol' and self.symbol is not None:
74612
+ return visitor._symbol(self.symbol)
73844
74613
  if self._type == 'removeType' and self.remove_type is not None:
73845
74614
  return visitor._remove_type(self.remove_type)
73846
74615
 
73847
74616
 
73848
- security_api_workspace_UpdateOrRemoveWorkspaceIconUrl.__name__ = "UpdateOrRemoveWorkspaceIconUrl"
73849
- security_api_workspace_UpdateOrRemoveWorkspaceIconUrl.__qualname__ = "UpdateOrRemoveWorkspaceIconUrl"
73850
- security_api_workspace_UpdateOrRemoveWorkspaceIconUrl.__module__ = "nominal_api.security_api_workspace"
74617
+ security_api_workspace_UpdateOrRemoveWorkspaceSymbol.__name__ = "UpdateOrRemoveWorkspaceSymbol"
74618
+ security_api_workspace_UpdateOrRemoveWorkspaceSymbol.__qualname__ = "UpdateOrRemoveWorkspaceSymbol"
74619
+ security_api_workspace_UpdateOrRemoveWorkspaceSymbol.__module__ = "nominal_api.security_api_workspace"
73851
74620
 
73852
74621
 
73853
- class security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor:
74622
+ class security_api_workspace_UpdateOrRemoveWorkspaceSymbolVisitor:
73854
74623
 
73855
74624
  @abstractmethod
73856
- def _icon_url(self, icon_url: str) -> Any:
74625
+ def _symbol(self, symbol: "security_api_workspace_WorkspaceSymbol") -> Any:
73857
74626
  pass
73858
74627
 
73859
74628
  @abstractmethod
@@ -73861,9 +74630,9 @@ class security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor:
73861
74630
  pass
73862
74631
 
73863
74632
 
73864
- security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor.__name__ = "UpdateOrRemoveWorkspaceIconUrlVisitor"
73865
- security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor.__qualname__ = "UpdateOrRemoveWorkspaceIconUrlVisitor"
73866
- security_api_workspace_UpdateOrRemoveWorkspaceIconUrlVisitor.__module__ = "nominal_api.security_api_workspace"
74633
+ security_api_workspace_UpdateOrRemoveWorkspaceSymbolVisitor.__name__ = "UpdateOrRemoveWorkspaceSymbolVisitor"
74634
+ security_api_workspace_UpdateOrRemoveWorkspaceSymbolVisitor.__qualname__ = "UpdateOrRemoveWorkspaceSymbolVisitor"
74635
+ security_api_workspace_UpdateOrRemoveWorkspaceSymbolVisitor.__module__ = "nominal_api.security_api_workspace"
73867
74636
 
73868
74637
 
73869
74638
  class security_api_workspace_UpdateWorkspaceRequest(ConjureBeanType):
@@ -73872,22 +74641,22 @@ class security_api_workspace_UpdateWorkspaceRequest(ConjureBeanType):
73872
74641
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
73873
74642
  return {
73874
74643
  'display_name': ConjureFieldDefinition('displayName', OptionalTypeWrapper[security_api_workspace_UpdateOrRemoveWorkspaceDisplayName]),
73875
- 'icon_url': ConjureFieldDefinition('iconUrl', OptionalTypeWrapper[security_api_workspace_UpdateOrRemoveWorkspaceIconUrl])
74644
+ 'symbol': ConjureFieldDefinition('symbol', OptionalTypeWrapper[security_api_workspace_UpdateOrRemoveWorkspaceSymbol])
73876
74645
  }
73877
74646
 
73878
- __slots__: List[str] = ['_display_name', '_icon_url']
74647
+ __slots__: List[str] = ['_display_name', '_symbol']
73879
74648
 
73880
- def __init__(self, display_name: Optional["security_api_workspace_UpdateOrRemoveWorkspaceDisplayName"] = None, icon_url: Optional["security_api_workspace_UpdateOrRemoveWorkspaceIconUrl"] = None) -> None:
74649
+ def __init__(self, display_name: Optional["security_api_workspace_UpdateOrRemoveWorkspaceDisplayName"] = None, symbol: Optional["security_api_workspace_UpdateOrRemoveWorkspaceSymbol"] = None) -> None:
73881
74650
  self._display_name = display_name
73882
- self._icon_url = icon_url
74651
+ self._symbol = symbol
73883
74652
 
73884
74653
  @builtins.property
73885
74654
  def display_name(self) -> Optional["security_api_workspace_UpdateOrRemoveWorkspaceDisplayName"]:
73886
74655
  return self._display_name
73887
74656
 
73888
74657
  @builtins.property
73889
- def icon_url(self) -> Optional["security_api_workspace_UpdateOrRemoveWorkspaceIconUrl"]:
73890
- return self._icon_url
74658
+ def symbol(self) -> Optional["security_api_workspace_UpdateOrRemoveWorkspaceSymbol"]:
74659
+ return self._symbol
73891
74660
 
73892
74661
 
73893
74662
  security_api_workspace_UpdateWorkspaceRequest.__name__ = "UpdateWorkspaceRequest"
@@ -73904,17 +74673,17 @@ class security_api_workspace_Workspace(ConjureBeanType):
73904
74673
  'rid': ConjureFieldDefinition('rid', api_rids_WorkspaceRid),
73905
74674
  'org': ConjureFieldDefinition('org', authentication_api_OrgRid),
73906
74675
  'display_name': ConjureFieldDefinition('displayName', OptionalTypeWrapper[str]),
73907
- 'icon_url': ConjureFieldDefinition('iconUrl', OptionalTypeWrapper[str])
74676
+ 'symbol': ConjureFieldDefinition('symbol', OptionalTypeWrapper[security_api_workspace_WorkspaceSymbol])
73908
74677
  }
73909
74678
 
73910
- __slots__: List[str] = ['_id', '_rid', '_org', '_display_name', '_icon_url']
74679
+ __slots__: List[str] = ['_id', '_rid', '_org', '_display_name', '_symbol']
73911
74680
 
73912
- def __init__(self, id: str, org: str, rid: str, display_name: Optional[str] = None, icon_url: Optional[str] = None) -> None:
74681
+ def __init__(self, id: str, org: str, rid: str, display_name: Optional[str] = None, symbol: Optional["security_api_workspace_WorkspaceSymbol"] = None) -> None:
73913
74682
  self._id = id
73914
74683
  self._rid = rid
73915
74684
  self._org = org
73916
74685
  self._display_name = display_name
73917
- self._icon_url = icon_url
74686
+ self._symbol = symbol
73918
74687
 
73919
74688
  @builtins.property
73920
74689
  def id(self) -> str:
@@ -73936,11 +74705,8 @@ class security_api_workspace_Workspace(ConjureBeanType):
73936
74705
  return self._display_name
73937
74706
 
73938
74707
  @builtins.property
73939
- def icon_url(self) -> Optional[str]:
73940
- """
73941
- URL to the icon for the workspace.
73942
- """
73943
- return self._icon_url
74708
+ def symbol(self) -> Optional["security_api_workspace_WorkspaceSymbol"]:
74709
+ return self._symbol
73944
74710
 
73945
74711
 
73946
74712
  security_api_workspace_Workspace.__name__ = "Workspace"
@@ -74089,6 +74855,113 @@ security_api_workspace_WorkspaceService.__qualname__ = "WorkspaceService"
74089
74855
  security_api_workspace_WorkspaceService.__module__ = "nominal_api.security_api_workspace"
74090
74856
 
74091
74857
 
74858
+ class security_api_workspace_WorkspaceSymbol(ConjureUnionType):
74859
+ _icon: Optional[str] = None
74860
+ _emoji: Optional[str] = None
74861
+ _image: Optional[str] = None
74862
+
74863
+ @builtins.classmethod
74864
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
74865
+ return {
74866
+ 'icon': ConjureFieldDefinition('icon', str),
74867
+ 'emoji': ConjureFieldDefinition('emoji', str),
74868
+ 'image': ConjureFieldDefinition('image', str)
74869
+ }
74870
+
74871
+ def __init__(
74872
+ self,
74873
+ icon: Optional[str] = None,
74874
+ emoji: Optional[str] = None,
74875
+ image: Optional[str] = None,
74876
+ type_of_union: Optional[str] = None
74877
+ ) -> None:
74878
+ if type_of_union is None:
74879
+ if (icon is not None) + (emoji is not None) + (image is not None) != 1:
74880
+ raise ValueError('a union must contain a single member')
74881
+
74882
+ if icon is not None:
74883
+ self._icon = icon
74884
+ self._type = 'icon'
74885
+ if emoji is not None:
74886
+ self._emoji = emoji
74887
+ self._type = 'emoji'
74888
+ if image is not None:
74889
+ self._image = image
74890
+ self._type = 'image'
74891
+
74892
+ elif type_of_union == 'icon':
74893
+ if icon is None:
74894
+ raise ValueError('a union value must not be None')
74895
+ self._icon = icon
74896
+ self._type = 'icon'
74897
+ elif type_of_union == 'emoji':
74898
+ if emoji is None:
74899
+ raise ValueError('a union value must not be None')
74900
+ self._emoji = emoji
74901
+ self._type = 'emoji'
74902
+ elif type_of_union == 'image':
74903
+ if image is None:
74904
+ raise ValueError('a union value must not be None')
74905
+ self._image = image
74906
+ self._type = 'image'
74907
+
74908
+ @builtins.property
74909
+ def icon(self) -> Optional[str]:
74910
+ """
74911
+ Workspace icon name (e.g. castle)
74912
+ """
74913
+ return self._icon
74914
+
74915
+ @builtins.property
74916
+ def emoji(self) -> Optional[str]:
74917
+ """
74918
+ Workspace emoji name (e.g. :castle:)
74919
+ """
74920
+ return self._emoji
74921
+
74922
+ @builtins.property
74923
+ def image(self) -> Optional[str]:
74924
+ """
74925
+ Workspace image url (e.g. https://example.com/image.png)
74926
+ """
74927
+ return self._image
74928
+
74929
+ def accept(self, visitor) -> Any:
74930
+ if not isinstance(visitor, security_api_workspace_WorkspaceSymbolVisitor):
74931
+ raise ValueError('{} is not an instance of security_api_workspace_WorkspaceSymbolVisitor'.format(visitor.__class__.__name__))
74932
+ if self._type == 'icon' and self.icon is not None:
74933
+ return visitor._icon(self.icon)
74934
+ if self._type == 'emoji' and self.emoji is not None:
74935
+ return visitor._emoji(self.emoji)
74936
+ if self._type == 'image' and self.image is not None:
74937
+ return visitor._image(self.image)
74938
+
74939
+
74940
+ security_api_workspace_WorkspaceSymbol.__name__ = "WorkspaceSymbol"
74941
+ security_api_workspace_WorkspaceSymbol.__qualname__ = "WorkspaceSymbol"
74942
+ security_api_workspace_WorkspaceSymbol.__module__ = "nominal_api.security_api_workspace"
74943
+
74944
+
74945
+ class security_api_workspace_WorkspaceSymbolVisitor:
74946
+
74947
+ @abstractmethod
74948
+ def _icon(self, icon: str) -> Any:
74949
+ pass
74950
+
74951
+ @abstractmethod
74952
+ def _emoji(self, emoji: str) -> Any:
74953
+ pass
74954
+
74955
+ @abstractmethod
74956
+ def _image(self, image: str) -> Any:
74957
+ pass
74958
+
74959
+
74960
+ security_api_workspace_WorkspaceSymbolVisitor.__name__ = "WorkspaceSymbolVisitor"
74961
+ security_api_workspace_WorkspaceSymbolVisitor.__qualname__ = "WorkspaceSymbolVisitor"
74962
+ security_api_workspace_WorkspaceSymbolVisitor.__module__ = "nominal_api.security_api_workspace"
74963
+
74964
+
74092
74965
  class storage_datasource_api_CreateNominalDataSourceRequest(ConjureBeanType):
74093
74966
 
74094
74967
  @builtins.classmethod