nominal-api 0.602.0__py3-none-any.whl → 0.604.0__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
@@ -944,7 +944,7 @@ class attachments_api_CreateAttachmentRequest(ConjureBeanType):
944
944
  'description': ConjureFieldDefinition('description', str),
945
945
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
946
946
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
947
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
947
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
948
948
  }
949
949
 
950
950
  __slots__: List[str] = ['_s3_path', '_title', '_description', '_properties', '_labels', '_workspace']
@@ -1054,7 +1054,7 @@ class attachments_api_SearchAttachmentsQuery(ConjureUnionType):
1054
1054
  'property': ConjureFieldDefinition('property', api_Property),
1055
1055
  'and_': ConjureFieldDefinition('and', List[attachments_api_SearchAttachmentsQuery]),
1056
1056
  'or_': ConjureFieldDefinition('or', List[attachments_api_SearchAttachmentsQuery]),
1057
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
1057
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
1058
1058
  }
1059
1059
 
1060
1060
  def __init__(
@@ -1240,1589 +1240,6 @@ attachments_api_UpdateAttachmentRequest.__qualname__ = "UpdateAttachmentRequest"
1240
1240
  attachments_api_UpdateAttachmentRequest.__module__ = "nominal_api.attachments_api"
1241
1241
 
1242
1242
 
1243
- class authentication_api_AppearanceSetting(ConjureEnumType):
1244
-
1245
- SYSTEM = 'SYSTEM'
1246
- '''SYSTEM'''
1247
- LIGHT = 'LIGHT'
1248
- '''LIGHT'''
1249
- DARK = 'DARK'
1250
- '''DARK'''
1251
- UNKNOWN = 'UNKNOWN'
1252
- '''UNKNOWN'''
1253
-
1254
- def __reduce_ex__(self, proto):
1255
- return self.__class__, (self.name,)
1256
-
1257
-
1258
- authentication_api_AppearanceSetting.__name__ = "AppearanceSetting"
1259
- authentication_api_AppearanceSetting.__qualname__ = "AppearanceSetting"
1260
- authentication_api_AppearanceSetting.__module__ = "nominal_api.authentication_api"
1261
-
1262
-
1263
- class authentication_api_AuthenticationServiceV2(Service):
1264
- """
1265
- This service provides operations for managing user and org profiles/settings.
1266
- Its name is a bit of a misnomer.
1267
- """
1268
-
1269
- def get_my_profile(self, auth_header: str) -> "authentication_api_UserV2":
1270
- """
1271
- Gets the profile of the authenticated user.
1272
- """
1273
-
1274
- _headers: Dict[str, Any] = {
1275
- 'Accept': 'application/json',
1276
- 'Authorization': auth_header,
1277
- }
1278
-
1279
- _params: Dict[str, Any] = {
1280
- }
1281
-
1282
- _path_params: Dict[str, Any] = {
1283
- }
1284
-
1285
- _json: Any = None
1286
-
1287
- _path = '/authentication/v2/my/profile'
1288
- _path = _path.format(**_path_params)
1289
-
1290
- _response: Response = self._request(
1291
- 'GET',
1292
- self._uri + _path,
1293
- params=_params,
1294
- headers=_headers,
1295
- json=_json)
1296
-
1297
- _decoder = ConjureDecoder()
1298
- return _decoder.decode(_response.json(), authentication_api_UserV2, self._return_none_for_unknown_union_types)
1299
-
1300
- def update_my_profile(self, auth_header: str, update_my_profile_request: "authentication_api_UpdateMyProfileRequest") -> "authentication_api_UserV2":
1301
- """
1302
- Updates the profile of the authenticated user.
1303
- """
1304
-
1305
- _headers: Dict[str, Any] = {
1306
- 'Accept': 'application/json',
1307
- 'Content-Type': 'application/json',
1308
- 'Authorization': auth_header,
1309
- }
1310
-
1311
- _params: Dict[str, Any] = {
1312
- }
1313
-
1314
- _path_params: Dict[str, Any] = {
1315
- }
1316
-
1317
- _json: Any = ConjureEncoder().default(update_my_profile_request)
1318
-
1319
- _path = '/authentication/v2/my/profile'
1320
- _path = _path.format(**_path_params)
1321
-
1322
- _response: Response = self._request(
1323
- 'PUT',
1324
- self._uri + _path,
1325
- params=_params,
1326
- headers=_headers,
1327
- json=_json)
1328
-
1329
- _decoder = ConjureDecoder()
1330
- return _decoder.decode(_response.json(), authentication_api_UserV2, self._return_none_for_unknown_union_types)
1331
-
1332
- def get_my_settings(self, auth_header: str) -> "authentication_api_UserSettings":
1333
- """
1334
- Gets the settings of the authenticated user.
1335
- """
1336
-
1337
- _headers: Dict[str, Any] = {
1338
- 'Accept': 'application/json',
1339
- 'Authorization': auth_header,
1340
- }
1341
-
1342
- _params: Dict[str, Any] = {
1343
- }
1344
-
1345
- _path_params: Dict[str, Any] = {
1346
- }
1347
-
1348
- _json: Any = None
1349
-
1350
- _path = '/authentication/v2/my/settings'
1351
- _path = _path.format(**_path_params)
1352
-
1353
- _response: Response = self._request(
1354
- 'GET',
1355
- self._uri + _path,
1356
- params=_params,
1357
- headers=_headers,
1358
- json=_json)
1359
-
1360
- _decoder = ConjureDecoder()
1361
- return _decoder.decode(_response.json(), authentication_api_UserSettings, self._return_none_for_unknown_union_types)
1362
-
1363
- def update_my_settings(self, auth_header: str, user_settings: "authentication_api_UserSettings") -> "authentication_api_UserSettings":
1364
- """
1365
- Updates the settings of the authenticated user.
1366
- """
1367
-
1368
- _headers: Dict[str, Any] = {
1369
- 'Accept': 'application/json',
1370
- 'Content-Type': 'application/json',
1371
- 'Authorization': auth_header,
1372
- }
1373
-
1374
- _params: Dict[str, Any] = {
1375
- }
1376
-
1377
- _path_params: Dict[str, Any] = {
1378
- }
1379
-
1380
- _json: Any = ConjureEncoder().default(user_settings)
1381
-
1382
- _path = '/authentication/v2/my/settings'
1383
- _path = _path.format(**_path_params)
1384
-
1385
- _response: Response = self._request(
1386
- 'PUT',
1387
- self._uri + _path,
1388
- params=_params,
1389
- headers=_headers,
1390
- json=_json)
1391
-
1392
- _decoder = ConjureDecoder()
1393
- return _decoder.decode(_response.json(), authentication_api_UserSettings, self._return_none_for_unknown_union_types)
1394
-
1395
- def get_my_org_settings(self, auth_header: str) -> "authentication_api_OrgSettings":
1396
- """
1397
- Gets the settings of the org of the authenticated user.
1398
- """
1399
-
1400
- _headers: Dict[str, Any] = {
1401
- 'Accept': 'application/json',
1402
- 'Authorization': auth_header,
1403
- }
1404
-
1405
- _params: Dict[str, Any] = {
1406
- }
1407
-
1408
- _path_params: Dict[str, Any] = {
1409
- }
1410
-
1411
- _json: Any = None
1412
-
1413
- _path = '/authentication/v2/org/settings'
1414
- _path = _path.format(**_path_params)
1415
-
1416
- _response: Response = self._request(
1417
- 'GET',
1418
- self._uri + _path,
1419
- params=_params,
1420
- headers=_headers,
1421
- json=_json)
1422
-
1423
- _decoder = ConjureDecoder()
1424
- return _decoder.decode(_response.json(), authentication_api_OrgSettings, self._return_none_for_unknown_union_types)
1425
-
1426
- def update_my_org_settings(self, auth_header: str, org_settings: "authentication_api_OrgSettings") -> "authentication_api_OrgSettings":
1427
- """
1428
- Updates the settings of the org of the authenticated user.
1429
- """
1430
-
1431
- _headers: Dict[str, Any] = {
1432
- 'Accept': 'application/json',
1433
- 'Content-Type': 'application/json',
1434
- 'Authorization': auth_header,
1435
- }
1436
-
1437
- _params: Dict[str, Any] = {
1438
- }
1439
-
1440
- _path_params: Dict[str, Any] = {
1441
- }
1442
-
1443
- _json: Any = ConjureEncoder().default(org_settings)
1444
-
1445
- _path = '/authentication/v2/org/settings'
1446
- _path = _path.format(**_path_params)
1447
-
1448
- _response: Response = self._request(
1449
- 'PUT',
1450
- self._uri + _path,
1451
- params=_params,
1452
- headers=_headers,
1453
- json=_json)
1454
-
1455
- _decoder = ConjureDecoder()
1456
- return _decoder.decode(_response.json(), authentication_api_OrgSettings, self._return_none_for_unknown_union_types)
1457
-
1458
- def search_users_v2(self, auth_header: str, request: "authentication_api_SearchUsersRequest") -> "authentication_api_SearchUsersResponseV2":
1459
- """
1460
- Searches for users by email and displayName.
1461
- """
1462
-
1463
- _headers: Dict[str, Any] = {
1464
- 'Accept': 'application/json',
1465
- 'Content-Type': 'application/json',
1466
- 'Authorization': auth_header,
1467
- }
1468
-
1469
- _params: Dict[str, Any] = {
1470
- }
1471
-
1472
- _path_params: Dict[str, Any] = {
1473
- }
1474
-
1475
- _json: Any = ConjureEncoder().default(request)
1476
-
1477
- _path = '/authentication/v2/users'
1478
- _path = _path.format(**_path_params)
1479
-
1480
- _response: Response = self._request(
1481
- 'POST',
1482
- self._uri + _path,
1483
- params=_params,
1484
- headers=_headers,
1485
- json=_json)
1486
-
1487
- _decoder = ConjureDecoder()
1488
- return _decoder.decode(_response.json(), authentication_api_SearchUsersResponseV2, self._return_none_for_unknown_union_types)
1489
-
1490
- def get_users(self, auth_header: str, user_rids: List[str] = None) -> List["authentication_api_UserV2"]:
1491
- """
1492
- Get users by RID.
1493
- """
1494
- user_rids = user_rids if user_rids is not None else []
1495
-
1496
- _headers: Dict[str, Any] = {
1497
- 'Accept': 'application/json',
1498
- 'Content-Type': 'application/json',
1499
- 'Authorization': auth_header,
1500
- }
1501
-
1502
- _params: Dict[str, Any] = {
1503
- }
1504
-
1505
- _path_params: Dict[str, Any] = {
1506
- }
1507
-
1508
- _json: Any = ConjureEncoder().default(user_rids)
1509
-
1510
- _path = '/authentication/v2/users/batch'
1511
- _path = _path.format(**_path_params)
1512
-
1513
- _response: Response = self._request(
1514
- 'POST',
1515
- self._uri + _path,
1516
- params=_params,
1517
- headers=_headers,
1518
- json=_json)
1519
-
1520
- _decoder = ConjureDecoder()
1521
- return _decoder.decode(_response.json(), List[authentication_api_UserV2], self._return_none_for_unknown_union_types)
1522
-
1523
- def get_user(self, auth_header: str, user_rid: str) -> "authentication_api_UserV2":
1524
- """
1525
- Gets a user by RID.
1526
- """
1527
-
1528
- _headers: Dict[str, Any] = {
1529
- 'Accept': 'application/json',
1530
- 'Authorization': auth_header,
1531
- }
1532
-
1533
- _params: Dict[str, Any] = {
1534
- }
1535
-
1536
- _path_params: Dict[str, Any] = {
1537
- 'userRid': user_rid,
1538
- }
1539
-
1540
- _json: Any = None
1541
-
1542
- _path = '/authentication/v2/users/{userRid}'
1543
- _path = _path.format(**_path_params)
1544
-
1545
- _response: Response = self._request(
1546
- 'GET',
1547
- self._uri + _path,
1548
- params=_params,
1549
- headers=_headers,
1550
- json=_json)
1551
-
1552
- _decoder = ConjureDecoder()
1553
- return _decoder.decode(_response.json(), authentication_api_UserV2, self._return_none_for_unknown_union_types)
1554
-
1555
-
1556
- authentication_api_AuthenticationServiceV2.__name__ = "AuthenticationServiceV2"
1557
- authentication_api_AuthenticationServiceV2.__qualname__ = "AuthenticationServiceV2"
1558
- authentication_api_AuthenticationServiceV2.__module__ = "nominal_api.authentication_api"
1559
-
1560
-
1561
- class authentication_api_DefaultTimeRangeTypeSetting(ConjureEnumType):
1562
-
1563
- DEFAULT = 'DEFAULT'
1564
- '''DEFAULT'''
1565
- ABSOLUTE = 'ABSOLUTE'
1566
- '''ABSOLUTE'''
1567
- RELATIVE = 'RELATIVE'
1568
- '''RELATIVE'''
1569
- UNKNOWN = 'UNKNOWN'
1570
- '''UNKNOWN'''
1571
-
1572
- def __reduce_ex__(self, proto):
1573
- return self.__class__, (self.name,)
1574
-
1575
-
1576
- authentication_api_DefaultTimeRangeTypeSetting.__name__ = "DefaultTimeRangeTypeSetting"
1577
- authentication_api_DefaultTimeRangeTypeSetting.__qualname__ = "DefaultTimeRangeTypeSetting"
1578
- authentication_api_DefaultTimeRangeTypeSetting.__module__ = "nominal_api.authentication_api"
1579
-
1580
-
1581
- class authentication_api_OrgSettings(ConjureBeanType):
1582
-
1583
- @builtins.classmethod
1584
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1585
- return {
1586
- 'default_time_range_type': ConjureFieldDefinition('defaultTimeRangeType', OptionalTypeWrapper[authentication_api_DefaultTimeRangeTypeSetting])
1587
- }
1588
-
1589
- __slots__: List[str] = ['_default_time_range_type']
1590
-
1591
- def __init__(self, default_time_range_type: Optional["authentication_api_DefaultTimeRangeTypeSetting"] = None) -> None:
1592
- self._default_time_range_type = default_time_range_type
1593
-
1594
- @builtins.property
1595
- def default_time_range_type(self) -> Optional["authentication_api_DefaultTimeRangeTypeSetting"]:
1596
- return self._default_time_range_type
1597
-
1598
-
1599
- authentication_api_OrgSettings.__name__ = "OrgSettings"
1600
- authentication_api_OrgSettings.__qualname__ = "OrgSettings"
1601
- authentication_api_OrgSettings.__module__ = "nominal_api.authentication_api"
1602
-
1603
-
1604
- class authentication_api_SearchUsersQuery(ConjureUnionType):
1605
- _and_: Optional[List["authentication_api_SearchUsersQuery"]] = None
1606
- _or_: Optional[List["authentication_api_SearchUsersQuery"]] = None
1607
- _exact_match: Optional[str] = None
1608
- _search_text: Optional[str] = None
1609
-
1610
- @builtins.classmethod
1611
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
1612
- return {
1613
- 'and_': ConjureFieldDefinition('and', List[authentication_api_SearchUsersQuery]),
1614
- 'or_': ConjureFieldDefinition('or', List[authentication_api_SearchUsersQuery]),
1615
- 'exact_match': ConjureFieldDefinition('exactMatch', str),
1616
- 'search_text': ConjureFieldDefinition('searchText', str)
1617
- }
1618
-
1619
- def __init__(
1620
- self,
1621
- and_: Optional[List["authentication_api_SearchUsersQuery"]] = None,
1622
- or_: Optional[List["authentication_api_SearchUsersQuery"]] = None,
1623
- exact_match: Optional[str] = None,
1624
- search_text: Optional[str] = None,
1625
- type_of_union: Optional[str] = None
1626
- ) -> None:
1627
- if type_of_union is None:
1628
- if (and_ is not None) + (or_ is not None) + (exact_match is not None) + (search_text is not None) != 1:
1629
- raise ValueError('a union must contain a single member')
1630
-
1631
- if and_ is not None:
1632
- self._and_ = and_
1633
- self._type = 'and'
1634
- if or_ is not None:
1635
- self._or_ = or_
1636
- self._type = 'or'
1637
- if exact_match is not None:
1638
- self._exact_match = exact_match
1639
- self._type = 'exactMatch'
1640
- if search_text is not None:
1641
- self._search_text = search_text
1642
- self._type = 'searchText'
1643
-
1644
- elif type_of_union == 'and':
1645
- if and_ is None:
1646
- raise ValueError('a union value must not be None')
1647
- self._and_ = and_
1648
- self._type = 'and'
1649
- elif type_of_union == 'or':
1650
- if or_ is None:
1651
- raise ValueError('a union value must not be None')
1652
- self._or_ = or_
1653
- self._type = 'or'
1654
- elif type_of_union == 'exactMatch':
1655
- if exact_match is None:
1656
- raise ValueError('a union value must not be None')
1657
- self._exact_match = exact_match
1658
- self._type = 'exactMatch'
1659
- elif type_of_union == 'searchText':
1660
- if search_text is None:
1661
- raise ValueError('a union value must not be None')
1662
- self._search_text = search_text
1663
- self._type = 'searchText'
1664
-
1665
- @builtins.property
1666
- def and_(self) -> Optional[List["authentication_api_SearchUsersQuery"]]:
1667
- return self._and_
1668
-
1669
- @builtins.property
1670
- def or_(self) -> Optional[List["authentication_api_SearchUsersQuery"]]:
1671
- return self._or_
1672
-
1673
- @builtins.property
1674
- def exact_match(self) -> Optional[str]:
1675
- """
1676
- Performs case insensitive exact match on email
1677
- """
1678
- return self._exact_match
1679
-
1680
- @builtins.property
1681
- def search_text(self) -> Optional[str]:
1682
- """
1683
- Searches email and display name
1684
- """
1685
- return self._search_text
1686
-
1687
- def accept(self, visitor) -> Any:
1688
- if not isinstance(visitor, authentication_api_SearchUsersQueryVisitor):
1689
- raise ValueError('{} is not an instance of authentication_api_SearchUsersQueryVisitor'.format(visitor.__class__.__name__))
1690
- if self._type == 'and' and self.and_ is not None:
1691
- return visitor._and(self.and_)
1692
- if self._type == 'or' and self.or_ is not None:
1693
- return visitor._or(self.or_)
1694
- if self._type == 'exactMatch' and self.exact_match is not None:
1695
- return visitor._exact_match(self.exact_match)
1696
- if self._type == 'searchText' and self.search_text is not None:
1697
- return visitor._search_text(self.search_text)
1698
-
1699
-
1700
- authentication_api_SearchUsersQuery.__name__ = "SearchUsersQuery"
1701
- authentication_api_SearchUsersQuery.__qualname__ = "SearchUsersQuery"
1702
- authentication_api_SearchUsersQuery.__module__ = "nominal_api.authentication_api"
1703
-
1704
-
1705
- class authentication_api_SearchUsersQueryVisitor:
1706
-
1707
- @abstractmethod
1708
- def _and(self, and_: List["authentication_api_SearchUsersQuery"]) -> Any:
1709
- pass
1710
-
1711
- @abstractmethod
1712
- def _or(self, or_: List["authentication_api_SearchUsersQuery"]) -> Any:
1713
- pass
1714
-
1715
- @abstractmethod
1716
- def _exact_match(self, exact_match: str) -> Any:
1717
- pass
1718
-
1719
- @abstractmethod
1720
- def _search_text(self, search_text: str) -> Any:
1721
- pass
1722
-
1723
-
1724
- authentication_api_SearchUsersQueryVisitor.__name__ = "SearchUsersQueryVisitor"
1725
- authentication_api_SearchUsersQueryVisitor.__qualname__ = "SearchUsersQueryVisitor"
1726
- authentication_api_SearchUsersQueryVisitor.__module__ = "nominal_api.authentication_api"
1727
-
1728
-
1729
- class authentication_api_SearchUsersRequest(ConjureBeanType):
1730
-
1731
- @builtins.classmethod
1732
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1733
- return {
1734
- 'query': ConjureFieldDefinition('query', authentication_api_SearchUsersQuery),
1735
- 'sort_by': ConjureFieldDefinition('sortBy', OptionalTypeWrapper[authentication_api_SortBy]),
1736
- 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[api_Token]),
1737
- 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int])
1738
- }
1739
-
1740
- __slots__: List[str] = ['_query', '_sort_by', '_next_page_token', '_page_size']
1741
-
1742
- def __init__(self, query: "authentication_api_SearchUsersQuery", next_page_token: Optional[str] = None, page_size: Optional[int] = None, sort_by: Optional["authentication_api_SortBy"] = None) -> None:
1743
- self._query = query
1744
- self._sort_by = sort_by
1745
- self._next_page_token = next_page_token
1746
- self._page_size = page_size
1747
-
1748
- @builtins.property
1749
- def query(self) -> "authentication_api_SearchUsersQuery":
1750
- return self._query
1751
-
1752
- @builtins.property
1753
- def sort_by(self) -> Optional["authentication_api_SortBy"]:
1754
- """
1755
- UPDATED_AT descending by default
1756
- """
1757
- return self._sort_by
1758
-
1759
- @builtins.property
1760
- def next_page_token(self) -> Optional[str]:
1761
- return self._next_page_token
1762
-
1763
- @builtins.property
1764
- def page_size(self) -> Optional[int]:
1765
- """
1766
- Defaults to 100. Will throw if larger than 1_000.
1767
- """
1768
- return self._page_size
1769
-
1770
-
1771
- authentication_api_SearchUsersRequest.__name__ = "SearchUsersRequest"
1772
- authentication_api_SearchUsersRequest.__qualname__ = "SearchUsersRequest"
1773
- authentication_api_SearchUsersRequest.__module__ = "nominal_api.authentication_api"
1774
-
1775
-
1776
- class authentication_api_SearchUsersResponseV2(ConjureBeanType):
1777
-
1778
- @builtins.classmethod
1779
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1780
- return {
1781
- 'results': ConjureFieldDefinition('results', List[authentication_api_UserV2]),
1782
- 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[api_Token])
1783
- }
1784
-
1785
- __slots__: List[str] = ['_results', '_next_page_token']
1786
-
1787
- def __init__(self, results: List["authentication_api_UserV2"], next_page_token: Optional[str] = None) -> None:
1788
- self._results = results
1789
- self._next_page_token = next_page_token
1790
-
1791
- @builtins.property
1792
- def results(self) -> List["authentication_api_UserV2"]:
1793
- return self._results
1794
-
1795
- @builtins.property
1796
- def next_page_token(self) -> Optional[str]:
1797
- return self._next_page_token
1798
-
1799
-
1800
- authentication_api_SearchUsersResponseV2.__name__ = "SearchUsersResponseV2"
1801
- authentication_api_SearchUsersResponseV2.__qualname__ = "SearchUsersResponseV2"
1802
- authentication_api_SearchUsersResponseV2.__module__ = "nominal_api.authentication_api"
1803
-
1804
-
1805
- class authentication_api_SortBy(ConjureBeanType):
1806
-
1807
- @builtins.classmethod
1808
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1809
- return {
1810
- 'is_descending': ConjureFieldDefinition('isDescending', bool),
1811
- 'field': ConjureFieldDefinition('field', authentication_api_SortByField)
1812
- }
1813
-
1814
- __slots__: List[str] = ['_is_descending', '_field']
1815
-
1816
- def __init__(self, field: "authentication_api_SortByField", is_descending: bool) -> None:
1817
- self._is_descending = is_descending
1818
- self._field = field
1819
-
1820
- @builtins.property
1821
- def is_descending(self) -> bool:
1822
- return self._is_descending
1823
-
1824
- @builtins.property
1825
- def field(self) -> "authentication_api_SortByField":
1826
- return self._field
1827
-
1828
-
1829
- authentication_api_SortBy.__name__ = "SortBy"
1830
- authentication_api_SortBy.__qualname__ = "SortBy"
1831
- authentication_api_SortBy.__module__ = "nominal_api.authentication_api"
1832
-
1833
-
1834
- class authentication_api_SortByField(ConjureEnumType):
1835
-
1836
- NAME = 'NAME'
1837
- '''NAME'''
1838
- EMAIL = 'EMAIL'
1839
- '''EMAIL'''
1840
- CREATED_AT = 'CREATED_AT'
1841
- '''CREATED_AT'''
1842
- UPDATED_AT = 'UPDATED_AT'
1843
- '''UPDATED_AT'''
1844
- UNKNOWN = 'UNKNOWN'
1845
- '''UNKNOWN'''
1846
-
1847
- def __reduce_ex__(self, proto):
1848
- return self.__class__, (self.name,)
1849
-
1850
-
1851
- authentication_api_SortByField.__name__ = "SortByField"
1852
- authentication_api_SortByField.__qualname__ = "SortByField"
1853
- authentication_api_SortByField.__module__ = "nominal_api.authentication_api"
1854
-
1855
-
1856
- class authentication_api_TimezoneSetting(ConjureEnumType):
1857
-
1858
- LOCAL = 'LOCAL'
1859
- '''LOCAL'''
1860
- UTC = 'UTC'
1861
- '''UTC'''
1862
- UNKNOWN = 'UNKNOWN'
1863
- '''UNKNOWN'''
1864
-
1865
- def __reduce_ex__(self, proto):
1866
- return self.__class__, (self.name,)
1867
-
1868
-
1869
- authentication_api_TimezoneSetting.__name__ = "TimezoneSetting"
1870
- authentication_api_TimezoneSetting.__qualname__ = "TimezoneSetting"
1871
- authentication_api_TimezoneSetting.__module__ = "nominal_api.authentication_api"
1872
-
1873
-
1874
- class authentication_api_UpdateMyProfileRequest(ConjureBeanType):
1875
-
1876
- @builtins.classmethod
1877
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1878
- return {
1879
- 'display_name': ConjureFieldDefinition('displayName', str)
1880
- }
1881
-
1882
- __slots__: List[str] = ['_display_name']
1883
-
1884
- def __init__(self, display_name: str) -> None:
1885
- self._display_name = display_name
1886
-
1887
- @builtins.property
1888
- def display_name(self) -> str:
1889
- return self._display_name
1890
-
1891
-
1892
- authentication_api_UpdateMyProfileRequest.__name__ = "UpdateMyProfileRequest"
1893
- authentication_api_UpdateMyProfileRequest.__qualname__ = "UpdateMyProfileRequest"
1894
- authentication_api_UpdateMyProfileRequest.__module__ = "nominal_api.authentication_api"
1895
-
1896
-
1897
- class authentication_api_UserSettings(ConjureBeanType):
1898
-
1899
- @builtins.classmethod
1900
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1901
- return {
1902
- 'default_time_range_type': ConjureFieldDefinition('defaultTimeRangeType', OptionalTypeWrapper[authentication_api_DefaultTimeRangeTypeSetting]),
1903
- 'appearance': ConjureFieldDefinition('appearance', OptionalTypeWrapper[authentication_api_AppearanceSetting]),
1904
- 'timezone': ConjureFieldDefinition('timezone', OptionalTypeWrapper[authentication_api_TimezoneSetting]),
1905
- 'time_series_hover_tooltip_concise': ConjureFieldDefinition('timeSeriesHoverTooltipConcise', OptionalTypeWrapper[bool])
1906
- }
1907
-
1908
- __slots__: List[str] = ['_default_time_range_type', '_appearance', '_timezone', '_time_series_hover_tooltip_concise']
1909
-
1910
- def __init__(self, appearance: Optional["authentication_api_AppearanceSetting"] = None, default_time_range_type: Optional["authentication_api_DefaultTimeRangeTypeSetting"] = None, time_series_hover_tooltip_concise: Optional[bool] = None, timezone: Optional["authentication_api_TimezoneSetting"] = None) -> None:
1911
- self._default_time_range_type = default_time_range_type
1912
- self._appearance = appearance
1913
- self._timezone = timezone
1914
- self._time_series_hover_tooltip_concise = time_series_hover_tooltip_concise
1915
-
1916
- @builtins.property
1917
- def default_time_range_type(self) -> Optional["authentication_api_DefaultTimeRangeTypeSetting"]:
1918
- return self._default_time_range_type
1919
-
1920
- @builtins.property
1921
- def appearance(self) -> Optional["authentication_api_AppearanceSetting"]:
1922
- return self._appearance
1923
-
1924
- @builtins.property
1925
- def timezone(self) -> Optional["authentication_api_TimezoneSetting"]:
1926
- return self._timezone
1927
-
1928
- @builtins.property
1929
- def time_series_hover_tooltip_concise(self) -> Optional[bool]:
1930
- return self._time_series_hover_tooltip_concise
1931
-
1932
-
1933
- authentication_api_UserSettings.__name__ = "UserSettings"
1934
- authentication_api_UserSettings.__qualname__ = "UserSettings"
1935
- authentication_api_UserSettings.__module__ = "nominal_api.authentication_api"
1936
-
1937
-
1938
- class authentication_api_UserV2(ConjureBeanType):
1939
-
1940
- @builtins.classmethod
1941
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1942
- return {
1943
- 'rid': ConjureFieldDefinition('rid', authentication_api_UserRid),
1944
- 'org_rid': ConjureFieldDefinition('orgRid', authentication_api_OrgRid),
1945
- 'email': ConjureFieldDefinition('email', str),
1946
- 'display_name': ConjureFieldDefinition('displayName', str),
1947
- 'avatar_url': ConjureFieldDefinition('avatarUrl', str)
1948
- }
1949
-
1950
- __slots__: List[str] = ['_rid', '_org_rid', '_email', '_display_name', '_avatar_url']
1951
-
1952
- def __init__(self, avatar_url: str, display_name: str, email: str, org_rid: str, rid: str) -> None:
1953
- self._rid = rid
1954
- self._org_rid = org_rid
1955
- self._email = email
1956
- self._display_name = display_name
1957
- self._avatar_url = avatar_url
1958
-
1959
- @builtins.property
1960
- def rid(self) -> str:
1961
- return self._rid
1962
-
1963
- @builtins.property
1964
- def org_rid(self) -> str:
1965
- return self._org_rid
1966
-
1967
- @builtins.property
1968
- def email(self) -> str:
1969
- return self._email
1970
-
1971
- @builtins.property
1972
- def display_name(self) -> str:
1973
- return self._display_name
1974
-
1975
- @builtins.property
1976
- def avatar_url(self) -> str:
1977
- """
1978
- Avatar URL or a default avatar if the user does not have one.
1979
- """
1980
- return self._avatar_url
1981
-
1982
-
1983
- authentication_api_UserV2.__name__ = "UserV2"
1984
- authentication_api_UserV2.__qualname__ = "UserV2"
1985
- authentication_api_UserV2.__module__ = "nominal_api.authentication_api"
1986
-
1987
-
1988
- class authorization_ApiKey(ConjureBeanType):
1989
-
1990
- @builtins.classmethod
1991
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
1992
- return {
1993
- 'rid': ConjureFieldDefinition('rid', authorization_ApiKeyRid),
1994
- 'api_key_name': ConjureFieldDefinition('apiKeyName', str),
1995
- 'created_by': ConjureFieldDefinition('createdBy', str),
1996
- 'created_at': ConjureFieldDefinition('createdAt', str),
1997
- 'expires_at': ConjureFieldDefinition('expiresAt', OptionalTypeWrapper[str]),
1998
- 'is_deleted': ConjureFieldDefinition('isDeleted', bool)
1999
- }
2000
-
2001
- __slots__: List[str] = ['_rid', '_api_key_name', '_created_by', '_created_at', '_expires_at', '_is_deleted']
2002
-
2003
- def __init__(self, api_key_name: str, created_at: str, created_by: str, is_deleted: bool, rid: str, expires_at: Optional[str] = None) -> None:
2004
- self._rid = rid
2005
- self._api_key_name = api_key_name
2006
- self._created_by = created_by
2007
- self._created_at = created_at
2008
- self._expires_at = expires_at
2009
- self._is_deleted = is_deleted
2010
-
2011
- @builtins.property
2012
- def rid(self) -> str:
2013
- return self._rid
2014
-
2015
- @builtins.property
2016
- def api_key_name(self) -> str:
2017
- return self._api_key_name
2018
-
2019
- @builtins.property
2020
- def created_by(self) -> str:
2021
- return self._created_by
2022
-
2023
- @builtins.property
2024
- def created_at(self) -> str:
2025
- return self._created_at
2026
-
2027
- @builtins.property
2028
- def expires_at(self) -> Optional[str]:
2029
- return self._expires_at
2030
-
2031
- @builtins.property
2032
- def is_deleted(self) -> bool:
2033
- return self._is_deleted
2034
-
2035
-
2036
- authorization_ApiKey.__name__ = "ApiKey"
2037
- authorization_ApiKey.__qualname__ = "ApiKey"
2038
- authorization_ApiKey.__module__ = "nominal_api.authorization"
2039
-
2040
-
2041
- class authorization_AuthorizationRequest(ConjureBeanType):
2042
-
2043
- @builtins.classmethod
2044
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2045
- return {
2046
- 'rids': ConjureFieldDefinition('rids', List[str])
2047
- }
2048
-
2049
- __slots__: List[str] = ['_rids']
2050
-
2051
- def __init__(self, rids: List[str]) -> None:
2052
- self._rids = rids
2053
-
2054
- @builtins.property
2055
- def rids(self) -> List[str]:
2056
- return self._rids
2057
-
2058
-
2059
- authorization_AuthorizationRequest.__name__ = "AuthorizationRequest"
2060
- authorization_AuthorizationRequest.__qualname__ = "AuthorizationRequest"
2061
- authorization_AuthorizationRequest.__module__ = "nominal_api.authorization"
2062
-
2063
-
2064
- class authorization_AuthorizationService(Service):
2065
- """
2066
- Authorization service manages the permissions for a user
2067
- to access resources.
2068
- """
2069
-
2070
- def authorize(self, auth_header: str, request: "authorization_AuthorizationRequest") -> List[str]:
2071
- """
2072
- Given a set of resources, returns the set of resources that the
2073
- user is authorized to access.
2074
- """
2075
-
2076
- _headers: Dict[str, Any] = {
2077
- 'Accept': 'application/json',
2078
- 'Content-Type': 'application/json',
2079
- 'Authorization': auth_header,
2080
- }
2081
-
2082
- _params: Dict[str, Any] = {
2083
- }
2084
-
2085
- _path_params: Dict[str, Any] = {
2086
- }
2087
-
2088
- _json: Any = ConjureEncoder().default(request)
2089
-
2090
- _path = '/authorization/v1/authorize'
2091
- _path = _path.format(**_path_params)
2092
-
2093
- _response: Response = self._request(
2094
- 'POST',
2095
- self._uri + _path,
2096
- params=_params,
2097
- headers=_headers,
2098
- json=_json)
2099
-
2100
- _decoder = ConjureDecoder()
2101
- return _decoder.decode(_response.json(), List[str], self._return_none_for_unknown_union_types)
2102
-
2103
- def batch_get_workspace_for_resource(self, auth_header: str, request: List[str] = None) -> Dict[str, str]:
2104
- """
2105
- Given a set of resources, returns the workspace that each resource belongs to. If a user
2106
- is not authorized on the resource, will omit the resource from the response.
2107
- """
2108
- request = request if request is not None else []
2109
-
2110
- _headers: Dict[str, Any] = {
2111
- 'Accept': 'application/json',
2112
- 'Content-Type': 'application/json',
2113
- 'Authorization': auth_header,
2114
- }
2115
-
2116
- _params: Dict[str, Any] = {
2117
- }
2118
-
2119
- _path_params: Dict[str, Any] = {
2120
- }
2121
-
2122
- _json: Any = ConjureEncoder().default(request)
2123
-
2124
- _path = '/authorization/v1/batch-get-workspace-for-resource'
2125
- _path = _path.format(**_path_params)
2126
-
2127
- _response: Response = self._request(
2128
- 'POST',
2129
- self._uri + _path,
2130
- params=_params,
2131
- headers=_headers,
2132
- json=_json)
2133
-
2134
- _decoder = ConjureDecoder()
2135
- return _decoder.decode(_response.json(), Dict[str, api_rids_WorkspaceRid], self._return_none_for_unknown_union_types)
2136
-
2137
- def register(self, auth_header: str, register_request: "authorization_RegistrationRequest") -> None:
2138
- """
2139
- Marks a resource as belonging to an organization.
2140
- Will throw if trying to register a resource that already
2141
- belongs to a different organization.
2142
- """
2143
-
2144
- _headers: Dict[str, Any] = {
2145
- 'Accept': 'application/json',
2146
- 'Content-Type': 'application/json',
2147
- 'Authorization': auth_header,
2148
- }
2149
-
2150
- _params: Dict[str, Any] = {
2151
- }
2152
-
2153
- _path_params: Dict[str, Any] = {
2154
- }
2155
-
2156
- _json: Any = ConjureEncoder().default(register_request)
2157
-
2158
- _path = '/authorization/v1/register'
2159
- _path = _path.format(**_path_params)
2160
-
2161
- _response: Response = self._request(
2162
- 'POST',
2163
- self._uri + _path,
2164
- params=_params,
2165
- headers=_headers,
2166
- json=_json)
2167
-
2168
- return
2169
-
2170
- def register_in_workspace(self, auth_header: str, request: "authorization_RegisterInWorkspaceRequest") -> None:
2171
- """
2172
- Marks a set of resources as belonging to a workspace. Either all resources are
2173
- registered or none are.
2174
- If the user is not in the workspace, this will throw.
2175
- If a resource already belongs to a different workspace, this will throw.
2176
- If a resource already belongs to this workspace, this is a no-op.
2177
- """
2178
-
2179
- _headers: Dict[str, Any] = {
2180
- 'Accept': 'application/json',
2181
- 'Content-Type': 'application/json',
2182
- 'Authorization': auth_header,
2183
- }
2184
-
2185
- _params: Dict[str, Any] = {
2186
- }
2187
-
2188
- _path_params: Dict[str, Any] = {
2189
- }
2190
-
2191
- _json: Any = ConjureEncoder().default(request)
2192
-
2193
- _path = '/authorization/v1/register-in-workspace'
2194
- _path = _path.format(**_path_params)
2195
-
2196
- _response: Response = self._request(
2197
- 'POST',
2198
- self._uri + _path,
2199
- params=_params,
2200
- headers=_headers,
2201
- json=_json)
2202
-
2203
- return
2204
-
2205
- def check_admin(self, auth_header: str) -> None:
2206
- """
2207
- Given an authenticated session, this endpoint returns a HTTP 204 if the
2208
- authenticated user is an admin and HTTP 403 otherwise.
2209
- """
2210
-
2211
- _headers: Dict[str, Any] = {
2212
- 'Accept': 'application/json',
2213
- 'Authorization': auth_header,
2214
- }
2215
-
2216
- _params: Dict[str, Any] = {
2217
- }
2218
-
2219
- _path_params: Dict[str, Any] = {
2220
- }
2221
-
2222
- _json: Any = None
2223
-
2224
- _path = '/authorization/v1/checkAdmin'
2225
- _path = _path.format(**_path_params)
2226
-
2227
- _response: Response = self._request(
2228
- 'GET',
2229
- self._uri + _path,
2230
- params=_params,
2231
- headers=_headers,
2232
- json=_json)
2233
-
2234
- return
2235
-
2236
- def is_email_allowed(self, request: "authorization_IsEmailAllowedRequest") -> "authorization_IsEmailAllowedResponse":
2237
- """
2238
- Checks if the email is allowed to register.
2239
- """
2240
-
2241
- _headers: Dict[str, Any] = {
2242
- 'Accept': 'application/json',
2243
- 'Content-Type': 'application/json',
2244
- }
2245
-
2246
- _params: Dict[str, Any] = {
2247
- }
2248
-
2249
- _path_params: Dict[str, Any] = {
2250
- }
2251
-
2252
- _json: Any = ConjureEncoder().default(request)
2253
-
2254
- _path = '/authorization/v1/is-email-allowed'
2255
- _path = _path.format(**_path_params)
2256
-
2257
- _response: Response = self._request(
2258
- 'POST',
2259
- self._uri + _path,
2260
- params=_params,
2261
- headers=_headers,
2262
- json=_json)
2263
-
2264
- _decoder = ConjureDecoder()
2265
- return _decoder.decode(_response.json(), authorization_IsEmailAllowedResponse, self._return_none_for_unknown_union_types)
2266
-
2267
- def get_access_token(self, request: "authorization_GetAccessTokenRequest") -> "authorization_GetAccessTokenResponse":
2268
- """
2269
- Provide an OIDC ID and access token to get a Nominal access token,
2270
- suitable for making API requests. Its expiry will match that of the
2271
- input access token, capped at 24h.
2272
- Throws NotAuthorized if either token is invalid or if the OIDC provider
2273
- is not known.
2274
- """
2275
-
2276
- _headers: Dict[str, Any] = {
2277
- 'Accept': 'application/json',
2278
- 'Content-Type': 'application/json',
2279
- }
2280
-
2281
- _params: Dict[str, Any] = {
2282
- }
2283
-
2284
- _path_params: Dict[str, Any] = {
2285
- }
2286
-
2287
- _json: Any = ConjureEncoder().default(request)
2288
-
2289
- _path = '/authorization/v1/access-token'
2290
- _path = _path.format(**_path_params)
2291
-
2292
- _response: Response = self._request(
2293
- 'POST',
2294
- self._uri + _path,
2295
- params=_params,
2296
- headers=_headers,
2297
- json=_json)
2298
-
2299
- _decoder = ConjureDecoder()
2300
- return _decoder.decode(_response.json(), authorization_GetAccessTokenResponse, self._return_none_for_unknown_union_types)
2301
-
2302
- def create_api_key(self, auth_header: str, request: "authorization_CreateApiKeyRequest") -> "authorization_CreateApiKeyResponse":
2303
- """
2304
- Provide a long-lived API key for making API requests.
2305
- The API key is irretrievable after initial creation.
2306
- """
2307
-
2308
- _headers: Dict[str, Any] = {
2309
- 'Accept': 'application/json',
2310
- 'Content-Type': 'application/json',
2311
- 'Authorization': auth_header,
2312
- }
2313
-
2314
- _params: Dict[str, Any] = {
2315
- }
2316
-
2317
- _path_params: Dict[str, Any] = {
2318
- }
2319
-
2320
- _json: Any = ConjureEncoder().default(request)
2321
-
2322
- _path = '/authorization/v1/api-key'
2323
- _path = _path.format(**_path_params)
2324
-
2325
- _response: Response = self._request(
2326
- 'POST',
2327
- self._uri + _path,
2328
- params=_params,
2329
- headers=_headers,
2330
- json=_json)
2331
-
2332
- _decoder = ConjureDecoder()
2333
- return _decoder.decode(_response.json(), authorization_CreateApiKeyResponse, self._return_none_for_unknown_union_types)
2334
-
2335
- def list_api_keys_in_org(self, auth_header: str, request: "authorization_ListApiKeyRequest") -> "authorization_ListApiKeyResponse":
2336
- """
2337
- List all API keys in the organization.
2338
- """
2339
-
2340
- _headers: Dict[str, Any] = {
2341
- 'Accept': 'application/json',
2342
- 'Content-Type': 'application/json',
2343
- 'Authorization': auth_header,
2344
- }
2345
-
2346
- _params: Dict[str, Any] = {
2347
- }
2348
-
2349
- _path_params: Dict[str, Any] = {
2350
- }
2351
-
2352
- _json: Any = ConjureEncoder().default(request)
2353
-
2354
- _path = '/authorization/v1/api-keys/org'
2355
- _path = _path.format(**_path_params)
2356
-
2357
- _response: Response = self._request(
2358
- 'POST',
2359
- self._uri + _path,
2360
- params=_params,
2361
- headers=_headers,
2362
- json=_json)
2363
-
2364
- _decoder = ConjureDecoder()
2365
- return _decoder.decode(_response.json(), authorization_ListApiKeyResponse, self._return_none_for_unknown_union_types)
2366
-
2367
- def list_user_api_keys(self, auth_header: str, request: "authorization_ListApiKeyRequest") -> "authorization_ListApiKeyResponse":
2368
- """
2369
- List all API keys for the user.
2370
- """
2371
-
2372
- _headers: Dict[str, Any] = {
2373
- 'Accept': 'application/json',
2374
- 'Content-Type': 'application/json',
2375
- 'Authorization': auth_header,
2376
- }
2377
-
2378
- _params: Dict[str, Any] = {
2379
- }
2380
-
2381
- _path_params: Dict[str, Any] = {
2382
- }
2383
-
2384
- _json: Any = ConjureEncoder().default(request)
2385
-
2386
- _path = '/authorization/v1/api-keys/user'
2387
- _path = _path.format(**_path_params)
2388
-
2389
- _response: Response = self._request(
2390
- 'POST',
2391
- self._uri + _path,
2392
- params=_params,
2393
- headers=_headers,
2394
- json=_json)
2395
-
2396
- _decoder = ConjureDecoder()
2397
- return _decoder.decode(_response.json(), authorization_ListApiKeyResponse, self._return_none_for_unknown_union_types)
2398
-
2399
- def revoke_api_key(self, auth_header: str, rid: str) -> None:
2400
- """
2401
- Delete an API key.
2402
- """
2403
-
2404
- _headers: Dict[str, Any] = {
2405
- 'Accept': 'application/json',
2406
- 'Authorization': auth_header,
2407
- }
2408
-
2409
- _params: Dict[str, Any] = {
2410
- }
2411
-
2412
- _path_params: Dict[str, Any] = {
2413
- 'rid': rid,
2414
- }
2415
-
2416
- _json: Any = None
2417
-
2418
- _path = '/authorization/v1/api-key/{rid}/delete'
2419
- _path = _path.format(**_path_params)
2420
-
2421
- _response: Response = self._request(
2422
- 'PUT',
2423
- self._uri + _path,
2424
- params=_params,
2425
- headers=_headers,
2426
- json=_json)
2427
-
2428
- return
2429
-
2430
-
2431
- authorization_AuthorizationService.__name__ = "AuthorizationService"
2432
- authorization_AuthorizationService.__qualname__ = "AuthorizationService"
2433
- authorization_AuthorizationService.__module__ = "nominal_api.authorization"
2434
-
2435
-
2436
- class authorization_CreateApiKeyRequest(ConjureBeanType):
2437
-
2438
- @builtins.classmethod
2439
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2440
- return {
2441
- 'api_key_name': ConjureFieldDefinition('apiKeyName', str),
2442
- 'expires_after_days': ConjureFieldDefinition('expiresAfterDays', OptionalTypeWrapper[int])
2443
- }
2444
-
2445
- __slots__: List[str] = ['_api_key_name', '_expires_after_days']
2446
-
2447
- def __init__(self, api_key_name: str, expires_after_days: Optional[int] = None) -> None:
2448
- self._api_key_name = api_key_name
2449
- self._expires_after_days = expires_after_days
2450
-
2451
- @builtins.property
2452
- def api_key_name(self) -> str:
2453
- """
2454
- The name of the API key to create.
2455
- """
2456
- return self._api_key_name
2457
-
2458
- @builtins.property
2459
- def expires_after_days(self) -> Optional[int]:
2460
- """
2461
- The number of days after which the API key will expire.
2462
- If omitted, the API key will not expire.
2463
- """
2464
- return self._expires_after_days
2465
-
2466
-
2467
- authorization_CreateApiKeyRequest.__name__ = "CreateApiKeyRequest"
2468
- authorization_CreateApiKeyRequest.__qualname__ = "CreateApiKeyRequest"
2469
- authorization_CreateApiKeyRequest.__module__ = "nominal_api.authorization"
2470
-
2471
-
2472
- class authorization_CreateApiKeyResponse(ConjureBeanType):
2473
-
2474
- @builtins.classmethod
2475
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2476
- return {
2477
- 'api_key_metadata': ConjureFieldDefinition('apiKeyMetadata', authorization_ApiKey),
2478
- 'api_key_value': ConjureFieldDefinition('apiKeyValue', str)
2479
- }
2480
-
2481
- __slots__: List[str] = ['_api_key_metadata', '_api_key_value']
2482
-
2483
- def __init__(self, api_key_metadata: "authorization_ApiKey", api_key_value: str) -> None:
2484
- self._api_key_metadata = api_key_metadata
2485
- self._api_key_value = api_key_value
2486
-
2487
- @builtins.property
2488
- def api_key_metadata(self) -> "authorization_ApiKey":
2489
- return self._api_key_metadata
2490
-
2491
- @builtins.property
2492
- def api_key_value(self) -> str:
2493
- return self._api_key_value
2494
-
2495
-
2496
- authorization_CreateApiKeyResponse.__name__ = "CreateApiKeyResponse"
2497
- authorization_CreateApiKeyResponse.__qualname__ = "CreateApiKeyResponse"
2498
- authorization_CreateApiKeyResponse.__module__ = "nominal_api.authorization"
2499
-
2500
-
2501
- class authorization_GetAccessTokenFromApiKeyRequest(ConjureBeanType):
2502
-
2503
- @builtins.classmethod
2504
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2505
- return {
2506
- 'api_key_value': ConjureFieldDefinition('apiKeyValue', str)
2507
- }
2508
-
2509
- __slots__: List[str] = ['_api_key_value']
2510
-
2511
- def __init__(self, api_key_value: str) -> None:
2512
- self._api_key_value = api_key_value
2513
-
2514
- @builtins.property
2515
- def api_key_value(self) -> str:
2516
- return self._api_key_value
2517
-
2518
-
2519
- authorization_GetAccessTokenFromApiKeyRequest.__name__ = "GetAccessTokenFromApiKeyRequest"
2520
- authorization_GetAccessTokenFromApiKeyRequest.__qualname__ = "GetAccessTokenFromApiKeyRequest"
2521
- authorization_GetAccessTokenFromApiKeyRequest.__module__ = "nominal_api.authorization"
2522
-
2523
-
2524
- class authorization_GetAccessTokenRequest(ConjureBeanType):
2525
-
2526
- @builtins.classmethod
2527
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2528
- return {
2529
- 'id_token': ConjureFieldDefinition('idToken', str),
2530
- 'access_token': ConjureFieldDefinition('accessToken', str)
2531
- }
2532
-
2533
- __slots__: List[str] = ['_id_token', '_access_token']
2534
-
2535
- def __init__(self, access_token: str, id_token: str) -> None:
2536
- self._id_token = id_token
2537
- self._access_token = access_token
2538
-
2539
- @builtins.property
2540
- def id_token(self) -> str:
2541
- return self._id_token
2542
-
2543
- @builtins.property
2544
- def access_token(self) -> str:
2545
- """
2546
- The access token's audience must be for the Nominal API.
2547
- """
2548
- return self._access_token
2549
-
2550
-
2551
- authorization_GetAccessTokenRequest.__name__ = "GetAccessTokenRequest"
2552
- authorization_GetAccessTokenRequest.__qualname__ = "GetAccessTokenRequest"
2553
- authorization_GetAccessTokenRequest.__module__ = "nominal_api.authorization"
2554
-
2555
-
2556
- class authorization_GetAccessTokenResponse(ConjureBeanType):
2557
-
2558
- @builtins.classmethod
2559
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2560
- return {
2561
- 'access_token': ConjureFieldDefinition('accessToken', str),
2562
- 'expires_at_seconds': ConjureFieldDefinition('expiresAtSeconds', int),
2563
- 'user_uuid': ConjureFieldDefinition('userUuid', str),
2564
- 'org_uuid': ConjureFieldDefinition('orgUuid', str)
2565
- }
2566
-
2567
- __slots__: List[str] = ['_access_token', '_expires_at_seconds', '_user_uuid', '_org_uuid']
2568
-
2569
- def __init__(self, access_token: str, expires_at_seconds: int, org_uuid: str, user_uuid: str) -> None:
2570
- self._access_token = access_token
2571
- self._expires_at_seconds = expires_at_seconds
2572
- self._user_uuid = user_uuid
2573
- self._org_uuid = org_uuid
2574
-
2575
- @builtins.property
2576
- def access_token(self) -> str:
2577
- return self._access_token
2578
-
2579
- @builtins.property
2580
- def expires_at_seconds(self) -> int:
2581
- return self._expires_at_seconds
2582
-
2583
- @builtins.property
2584
- def user_uuid(self) -> str:
2585
- return self._user_uuid
2586
-
2587
- @builtins.property
2588
- def org_uuid(self) -> str:
2589
- return self._org_uuid
2590
-
2591
-
2592
- authorization_GetAccessTokenResponse.__name__ = "GetAccessTokenResponse"
2593
- authorization_GetAccessTokenResponse.__qualname__ = "GetAccessTokenResponse"
2594
- authorization_GetAccessTokenResponse.__module__ = "nominal_api.authorization"
2595
-
2596
-
2597
- class authorization_InternalApiKeyService(Service):
2598
- """
2599
- This internal-only service manages long lived api keys.e
2600
- """
2601
-
2602
- def get_access_token_from_api_key_value(self, request: "authorization_GetAccessTokenFromApiKeyRequest") -> "authorization_GetAccessTokenResponse":
2603
- """
2604
- Get a Nominal-issued access token from a long-lived API key. Callers should verify that
2605
- their api key is formatted properly (i.e. prefixed with "nominal_api_key") before calling this endpoint.
2606
- """
2607
-
2608
- _headers: Dict[str, Any] = {
2609
- 'Accept': 'application/json',
2610
- 'Content-Type': 'application/json',
2611
- }
2612
-
2613
- _params: Dict[str, Any] = {
2614
- }
2615
-
2616
- _path_params: Dict[str, Any] = {
2617
- }
2618
-
2619
- _json: Any = ConjureEncoder().default(request)
2620
-
2621
- _path = '/api-key-internal/v1/access-token'
2622
- _path = _path.format(**_path_params)
2623
-
2624
- _response: Response = self._request(
2625
- 'POST',
2626
- self._uri + _path,
2627
- params=_params,
2628
- headers=_headers,
2629
- json=_json)
2630
-
2631
- _decoder = ConjureDecoder()
2632
- return _decoder.decode(_response.json(), authorization_GetAccessTokenResponse, self._return_none_for_unknown_union_types)
2633
-
2634
-
2635
- authorization_InternalApiKeyService.__name__ = "InternalApiKeyService"
2636
- authorization_InternalApiKeyService.__qualname__ = "InternalApiKeyService"
2637
- authorization_InternalApiKeyService.__module__ = "nominal_api.authorization"
2638
-
2639
-
2640
- class authorization_IsEmailAllowedRequest(ConjureBeanType):
2641
-
2642
- @builtins.classmethod
2643
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2644
- return {
2645
- 'email': ConjureFieldDefinition('email', str)
2646
- }
2647
-
2648
- __slots__: List[str] = ['_email']
2649
-
2650
- def __init__(self, email: str) -> None:
2651
- self._email = email
2652
-
2653
- @builtins.property
2654
- def email(self) -> str:
2655
- return self._email
2656
-
2657
-
2658
- authorization_IsEmailAllowedRequest.__name__ = "IsEmailAllowedRequest"
2659
- authorization_IsEmailAllowedRequest.__qualname__ = "IsEmailAllowedRequest"
2660
- authorization_IsEmailAllowedRequest.__module__ = "nominal_api.authorization"
2661
-
2662
-
2663
- class authorization_IsEmailAllowedResponse(ConjureBeanType):
2664
-
2665
- @builtins.classmethod
2666
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2667
- return {
2668
- 'allowed': ConjureFieldDefinition('allowed', bool)
2669
- }
2670
-
2671
- __slots__: List[str] = ['_allowed']
2672
-
2673
- def __init__(self, allowed: bool) -> None:
2674
- self._allowed = allowed
2675
-
2676
- @builtins.property
2677
- def allowed(self) -> bool:
2678
- return self._allowed
2679
-
2680
-
2681
- authorization_IsEmailAllowedResponse.__name__ = "IsEmailAllowedResponse"
2682
- authorization_IsEmailAllowedResponse.__qualname__ = "IsEmailAllowedResponse"
2683
- authorization_IsEmailAllowedResponse.__module__ = "nominal_api.authorization"
2684
-
2685
-
2686
- class authorization_ListApiKeyRequest(ConjureBeanType):
2687
-
2688
- @builtins.classmethod
2689
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2690
- return {
2691
- 'include_deleted': ConjureFieldDefinition('includeDeleted', OptionalTypeWrapper[bool]),
2692
- 'include_expired': ConjureFieldDefinition('includeExpired', OptionalTypeWrapper[bool]),
2693
- 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]),
2694
- 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[api_Token])
2695
- }
2696
-
2697
- __slots__: List[str] = ['_include_deleted', '_include_expired', '_page_size', '_next_page_token']
2698
-
2699
- def __init__(self, include_deleted: Optional[bool] = None, include_expired: Optional[bool] = None, next_page_token: Optional[str] = None, page_size: Optional[int] = None) -> None:
2700
- self._include_deleted = include_deleted
2701
- self._include_expired = include_expired
2702
- self._page_size = page_size
2703
- self._next_page_token = next_page_token
2704
-
2705
- @builtins.property
2706
- def include_deleted(self) -> Optional[bool]:
2707
- """
2708
- If true, include deleted API keys in the response. Defaults to false.
2709
- """
2710
- return self._include_deleted
2711
-
2712
- @builtins.property
2713
- def include_expired(self) -> Optional[bool]:
2714
- """
2715
- If true, include expired API keys in the response. Defaults to false.
2716
- """
2717
- return self._include_expired
2718
-
2719
- @builtins.property
2720
- def page_size(self) -> Optional[int]:
2721
- """
2722
- The maximum number of API keys to return. Defaults to 100.
2723
- """
2724
- return self._page_size
2725
-
2726
- @builtins.property
2727
- def next_page_token(self) -> Optional[str]:
2728
- return self._next_page_token
2729
-
2730
-
2731
- authorization_ListApiKeyRequest.__name__ = "ListApiKeyRequest"
2732
- authorization_ListApiKeyRequest.__qualname__ = "ListApiKeyRequest"
2733
- authorization_ListApiKeyRequest.__module__ = "nominal_api.authorization"
2734
-
2735
-
2736
- class authorization_ListApiKeyResponse(ConjureBeanType):
2737
-
2738
- @builtins.classmethod
2739
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2740
- return {
2741
- 'api_keys': ConjureFieldDefinition('apiKeys', List[authorization_ApiKey]),
2742
- 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[api_Token])
2743
- }
2744
-
2745
- __slots__: List[str] = ['_api_keys', '_next_page_token']
2746
-
2747
- def __init__(self, api_keys: List["authorization_ApiKey"], next_page_token: Optional[str] = None) -> None:
2748
- self._api_keys = api_keys
2749
- self._next_page_token = next_page_token
2750
-
2751
- @builtins.property
2752
- def api_keys(self) -> List["authorization_ApiKey"]:
2753
- return self._api_keys
2754
-
2755
- @builtins.property
2756
- def next_page_token(self) -> Optional[str]:
2757
- return self._next_page_token
2758
-
2759
-
2760
- authorization_ListApiKeyResponse.__name__ = "ListApiKeyResponse"
2761
- authorization_ListApiKeyResponse.__qualname__ = "ListApiKeyResponse"
2762
- authorization_ListApiKeyResponse.__module__ = "nominal_api.authorization"
2763
-
2764
-
2765
- class authorization_RegisterInWorkspaceRequest(ConjureBeanType):
2766
-
2767
- @builtins.classmethod
2768
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2769
- return {
2770
- 'resource_rids': ConjureFieldDefinition('resourceRids', List[str]),
2771
- 'workspace_rid': ConjureFieldDefinition('workspaceRid', api_rids_WorkspaceRid)
2772
- }
2773
-
2774
- __slots__: List[str] = ['_resource_rids', '_workspace_rid']
2775
-
2776
- def __init__(self, resource_rids: List[str], workspace_rid: str) -> None:
2777
- self._resource_rids = resource_rids
2778
- self._workspace_rid = workspace_rid
2779
-
2780
- @builtins.property
2781
- def resource_rids(self) -> List[str]:
2782
- return self._resource_rids
2783
-
2784
- @builtins.property
2785
- def workspace_rid(self) -> str:
2786
- return self._workspace_rid
2787
-
2788
-
2789
- authorization_RegisterInWorkspaceRequest.__name__ = "RegisterInWorkspaceRequest"
2790
- authorization_RegisterInWorkspaceRequest.__qualname__ = "RegisterInWorkspaceRequest"
2791
- authorization_RegisterInWorkspaceRequest.__module__ = "nominal_api.authorization"
2792
-
2793
-
2794
- class authorization_RegistrationRequest(ConjureBeanType):
2795
-
2796
- @builtins.classmethod
2797
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
2798
- return {
2799
- 'rids': ConjureFieldDefinition('rids', List[str]),
2800
- 'organization_rid': ConjureFieldDefinition('organizationRid', OptionalTypeWrapper[str])
2801
- }
2802
-
2803
- __slots__: List[str] = ['_rids', '_organization_rid']
2804
-
2805
- def __init__(self, rids: List[str], organization_rid: Optional[str] = None) -> None:
2806
- self._rids = rids
2807
- self._organization_rid = organization_rid
2808
-
2809
- @builtins.property
2810
- def rids(self) -> List[str]:
2811
- return self._rids
2812
-
2813
- @builtins.property
2814
- def organization_rid(self) -> Optional[str]:
2815
- """
2816
- If omitted, will use the user's organizationRid.
2817
- """
2818
- return self._organization_rid
2819
-
2820
-
2821
- authorization_RegistrationRequest.__name__ = "RegistrationRequest"
2822
- authorization_RegistrationRequest.__qualname__ = "RegistrationRequest"
2823
- authorization_RegistrationRequest.__module__ = "nominal_api.authorization"
2824
-
2825
-
2826
1243
  class comments_api_Comment(ConjureBeanType):
