nominal-api 0.606.0__py3-none-any.whl → 0.607.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
@@ -1240,6 +1240,1589 @@ 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
+
1243
2826
  class comments_api_Comment(ConjureBeanType):
1244
2827
 
1245
2828
  @builtins.classmethod
@@ -5005,6 +6588,9 @@ ingest_api_CompleteMultipartUploadResponse.__module__ = "nominal_api.ingest_api"
5005
6588
 
5006
6589
 
5007
6590
  class ingest_api_CsvOpts(ConjureBeanType):
6591
+ """
6592
+ Options for ingesting csv files. Supported file formats include .csv, .csv.gz
6593
+ """
5008
6594
 
5009
6595
  @builtins.classmethod
5010
6596
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
@@ -5955,6 +7541,7 @@ class ingest_api_IngestOptions(ConjureUnionType):
5955
7541
  _mcap_protobuf_timeseries: Optional["ingest_api_McapProtobufTimeseriesOpts"] = None
5956
7542
  _journal_json: Optional["ingest_api_JournalJsonOpts"] = None
5957
7543
  _csv: Optional["ingest_api_CsvOpts"] = None
7544
+ _parquet: Optional["ingest_api_ParquetOpts"] = None
5958
7545
  _video: Optional["ingest_api_VideoOpts"] = None
5959
7546
  _custom: Optional["ingest_api_CustomOpts"] = None
5960
7547
 
@@ -5965,6 +7552,7 @@ class ingest_api_IngestOptions(ConjureUnionType):
5965
7552
  'mcap_protobuf_timeseries': ConjureFieldDefinition('mcapProtobufTimeseries', ingest_api_McapProtobufTimeseriesOpts),
5966
7553
  'journal_json': ConjureFieldDefinition('journalJson', ingest_api_JournalJsonOpts),
5967
7554
  'csv': ConjureFieldDefinition('csv', ingest_api_CsvOpts),
7555
+ 'parquet': ConjureFieldDefinition('parquet', ingest_api_ParquetOpts),
5968
7556
  'video': ConjureFieldDefinition('video', ingest_api_VideoOpts),
5969
7557
  'custom': ConjureFieldDefinition('custom', ingest_api_CustomOpts)
5970
7558
  }
@@ -5975,12 +7563,13 @@ class ingest_api_IngestOptions(ConjureUnionType):
5975
7563
  mcap_protobuf_timeseries: Optional["ingest_api_McapProtobufTimeseriesOpts"] = None,
5976
7564
  journal_json: Optional["ingest_api_JournalJsonOpts"] = None,
5977
7565
  csv: Optional["ingest_api_CsvOpts"] = None,
7566
+ parquet: Optional["ingest_api_ParquetOpts"] = None,
5978
7567
  video: Optional["ingest_api_VideoOpts"] = None,
5979
7568
  custom: Optional["ingest_api_CustomOpts"] = None,
5980
7569
  type_of_union: Optional[str] = None
5981
7570
  ) -> None:
5982
7571
  if type_of_union is None:
5983
- if (dataflash is not None) + (mcap_protobuf_timeseries is not None) + (journal_json is not None) + (csv is not None) + (video is not None) + (custom is not None) != 1:
7572
+ if (dataflash is not None) + (mcap_protobuf_timeseries is not None) + (journal_json is not None) + (csv is not None) + (parquet is not None) + (video is not None) + (custom is not None) != 1:
5984
7573
  raise ValueError('a union must contain a single member')
5985
7574
 
5986
7575
  if dataflash is not None:
@@ -5995,6 +7584,9 @@ class ingest_api_IngestOptions(ConjureUnionType):
5995
7584
  if csv is not None:
5996
7585
  self._csv = csv
5997
7586
  self._type = 'csv'
7587
+ if parquet is not None:
7588
+ self._parquet = parquet
7589
+ self._type = 'parquet'
5998
7590
  if video is not None:
5999
7591
  self._video = video
6000
7592
  self._type = 'video'
@@ -6022,6 +7614,11 @@ class ingest_api_IngestOptions(ConjureUnionType):
6022
7614
  raise ValueError('a union value must not be None')
6023
7615
  self._csv = csv
6024
7616
  self._type = 'csv'
7617
+ elif type_of_union == 'parquet':
7618
+ if parquet is None:
7619
+ raise ValueError('a union value must not be None')
7620
+ self._parquet = parquet
7621
+ self._type = 'parquet'
6025
7622
  elif type_of_union == 'video':
6026
7623
  if video is None:
6027
7624
  raise ValueError('a union value must not be None')
@@ -6049,6 +7646,10 @@ class ingest_api_IngestOptions(ConjureUnionType):
6049
7646
  def csv(self) -> Optional["ingest_api_CsvOpts"]:
6050
7647
  return self._csv
6051
7648
 
7649
+ @builtins.property
7650
+ def parquet(self) -> Optional["ingest_api_ParquetOpts"]:
7651
+ return self._parquet
7652
+
6052
7653
  @builtins.property
6053
7654
  def video(self) -> Optional["ingest_api_VideoOpts"]:
6054
7655
  return self._video
@@ -6068,6 +7669,8 @@ class ingest_api_IngestOptions(ConjureUnionType):
6068
7669
  return visitor._journal_json(self.journal_json)
6069
7670
  if self._type == 'csv' and self.csv is not None:
6070
7671
  return visitor._csv(self.csv)
7672
+ if self._type == 'parquet' and self.parquet is not None:
7673
+ return visitor._parquet(self.parquet)
6071
7674
  if self._type == 'video' and self.video is not None:
6072
7675
  return visitor._video(self.video)
6073
7676
  if self._type == 'custom' and self.custom is not None:
@@ -6097,6 +7700,10 @@ class ingest_api_IngestOptionsVisitor:
6097
7700
  def _csv(self, csv: "ingest_api_CsvOpts") -> Any:
6098
7701
  pass
6099
7702
 
7703
+ @abstractmethod
7704
+ def _parquet(self, parquet: "ingest_api_ParquetOpts") -> Any:
7705
+ pass
7706
+
6100
7707
  @abstractmethod
6101
7708
  def _video(self, video: "ingest_api_VideoOpts") -> Any:
6102
7709
  pass
@@ -7726,6 +9333,75 @@ ingest_api_NoTimestampManifest.__qualname__ = "NoTimestampManifest"
7726
9333
  ingest_api_NoTimestampManifest.__module__ = "nominal_api.ingest_api"
7727
9334
 
7728
9335
 
9336
+ class ingest_api_ParquetOpts(ConjureBeanType):
9337
+ """
9338
+ Options for ingesting parquet files.
9339
+ Supported file formats include .parquet, .parquet.gz
9340
+ and archives such as .tar, .tar.gz, and .zip (must set the isArchive flag).
9341
+ """
9342
+
9343
+ @builtins.classmethod
9344
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
9345
+ return {
9346
+ 'source': ConjureFieldDefinition('source', ingest_api_IngestSource),
9347
+ 'target': ConjureFieldDefinition('target', ingest_api_DatasetIngestTarget),
9348
+ 'timestamp_metadata': ConjureFieldDefinition('timestampMetadata', ingest_api_TimestampMetadata),
9349
+ 'channel_prefix': ConjureFieldDefinition('channelPrefix', ingest_api_ChannelPrefix),
9350
+ 'tag_keys_from_columns': ConjureFieldDefinition('tagKeysFromColumns', OptionalTypeWrapper[List[api_TagName]]),
9351
+ 'additional_file_tags': ConjureFieldDefinition('additionalFileTags', OptionalTypeWrapper[Dict[api_TagName, api_TagValue]]),
9352
+ 'is_archive': ConjureFieldDefinition('isArchive', OptionalTypeWrapper[bool])
9353
+ }
9354
+
9355
+ __slots__: List[str] = ['_source', '_target', '_timestamp_metadata', '_channel_prefix', '_tag_keys_from_columns', '_additional_file_tags', '_is_archive']
9356
+
9357
+ def __init__(self, source: "ingest_api_IngestSource", target: "ingest_api_DatasetIngestTarget", timestamp_metadata: "ingest_api_TimestampMetadata", additional_file_tags: Optional[Dict[str, str]] = None, channel_prefix: Optional[str] = None, is_archive: Optional[bool] = None, tag_keys_from_columns: Optional[List[str]] = None) -> None:
9358
+ self._source = source
9359
+ self._target = target
9360
+ self._timestamp_metadata = timestamp_metadata
9361
+ self._channel_prefix = channel_prefix
9362
+ self._tag_keys_from_columns = tag_keys_from_columns
9363
+ self._additional_file_tags = additional_file_tags
9364
+ self._is_archive = is_archive
9365
+
9366
+ @builtins.property
9367
+ def source(self) -> "ingest_api_IngestSource":
9368
+ return self._source
9369
+
9370
+ @builtins.property
9371
+ def target(self) -> "ingest_api_DatasetIngestTarget":
9372
+ return self._target
9373
+
9374
+ @builtins.property
9375
+ def timestamp_metadata(self) -> "ingest_api_TimestampMetadata":
9376
+ return self._timestamp_metadata
9377
+
9378
+ @builtins.property
9379
+ def channel_prefix(self) -> Optional[str]:
9380
+ return self._channel_prefix
9381
+
9382
+ @builtins.property
9383
+ def tag_keys_from_columns(self) -> Optional[List[str]]:
9384
+ return self._tag_keys_from_columns
9385
+
9386
+ @builtins.property
9387
+ def additional_file_tags(self) -> Optional[Dict[str, str]]:
9388
+ return self._additional_file_tags
9389
+
9390
+ @builtins.property
9391
+ def is_archive(self) -> Optional[bool]:
9392
+ """
9393
+ If true, the file is an archive. Supported archive formats include
9394
+ .tar, .tar.gz, and .zip. Only files ending in .parquet
9395
+ within the archive will be ingested. If field not provided, defaults to false.
9396
+ """
9397
+ return self._is_archive
9398
+
9399
+
9400
+ ingest_api_ParquetOpts.__name__ = "ParquetOpts"
9401
+ ingest_api_ParquetOpts.__qualname__ = "ParquetOpts"
9402
+ ingest_api_ParquetOpts.__module__ = "nominal_api.ingest_api"
9403
+
9404
+
7729
9405
  class ingest_api_Part(ConjureBeanType):