2827
1244
 
2828
1245
  @builtins.classmethod
@@ -4909,7 +3326,7 @@ class datasource_logset_api_CreateLogSetRequest(ConjureBeanType):
4909
3326
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
4910
3327
  'origin_metadata': ConjureFieldDefinition('originMetadata', Dict[str, str]),
4911
3328
  'timestamp_type': ConjureFieldDefinition('timestampType', datasource_TimestampType),
4912
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
3329
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
4913
3330
  }
4914
3331
 
4915
3332
  __slots__: List[str] = ['_name', '_description', '_origin_metadata', '_timestamp_type', '_workspace']
@@ -5215,7 +3632,7 @@ class datasource_logset_api_SearchLogSetsRequest(ConjureBeanType):
5215
3632
  return {
5216
3633
  'token': ConjureFieldDefinition('token', OptionalTypeWrapper[api_Token]),
5217
3634
  'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]),
5218
- 'workspaces': ConjureFieldDefinition('workspaces', List[api_ids_WorkspaceId])
3635
+ 'workspaces': ConjureFieldDefinition('workspaces', List[api_rids_WorkspaceRid])
5219
3636
  }
5220
3637
 
5221
3638
  __slots__: List[str] = ['_token', '_page_size', '_workspaces']
@@ -6043,7 +4460,7 @@ class event_SearchQuery(ConjureUnionType):
6043
4460
  'property': ConjureFieldDefinition('property', api_Property),
6044
4461
  'and_': ConjureFieldDefinition('and', List[event_SearchQuery]),
6045
4462
  'or_': ConjureFieldDefinition('or', List[event_SearchQuery]),
6046
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
4463
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
6047
4464
  }
6048
4465
 
6049
4466
  def __init__(
@@ -6995,7 +5412,7 @@ class ingest_api_DeprecatedTriggerIngest(ConjureBeanType):
6995
5412
  'properties': ConjureFieldDefinition('properties', Dict[str, str]),
6996
5413
  'dataset_name': ConjureFieldDefinition('datasetName', OptionalTypeWrapper[str]),
6997
5414
  'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_DeprecatedTimestampMetadata]),
6998
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
5415
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
6999
5416
  }
7000
5417
 
7001
5418
  __slots__: List[str] = ['_source', '_properties', '_dataset_name', '_timestamp_metadata', '_workspace']
@@ -7434,7 +5851,7 @@ class ingest_api_IngestMcapRequest(ConjureBeanType):
7434
5851
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
7435
5852
  'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]),
7436
5853
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
7437
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
5854
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
7438
5855
  }
7439
5856
 
7440
5857
  __slots__: List[str] = ['_sources', '_channel_config', '_channels', '_properties', '_labels', '_title', '_description', '_workspace']