7730
9406
 
7731
9407
  @builtins.classmethod
@@ -20637,28 +22313,18 @@ class scout_checklistexecution_api_BatchChecklistLiveStatusRequest(ConjureBeanTy
20637
22313
  @builtins.classmethod
20638
22314
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
20639
22315
  return {
20640
- 'requests': ConjureFieldDefinition('requests', List[scout_checklistexecution_api_ChecklistLiveStatusRequest]),
20641
- 'computation_range': ConjureFieldDefinition('computationRange', OptionalTypeWrapper[scout_checklistexecution_api_ComputationRange])
22316
+ 'requests': ConjureFieldDefinition('requests', List[scout_checklistexecution_api_ChecklistLiveStatusRequest])
20642
22317
  }
20643
22318
 
20644
- __slots__: List[str] = ['_requests', '_computation_range']
22319
+ __slots__: List[str] = ['_requests']
20645
22320
 
20646
- def __init__(self, requests: List["scout_checklistexecution_api_ChecklistLiveStatusRequest"], computation_range: Optional["scout_checklistexecution_api_ComputationRange"] = None) -> None:
22321
+ def __init__(self, requests: List["scout_checklistexecution_api_ChecklistLiveStatusRequest"]) -> None:
20647
22322
  self._requests = requests
20648
- self._computation_range = computation_range
20649
22323
 
20650
22324
  @builtins.property
20651
22325
  def requests(self) -> List["scout_checklistexecution_api_ChecklistLiveStatusRequest"]:
20652
22326
  return self._requests
20653
22327
 
20654
- @builtins.property
20655
- def computation_range(self) -> Optional["scout_checklistexecution_api_ComputationRange"]:
20656
- """
20657
- The time range over which status and last failure were calculated. Failures outside of this time range
20658
- will not be included in the results. If not specified, defaults to evaluating from now minus sixty minutes to now.
20659
- """
20660
- return self._computation_range
20661
-
20662
22328
 
20663
22329
  scout_checklistexecution_api_BatchChecklistLiveStatusRequest.__name__ = "BatchChecklistLiveStatusRequest"
20664
22330
  scout_checklistexecution_api_BatchChecklistLiveStatusRequest.__qualname__ = "BatchChecklistLiveStatusRequest"
@@ -20670,27 +22336,17 @@ class scout_checklistexecution_api_BatchChecklistLiveStatusResponse(ConjureBeanT
20670
22336
  @builtins.classmethod
20671
22337
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
20672
22338
  return {
20673
- 'computation_range': ConjureFieldDefinition('computationRange', scout_checklistexecution_api_ComputationRange),
20674
- 'checklist_results': ConjureFieldDefinition('checklistResults', List[scout_checklistexecution_api_ChecklistLiveStatusResponse])
22339
+ 'checklist_live_status_responses': ConjureFieldDefinition('checklistLiveStatusResponses', List[scout_checklistexecution_api_ChecklistLiveStatusResponse])
20675
22340
  }
20676
22341
 
20677
- __slots__: List[str] = ['_computation_range', '_checklist_results']
20678
-
20679
- def __init__(self, checklist_results: List["scout_checklistexecution_api_ChecklistLiveStatusResponse"], computation_range: "scout_checklistexecution_api_ComputationRange") -> None:
20680
- self._computation_range = computation_range
20681
- self._checklist_results = checklist_results
22342
+ __slots__: List[str] = ['_checklist_live_status_responses']
20682
22343
 
20683
- @builtins.property
20684
- def computation_range(self) -> "scout_checklistexecution_api_ComputationRange":
20685
- """
20686
- The time range over which status and last failure were calculated. Failures outside of this time range
20687
- will not be included in the results.
20688
- """
20689
- return self._computation_range
22344
+ def __init__(self, checklist_live_status_responses: List["scout_checklistexecution_api_ChecklistLiveStatusResponse"]) -> None:
22345
+ self._checklist_live_status_responses = checklist_live_status_responses
20690
22346
 
20691
22347
  @builtins.property
20692
- def checklist_results(self) -> List["scout_checklistexecution_api_ChecklistLiveStatusResponse"]:
20693
- return self._checklist_results
22348
+ def checklist_live_status_responses(self) -> List["scout_checklistexecution_api_ChecklistLiveStatusResponse"]:
22349
+ return self._checklist_live_status_responses
20694
22350
 
20695
22351
 
20696
22352
  scout_checklistexecution_api_BatchChecklistLiveStatusResponse.__name__ = "BatchChecklistLiveStatusResponse"
@@ -20698,6 +22354,52 @@ scout_checklistexecution_api_BatchChecklistLiveStatusResponse.__qualname__ = "Ba
20698
22354
  scout_checklistexecution_api_BatchChecklistLiveStatusResponse.__module__ = "nominal_api.scout_checklistexecution_api"
20699
22355
 
20700
22356
 
22357
+ class scout_checklistexecution_api_BatchGetStreamingChecklistRequest(ConjureBeanType):
22358
+
22359
+ @builtins.classmethod
22360
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
22361
+ return {
22362
+ 'checklist_rids': ConjureFieldDefinition('checklistRids', List[scout_rids_api_ChecklistRid])
22363
+ }
22364
+
22365
+ __slots__: List[str] = ['_checklist_rids']
22366
+
22367
+ def __init__(self, checklist_rids: List[str]) -> None:
22368
+ self._checklist_rids = checklist_rids
22369
+
22370
+ @builtins.property
22371
+ def checklist_rids(self) -> List[str]:
22372
+ return self._checklist_rids
22373
+
22374
+
22375
+ scout_checklistexecution_api_BatchGetStreamingChecklistRequest.__name__ = "BatchGetStreamingChecklistRequest"
22376
+ scout_checklistexecution_api_BatchGetStreamingChecklistRequest.__qualname__ = "BatchGetStreamingChecklistRequest"
22377
+ scout_checklistexecution_api_BatchGetStreamingChecklistRequest.__module__ = "nominal_api.scout_checklistexecution_api"
22378
+
22379
+
22380
+ class scout_checklistexecution_api_BatchGetStreamingChecklistResponse(ConjureBeanType):
22381
+
22382
+ @builtins.classmethod
22383
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
22384
+ return {
22385
+ 'streaming_checklist_infos': ConjureFieldDefinition('streamingChecklistInfos', Dict[scout_rids_api_ChecklistRid, scout_checklistexecution_api_StreamingChecklistInfo])
22386
+ }
22387
+
22388
+ __slots__: List[str] = ['_streaming_checklist_infos']
22389
+
22390
+ def __init__(self, streaming_checklist_infos: Dict[str, "scout_checklistexecution_api_StreamingChecklistInfo"]) -> None:
22391
+ self._streaming_checklist_infos = streaming_checklist_infos
22392
+
22393
+ @builtins.property
22394
+ def streaming_checklist_infos(self) -> Dict[str, "scout_checklistexecution_api_StreamingChecklistInfo"]:
22395
+ return self._streaming_checklist_infos
22396
+
22397
+
22398
+ scout_checklistexecution_api_BatchGetStreamingChecklistResponse.__name__ = "BatchGetStreamingChecklistResponse"
22399
+ scout_checklistexecution_api_BatchGetStreamingChecklistResponse.__qualname__ = "BatchGetStreamingChecklistResponse"
22400
+ scout_checklistexecution_api_BatchGetStreamingChecklistResponse.__module__ = "nominal_api.scout_checklistexecution_api"
22401
+
22402
+
20701
22403
  class scout_checklistexecution_api_BatchValidateChecklistResolutionRequest(ConjureBeanType):
20702
22404
 
20703
22405
  @builtins.classmethod
@@ -20796,33 +22498,33 @@ class scout_checklistexecution_api_CheckLiveStatusResponse(ConjureBeanType):
20796
22498
  @builtins.classmethod
20797
22499
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
20798
22500
  return {
20799
- 'result': ConjureFieldDefinition('result', scout_checklistexecution_api_CheckLiveStatusResult),
22501
+ 'status': ConjureFieldDefinition('status', scout_checklistexecution_api_CheckStatus),
20800
22502
  'check_rid': ConjureFieldDefinition('checkRid', scout_rids_api_CheckRid),
20801
- 'check_implementation_index': ConjureFieldDefinition('checkImplementationIndex', OptionalTypeWrapper[int])
22503
+ 'check_parameter_index': ConjureFieldDefinition('checkParameterIndex', OptionalTypeWrapper[int])
20802
22504
  }
20803
22505
 
20804
- __slots__: List[str] = ['_result', '_check_rid', '_check_implementation_index']
22506
+ __slots__: List[str] = ['_status', '_check_rid', '_check_parameter_index']
20805
22507
 
20806
- def __init__(self, check_rid: str, result: "scout_checklistexecution_api_CheckLiveStatusResult", check_implementation_index: Optional[int] = None) -> None:
20807
- self._result = result
22508
+ def __init__(self, check_rid: str, status: "scout_checklistexecution_api_CheckStatus", check_parameter_index: Optional[int] = None) -> None:
22509
+ self._status = status
20808
22510
  self._check_rid = check_rid
20809
- self._check_implementation_index = check_implementation_index
22511
+ self._check_parameter_index = check_parameter_index
20810
22512
 
20811
22513
  @builtins.property
20812
- def result(self) -> "scout_checklistexecution_api_CheckLiveStatusResult":
20813
- return self._result
22514
+ def status(self) -> "scout_checklistexecution_api_CheckStatus":
22515
+ return self._status
20814
22516
 
20815
22517
  @builtins.property
20816
22518
  def check_rid(self) -> str:
20817
22519
  return self._check_rid
20818
22520
 
20819
22521
  @builtins.property
20820
- def check_implementation_index(self) -> Optional[int]:
22522
+ def check_parameter_index(self) -> Optional[int]:
20821
22523
  """
20822
22524
  Checks can define a single range computation which can evaluate over multiple implementations of a context.
20823
22525
  The check implementation index will correspond to the implementation index of the check condition.
20824
22526
  """
20825
- return self._check_implementation_index
22527
+ return self._check_parameter_index
20826
22528
 
20827
22529
 
20828
22530
  scout_checklistexecution_api_CheckLiveStatusResponse.__name__ = "CheckLiveStatusResponse"
@@ -20830,130 +22532,31 @@ scout_checklistexecution_api_CheckLiveStatusResponse.__qualname__ = "CheckLiveSt
20830
22532
  scout_checklistexecution_api_CheckLiveStatusResponse.__module__ = "nominal_api.scout_checklistexecution_api"
20831
22533
 
20832
22534
 
20833
- class scout_checklistexecution_api_CheckLiveStatusResult(ConjureUnionType):
20834
- _computed: Optional["scout_checklistexecution_api_ComputedResult"] = None
20835
- _not_computable: Optional["scout_checklistexecution_api_NotComputable"] = None
20836
- _failed_to_resolve: Optional["scout_checklistexecution_api_FailedToResolve"] = None
20837
-
20838
- @builtins.classmethod
20839
- def _options(cls) -> Dict[str, ConjureFieldDefinition]:
20840
- return {
20841
- 'computed': ConjureFieldDefinition('computed', scout_checklistexecution_api_ComputedResult),
20842
- 'not_computable': ConjureFieldDefinition('notComputable', scout_checklistexecution_api_NotComputable),
20843
- 'failed_to_resolve': ConjureFieldDefinition('failedToResolve', scout_checklistexecution_api_FailedToResolve)
20844
- }
20845
-
20846
- def __init__(
20847
- self,
20848
- computed: Optional["scout_checklistexecution_api_ComputedResult"] = None,
20849
- not_computable: Optional["scout_checklistexecution_api_NotComputable"] = None,
20850
- failed_to_resolve: Optional["scout_checklistexecution_api_FailedToResolve"] = None,
20851
- type_of_union: Optional[str] = None
20852
- ) -> None:
20853
- if type_of_union is None:
20854
- if (computed is not None) + (not_computable is not None) + (failed_to_resolve is not None) != 1:
20855
- raise ValueError('a union must contain a single member')
20856
-
20857
- if computed is not None:
20858
- self._computed = computed
20859
- self._type = 'computed'
20860
- if not_computable is not None:
20861
- self._not_computable = not_computable
20862
- self._type = 'notComputable'
20863
- if failed_to_resolve is not None:
20864
- self._failed_to_resolve = failed_to_resolve
20865
- self._type = 'failedToResolve'
20866
-
20867
- elif type_of_union == 'computed':
20868
- if computed is None:
20869
- raise ValueError('a union value must not be None')
20870
- self._computed = computed
20871
- self._type = 'computed'
20872
- elif type_of_union == 'notComputable':
20873
- if not_computable is None:
20874
- raise ValueError('a union value must not be None')
20875
- self._not_computable = not_computable
20876
- self._type = 'notComputable'
20877
- elif type_of_union == 'failedToResolve':
20878
- if failed_to_resolve is None:
20879
- raise ValueError('a union value must not be None')
20880
- self._failed_to_resolve = failed_to_resolve
20881
- self._type = 'failedToResolve'
20882
-
20883
- @builtins.property
20884
- def computed(self) -> Optional["scout_checklistexecution_api_ComputedResult"]:
20885
- return self._computed
20886
-
20887
- @builtins.property
20888
- def not_computable(self) -> Optional["scout_checklistexecution_api_NotComputable"]:
20889
- """
20890
- The check cannot be computed in a streaming context. This would be returned if an overly expensive
20891
- computation was attempted, such as checking the rolling median over the last year of data.
20892
- """
20893
- return self._not_computable
20894
-
20895
- @builtins.property
20896
- def failed_to_resolve(self) -> Optional["scout_checklistexecution_api_FailedToResolve"]:
20897
- """
20898
- The checklist cannot be applied to the data sources.
20899
- """
20900
- return self._failed_to_resolve
20901
-
20902
- def accept(self, visitor) -> Any:
20903
- if not isinstance(visitor, scout_checklistexecution_api_CheckLiveStatusResultVisitor):
20904
- raise ValueError('{} is not an instance of scout_checklistexecution_api_CheckLiveStatusResultVisitor'.format(visitor.__class__.__name__))
20905
- if self._type == 'computed' and self.computed is not None:
20906
- return visitor._computed(self.computed)
20907
- if self._type == 'notComputable' and self.not_computable is not None:
20908
- return visitor._not_computable(self.not_computable)
20909
- if self._type == 'failedToResolve' and self.failed_to_resolve is not None:
20910
- return visitor._failed_to_resolve(self.failed_to_resolve)
20911
-
20912
-
20913
- scout_checklistexecution_api_CheckLiveStatusResult.__name__ = "CheckLiveStatusResult"
20914
- scout_checklistexecution_api_CheckLiveStatusResult.__qualname__ = "CheckLiveStatusResult"
20915
- scout_checklistexecution_api_CheckLiveStatusResult.__module__ = "nominal_api.scout_checklistexecution_api"
20916
-
20917
-
20918
- class scout_checklistexecution_api_CheckLiveStatusResultVisitor:
20919
-
20920
- @abstractmethod
20921
- def _computed(self, computed: "scout_checklistexecution_api_ComputedResult") -> Any:
20922
- pass
20923
-
20924
- @abstractmethod
20925
- def _not_computable(self, not_computable: "scout_checklistexecution_api_NotComputable") -> Any:
20926
- pass
20927
-
20928
- @abstractmethod
20929
- def _failed_to_resolve(self, failed_to_resolve: "scout_checklistexecution_api_FailedToResolve") -> Any:
20930
- pass
20931
-
20932
-
20933
- scout_checklistexecution_api_CheckLiveStatusResultVisitor.__name__ = "CheckLiveStatusResultVisitor"
20934
- scout_checklistexecution_api_CheckLiveStatusResultVisitor.__qualname__ = "CheckLiveStatusResultVisitor"
20935
- scout_checklistexecution_api_CheckLiveStatusResultVisitor.__module__ = "nominal_api.scout_checklistexecution_api"
20936
-
20937
-
20938
22535
  class scout_checklistexecution_api_CheckStatus(ConjureUnionType):
20939
22536
  _pass_: Optional["scout_checklistexecution_api_Pass"] = None
20940
22537
  _fail: Optional["scout_checklistexecution_api_Fail"] = None
22538
+ _invalid: Optional["scout_checklistexecution_api_Invalid"] = None
22539
+ _skipped: Optional["scout_checklistexecution_api_Skipped"] = None
20941
22540
 
20942
22541
  @builtins.classmethod
20943
22542
  def _options(cls) -> Dict[str, ConjureFieldDefinition]:
20944
22543
  return {
20945
22544
  'pass_': ConjureFieldDefinition('pass', scout_checklistexecution_api_Pass),
20946
- 'fail': ConjureFieldDefinition('fail', scout_checklistexecution_api_Fail)
22545
+ 'fail': ConjureFieldDefinition('fail', scout_checklistexecution_api_Fail),
22546
+ 'invalid': ConjureFieldDefinition('invalid', scout_checklistexecution_api_Invalid),
22547
+ 'skipped': ConjureFieldDefinition('skipped', scout_checklistexecution_api_Skipped)
20947
22548
  }
20948
22549
 
20949
22550
  def __init__(
20950
22551
  self,
20951
22552
  pass_: Optional["scout_checklistexecution_api_Pass"] = None,
20952
22553
  fail: Optional["scout_checklistexecution_api_Fail"] = None,
22554
+ invalid: Optional["scout_checklistexecution_api_Invalid"] = None,
22555
+ skipped: Optional["scout_checklistexecution_api_Skipped"] = None,
20953
22556
  type_of_union: Optional[str] = None
20954
22557
  ) -> None:
20955
22558
  if type_of_union is None:
20956
- if (pass_ is not None) + (fail is not None) != 1:
22559
+ if (pass_ is not None) + (fail is not None) + (invalid is not None) + (skipped is not None) != 1:
20957
22560
  raise ValueError('a union must contain a single member')
20958
22561
 
20959
22562
  if pass_ is not None:
@@ -20962,6 +22565,12 @@ class scout_checklistexecution_api_CheckStatus(ConjureUnionType):
20962
22565
  if fail is not None:
20963
22566
  self._fail = fail
20964
22567
  self._type = 'fail'
22568
+ if invalid is not None:
22569
+ self._invalid = invalid
22570
+ self._type = 'invalid'
22571
+ if skipped is not None:
22572
+ self._skipped = skipped
22573
+ self._type = 'skipped'
20965
22574
 
20966
22575
  elif type_of_union == 'pass':
20967
22576
  if pass_ is None:
@@ -20973,6 +22582,16 @@ class scout_checklistexecution_api_CheckStatus(ConjureUnionType):
20973
22582
  raise ValueError('a union value must not be None')
20974
22583
  self._fail = fail
20975
22584
  self._type = 'fail'
22585
+ elif type_of_union == 'invalid':
22586
+ if invalid is None:
22587
+ raise ValueError('a union value must not be None')
22588
+ self._invalid = invalid
22589
+ self._type = 'invalid'
22590
+ elif type_of_union == 'skipped':
22591
+ if skipped is None:
22592
+ raise ValueError('a union value must not be None')
22593
+ self._skipped = skipped
22594
+ self._type = 'skipped'
20976
22595
 
20977
22596
  @builtins.property
20978
22597
  def pass_(self) -> Optional["scout_checklistexecution_api_Pass"]:
@@ -20988,6 +22607,24 @@ class scout_checklistexecution_api_CheckStatus(ConjureUnionType):
20988
22607
  """
20989
22608
  return self._fail
20990
22609
 
22610
+ @builtins.property
22611
+ def invalid(self) -> Optional["scout_checklistexecution_api_Invalid"]:
22612
+ """
22613
+ The check was evaluated and is currently in state INVALID.
22614
+ This signifies that the check could not be evaluated due to an internal error or
22615
+ if an overly expensive computation was attempted.
22616
+ """
22617
+ return self._invalid
22618
+
22619
+ @builtins.property
22620
+ def skipped(self) -> Optional["scout_checklistexecution_api_Skipped"]:
22621
+ """
22622
+ The check was skipped and was not evaluated.
22623
+ This typically occurs when the check performs operations that are not supported in the streaming context,
22624
+ or if the required channels could not be resolved.
22625
+ """
22626
+ return self._skipped
22627
+
20991
22628
  def accept(self, visitor) -> Any:
20992
22629
  if not isinstance(visitor, scout_checklistexecution_api_CheckStatusVisitor):
20993
22630
  raise ValueError('{} is not an instance of scout_checklistexecution_api_CheckStatusVisitor'.format(visitor.__class__.__name__))
@@ -20995,6 +22632,10 @@ class scout_checklistexecution_api_CheckStatus(ConjureUnionType):
20995
22632
  return visitor._pass(self.pass_)
20996
22633
  if self._type == 'fail' and self.fail is not None:
20997
22634
  return visitor._fail(self.fail)
22635
+ if self._type == 'invalid' and self.invalid is not None:
22636
+ return visitor._invalid(self.invalid)
22637
+ if self._type == 'skipped' and self.skipped is not None:
22638
+ return visitor._skipped(self.skipped)
20998
22639
 
20999
22640
 
21000
22641
  scout_checklistexecution_api_CheckStatus.__name__ = "CheckStatus"
@@ -21012,6 +22653,14 @@ class scout_checklistexecution_api_CheckStatusVisitor:
21012
22653
  def _fail(self, fail: "scout_checklistexecution_api_Fail") -> Any:
21013
22654
  pass
21014
22655
 
22656
+ @abstractmethod
22657
+ def _invalid(self, invalid: "scout_checklistexecution_api_Invalid") -> Any:
22658
+ pass
22659
+
22660
+ @abstractmethod
22661
+ def _skipped(self, skipped: "scout_checklistexecution_api_Skipped") -> Any:
22662
+ pass
22663
+
21015
22664
 
21016
22665
  scout_checklistexecution_api_CheckStatusVisitor.__name__ = "CheckStatusVisitor"
21017
22666
  scout_checklistexecution_api_CheckStatusVisitor.__qualname__ = "CheckStatusVisitor"
@@ -21025,8 +22674,7 @@ class scout_checklistexecution_api_ChecklistExecutionService(Service):
21025
22674
 
21026
22675
  def checklist_live_status(self, auth_header: str, request: "scout_checklistexecution_api_BatchChecklistLiveStatusRequest") -> "scout_checklistexecution_api_BatchChecklistLiveStatusResponse":
21027
22676
  """
21028
- For each request, get the current status and last failing time (if possible) for
21029
- every automatic check against the given run.
22677
+ For each request, get the latest status for each check in a streaming checklist against the given asset.
21030
22678
  """
21031
22679
 
21032
22680
  _headers: Dict[str, Any] = {
@@ -21058,8 +22706,8 @@ every automatic check against the given run.
21058
22706
 
21059
22707
  def execute_streaming_checklist(self, auth_header: str, request: "scout_checklistexecution_api_ExecuteChecklistForAssetsRequest") -> None:
21060
22708
  """
21061
- Triggers a checklist to run continuously against assets. Returns a ChecklistAlreadyRunning error if the
21062
- checklist is already running for the given asset.
22709
+ Triggers a checklist to run continuously against assets.
22710
+ If the checklist is already running for the given asset, replace the existing configuration with the one specified by the request.
21063
22711
  """
21064
22712
 
21065
22713
  _headers: Dict[str, Any] = {
@@ -21154,7 +22802,7 @@ checklist is already running for the given asset.
21154
22802
 
21155
22803
  def get_streaming_checklist(self, auth_header: str, checklist_rid: str) -> "scout_checklistexecution_api_StreamingChecklistInfo":
21156
22804
  """
21157
- Retrieves information about a streaming checklist using the provided checklistRid.
22805
+ Retrieves the set of assets and their execution configurations for a streaming checklist specified by the checklistRid.
21158
22806
  """
21159
22807
 
21160
22808
  _headers: Dict[str, Any] = {
@@ -21184,6 +22832,39 @@ checklist is already running for the given asset.
21184
22832
  _decoder = ConjureDecoder()
21185
22833
  return _decoder.decode(_response.json(), scout_checklistexecution_api_StreamingChecklistInfo, self._return_none_for_unknown_union_types)
21186
22834
 
22835
+ def batch_get_streaming_checklist(self, auth_header: str, request: "scout_checklistexecution_api_BatchGetStreamingChecklistRequest") -> "scout_checklistexecution_api_BatchGetStreamingChecklistResponse":
22836
+ """
22837
+ Retrieves the set of assets and their execution configurations for all streaming checklists specified by the request.
22838
+ If a streaming checklist is not found, it will not be included in the response.
22839
+ """
22840
+
22841
+ _headers: Dict[str, Any] = {
22842
+ 'Accept': 'application/json',
22843
+ 'Content-Type': 'application/json',
22844
+ 'Authorization': auth_header,
22845
+ }
22846
+
22847
+ _params: Dict[str, Any] = {
22848
+ }
22849
+
22850
+ _path_params: Dict[str, Any] = {
22851
+ }
22852
+
22853
+ _json: Any = ConjureEncoder().default(request)
22854
+
22855
+ _path = '/scout/v2/checklist-execution/get-streaming-checklists'
22856
+ _path = _path.format(**_path_params)
22857
+
22858
+ _response: Response = self._request(
22859
+ 'POST',
22860
+ self._uri + _path,
22861
+ params=_params,
22862
+ headers=_headers,
22863
+ json=_json)
22864
+
22865
+ _decoder = ConjureDecoder()
22866
+ return _decoder.decode(_response.json(), scout_checklistexecution_api_BatchGetStreamingChecklistResponse, self._return_none_for_unknown_union_types)
22867
+
21187
22868
  def stop_streaming_checklist(self, auth_header: str, checklist_rid: str) -> None:
21188
22869
  """
21189
22870
  Stops the execution of a streaming checklist on all assets.
@@ -21315,147 +22996,175 @@ scout_checklistexecution_api_ChecklistExecutionService.__qualname__ = "Checklist
21315
22996
  scout_checklistexecution_api_ChecklistExecutionService.__module__ = "nominal_api.scout_checklistexecution_api"
21316
22997
 
21317
22998
 
21318
- class scout_checklistexecution_api_ChecklistLiveStatusRequest(ConjureBeanType):
21319
- """
21320
- If commit is not provided, the latest commit on main will be used. At least one of runRid or assetRid must be provided, but not both.
21321
- """
22999
+ class scout_checklistexecution_api_ChecklistLiveStatus(ConjureUnionType):
23000
+ _running: Optional["scout_checklistexecution_api_StreamingChecklistRunning"] = None
23001
+ _initializing: Optional["scout_checklistexecution_api_StreamingChecklistInitializing"] = None
23002
+ _failed: Optional["scout_checklistexecution_api_StreamingChecklistFailed"] = None
21322
23003
 
21323
23004
  @builtins.classmethod
21324
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23005
+ def _options(cls) -> Dict[str, ConjureFieldDefinition]:
21325
23006
  return {
21326
- 'checklist_rid': ConjureFieldDefinition('checklistRid', scout_rids_api_ChecklistRid),
21327
- 'commit': ConjureFieldDefinition('commit', OptionalTypeWrapper[scout_versioning_api_CommitId]),
21328
- 'run_rid': ConjureFieldDefinition('runRid', OptionalTypeWrapper[scout_run_api_RunRid]),
21329
- 'asset_rid': ConjureFieldDefinition('assetRid', OptionalTypeWrapper[scout_rids_api_AssetRid])
23007
+ 'running': ConjureFieldDefinition('running', scout_checklistexecution_api_StreamingChecklistRunning),
23008
+ 'initializing': ConjureFieldDefinition('initializing', scout_checklistexecution_api_StreamingChecklistInitializing),
23009
+ 'failed': ConjureFieldDefinition('failed', scout_checklistexecution_api_StreamingChecklistFailed)
21330
23010
  }
21331
23011
 
21332
- __slots__: List[str] = ['_checklist_rid', '_commit', '_run_rid', '_asset_rid']
23012
+ def __init__(
23013
+ self,
23014
+ running: Optional["scout_checklistexecution_api_StreamingChecklistRunning"] = None,
23015
+ initializing: Optional["scout_checklistexecution_api_StreamingChecklistInitializing"] = None,
23016
+ failed: Optional["scout_checklistexecution_api_StreamingChecklistFailed"] = None,
23017
+ type_of_union: Optional[str] = None
23018
+ ) -> None:
23019
+ if type_of_union is None:
23020
+ if (running is not None) + (initializing is not None) + (failed is not None) != 1:
23021
+ raise ValueError('a union must contain a single member')
21333
23022
 
21334
- def __init__(self, checklist_rid: str, asset_rid: Optional[str] = None, commit: Optional[str] = None, run_rid: Optional[str] = None) -> None:
21335
- self._checklist_rid = checklist_rid
21336
- self._commit = commit
21337
- self._run_rid = run_rid
21338
- self._asset_rid = asset_rid
23023
+ if running is not None:
23024
+ self._running = running
23025
+ self._type = 'running'
23026
+ if initializing is not None:
23027
+ self._initializing = initializing
23028
+ self._type = 'initializing'
23029
+ if failed is not None:
23030
+ self._failed = failed
23031
+ self._type = 'failed'
21339
23032
 
21340
- @builtins.property
21341
- def checklist_rid(self) -> str:
21342
- return self._checklist_rid
23033
+ elif type_of_union == 'running':
23034
+ if running is None:
23035
+ raise ValueError('a union value must not be None')
23036
+ self._running = running
23037
+ self._type = 'running'
23038
+ elif type_of_union == 'initializing':
23039
+ if initializing is None:
23040
+ raise ValueError('a union value must not be None')
23041
+ self._initializing = initializing
23042
+ self._type = 'initializing'
23043
+ elif type_of_union == 'failed':
23044
+ if failed is None:
23045
+ raise ValueError('a union value must not be None')
23046
+ self._failed = failed
23047
+ self._type = 'failed'
21343
23048
 
21344
23049
  @builtins.property
21345
- def commit(self) -> Optional[str]:
21346
- return self._commit
23050
+ def running(self) -> Optional["scout_checklistexecution_api_StreamingChecklistRunning"]:
23051
+ """
23052
+ The streaming checklist is currently executing against the asset.
23053
+ """
23054
+ return self._running
21347
23055
 
21348
23056
  @builtins.property
21349
- def run_rid(self) -> Optional[str]:
21350
- return self._run_rid
23057
+ def initializing(self) -> Optional["scout_checklistexecution_api_StreamingChecklistInitializing"]:
23058
+ """
23059
+ The streaming checklist is currently initializing against the asset.
23060
+ """
23061
+ return self._initializing
21351
23062
 
21352
23063
  @builtins.property
21353
- def asset_rid(self) -> Optional[str]:
21354
- return self._asset_rid
21355
-
23064
+ def failed(self) -> Optional["scout_checklistexecution_api_StreamingChecklistFailed"]:
23065
+ """
23066
+ The streaming checklist failed unexpectedly. Please contact support.
23067
+ """
23068
+ return self._failed
21356
23069
 
21357
- scout_checklistexecution_api_ChecklistLiveStatusRequest.__name__ = "ChecklistLiveStatusRequest"
21358
- scout_checklistexecution_api_ChecklistLiveStatusRequest.__qualname__ = "ChecklistLiveStatusRequest"
21359
- scout_checklistexecution_api_ChecklistLiveStatusRequest.__module__ = "nominal_api.scout_checklistexecution_api"
23070
+ def accept(self, visitor) -> Any:
23071
+ if not isinstance(visitor, scout_checklistexecution_api_ChecklistLiveStatusVisitor):
23072
+ raise ValueError('{} is not an instance of scout_checklistexecution_api_ChecklistLiveStatusVisitor'.format(visitor.__class__.__name__))
23073
+ if self._type == 'running' and self.running is not None:
23074
+ return visitor._running(self.running)
23075
+ if self._type == 'initializing' and self.initializing is not None:
23076
+ return visitor._initializing(self.initializing)
23077
+ if self._type == 'failed' and self.failed is not None:
23078
+ return visitor._failed(self.failed)
21360
23079
 
21361
23080
 
21362
- class scout_checklistexecution_api_ChecklistLiveStatusResponse(ConjureBeanType):
23081
+ scout_checklistexecution_api_ChecklistLiveStatus.__name__ = "ChecklistLiveStatus"
23082
+ scout_checklistexecution_api_ChecklistLiveStatus.__qualname__ = "ChecklistLiveStatus"
23083
+ scout_checklistexecution_api_ChecklistLiveStatus.__module__ = "nominal_api.scout_checklistexecution_api"
21363
23084
 
21364
- @builtins.classmethod
21365
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21366
- return {
21367
- 'checklist_rid': ConjureFieldDefinition('checklistRid', scout_rids_api_ChecklistRid),
21368
- 'check_results': ConjureFieldDefinition('checkResults', List[scout_checklistexecution_api_CheckLiveStatusResponse])
21369
- }
21370
23085
 
21371
- __slots__: List[str] = ['_checklist_rid', '_check_results']
23086
+ class scout_checklistexecution_api_ChecklistLiveStatusVisitor:
21372
23087
 
21373
- def __init__(self, check_results: List["scout_checklistexecution_api_CheckLiveStatusResponse"], checklist_rid: str) -> None:
21374
- self._checklist_rid = checklist_rid
21375
- self._check_results = check_results
23088
+ @abstractmethod
23089
+ def _running(self, running: "scout_checklistexecution_api_StreamingChecklistRunning") -> Any:
23090
+ pass
21376
23091
 
21377
- @builtins.property
21378
- def checklist_rid(self) -> str:
21379
- return self._checklist_rid
23092
+ @abstractmethod
23093
+ def _initializing(self, initializing: "scout_checklistexecution_api_StreamingChecklistInitializing") -> Any:
23094
+ pass
21380
23095
 
21381
- @builtins.property
21382
- def check_results(self) -> List["scout_checklistexecution_api_CheckLiveStatusResponse"]:
21383
- return self._check_results
23096
+ @abstractmethod
23097
+ def _failed(self, failed: "scout_checklistexecution_api_StreamingChecklistFailed") -> Any:
23098
+ pass
21384
23099
 
21385
23100
 
21386
- scout_checklistexecution_api_ChecklistLiveStatusResponse.__name__ = "ChecklistLiveStatusResponse"
21387
- scout_checklistexecution_api_ChecklistLiveStatusResponse.__qualname__ = "ChecklistLiveStatusResponse"
21388
- scout_checklistexecution_api_ChecklistLiveStatusResponse.__module__ = "nominal_api.scout_checklistexecution_api"
23101
+ scout_checklistexecution_api_ChecklistLiveStatusVisitor.__name__ = "ChecklistLiveStatusVisitor"
23102
+ scout_checklistexecution_api_ChecklistLiveStatusVisitor.__qualname__ = "ChecklistLiveStatusVisitor"
23103
+ scout_checklistexecution_api_ChecklistLiveStatusVisitor.__module__ = "nominal_api.scout_checklistexecution_api"
21389
23104
 
21390
23105
 
21391
- class scout_checklistexecution_api_ComputationRange(ConjureBeanType):
21392
- """
21393
- The time range over which status and last failure were calculated. Failures outside of this time range
21394
- will not be included in the results.
21395
- """
23106
+ class scout_checklistexecution_api_ChecklistLiveStatusRequest(ConjureBeanType):
21396
23107
 
21397
23108
  @builtins.classmethod
21398
23109
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21399
23110
  return {
21400
- 'start': ConjureFieldDefinition('start', api_Timestamp),
21401
- 'end': ConjureFieldDefinition('end', api_Timestamp)
23111
+ 'checklist_rid': ConjureFieldDefinition('checklistRid', scout_rids_api_ChecklistRid),
23112
+ 'asset_rid': ConjureFieldDefinition('assetRid', scout_rids_api_AssetRid)
21402
23113
  }
21403
23114
 
21404
- __slots__: List[str] = ['_start', '_end']
23115
+ __slots__: List[str] = ['_checklist_rid', '_asset_rid']
21405
23116
 
21406
- def __init__(self, end: "api_Timestamp", start: "api_Timestamp") -> None:
21407
- self._start = start
21408
- self._end = end
23117
+ def __init__(self, asset_rid: str, checklist_rid: str) -> None:
23118
+ self._checklist_rid = checklist_rid
23119
+ self._asset_rid = asset_rid
21409
23120
 
21410
23121
  @builtins.property
21411
- def start(self) -> "api_Timestamp":
21412
- return self._start
23122
+ def checklist_rid(self) -> str:
23123
+ return self._checklist_rid
21413
23124
 
21414
23125
  @builtins.property
21415
- def end(self) -> "api_Timestamp":
21416
- return self._end
23126
+ def asset_rid(self) -> str:
23127
+ return self._asset_rid
21417
23128
 
21418
23129
 
21419
- scout_checklistexecution_api_ComputationRange.__name__ = "ComputationRange"
21420
- scout_checklistexecution_api_ComputationRange.__qualname__ = "ComputationRange"
21421
- scout_checklistexecution_api_ComputationRange.__module__ = "nominal_api.scout_checklistexecution_api"
23130
+ scout_checklistexecution_api_ChecklistLiveStatusRequest.__name__ = "ChecklistLiveStatusRequest"
23131
+ scout_checklistexecution_api_ChecklistLiveStatusRequest.__qualname__ = "ChecklistLiveStatusRequest"
23132
+ scout_checklistexecution_api_ChecklistLiveStatusRequest.__module__ = "nominal_api.scout_checklistexecution_api"
21422
23133
 
21423
23134
 
21424
- class scout_checklistexecution_api_ComputedResult(ConjureBeanType):
23135
+ class scout_checklistexecution_api_ChecklistLiveStatusResponse(ConjureBeanType):
21425
23136
 
21426
23137
  @builtins.classmethod
21427
23138
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21428
23139
  return {
21429
- 'status': ConjureFieldDefinition('status', scout_checklistexecution_api_CheckStatus),
21430
- 'last_failure': ConjureFieldDefinition('lastFailure', scout_checklistexecution_api_LastFailure)
23140
+ 'checklist_rid': ConjureFieldDefinition('checklistRid', scout_rids_api_ChecklistRid),
23141
+ 'asset_rid': ConjureFieldDefinition('assetRid', scout_rids_api_AssetRid),
23142
+ 'status': ConjureFieldDefinition('status', scout_checklistexecution_api_ChecklistLiveStatus)
21431
23143
  }
21432
23144
 
21433
- __slots__: List[str] = ['_status', '_last_failure']
23145
+ __slots__: List[str] = ['_checklist_rid', '_asset_rid', '_status']
21434
23146
 
21435
- def __init__(self, last_failure: "scout_checklistexecution_api_LastFailure", status: "scout_checklistexecution_api_CheckStatus") -> None:
23147
+ def __init__(self, asset_rid: str, checklist_rid: str, status: "scout_checklistexecution_api_ChecklistLiveStatus") -> None:
23148
+ self._checklist_rid = checklist_rid
23149
+ self._asset_rid = asset_rid
21436
23150
  self._status = status
21437
- self._last_failure = last_failure
21438
23151
 
21439
23152
  @builtins.property
21440
- def status(self) -> "scout_checklistexecution_api_CheckStatus":
21441
- """
21442
- The current status of a check at the time it was evaluated.
21443
- """
21444
- return self._status
23153
+ def checklist_rid(self) -> str:
23154
+ return self._checklist_rid
21445
23155
 
21446
23156
  @builtins.property
21447
- def last_failure(self) -> "scout_checklistexecution_api_LastFailure":
21448
- """
21449
- If computed, represents the last time the check failed.
21450
- Can also represent that the last failure hasn't been computed, or is currently being computed.
21451
- If the check is currently failing, the current failure is returned.
21452
- """
21453
- return self._last_failure
23157
+ def asset_rid(self) -> str:
23158
+ return self._asset_rid
23159
+
23160
+ @builtins.property
23161
+ def status(self) -> "scout_checklistexecution_api_ChecklistLiveStatus":
23162
+ return self._status
21454
23163
 
21455
23164
 
21456
- scout_checklistexecution_api_ComputedResult.__name__ = "ComputedResult"
21457
- scout_checklistexecution_api_ComputedResult.__qualname__ = "ComputedResult"
21458
- scout_checklistexecution_api_ComputedResult.__module__ = "nominal_api.scout_checklistexecution_api"
23165
+ scout_checklistexecution_api_ChecklistLiveStatusResponse.__name__ = "ChecklistLiveStatusResponse"
23166
+ scout_checklistexecution_api_ChecklistLiveStatusResponse.__qualname__ = "ChecklistLiveStatusResponse"
23167
+ scout_checklistexecution_api_ChecklistLiveStatusResponse.__module__ = "nominal_api.scout_checklistexecution_api"
21459
23168
 
21460
23169
 
21461
23170
  class scout_checklistexecution_api_Computing(ConjureBeanType):
@@ -21550,35 +23259,6 @@ scout_checklistexecution_api_Fail.__qualname__ = "Fail"
21550
23259
  scout_checklistexecution_api_Fail.__module__ = "nominal_api.scout_checklistexecution_api"
21551
23260
 
21552
23261
 
21553
- class scout_checklistexecution_api_FailedToResolve(ConjureBeanType):
21554
- """
21555
- The checklist cannot be applied to the data sources.
21556
- """
21557
-
21558
- @builtins.classmethod
21559
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21560
- return {
21561
- 'variable_name': ConjureFieldDefinition('variableName', str)
21562
- }
21563
-
21564
- __slots__: List[str] = ['_variable_name']
21565
-
21566
- def __init__(self, variable_name: str) -> None:
21567
- self._variable_name = variable_name
21568
-
21569
- @builtins.property
21570
- def variable_name(self) -> str:
21571
- """
21572
- The variable name that couldn't be resolved to a series.
21573
- """
21574
- return self._variable_name
21575
-
21576
-
21577
- scout_checklistexecution_api_FailedToResolve.__name__ = "FailedToResolve"
21578
- scout_checklistexecution_api_FailedToResolve.__qualname__ = "FailedToResolve"
21579
- scout_checklistexecution_api_FailedToResolve.__module__ = "nominal_api.scout_checklistexecution_api"
21580
-
21581
-
21582
23262
  class scout_checklistexecution_api_Failure(ConjureBeanType):
21583
23263
  """
21584
23264
  The time range where a check was failing.
@@ -21611,6 +23291,22 @@ scout_checklistexecution_api_Failure.__qualname__ = "Failure"
21611
23291
  scout_checklistexecution_api_Failure.__module__ = "nominal_api.scout_checklistexecution_api"
21612
23292
 
21613
23293
 
23294
+ class scout_checklistexecution_api_Invalid(ConjureBeanType):
23295
+
23296
+ @builtins.classmethod
23297
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23298
+ return {
23299
+ }
23300
+
23301
+ __slots__: List[str] = []
23302
+
23303
+
23304
+
23305
+ scout_checklistexecution_api_Invalid.__name__ = "Invalid"
23306
+ scout_checklistexecution_api_Invalid.__qualname__ = "Invalid"
23307
+ scout_checklistexecution_api_Invalid.__module__ = "nominal_api.scout_checklistexecution_api"
23308
+
23309
+
21614
23310
  class scout_checklistexecution_api_InvalidStreamingComputeNode(ConjureEnumType):
21615
23311
 
21616
23312
  POINT_PERSISTENCE = 'POINT_PERSISTENCE'
@@ -21827,124 +23523,95 @@ class scout_checklistexecution_api_ListStreamingChecklistForAssetResponse(Conjur
21827
23523
  return self._next_page_token
21828
23524
 
21829
23525
 
21830
- scout_checklistexecution_api_ListStreamingChecklistForAssetResponse.__name__ = "ListStreamingChecklistForAssetResponse"
21831
- scout_checklistexecution_api_ListStreamingChecklistForAssetResponse.__qualname__ = "ListStreamingChecklistForAssetResponse"
21832
- scout_checklistexecution_api_ListStreamingChecklistForAssetResponse.__module__ = "nominal_api.scout_checklistexecution_api"
21833
-
21834
-
21835
- class scout_checklistexecution_api_ListStreamingChecklistRequest(ConjureBeanType):
21836
-
21837
- @builtins.classmethod
21838
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21839
- return {
21840
- 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]),
21841
- 'workspaces': ConjureFieldDefinition('workspaces', List[api_rids_WorkspaceRid]),
21842
- 'page_token': ConjureFieldDefinition('pageToken', OptionalTypeWrapper[str])
21843
- }
21844
-
21845
- __slots__: List[str] = ['_page_size', '_workspaces', '_page_token']
21846
-
21847
- def __init__(self, workspaces: List[str], page_size: Optional[int] = None, page_token: Optional[str] = None) -> None:
21848
- self._page_size = page_size
21849
- self._workspaces = workspaces
21850
- self._page_token = page_token
21851
-
21852
- @builtins.property
21853
- def page_size(self) -> Optional[int]:
21854
- """
21855
- Page sizes greater than 10_000 will be rejected. Default pageSize is 100.
21856
- """
21857
- return self._page_size
21858
-
21859
- @builtins.property
21860
- def workspaces(self) -> List[str]:
21861
- return self._workspaces
21862
-
21863
- @builtins.property
21864
- def page_token(self) -> Optional[str]:
21865
- return self._page_token
21866
-
21867
-
21868
- scout_checklistexecution_api_ListStreamingChecklistRequest.__name__ = "ListStreamingChecklistRequest"
21869
- scout_checklistexecution_api_ListStreamingChecklistRequest.__qualname__ = "ListStreamingChecklistRequest"
21870
- scout_checklistexecution_api_ListStreamingChecklistRequest.__module__ = "nominal_api.scout_checklistexecution_api"
21871
-
21872
-
21873
- class scout_checklistexecution_api_ListStreamingChecklistResponse(ConjureBeanType):
21874
-
21875
- @builtins.classmethod
21876
- def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21877
- return {
21878
- 'checklists': ConjureFieldDefinition('checklists', List[scout_rids_api_ChecklistRid]),
21879
- 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[str])
21880
- }
21881
-
21882
- __slots__: List[str] = ['_checklists', '_next_page_token']
21883
-
21884
- def __init__(self, checklists: List[str], next_page_token: Optional[str] = None) -> None:
21885
- self._checklists = checklists
21886
- self._next_page_token = next_page_token
21887
-
21888
- @builtins.property
21889
- def checklists(self) -> List[str]:
21890
- return self._checklists
21891
-
21892
- @builtins.property
21893
- def next_page_token(self) -> Optional[str]:
21894
- return self._next_page_token
21895
-
21896
-
21897
- scout_checklistexecution_api_ListStreamingChecklistResponse.__name__ = "ListStreamingChecklistResponse"
21898
- scout_checklistexecution_api_ListStreamingChecklistResponse.__qualname__ = "ListStreamingChecklistResponse"
21899
- scout_checklistexecution_api_ListStreamingChecklistResponse.__module__ = "nominal_api.scout_checklistexecution_api"
23526
+ scout_checklistexecution_api_ListStreamingChecklistForAssetResponse.__name__ = "ListStreamingChecklistForAssetResponse"
23527
+ scout_checklistexecution_api_ListStreamingChecklistForAssetResponse.__qualname__ = "ListStreamingChecklistForAssetResponse"
23528
+ scout_checklistexecution_api_ListStreamingChecklistForAssetResponse.__module__ = "nominal_api.scout_checklistexecution_api"
21900
23529
 
21901
23530
 
21902
- class scout_checklistexecution_api_NoPreviousFailure(ConjureBeanType):
21903
- """
21904
- No previous failure was computed for the check.
21905
- """
23531
+ class scout_checklistexecution_api_ListStreamingChecklistRequest(ConjureBeanType):
21906
23532
 
21907
23533
  @builtins.classmethod
21908
23534
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21909
23535
  return {
23536
+ 'page_size': ConjureFieldDefinition('pageSize', OptionalTypeWrapper[int]),
23537
+ 'workspaces': ConjureFieldDefinition('workspaces', List[api_rids_WorkspaceRid]),
23538
+ 'page_token': ConjureFieldDefinition('pageToken', OptionalTypeWrapper[str])
21910
23539
  }
21911
23540
 
21912
- __slots__: List[str] = []
23541
+ __slots__: List[str] = ['_page_size', '_workspaces', '_page_token']
21913
23542
 
23543
+ def __init__(self, workspaces: List[str], page_size: Optional[int] = None, page_token: Optional[str] = None) -> None:
23544
+ self._page_size = page_size
23545
+ self._workspaces = workspaces
23546
+ self._page_token = page_token
21914
23547
 
23548
+ @builtins.property
23549
+ def page_size(self) -> Optional[int]:
23550
+ """
23551
+ Page sizes greater than 10_000 will be rejected. Default pageSize is 100.
23552
+ """
23553
+ return self._page_size
21915
23554
 
21916
- scout_checklistexecution_api_NoPreviousFailure.__name__ = "NoPreviousFailure"
21917
- scout_checklistexecution_api_NoPreviousFailure.__qualname__ = "NoPreviousFailure"
21918
- scout_checklistexecution_api_NoPreviousFailure.__module__ = "nominal_api.scout_checklistexecution_api"
23555
+ @builtins.property
23556
+ def workspaces(self) -> List[str]:
23557
+ return self._workspaces
21919
23558
 
23559
+ @builtins.property
23560
+ def page_token(self) -> Optional[str]:
23561
+ return self._page_token
21920
23562
 
21921
- class scout_checklistexecution_api_NotComputable(ConjureBeanType):
21922
- """
21923
- The result cannot be computed in a streaming context.
21924
- """
23563
+
23564
+ scout_checklistexecution_api_ListStreamingChecklistRequest.__name__ = "ListStreamingChecklistRequest"
23565
+ scout_checklistexecution_api_ListStreamingChecklistRequest.__qualname__ = "ListStreamingChecklistRequest"
23566
+ scout_checklistexecution_api_ListStreamingChecklistRequest.__module__ = "nominal_api.scout_checklistexecution_api"
23567
+
23568
+
23569
+ class scout_checklistexecution_api_ListStreamingChecklistResponse(ConjureBeanType):
21925
23570
 
21926
23571
  @builtins.classmethod
21927
23572
  def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
21928
23573
  return {
21929
- 'message': ConjureFieldDefinition('message', str)
23574
+ 'checklists': ConjureFieldDefinition('checklists', List[scout_rids_api_ChecklistRid]),
23575
+ 'next_page_token': ConjureFieldDefinition('nextPageToken', OptionalTypeWrapper[str])
21930
23576
  }
21931
23577
 
21932
- __slots__: List[str] = ['_message']
23578
+ __slots__: List[str] = ['_checklists', '_next_page_token']
21933
23579
 
21934
- def __init__(self, message: str) -> None:
21935
- self._message = message
23580
+ def __init__(self, checklists: List[str], next_page_token: Optional[str] = None) -> None:
23581
+ self._checklists = checklists
23582
+ self._next_page_token = next_page_token
21936
23583
 
21937
23584
  @builtins.property
21938
- def message(self) -> str:
21939
- """
21940
- Why the result couldn't be computed
21941
- """
21942
- return self._message
23585
+ def checklists(self) -> List[str]:
23586
+ return self._checklists
23587
+
23588
+ @builtins.property
23589
+ def next_page_token(self) -> Optional[str]:
23590
+ return self._next_page_token
21943
23591
 
21944
23592
 
21945
- scout_checklistexecution_api_NotComputable.__name__ = "NotComputable"
21946
- scout_checklistexecution_api_NotComputable.__qualname__ = "NotComputable"
21947
- scout_checklistexecution_api_NotComputable.__module__ = "nominal_api.scout_checklistexecution_api"
23593
+ scout_checklistexecution_api_ListStreamingChecklistResponse.__name__ = "ListStreamingChecklistResponse"
23594
+ scout_checklistexecution_api_ListStreamingChecklistResponse.__qualname__ = "ListStreamingChecklistResponse"
23595
+ scout_checklistexecution_api_ListStreamingChecklistResponse.__module__ = "nominal_api.scout_checklistexecution_api"
23596
+
23597
+
23598
+ class scout_checklistexecution_api_NoPreviousFailure(ConjureBeanType):
23599
+ """
23600
+ No previous failure was computed for the check.
23601
+ """
23602
+
23603
+ @builtins.classmethod
23604
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23605
+ return {
23606
+ }
23607
+
23608
+ __slots__: List[str] = []
23609
+
23610
+
23611
+
23612
+ scout_checklistexecution_api_NoPreviousFailure.__name__ = "NoPreviousFailure"
23613
+ scout_checklistexecution_api_NoPreviousFailure.__qualname__ = "NoPreviousFailure"
23614
+ scout_checklistexecution_api_NoPreviousFailure.__module__ = "nominal_api.scout_checklistexecution_api"
21948
23615
 
21949
23616
 
21950
23617
  class scout_checklistexecution_api_NotComputed(ConjureBeanType):
@@ -21986,7 +23653,6 @@ class scout_checklistexecution_api_ResolvedCheckStatus(ConjureBeanType):
21986
23653
  """
21987
23654
  Provides the resolution status for the required channels for a check and the set of invalid streaming compute nodes present within the check's compute graph.
21988
23655
  Uniqueness between checkRid and checkParameterIndex pairs is guaranteed.
21989
- checkParameterIndex is optional and will be null if the check is not parameterized otherwise it will be the index of the parameter.
21990
23656
  """
21991
23657
 
21992
23658
  @builtins.classmethod
@@ -22012,6 +23678,10 @@ checkParameterIndex is optional and will be null if the check is not parameteriz
22012
23678
 
22013
23679
  @builtins.property
22014
23680
  def check_parameter_index(self) -> Optional[int]:
23681
+ """
23682
+ Checks can define a single range computation which can evaluate over multiple implementations of a context.
23683
+ The check implementation index will correspond to the implementation index of the check condition.
23684
+ """
22015
23685
  return self._check_parameter_index
22016
23686
 
22017
23687
  @builtins.property
@@ -22028,6 +23698,22 @@ scout_checklistexecution_api_ResolvedCheckStatus.__qualname__ = "ResolvedCheckSt
22028
23698
  scout_checklistexecution_api_ResolvedCheckStatus.__module__ = "nominal_api.scout_checklistexecution_api"
22029
23699
 
22030
23700
 
23701
+ class scout_checklistexecution_api_Skipped(ConjureBeanType):
23702
+
23703
+ @builtins.classmethod
23704
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23705
+ return {
23706
+ }
23707
+
23708
+ __slots__: List[str] = []
23709
+
23710
+
23711
+
23712
+ scout_checklistexecution_api_Skipped.__name__ = "Skipped"
23713
+ scout_checklistexecution_api_Skipped.__qualname__ = "Skipped"
23714
+ scout_checklistexecution_api_Skipped.__module__ = "nominal_api.scout_checklistexecution_api"
23715
+
23716
+
22031
23717
  class scout_checklistexecution_api_StopStreamingChecklistForAssetsRequest(ConjureBeanType):
22032
23718
 
22033
23719
  @builtins.classmethod
@@ -22057,6 +23743,22 @@ scout_checklistexecution_api_StopStreamingChecklistForAssetsRequest.__qualname__
22057
23743
  scout_checklistexecution_api_StopStreamingChecklistForAssetsRequest.__module__ = "nominal_api.scout_checklistexecution_api"
22058
23744
 
22059
23745
 
23746
+ class scout_checklistexecution_api_StreamingChecklistFailed(ConjureBeanType):
23747
+
23748
+ @builtins.classmethod
23749
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23750
+ return {
23751
+ }
23752
+
23753
+ __slots__: List[str] = []
23754
+
23755
+
23756
+
23757
+ scout_checklistexecution_api_StreamingChecklistFailed.__name__ = "StreamingChecklistFailed"
23758
+ scout_checklistexecution_api_StreamingChecklistFailed.__qualname__ = "StreamingChecklistFailed"
23759
+ scout_checklistexecution_api_StreamingChecklistFailed.__module__ = "nominal_api.scout_checklistexecution_api"
23760
+
23761
+
22060
23762
  class scout_checklistexecution_api_StreamingChecklistInfo(ConjureBeanType):
22061
23763
 
22062
23764
  @builtins.classmethod
@@ -22086,6 +23788,54 @@ scout_checklistexecution_api_StreamingChecklistInfo.__qualname__ = "StreamingChe
22086
23788
  scout_checklistexecution_api_StreamingChecklistInfo.__module__ = "nominal_api.scout_checklistexecution_api"
22087
23789
 
22088
23790
 
23791
+ class scout_checklistexecution_api_StreamingChecklistInitializing(ConjureBeanType):
23792
+
23793
+ @builtins.classmethod
23794
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23795
+ return {
23796
+ }
23797
+
23798
+ __slots__: List[str] = []
23799
+
23800
+
23801
+
23802
+ scout_checklistexecution_api_StreamingChecklistInitializing.__name__ = "StreamingChecklistInitializing"
23803
+ scout_checklistexecution_api_StreamingChecklistInitializing.__qualname__ = "StreamingChecklistInitializing"
23804
+ scout_checklistexecution_api_StreamingChecklistInitializing.__module__ = "nominal_api.scout_checklistexecution_api"
23805
+
23806
+
23807
+ class scout_checklistexecution_api_StreamingChecklistRunning(ConjureBeanType):
23808
+
23809
+ @builtins.classmethod
23810
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
23811
+ return {
23812
+ 'commit_id': ConjureFieldDefinition('commitId', scout_versioning_api_CommitId),
23813
+ 'check_results': ConjureFieldDefinition('checkResults', List[scout_checklistexecution_api_CheckLiveStatusResponse])
23814
+ }
23815
+
23816
+ __slots__: List[str] = ['_commit_id', '_check_results']
23817
+
23818
+ def __init__(self, check_results: List["scout_checklistexecution_api_CheckLiveStatusResponse"], commit_id: str) -> None:
23819
+ self._commit_id = commit_id
23820
+ self._check_results = check_results
23821
+
23822
+ @builtins.property
23823
+ def commit_id(self) -> str:
23824
+ """
23825
+ The commitId of the checklist that is currently executing.
23826
+ """
23827
+ return self._commit_id
23828
+
23829
+ @builtins.property
23830
+ def check_results(self) -> List["scout_checklistexecution_api_CheckLiveStatusResponse"]:
23831
+ return self._check_results
23832
+
23833
+
23834
+ scout_checklistexecution_api_StreamingChecklistRunning.__name__ = "StreamingChecklistRunning"
23835
+ scout_checklistexecution_api_StreamingChecklistRunning.__qualname__ = "StreamingChecklistRunning"
23836
+ scout_checklistexecution_api_StreamingChecklistRunning.__module__ = "nominal_api.scout_checklistexecution_api"
23837
+
23838
+
22089
23839
  class scout_checklistexecution_api_ValidateChecklistResolutionRequest(ConjureBeanType):
22090
23840
  """
22091
23841
  Validates that the channels referenced by the checklist can be resolved against the data sources.
@@ -67309,6 +69059,151 @@ secrets_api_UpdateSecretRequest.__qualname__ = "UpdateSecretRequest"
67309
69059
  secrets_api_UpdateSecretRequest.__module__ = "nominal_api.secrets_api"
67310
69060
 
67311
69061
 
69062
+ class security_api_workspace_Workspace(ConjureBeanType):
69063
+
69064
+ @builtins.classmethod
69065
+ def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
69066
+ return {
69067
+ 'id': ConjureFieldDefinition('id', api_ids_WorkspaceId),
69068
+ 'rid': ConjureFieldDefinition('rid', api_rids_WorkspaceRid),
69069
+ 'org': ConjureFieldDefinition('org', authentication_api_OrgRid)
69070
+ }
69071
+
69072
+ __slots__: List[str] = ['_id', '_rid', '_org']
69073
+
69074
+ def __init__(self, id: str, org: str, rid: str) -> None:
69075
+ self._id = id
69076
+ self._rid = rid
69077
+ self._org = org
69078
+
69079
+ @builtins.property
69080
+ def id(self) -> str:
69081
+ """
69082
+ A unique identifier for the workspace within the organization. The workspace ID must be lower case alphanumeric characters, optionally separated by hyphens.
69083
+ """
69084
+ return self._id
69085
+
69086
+ @builtins.property
69087
+ def rid(self) -> str:
69088
+ return self._rid
69089
+
69090
+ @builtins.property
69091
+ def org(self) -> str:
69092
+ return self._org
69093
+
69094
+
69095
+ security_api_workspace_Workspace.__name__ = "Workspace"
69096
+ security_api_workspace_Workspace.__qualname__ = "Workspace"
69097
+ security_api_workspace_Workspace.__module__ = "nominal_api.security_api_workspace"
69098
+
69099
+
69100
+ class security_api_workspace_WorkspaceService(Service):
69101
+ """
69102
+ This service provides information about workspaces. Workspaces provide access control boundaries. All resources in
69103
+ Nominal live within a workspace.
69104
+ """
69105
+
69106
+ def get_workspaces(self, auth_header: str) -> List["security_api_workspace_Workspace"]:
69107
+ """
69108
+ Gets all workspaces that the requesting user belongs to.
69109
+ """
69110
+
69111
+ _headers: Dict[str, Any] = {
69112
+ 'Accept': 'application/json',
69113
+ 'Authorization': auth_header,
69114
+ }
69115
+
69116
+ _params: Dict[str, Any] = {
69117
+ }
69118
+
69119
+ _path_params: Dict[str, Any] = {
69120
+ }
69121
+
69122
+ _json: Any = None
69123
+
69124
+ _path = '/workspaces/v1/workspaces'
69125
+ _path = _path.format(**_path_params)
69126
+
69127
+ _response: Response = self._request(
69128
+ 'GET',
69129
+ self._uri + _path,
69130
+ params=_params,
69131
+ headers=_headers,
69132
+ json=_json)
69133
+
69134
+ _decoder = ConjureDecoder()
69135
+ return _decoder.decode(_response.json(), List[security_api_workspace_Workspace], self._return_none_for_unknown_union_types)
69136
+
69137
+ def get_workspace(self, auth_header: str, workspace_rid: str) -> "security_api_workspace_Workspace":
69138
+ """
69139
+ Gets the workspace with the specified WorkspaceRid.
69140
+ """
69141
+
69142
+ _headers: Dict[str, Any] = {
69143
+ 'Accept': 'application/json',
69144
+ 'Authorization': auth_header,
69145
+ }
69146
+
69147
+ _params: Dict[str, Any] = {
69148
+ }
69149
+
69150
+ _path_params: Dict[str, Any] = {
69151
+ 'workspaceRid': workspace_rid,
69152
+ }
69153
+
69154
+ _json: Any = None
69155
+
69156
+ _path = '/workspaces/v1/workspaces/{workspaceRid}'
69157
+ _path = _path.format(**_path_params)
69158
+
69159
+ _response: Response = self._request(
69160
+ 'GET',
69161
+ self._uri + _path,
69162
+ params=_params,
69163
+ headers=_headers,
69164
+ json=_json)
69165
+
69166
+ _decoder = ConjureDecoder()
69167
+ return _decoder.decode(_response.json(), security_api_workspace_Workspace, self._return_none_for_unknown_union_types)
69168
+
69169
+ def get_default_workspace(self, auth_header: str) -> Optional["security_api_workspace_Workspace"]:
69170
+ """
69171
+ Gets the default workspace for the requesting user. It may not be present if the user does not have
69172
+ access to any workspaces or no default workspace is configured for the user's organization.
69173
+ """
69174
+
69175
+ _headers: Dict[str, Any] = {
69176
+ 'Accept': 'application/json',
69177
+ 'Authorization': auth_header,
69178
+ }
69179
+
69180
+ _params: Dict[str, Any] = {
69181
+ }
69182
+
69183
+ _path_params: Dict[str, Any] = {
69184
+ }
69185
+
69186
+ _json: Any = None
69187
+
69188
+ _path = '/workspaces/v1/default-workspace'
69189
+ _path = _path.format(**_path_params)
69190
+
69191
+ _response: Response = self._request(
69192
+ 'GET',
69193
+ self._uri + _path,
69194
+ params=_params,
69195
+ headers=_headers,
69196
+ json=_json)
69197
+
69198
+ _decoder = ConjureDecoder()
69199
+ return None if _response.status_code == 204 else _decoder.decode(_response.json(), OptionalTypeWrapper[security_api_workspace_Workspace], self._return_none_for_unknown_union_types)
69200
+
69201
+
69202
+ security_api_workspace_WorkspaceService.__name__ = "WorkspaceService"
69203
+ security_api_workspace_WorkspaceService.__qualname__ = "WorkspaceService"
69204
+ security_api_workspace_WorkspaceService.__module__ = "nominal_api.security_api_workspace"
69205
+
69206
+
67312
69207
  class storage_datasource_api_CreateNominalDataSourceRequest(ConjureBeanType):
67313
69208
 
67314
69209
  @builtins.classmethod
@@ -73170,6 +75065,8 @@ scout_channelvariables_api_ChannelVariableName = str
73170
75065
 
73171
75066
  scout_datareview_api_ManualCheckEvaluationRid = str
73172
75067
 
75068
+ api_ids_WorkspaceId = str
75069
+
73173
75070
  scout_asset_api_Channel = str
73174
75071
 
73175
75072
  scout_rids_api_FunctionRid = str
@@ -73244,6 +75141,8 @@ storage_writer_api_Field = str
73244
75141
 
73245
75142
  api_TagName = str
73246
75143
 
75144
+ authentication_api_UserRid = str
75145
+
73247
75146
  scout_datasource_connection_api_ConnectionRid = str
73248
75147
 
73249
75148
  scout_channelvariables_api_ComputeSpecV1 = str
@@ -73346,6 +75245,8 @@ scout_api_HexColor = str
73346
75245
 
73347
75246
  scout_datasource_connection_api_SecretRid = str
73348
75247
 
75248
+ authorization_ApiKeyRid = str
75249
+
73349
75250
  scout_rids_api_ApiKeyRid = str
73350
75251
 
73351
75252
  ingest_api_ChannelPrefix = OptionalTypeWrapper[str]