@@ -7489,8 +5906,9 @@ channels with config, otherwise the mcap may not be supported.
7489
5906
  @builtins.property
7490
5907
  def workspace(self) -> Optional[str]:
7491
5908
  """
7492
- The workspace in which to create the dataset. If not provided, the dataset will be created in the default workspace for
7493
- the user's organization, if the default workspace for the organization is configured.
5909
+ The workspace in which to create the dataset or video. If not provided, the dataset or video
5910
+ will be created in the default workspace for the user's organization, if the default
5911
+ workspace for the organization is configured.
7494
5912
  """
7495
5913
  return self._workspace
7496
5914
 
@@ -7835,7 +6253,7 @@ class ingest_api_IngestRunRequest(ConjureBeanType):
7835
6253
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
7836
6254
  'run_prefix': ConjureFieldDefinition('runPrefix', OptionalTypeWrapper[str]),
7837
6255
  'data_sources': ConjureFieldDefinition('dataSources', Dict[ingest_api_DataSourceRefName, ingest_api_IngestRunDataSource]),
7838
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
6256
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
7839
6257
  }
7840
6258
 
7841
6259
  __slots__: List[str] = ['_rid', '_title', '_description', '_start_time', '_end_time', '_properties', '_labels', '_run_prefix', '_data_sources', '_workspace']
@@ -8326,18 +6744,20 @@ class ingest_api_IngestVideoRequest(ConjureBeanType):
8326
6744
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
8327
6745
  'title': ConjureFieldDefinition('title', OptionalTypeWrapper[str]),
8328
6746
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
8329
- 'timestamps': ConjureFieldDefinition('timestamps', ingest_api_VideoTimestampManifest)
6747
+ 'timestamps': ConjureFieldDefinition('timestamps', ingest_api_VideoTimestampManifest),
6748
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
8330
6749
  }
8331
6750
 
8332
- __slots__: List[str] = ['_sources', '_properties', '_labels', '_title', '_description', '_timestamps']
6751
+ __slots__: List[str] = ['_sources', '_properties', '_labels', '_title', '_description', '_timestamps', '_workspace']
8333
6752
 
8334
- def __init__(self, labels: List[str], properties: Dict[str, str], sources: List["ingest_api_IngestSource"], timestamps: "ingest_api_VideoTimestampManifest", description: Optional[str] = None, title: Optional[str] = None) -> None:
6753
+ def __init__(self, labels: List[str], properties: Dict[str, str], sources: List["ingest_api_IngestSource"], timestamps: "ingest_api_VideoTimestampManifest", description: Optional[str] = None, title: Optional[str] = None, workspace: Optional[str] = None) -> None:
8335
6754
  self._sources = sources
8336
6755
  self._properties = properties
8337
6756
  self._labels = labels
8338
6757
  self._title = title
8339
6758
  self._description = description
8340
6759
  self._timestamps = timestamps
6760
+ self._workspace = workspace
8341
6761
 
8342
6762
  @builtins.property
8343
6763
  def sources(self) -> List["ingest_api_IngestSource"]:
@@ -8363,6 +6783,14 @@ class ingest_api_IngestVideoRequest(ConjureBeanType):
8363
6783
  def timestamps(self) -> "ingest_api_VideoTimestampManifest":
8364
6784
  return self._timestamps
8365
6785
 
6786
+ @builtins.property
6787
+ def workspace(self) -> Optional[str]:
6788
+ """
6789
+ The workspace in which to create the video. If not provided, the video will be created in the default workspace for
6790
+ the user's organization, if the default workspace for the organization is configured.
6791
+ """
6792
+ return self._workspace
6793
+
8366
6794
 
8367
6795
  ingest_api_IngestVideoRequest.__name__ = "IngestVideoRequest"
8368
6796
  ingest_api_IngestVideoRequest.__qualname__ = "IngestVideoRequest"
@@ -8410,23 +6838,42 @@ class ingest_api_InitiateMultipartUploadRequest(ConjureBeanType):
8410
6838
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
8411
6839
  return {
8412
6840
  'filename': ConjureFieldDefinition('filename', str),
8413
- 'filetype': ConjureFieldDefinition('filetype', str)
6841
+ 'filetype': ConjureFieldDefinition('filetype', str),
6842
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
8414
6843
  }
8415
6844
 
8416
- __slots__: List[str] = ['_filename', '_filetype']
6845
+ __slots__: List[str] = ['_filename', '_filetype', '_workspace']
8417
6846
 
8418
- def __init__(self, filename: str, filetype: str) -> None:
6847
+ def __init__(self, filename: str, filetype: str, workspace: Optional[str] = None) -> None:
8419
6848
  self._filename = filename
8420
6849
  self._filetype = filetype
6850
+ self._workspace = workspace
8421
6851
 
8422
6852
  @builtins.property
8423
6853
  def filename(self) -> str:
6854
+ """
6855
+ The desired name of the file in object storage. The final name will be
6856
+ prefixed with a timestamp to ensure uniqueness.
6857
+ """
8424
6858
  return self._filename
8425
6859
 
8426
6860
  @builtins.property
8427
6861
  def filetype(self) -> str:
6862
+ """
6863
+ The MIME type of the file, eg "text/csv" for CSVs or "application/octet-stream"
6864
+ for binary files.
6865
+ """
8428
6866
  return self._filetype
8429
6867
 
6868
+ @builtins.property
6869
+ def workspace(self) -> Optional[str]:
6870
+ """
6871
+ The workspace in which to upload the file. If not provided, the file will be uploaded to
6872
+ the default workspace for the user's organization, if that is configured and the user
6873
+ has access to it.
6874
+ """
6875
+ return self._workspace
6876
+
8430
6877
 
8431
6878
  ingest_api_InitiateMultipartUploadRequest.__name__ = "InitiateMultipartUploadRequest"
8432
6879
  ingest_api_InitiateMultipartUploadRequest.__qualname__ = "InitiateMultipartUploadRequest"
@@ -9127,7 +7574,7 @@ class ingest_api_NewDatasetIngestDestination(ConjureBeanType):
9127
7574
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
9128
7575
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
9129
7576
  'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]),
9130
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
7577
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
9131
7578
  }
9132
7579
 
9133
7580
  __slots__: List[str] = ['_dataset_name', '_dataset_description', '_properties', '_labels', '_channel_config', '_workspace']
@@ -9183,17 +7630,19 @@ class ingest_api_NewVideoIngestDestination(ConjureBeanType):
9183
7630
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
9184
7631
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
9185
7632
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
9186
- 'video_file_details': ConjureFieldDefinition('videoFileDetails', OptionalTypeWrapper[ingest_api_VideoFileIngestDetails])
7633
+ 'video_file_details': ConjureFieldDefinition('videoFileDetails', OptionalTypeWrapper[ingest_api_VideoFileIngestDetails]),
7634
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
9187
7635
  }
9188
7636
 
9189
- __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_video_file_details']
7637
+ __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_video_file_details', '_workspace']
9190
7638
 
9191
- def __init__(self, labels: List[str], properties: Dict[str, str], description: Optional[str] = None, title: Optional[str] = None, video_file_details: Optional["ingest_api_VideoFileIngestDetails"] = None) -> None:
7639
+ def __init__(self, labels: List[str], properties: Dict[str, str], description: Optional[str] = None, title: Optional[str] = None, video_file_details: Optional["ingest_api_VideoFileIngestDetails"] = None, workspace: Optional[str] = None) -> None:
9192
7640
  self._title = title
9193
7641
  self._description = description
9194
7642
  self._properties = properties
9195
7643
  self._labels = labels
9196
7644
  self._video_file_details = video_file_details
7645
+ self._workspace = workspace
9197
7646
 
9198
7647
  @builtins.property
9199
7648
  def title(self) -> Optional[str]:
@@ -9231,6 +7680,14 @@ If not provided, a name is deduced from the ingested file.
9231
7680
  """
9232
7681
  return self._video_file_details
9233
7682
 
7683
+ @builtins.property
7684
+ def workspace(self) -> Optional[str]:
7685
+ """
7686
+ The workspace in which to create the video. If not provided, the video will be created in the default workspace for
7687
+ the user's organization, if the default workspace for the organization is configured.
7688
+ """
7689
+ return self._workspace
7690
+
9234
7691
 
9235
7692
  ingest_api_NewVideoIngestDestination.__name__ = "NewVideoIngestDestination"
9236
7693
  ingest_api_NewVideoIngestDestination.__qualname__ = "NewVideoIngestDestination"
@@ -9798,7 +8255,7 @@ class ingest_api_TriggerIngest(ConjureBeanType):
9798
8255
  'dataset_description': ConjureFieldDefinition('datasetDescription', OptionalTypeWrapper[str]),
9799
8256
  'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', OptionalTypeWrapper[ingest_api_TimestampMetadata]),
9800
8257
  'channel_config': ConjureFieldDefinition('channelConfig', OptionalTypeWrapper[ingest_api_ChannelConfig]),
9801
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
8258
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
9802
8259
  }
9803
8260
 
9804
8261
  __slots__: List[str] = ['_source', '_properties', '_labels', '_dataset_name', '_dataset_description', '_timestamp_metadata', '_channel_config', '_workspace']
@@ -10159,22 +8616,28 @@ ingest_api_VideoTimestampManifestVisitor.__module__ = "nominal_api.ingest_api"
10159
8616
  class persistent_compute_api_ClientMessage(ConjureUnionType):
10160
8617
  _subscribe: Optional[Dict[str, "persistent_compute_api_StreamingComputeNodeSubscription"]] = None
10161
8618
  _unsubscribe: Optional[List[str]] = None
8619
+ _ping: Optional["persistent_compute_api_Ping"] = None
8620
+ _pong: Optional["persistent_compute_api_Pong"] = None
10162
8621
 
10163
8622
  @builtins.classmethod
10164
8623
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
10165
8624
  return {
10166
8625
  'subscribe': ConjureFieldDefinition('subscribe', Dict[persistent_compute_api_SubscriptionId, persistent_compute_api_StreamingComputeNodeSubscription]),
10167
- 'unsubscribe': ConjureFieldDefinition('unsubscribe', List[persistent_compute_api_SubscriptionId])
8626
+ 'unsubscribe': ConjureFieldDefinition('unsubscribe', List[persistent_compute_api_SubscriptionId]),
8627
+ 'ping': ConjureFieldDefinition('ping', persistent_compute_api_Ping),
8628
+ 'pong': ConjureFieldDefinition('pong', persistent_compute_api_Pong)
10168
8629
  }
10169
8630
 
10170
8631
  def __init__(
10171
8632
  self,
10172
8633
  subscribe: Optional[Dict[str, "persistent_compute_api_StreamingComputeNodeSubscription"]] = None,
10173
8634
  unsubscribe: Optional[List[str]] = None,
8635
+ ping: Optional["persistent_compute_api_Ping"] = None,
8636
+ pong: Optional["persistent_compute_api_Pong"] = None,
10174
8637
  type_of_union: Optional[str] = None
10175
8638
  ) -> None:
10176
8639
  if type_of_union is None:
10177
- if (subscribe is not None) + (unsubscribe is not None) != 1:
8640
+ if (subscribe is not None) + (unsubscribe is not None) + (ping is not None) + (pong is not None) != 1:
10178
8641
  raise ValueError('a union must contain a single member')
10179
8642
 
10180
8643
  if subscribe is not None:
@@ -10183,6 +8646,12 @@ class persistent_compute_api_ClientMessage(ConjureUnionType):
10183
8646
  if unsubscribe is not None:
10184
8647
  self._unsubscribe = unsubscribe
10185
8648
  self._type = 'unsubscribe'
8649
+ if ping is not None:
8650
+ self._ping = ping
8651
+ self._type = 'ping'
8652
+ if pong is not None:
8653
+ self._pong = pong
8654
+ self._type = 'pong'
10186
8655
 
10187
8656
  elif type_of_union == 'subscribe':
10188
8657
  if subscribe is None:
@@ -10194,6 +8663,16 @@ class persistent_compute_api_ClientMessage(ConjureUnionType):
10194
8663
  raise ValueError('a union value must not be None')
10195
8664
  self._unsubscribe = unsubscribe
10196
8665
  self._type = 'unsubscribe'
8666
+ elif type_of_union == 'ping':
8667
+ if ping is None:
8668
+ raise ValueError('a union value must not be None')
8669
+ self._ping = ping
8670
+ self._type = 'ping'
8671
+ elif type_of_union == 'pong':
8672
+ if pong is None:
8673
+ raise ValueError('a union value must not be None')
8674
+ self._pong = pong
8675
+ self._type = 'pong'
10197
8676
 
10198
8677
  @builtins.property
10199
8678
  def subscribe(self) -> Optional[Dict[str, "persistent_compute_api_StreamingComputeNodeSubscription"]]:
@@ -10210,6 +8689,14 @@ for the subscription will be sent periodically via `ServerMessage::subscriptionU
10210
8689
  def unsubscribe(self) -> Optional[List[str]]:
10211
8690
  return self._unsubscribe
10212
8691
 
8692
+ @builtins.property
8693
+ def ping(self) -> Optional["persistent_compute_api_Ping"]:
8694
+ return self._ping
8695
+
8696
+ @builtins.property
8697
+ def pong(self) -> Optional["persistent_compute_api_Pong"]:
8698
+ return self._pong
8699
+
10213
8700
  def accept(self, visitor) -> Any:
10214
8701
  if not isinstance(visitor, persistent_compute_api_ClientMessageVisitor):
10215
8702
  raise ValueError('{} is not an instance of persistent_compute_api_ClientMessageVisitor'.format(visitor.__class__.__name__))
@@ -10217,6 +8704,10 @@ for the subscription will be sent periodically via `ServerMessage::subscriptionU
10217
8704
  return visitor._subscribe(self.subscribe)
10218
8705
  if self._type == 'unsubscribe' and self.unsubscribe is not None:
10219
8706
  return visitor._unsubscribe(self.unsubscribe)
8707
+ if self._type == 'ping' and self.ping is not None:
8708
+ return visitor._ping(self.ping)
8709
+ if self._type == 'pong' and self.pong is not None:
8710
+ return visitor._pong(self.pong)
10220
8711
 
10221
8712
 
10222
8713
  persistent_compute_api_ClientMessage.__name__ = "ClientMessage"
@@ -10234,6 +8725,14 @@ class persistent_compute_api_ClientMessageVisitor:
10234
8725
  def _unsubscribe(self, unsubscribe: List[str]) -> Any:
10235
8726
  pass
10236
8727
 
8728
+ @abstractmethod
8729
+ def _ping(self, ping: "persistent_compute_api_Ping") -> Any:
8730
+ pass
8731
+
8732
+ @abstractmethod
8733
+ def _pong(self, pong: "persistent_compute_api_Pong") -> Any:
8734
+ pass
8735
+
10237
8736
 
10238
8737
  persistent_compute_api_ClientMessageVisitor.__name__ = "ClientMessageVisitor"
10239
8738
  persistent_compute_api_ClientMessageVisitor.__qualname__ = "ClientMessageVisitor"
@@ -10269,25 +8768,89 @@ persistent_compute_api_FullResult.__qualname__ = "FullResult"
10269
8768
  persistent_compute_api_FullResult.__module__ = "nominal_api.persistent_compute_api"
10270
8769
 
10271
8770
 
8771
+ class persistent_compute_api_Ping(ConjureBeanType):
8772
+ """
8773
+ A ping can be sent by both client and server to keep the connection open and check that it is still working.
8774
+ The receiving end should send back a pong immediately.
8775
+ We also include the times that pings and pongs are sent so that we can track latency and/or discover clock
8776
+ drift between server and client.
8777
+ """
8778
+
8779
+ @builtins.classmethod
8780
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
8781
+ return {
8782
+ 'sent_at': ConjureFieldDefinition('sentAt', str)
8783
+ }
8784
+
8785
+ __slots__: List[str] = ['_sent_at']
8786
+
8787
+ def __init__(self, sent_at: str) -> None:
8788
+ self._sent_at = sent_at
8789
+
8790
+ @builtins.property
8791
+ def sent_at(self) -> str:
8792
+ return self._sent_at
8793
+
8794
+
8795
+ persistent_compute_api_Ping.__name__ = "Ping"
8796
+ persistent_compute_api_Ping.__qualname__ = "Ping"
8797
+ persistent_compute_api_Ping.__module__ = "nominal_api.persistent_compute_api"
8798
+
8799
+
8800
+ class persistent_compute_api_Pong(ConjureBeanType):
8801
+
8802
+ @builtins.classmethod
8803
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
8804
+ return {
8805
+ 'ping_originally_sent_at': ConjureFieldDefinition('pingOriginallySentAt', str),
8806
+ 'sent_at': ConjureFieldDefinition('sentAt', str)
8807
+ }
8808
+
8809
+ __slots__: List[str] = ['_ping_originally_sent_at', '_sent_at']
8810
+
8811
+ def __init__(self, ping_originally_sent_at: str, sent_at: str) -> None:
8812
+ self._ping_originally_sent_at = ping_originally_sent_at
8813
+ self._sent_at = sent_at
8814
+
8815
+ @builtins.property
8816
+ def ping_originally_sent_at(self) -> str:
8817
+ return self._ping_originally_sent_at
8818
+
8819
+ @builtins.property
8820
+ def sent_at(self) -> str:
8821
+ return self._sent_at
8822
+
8823
+
8824
+ persistent_compute_api_Pong.__name__ = "Pong"
8825
+ persistent_compute_api_Pong.__qualname__ = "Pong"
8826
+ persistent_compute_api_Pong.__module__ = "nominal_api.persistent_compute_api"
8827
+
8828
+
10272
8829
  class persistent_compute_api_ServerMessage(ConjureUnionType):
10273
8830
  _subscription_update: Optional["persistent_compute_api_SubscriptionUpdate"] = None
10274
8831
  _subscription_error: Optional["persistent_compute_api_SubscriptionError"] = None
8832
+ _ping: Optional["persistent_compute_api_Ping"] = None
8833
+ _pong: Optional["persistent_compute_api_Pong"] = None
10275
8834
 
10276
8835
  @builtins.classmethod
10277
8836
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
10278
8837
  return {
10279
8838
  'subscription_update': ConjureFieldDefinition('subscriptionUpdate', persistent_compute_api_SubscriptionUpdate),
10280
- 'subscription_error': ConjureFieldDefinition('subscriptionError', persistent_compute_api_SubscriptionError)
8839
+ 'subscription_error': ConjureFieldDefinition('subscriptionError', persistent_compute_api_SubscriptionError),
8840
+ 'ping': ConjureFieldDefinition('ping', persistent_compute_api_Ping),
8841
+ 'pong': ConjureFieldDefinition('pong', persistent_compute_api_Pong)
10281
8842
  }
10282
8843
 
10283
8844
  def __init__(
10284
8845
  self,
10285
8846
  subscription_update: Optional["persistent_compute_api_SubscriptionUpdate"] = None,
10286
8847
  subscription_error: Optional["persistent_compute_api_SubscriptionError"] = None,
8848
+ ping: Optional["persistent_compute_api_Ping"] = None,
8849
+ pong: Optional["persistent_compute_api_Pong"] = None,
10287
8850
  type_of_union: Optional[str] = None
10288
8851
  ) -> None:
10289
8852
  if type_of_union is None:
10290
- if (subscription_update is not None) + (subscription_error is not None) != 1:
8853
+ if (subscription_update is not None) + (subscription_error is not None) + (ping is not None) + (pong is not None) != 1:
10291
8854
  raise ValueError('a union must contain a single member')
10292
8855
 
10293
8856
  if subscription_update is not None:
@@ -10296,6 +8859,12 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10296
8859
  if subscription_error is not None:
10297
8860
  self._subscription_error = subscription_error
10298
8861
  self._type = 'subscriptionError'
8862
+ if ping is not None:
8863
+ self._ping = ping
8864
+ self._type = 'ping'
8865
+ if pong is not None:
8866
+ self._pong = pong
8867
+ self._type = 'pong'
10299
8868
 
10300
8869
  elif type_of_union == 'subscriptionUpdate':
10301
8870
  if subscription_update is None:
@@ -10307,6 +8876,16 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10307
8876
  raise ValueError('a union value must not be None')
10308
8877
  self._subscription_error = subscription_error
10309
8878
  self._type = 'subscriptionError'
8879
+ elif type_of_union == 'ping':
8880
+ if ping is None:
8881
+ raise ValueError('a union value must not be None')
8882
+ self._ping = ping
8883
+ self._type = 'ping'
8884
+ elif type_of_union == 'pong':
8885
+ if pong is None:
8886
+ raise ValueError('a union value must not be None')
8887
+ self._pong = pong
8888
+ self._type = 'pong'
10310
8889
 
10311
8890
  @builtins.property
10312
8891
  def subscription_update(self) -> Optional["persistent_compute_api_SubscriptionUpdate"]:
@@ -10316,6 +8895,14 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10316
8895
  def subscription_error(self) -> Optional["persistent_compute_api_SubscriptionError"]:
10317
8896
  return self._subscription_error
10318
8897
 
8898
+ @builtins.property
8899
+ def ping(self) -> Optional["persistent_compute_api_Ping"]:
8900
+ return self._ping
8901
+
8902
+ @builtins.property
8903
+ def pong(self) -> Optional["persistent_compute_api_Pong"]:
8904
+ return self._pong
8905
+
10319
8906
  def accept(self, visitor) -> Any:
10320
8907
  if not isinstance(visitor, persistent_compute_api_ServerMessageVisitor):
10321
8908
  raise ValueError('{} is not an instance of persistent_compute_api_ServerMessageVisitor'.format(visitor.__class__.__name__))
@@ -10323,6 +8910,10 @@ class persistent_compute_api_ServerMessage(ConjureUnionType):
10323
8910
  return visitor._subscription_update(self.subscription_update)
10324
8911
  if self._type == 'subscriptionError' and self.subscription_error is not None:
10325
8912
  return visitor._subscription_error(self.subscription_error)
8913
+ if self._type == 'ping' and self.ping is not None:
8914
+ return visitor._ping(self.ping)
8915
+ if self._type == 'pong' and self.pong is not None:
8916
+ return visitor._pong(self.pong)
10326
8917
 
10327
8918
 
10328
8919
  persistent_compute_api_ServerMessage.__name__ = "ServerMessage"
@@ -10340,6 +8931,14 @@ class persistent_compute_api_ServerMessageVisitor:
10340
8931
  def _subscription_error(self, subscription_error: "persistent_compute_api_SubscriptionError") -> Any:
10341
8932
  pass
10342
8933
 
8934
+ @abstractmethod
8935
+ def _ping(self, ping: "persistent_compute_api_Ping") -> Any:
8936
+ pass
8937
+
8938
+ @abstractmethod
8939
+ def _pong(self, pong: "persistent_compute_api_Pong") -> Any:
8940
+ pass
8941
+
10343
8942
 
10344
8943
  persistent_compute_api_ServerMessageVisitor.__name__ = "ServerMessageVisitor"
10345
8944
  persistent_compute_api_ServerMessageVisitor.__qualname__ = "ServerMessageVisitor"
@@ -13085,7 +11684,7 @@ class scout_asset_api_CreateAssetRequest(ConjureBeanType):
13085
11684
  'data_scopes': ConjureFieldDefinition('dataScopes', List[scout_asset_api_CreateAssetDataScope]),
13086
11685
  'attachments': ConjureFieldDefinition('attachments', List[api_rids_AttachmentRid]),
13087
11686
  'type': ConjureFieldDefinition('type', OptionalTypeWrapper[scout_rids_api_TypeRid]),
13088
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
11687
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
13089
11688
  }
13090
11689
 
13091
11690
  __slots__: List[str] = ['_title', '_description', '_properties', '_labels', '_links', '_data_scopes', '_attachments', '_type', '_workspace']
@@ -13161,7 +11760,7 @@ class scout_asset_api_CreateTypeRequest(ConjureBeanType):
13161
11760
  'property_configs': ConjureFieldDefinition('propertyConfigs', Dict[api_PropertyName, scout_asset_api_PropertyConfig]),
13162
11761
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
13163
11762
  'icon_name': ConjureFieldDefinition('iconName', OptionalTypeWrapper[str]),
13164
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
11763
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
13165
11764
  }
13166
11765
 
13167
11766
  __slots__: List[str] = ['_name', '_property_configs', '_description', '_icon_name', '_workspace']
@@ -13348,7 +11947,7 @@ class scout_asset_api_SearchAssetsQuery(ConjureUnionType):
13348
11947
  'and_': ConjureFieldDefinition('and', List[scout_asset_api_SearchAssetsQuery]),
13349
11948
  'or_': ConjureFieldDefinition('or', List[scout_asset_api_SearchAssetsQuery]),
13350
11949
  'is_staged': ConjureFieldDefinition('isStaged', bool),
13351
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
11950
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
13352
11951
  }
13353
11952
 
13354
11953
  def __init__(
@@ -13627,7 +12226,7 @@ class scout_asset_api_SearchTypesQuery(ConjureUnionType):
13627
12226
  'property': ConjureFieldDefinition('property', api_PropertyName),
13628
12227
  'and_': ConjureFieldDefinition('and', List[scout_asset_api_SearchTypesQuery]),
13629
12228
  'or_': ConjureFieldDefinition('or', List[scout_asset_api_SearchTypesQuery]),
13630
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
12229
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
13631
12230
  }
13632
12231
 
13633
12232
  def __init__(
@@ -15416,6 +14015,41 @@ a file, primarily CSV.
15416
14015
  _decoder = ConjureDecoder()
15417
14016
  return _decoder.decode(_response.json(), scout_catalog_EnrichedDataset, self._return_none_for_unknown_union_types)
15418
14017
 
14018
+ def update_global_dataset_bounds(self, auth_header: str, request: "scout_catalog_UpdateBoundsRequest", rid: str) -> "scout_catalog_Dataset":
14019
+ """
14020
+ Update the bounds for a dataset without updating bounds of files within the dataset. If the
14021
+ current bounds of the dataset are not set, then the bounds of the request will be used. Otherwise,
14022
+ the bounds will be min(current start, request start), max(current end, request end).
14023
+ """
14024
+
14025
+ _headers: Dict[str, Any] = {
14026
+ 'Accept': 'application/json',
14027
+ 'Content-Type': 'application/json',
14028
+ 'Authorization': auth_header,
14029
+ }
14030
+
14031
+ _params: Dict[str, Any] = {
14032
+ }
14033
+
14034
+ _path_params: Dict[str, Any] = {
14035
+ 'rid': rid,
14036
+ }
14037
+
14038
+ _json: Any = ConjureEncoder().default(request)
14039
+
14040
+ _path = '/catalog/v1/datasets/{rid}/bounds-from-streaming'
14041
+ _path = _path.format(**_path_params)
14042
+
14043
+ _response: Response = self._request(
14044
+ 'PUT',
14045
+ self._uri + _path,
14046
+ params=_params,
14047
+ headers=_headers,
14048
+ json=_json)
14049
+
14050
+ _decoder = ConjureDecoder()
14051
+ return _decoder.decode(_response.json(), scout_catalog_Dataset, self._return_none_for_unknown_union_types)
14052
+
15419
14053
  def delete_dataset_series(self, auth_header: str, dataset_rid: str) -> "scout_catalog_DeleteSeriesResult":
15420
14054
 
15421
14055
  _headers: Dict[str, Any] = {
@@ -15672,7 +14306,7 @@ class scout_catalog_CreateDataset(ConjureBeanType):
15672
14306
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
15673
14307
  'granularity': ConjureFieldDefinition('granularity', OptionalTypeWrapper[api_Granularity]),
15674
14308
  'is_v2_dataset': ConjureFieldDefinition('isV2Dataset', OptionalTypeWrapper[bool]),
15675
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
14309
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
15676
14310
  }
15677
14311
 
15678
14312
  __slots__: List[str] = ['_name', '_handle', '_metadata', '_origin_metadata', '_labels', '_properties', '_description', '_granularity', '_is_v2_dataset', '_workspace']
@@ -15803,12 +14437,13 @@ class scout_catalog_Dataset(ConjureBeanType):
15803
14437
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
15804
14438
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
15805
14439
  'timestamp_type': ConjureFieldDefinition('timestampType', scout_catalog_WeakTimestampType),
15806
- 'allow_streaming': ConjureFieldDefinition('allowStreaming', bool)
14440
+ 'allow_streaming': ConjureFieldDefinition('allowStreaming', bool),
14441
+ 'granularity': ConjureFieldDefinition('granularity', api_Granularity)
15807
14442
  }
15808
14443
 
15809
- __slots__: List[str] = ['_rid', '_name', '_handle', '_description', '_origin_metadata', '_bounds', '_properties', '_labels', '_timestamp_type', '_allow_streaming']
14444
+ __slots__: List[str] = ['_rid', '_name', '_handle', '_description', '_origin_metadata', '_bounds', '_properties', '_labels', '_timestamp_type', '_allow_streaming', '_granularity']
15810
14445
 
15811
- def __init__(self, allow_streaming: bool, labels: List[str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], rid: str, timestamp_type: "scout_catalog_WeakTimestampType", bounds: Optional["scout_catalog_Bounds"] = None, description: Optional[str] = None, handle: Optional["scout_catalog_Handle"] = None) -> None:
14446
+ def __init__(self, allow_streaming: bool, granularity: "api_Granularity", labels: List[str], name: str, origin_metadata: "scout_catalog_DatasetOriginMetadata", properties: Dict[str, str], rid: str, timestamp_type: "scout_catalog_WeakTimestampType", bounds: Optional["scout_catalog_Bounds"] = None, description: Optional[str] = None, handle: Optional["scout_catalog_Handle"] = None) -> None:
15812
14447
  self._rid = rid
15813
14448
  self._name = name
15814
14449
  self._handle = handle
@@ -15819,6 +14454,7 @@ class scout_catalog_Dataset(ConjureBeanType):
15819
14454
  self._labels = labels
15820
14455
  self._timestamp_type = timestamp_type
15821
14456
  self._allow_streaming = allow_streaming
14457
+ self._granularity = granularity
15822
14458
 
15823
14459
  @builtins.property
15824
14460
  def rid(self) -> str:
@@ -15860,6 +14496,10 @@ class scout_catalog_Dataset(ConjureBeanType):
15860
14496
  def allow_streaming(self) -> bool:
15861
14497
  return self._allow_streaming
15862
14498
 
14499
+ @builtins.property
14500
+ def granularity(self) -> "api_Granularity":
14501
+ return self._granularity
14502
+
15863
14503
 
15864
14504
  scout_catalog_Dataset.__name__ = "Dataset"
15865
14505
  scout_catalog_Dataset.__qualname__ = "Dataset"
@@ -16949,7 +15589,7 @@ class scout_catalog_SearchDatasetsQuery(ConjureUnionType):
16949
15589
  'archive_status': ConjureFieldDefinition('archiveStatus', bool),
16950
15590
  'and_': ConjureFieldDefinition('and', List[scout_catalog_SearchDatasetsQuery]),
16951
15591
  'or_': ConjureFieldDefinition('or', List[scout_catalog_SearchDatasetsQuery]),
16952
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
15592
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
16953
15593
  }
16954
15594
 
16955
15595
  def __init__(
@@ -23020,15 +21660,15 @@ class scout_checklistexecution_api_ListStreamingChecklistRequest(ConjureBeanType
23020
21660
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23021
21661
  return {
23022
21662
  'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]),
23023
- 'workspace_ids': ConjureFieldDefinition('workspaceIds', List[api_ids_WorkspaceId]),
21663
+ 'workspaces': ConjureFieldDefinition('workspaces', List[api_rids_WorkspaceRid]),
23024
21664
  'page_token': ConjureFieldDefinition('pageToken', OptionalTypeWrapper[str])
23025
21665
  }
23026
21666
 
23027
- __slots__: List[str] = ['_page_size', '_workspace_ids', '_page_token']
21667
+ __slots__: List[str] = ['_page_size', '_workspaces', '_page_token']
23028
21668
 
23029
- def __init__(self, workspace_ids: List[str], page_size: Optional[int] = None, page_token: Optional[str] = None) -> None:
21669
+ def __init__(self, workspaces: List[str], page_size: Optional[int] = None, page_token: Optional[str] = None) -> None:
23030
21670
  self._page_size = page_size
23031
- self._workspace_ids = workspace_ids
21671
+ self._workspaces = workspaces
23032
21672
  self._page_token = page_token
23033
21673
 
23034
21674
  @builtins.property
@@ -23039,8 +21679,8 @@ class scout_checklistexecution_api_ListStreamingChecklistRequest(ConjureBeanType
23039
21679
  return self._page_size
23040
21680
 
23041
21681
  @builtins.property
23042
- def workspace_ids(self) -> List[str]:
23043
- return self._workspace_ids
21682
+ def workspaces(self) -> List[str]:
21683
+ return self._workspaces
23044
21684
 
23045
21685
  @builtins.property
23046
21686
  def page_token(self) -> Optional[str]:
@@ -23979,7 +22619,7 @@ class scout_checks_api_ChecklistSearchQuery(ConjureUnionType):
23979
22619
  'assignee_rid': ConjureFieldDefinition('assigneeRid', scout_rids_api_UserRid),
23980
22620
  'is_published': ConjureFieldDefinition('isPublished', bool),
23981
22621
  'not_': ConjureFieldDefinition('not', scout_checks_api_ChecklistSearchQuery),
23982
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
22622
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
23983
22623
  }
23984
22624
 
23985
22625
  def __init__(
@@ -25014,7 +23654,7 @@ class scout_checks_api_CreateChecklistRequest(ConjureBeanType):
25014
23654
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
25015
23655
  'checklist_variables': ConjureFieldDefinition('checklistVariables', List[scout_checks_api_UnresolvedChecklistVariable]),
25016
23656
  'is_published': ConjureFieldDefinition('isPublished', OptionalTypeWrapper[bool]),
25017
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
23657
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
25018
23658
  }
25019
23659
 
25020
23660
  __slots__: List[str] = ['_commit_message', '_assignee_rid', '_title', '_description', '_functions', '_checks', '_properties', '_labels', '_checklist_variables', '_is_published', '_workspace']
@@ -54833,7 +53473,7 @@ class scout_datasource_connection_api_CreateConnection(ConjureBeanType):
54833
53473
  'scraping': ConjureFieldDefinition('scraping', OptionalTypeWrapper[scout_datasource_connection_api_ScrapingConfig]),
54834
53474
  'should_scrape': ConjureFieldDefinition('shouldScrape', bool),
54835
53475
  'limits': ConjureFieldDefinition('limits', OptionalTypeWrapper[scout_datasource_connection_api_LimitsConfig]),
54836
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
53476
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
54837
53477
  }
54838
53478
 
54839
53479
  __slots__: List[str] = ['_name', '_description', '_connection_details', '_metadata', '_required_tag_names', '_available_tag_values', '_scraping', '_should_scrape', '_limits', '_workspace']
@@ -57035,7 +55675,7 @@ class scout_integrations_api_CreateIntegrationRequest(ConjureBeanType):
57035
55675
  'name': ConjureFieldDefinition('name', str),
57036
55676
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
57037
55677
  'create_integration_details': ConjureFieldDefinition('createIntegrationDetails', scout_integrations_api_CreateIntegrationDetails),
57038
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
55678
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
57039
55679
  }
57040
55680
 
57041
55681
  __slots__: List[str] = ['_name', '_description', '_create_integration_details', '_workspace']
@@ -57949,7 +56589,7 @@ class scout_internal_search_api_SearchQuery(ConjureUnionType):
57949
56589
  'property': ConjureFieldDefinition('property', api_Property),
57950
56590
  'and_': ConjureFieldDefinition('and', List[scout_internal_search_api_SearchQuery]),
57951
56591
  'or_': ConjureFieldDefinition('or', List[scout_internal_search_api_SearchQuery]),
57952
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
56592
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
57953
56593
  }
57954
56594
 
57955
56595
  def __init__(
@@ -59165,7 +57805,7 @@ class scout_metadata_ListPropertiesAndLabelsRequest(ConjureBeanType):
59165
57805
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
59166
57806
  return {
59167
57807
  'resource_types': ConjureFieldDefinition('resourceTypes', OptionalTypeWrapper[List[scout_metadata_ResourceType]]),
59168
- 'workspaces': ConjureFieldDefinition('workspaces', OptionalTypeWrapper[List[api_ids_WorkspaceId]])
57808
+ 'workspaces': ConjureFieldDefinition('workspaces', OptionalTypeWrapper[List[api_rids_WorkspaceRid]])
59169
57809
  }
59170
57810
 
59171
57811
  __slots__: List[str] = ['_resource_types', '_workspaces']
@@ -59340,7 +57980,7 @@ class scout_notebook_api_CreateNotebookRequest(ConjureBeanType):
59340
57980
  'content_v2': ConjureFieldDefinition('contentV2', OptionalTypeWrapper[scout_workbookcommon_api_UnifiedWorkbookContent]),
59341
57981
  'event_refs': ConjureFieldDefinition('eventRefs', List[scout_workbookcommon_api_EventReference]),
59342
57982
  'check_alert_refs': ConjureFieldDefinition('checkAlertRefs', List[scout_workbookcommon_api_CheckAlertReference]),
59343
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
57983
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
59344
57984
  }
59345
57985
 
59346
57986
  __slots__: List[str] = ['_title', '_description', '_notebook_type', '_is_draft', '_state_as_json', '_charts', '_run_rid', '_data_scope', '_layout', '_content', '_content_v2', '_event_refs', '_check_alert_refs', '_workspace']
@@ -59844,7 +58484,7 @@ class scout_notebook_api_SearchNotebooksQuery(ConjureUnionType):
59844
58484
  'notebook_type': ConjureFieldDefinition('notebookType', scout_notebook_api_NotebookType),
59845
58485
  'draft_state': ConjureFieldDefinition('draftState', bool),
59846
58486
  'archived': ConjureFieldDefinition('archived', bool),
59847
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
58487
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
59848
58488
  }
59849
58489
 
59850
58490
  def __init__(
@@ -60823,7 +59463,7 @@ class scout_run_api_CreateRunRequest(ConjureBeanType):
60823
59463
  'attachments': ConjureFieldDefinition('attachments', List[api_rids_AttachmentRid]),
60824
59464
  'asset': ConjureFieldDefinition('asset', OptionalTypeWrapper[scout_rids_api_AssetRid]),
60825
59465
  'assets': ConjureFieldDefinition('assets', List[scout_rids_api_AssetRid]),
60826
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
59466
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
60827
59467
  }
60828
59468
 
60829
59469
  __slots__: List[str] = ['_title', '_description', '_start_time', '_end_time', '_properties', '_labels', '_links', '_run_prefix', '_data_sources', '_attachments', '_asset', '_assets', '_workspace']
@@ -61254,7 +59894,7 @@ class scout_run_api_GetRunByIdRequest(ConjureBeanType):
61254
59894
  return {
61255
59895
  'run_number': ConjureFieldDefinition('runNumber', int),
61256
59896
  'run_prefix': ConjureFieldDefinition('runPrefix', OptionalTypeWrapper[str]),
61257
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
59897
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
61258
59898
  }
61259
59899
 
61260
59900
  __slots__: List[str] = ['_run_number', '_run_prefix', '_workspace']
@@ -61768,7 +60408,7 @@ class scout_run_api_SearchQuery(ConjureUnionType):
61768
60408
  'check_alert_states_filter': ConjureFieldDefinition('checkAlertStatesFilter', scout_run_api_CheckAlertStatesFilter),
61769
60409
  'and_': ConjureFieldDefinition('and', List[scout_run_api_SearchQuery]),
61770
60410
  'or_': ConjureFieldDefinition('or', List[scout_run_api_SearchQuery]),
61771
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
60411
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
61772
60412
  }
61773
60413
 
61774
60414
  def __init__(
@@ -62637,7 +61277,7 @@ class scout_template_api_CreateTemplateRequest(ConjureBeanType):
62637
61277
  'layout': ConjureFieldDefinition('layout', scout_layout_api_WorkbookLayout),
62638
61278
  'content': ConjureFieldDefinition('content', scout_workbookcommon_api_WorkbookContent),
62639
61279
  'message': ConjureFieldDefinition('message', str),
62640
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
61280
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
62641
61281
  }
62642
61282
 
62643
61283
  __slots__: List[str] = ['_title', '_description', '_labels', '_properties', '_is_published', '_charts', '_layout', '_content', '_message', '_workspace']
@@ -62847,7 +61487,7 @@ class scout_template_api_SearchTemplatesQuery(ConjureUnionType):
62847
61487
  'created_by': ConjureFieldDefinition('createdBy', scout_rids_api_UserRid),
62848
61488
  'is_archived': ConjureFieldDefinition('isArchived', bool),
62849
61489
  'is_published': ConjureFieldDefinition('isPublished', bool),
62850
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
61490
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
62851
61491
  }
62852
61492
 
62853
61493
  def __init__(
@@ -65332,7 +63972,7 @@ class scout_video_api_CreateVideoRequest(ConjureBeanType):
65332
63972
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
65333
63973
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
65334
63974
  'origin_metadata': ConjureFieldDefinition('originMetadata', OptionalTypeWrapper[scout_video_api_VideoOriginMetadata]),
65335
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
63975
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
65336
63976
  }
65337
63977
 
65338
63978
  __slots__: List[str] = ['_title', '_description', '_labels', '_properties', '_origin_metadata', '_workspace']
@@ -66065,7 +64705,7 @@ class scout_video_api_SearchVideosQuery(ConjureUnionType):
66065
64705
  'and_': ConjureFieldDefinition('and', List[scout_video_api_SearchVideosQuery]),
66066
64706
  'or_': ConjureFieldDefinition('or', List[scout_video_api_SearchVideosQuery]),
66067
64707
  'ingest_status': ConjureFieldDefinition('ingestStatus', api_IngestStatus),
66068
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
64708
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
66069
64709
  }
66070
64710
 
66071
64711
  def __init__(
@@ -67737,7 +66377,7 @@ class secrets_api_CreateSecretRequest(ConjureBeanType):
67737
66377
  'decrypted_value': ConjureFieldDefinition('decryptedValue', str),
67738
66378
  'properties': ConjureFieldDefinition('properties', Dict[api_PropertyName, api_PropertyValue]),
67739
66379
  'labels': ConjureFieldDefinition('labels', List[api_Label]),
67740
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
66380
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
67741
66381
  }
67742
66382
 
67743
66383
  __slots__: List[str] = ['_name', '_description', '_decrypted_value', '_properties', '_labels', '_workspace']
@@ -67847,7 +66487,7 @@ class secrets_api_SearchSecretsQuery(ConjureUnionType):
67847
66487
  'property': ConjureFieldDefinition('property', api_Property),
67848
66488
  'and_': ConjureFieldDefinition('and', List[secrets_api_SearchSecretsQuery]),
67849
66489
  'or_': ConjureFieldDefinition('or', List[secrets_api_SearchSecretsQuery]),
67850
- 'workspace': ConjureFieldDefinition('workspace', api_ids_WorkspaceId)
66490
+ 'workspace': ConjureFieldDefinition('workspace', api_rids_WorkspaceRid)
67851
66491
  }
67852
66492
 
67853
66493
  def __init__(
@@ -68491,87 +67131,6 @@ secrets_api_UpdateSecretRequest.__qualname__ = "UpdateSecretRequest"
68491
67131
  secrets_api_UpdateSecretRequest.__module__ = "nominal_api.secrets_api"
68492
67132
 
68493
67133
 
68494
- class security_api_workspace_Workspace(ConjureBeanType):
68495
-
68496
- @builtins.classmethod
68497
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
68498
- return {
68499
- 'id': ConjureFieldDefinition('id', api_ids_WorkspaceId),
68500
- 'rid': ConjureFieldDefinition('rid', api_rids_WorkspaceRid),
68501
- 'org': ConjureFieldDefinition('org', authentication_api_OrgRid)
68502
- }
68503
-
68504
- __slots__: List[str] = ['_id', '_rid', '_org']
68505
-
68506
- def __init__(self, id: str, org: str, rid: str) -> None:
68507
- self._id = id
68508
- self._rid = rid
68509
- self._org = org
68510
-
68511
- @builtins.property
68512
- def id(self) -> str:
68513
- """
68514
- A unique identifier for the workspace within the organization. The workspace ID must be lower case alphanumeric characters, optionally separated by hyphens.
68515
- """
68516
- return self._id
68517
-
68518
- @builtins.property
68519
- def rid(self) -> str:
68520
- return self._rid
68521
-
68522
- @builtins.property
68523
- def org(self) -> str:
68524
- return self._org
68525
-
68526
-
68527
- security_api_workspace_Workspace.__name__ = "Workspace"
68528
- security_api_workspace_Workspace.__qualname__ = "Workspace"
68529
- security_api_workspace_Workspace.__module__ = "nominal_api.security_api_workspace"
68530
-
68531
-
68532
- class security_api_workspace_WorkspaceService(Service):
68533
- """
68534
- This service provides information about workspaces. Workspaces provide access control boundaries. All resources in
68535
- Nominal live within a workspace.
68536
- """
68537
-
68538
- def get_workspaces(self, auth_header: str) -> List["security_api_workspace_Workspace"]:
68539
- """
68540
- Gets all workspaces that the requesting user belongs to.
68541
- """
68542
-
68543
- _headers: Dict[str, Any] = {
68544
- 'Accept': 'application/json',
68545
- 'Authorization': auth_header,
68546
- }
68547
-
68548
- _params: Dict[str, Any] = {
68549
- }
68550
-
68551
- _path_params: Dict[str, Any] = {
68552
- }
68553
-
68554
- _json: Any = None
68555
-
68556
- _path = '/workspaces/v1/workspaces'
68557
- _path = _path.format(**_path_params)
68558
-
68559
- _response: Response = self._request(
68560
- 'GET',
68561
- self._uri + _path,
68562
- params=_params,
68563
- headers=_headers,
68564
- json=_json)
68565
-
68566
- _decoder = ConjureDecoder()
68567
- return _decoder.decode(_response.json(), List[security_api_workspace_Workspace], self._return_none_for_unknown_union_types)
68568
-
68569
-
68570
- security_api_workspace_WorkspaceService.__name__ = "WorkspaceService"
68571
- security_api_workspace_WorkspaceService.__qualname__ = "WorkspaceService"
68572
- security_api_workspace_WorkspaceService.__module__ = "nominal_api.security_api_workspace"
68573
-
68574
-
68575
67134
  class storage_datasource_api_CreateNominalDataSourceRequest(ConjureBeanType):
68576
67135
 
68577
67136
  @builtins.classmethod
@@ -68581,7 +67140,7 @@ class storage_datasource_api_CreateNominalDataSourceRequest(ConjureBeanType):
68581
67140
  'description': ConjureFieldDefinition('description', OptionalTypeWrapper[str]),
68582
67141
  'granularity': ConjureFieldDefinition('granularity', OptionalTypeWrapper[api_Granularity]),
68583
67142
  'in_memory_streaming_enabled': ConjureFieldDefinition('inMemoryStreamingEnabled', OptionalTypeWrapper[bool]),
68584
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
67143
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
68585
67144
  }
68586
67145
 
68587
67146
  __slots__: List[str] = ['_id', '_description', '_granularity', '_in_memory_streaming_enabled', '_workspace']
@@ -69801,7 +68360,7 @@ class storage_writer_api_WriteBatchesRequest(ConjureBeanType):
69801
68360
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
69802
68361
  return {
69803
68362
  'batches': ConjureFieldDefinition('batches', List[storage_writer_api_RecordsBatch]),
69804
- 'data_source_rid': ConjureFieldDefinition('dataSourceRid', api_rids_NominalDataSourceRid),
68363
+ 'data_source_rid': ConjureFieldDefinition('dataSourceRid', api_rids_NominalDataSourceOrDatasetRid),
69805
68364
  'asynchronous_insert': ConjureFieldDefinition('asynchronousInsert', OptionalTypeWrapper[bool])
69806
68365
  }
69807
68366
 
@@ -69840,7 +68399,7 @@ class storage_writer_api_WriteBatchesRequestExternal(ConjureBeanType):
69840
68399
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
69841
68400
  return {
69842
68401
  'batches': ConjureFieldDefinition('batches', List[storage_writer_api_RecordsBatchExternal]),
69843
- 'data_source_rid': ConjureFieldDefinition('dataSourceRid', api_rids_NominalDataSourceRid),
68402
+ 'data_source_rid': ConjureFieldDefinition('dataSourceRid', api_rids_NominalDataSourceOrDatasetRid),
69844
68403
  'asynchronous_insert': ConjureFieldDefinition('asynchronousInsert', OptionalTypeWrapper[bool])
69845
68404
  }
69846
68405
 
@@ -70263,7 +68822,7 @@ class themes_api_CreateChartThemeRequest(ConjureBeanType):
70263
68822
  return {
70264
68823
  'name': ConjureFieldDefinition('name', str),
70265
68824
  'content': ConjureFieldDefinition('content', themes_api_ChartThemeContent),
70266
- 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_ids_WorkspaceId])
68825
+ 'workspace': ConjureFieldDefinition('workspace', OptionalTypeWrapper[api_rids_WorkspaceRid])
70267
68826
  }
70268
68827
 
70269
68828
  __slots__: List[str] = ['_name', '_content', '_workspace']
@@ -74169,13 +72728,13 @@ timeseries_seriescache_api_S3Handle.__module__ = "nominal_api.timeseries_seriesc
74169
72728
 
74170
72729
  class upload_api_UploadService(Service):
74171
72730
  """
74172
- The Upload Service manages file uploads to S3.
72731
+ The Upload Service manages file uploads to object storage.
74173
72732
  """
74174
72733
 
74175
72734
  def initiate_multipart_upload(self, auth_header: str, upload_request: "ingest_api_InitiateMultipartUploadRequest") -> "ingest_api_InitiateMultipartUploadResponse":
74176
72735
  """
74177
- Initiates a multipart upload to S3.
74178
- Does not directly upload any parts, but returns an uploadId used to upload parts.
72736
+ Initiates a multipart upload to object storage.
72737
+ Returns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.
74179
72738
  """
74180
72739
 
74181
72740
  _headers: Dict[str, Any] = {
@@ -74275,7 +72834,8 @@ Returns a URL that will execute the upload without further authentication.
74275
72834
 
74276
72835
  def complete_multipart_upload(self, auth_header: str, key: str, upload_id: str, parts: List["ingest_api_Part"] = None) -> "ingest_api_CompleteMultipartUploadResponse":
74277
72836
  """
74278
- Completes a multipart upload to S3. This should be called after all parts have been uploaded.
72837
+ Completes a multipart upload to object storage.
72838
+ This should be called after all parts have been uploaded.
74279
72839
  """
74280
72840
  parts = parts if parts is not None else []
74281
72841
 
@@ -74341,7 +72901,7 @@ Frees storage used by previously uploaded parts and prevents further uploads to
74341
72901
 
74342
72902
  return
74343
72903
 
74344
- def upload_file(self, auth_header: str, body: Any, file_name: str, size_bytes: Optional[int] = None) -> str:
72904
+ def upload_file(self, auth_header: str, body: Any, file_name: str, size_bytes: Optional[int] = None, workspace: Optional[str] = None) -> str:
74345
72905
  """
74346
72906
  Uploads a file to S3. Intended for smaller files.
74347
72907
  """
@@ -74355,6 +72915,7 @@ Frees storage used by previously uploaded parts and prevents further uploads to
74355
72915
  _params: Dict[str, Any] = {
74356
72916
  'fileName': file_name,
74357
72917
  'sizeBytes': size_bytes,
72918
+ 'workspace': workspace,
74358
72919
  }
74359
72920
 
74360
72921
  _path_params: Dict[str, Any] = {
@@ -74431,8 +72992,6 @@ scout_channelvariables_api_ChannelVariableName = str
74431
72992
 
74432
72993
  scout_datareview_api_ManualCheckEvaluationRid = str
74433
72994
 
74434
- api_ids_WorkspaceId = str
74435
-
74436
72995
  scout_asset_api_Channel = str
74437
72996
 
74438
72997
  scout_rids_api_FunctionRid = str
@@ -74507,8 +73066,6 @@ storage_writer_api_Field = str
74507
73066
 
74508
73067
  api_TagName = str
74509
73068
 
74510
- authentication_api_UserRid = str
74511
-
74512
73069
  scout_datasource_connection_api_ConnectionRid = str
74513
73070
 
74514
73071
  scout_channelvariables_api_ComputeSpecV1 = str
@@ -74595,6 +73152,8 @@ scout_run_api_ConnectionRid = str
74595
73152
 
74596
73153
  timeseries_logicalseries_api_DatasetName = str
74597
73154
 
73155
+ api_rids_NominalDataSourceOrDatasetRid = str
73156
+
74598
73157
  api_SeriesArchetypeRid = str
74599
73158
 
74600
73159
  scout_versioning_api_TagRid = str
@@ -74609,8 +73168,6 @@ scout_api_HexColor = str
74609
73168
 
74610
73169
  scout_datasource_connection_api_SecretRid = str
74611
73170
 
74612
- authorization_ApiKeyRid = str
74613
-
74614
73171
  scout_rids_api_ApiKeyRid = str
74615
73172
 
74616
73173
  ingest_api_ChannelPrefix = OptionalTypeWrapper[str]