nominal-api 0.606.0__py3-none-any.whl → 0.606.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nominal-api might be problematic. Click here for more details.
- nominal_api/__init__.py +4 -1
- nominal_api/_impl.py +1734 -0
- nominal_api/api_ids/__init__.py +5 -0
- nominal_api/authentication_api/__init__.py +15 -0
- nominal_api/authorization/__init__.py +20 -0
- nominal_api/security_api_workspace/__init__.py +6 -0
- {nominal_api-0.606.0.dist-info → nominal_api-0.606.1.dist-info}/METADATA +1 -1
- {nominal_api-0.606.0.dist-info → nominal_api-0.606.1.dist-info}/RECORD +10 -7
- {nominal_api-0.606.0.dist-info → nominal_api-0.606.1.dist-info}/WHEEL +0 -0
- {nominal_api-0.606.0.dist-info → nominal_api-0.606.1.dist-info}/top_level.txt +0 -0
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
|
|
@@ -67309,6 +68892,151 @@ secrets_api_UpdateSecretRequest.__qualname__ = "UpdateSecretRequest"
|
|
|
67309
68892
|
secrets_api_UpdateSecretRequest.__module__ = "nominal_api.secrets_api"
|
|
67310
68893
|
|
|
67311
68894
|
|
|
68895
|
+
class security_api_workspace_Workspace(ConjureBeanType):
|
|
68896
|
+
|
|
68897
|
+
@builtins.classmethod
|
|
68898
|
+
def _fields(cls) -> Dict[str, ConjureFieldDefinition]:
|
|
68899
|
+
return {
|
|
68900
|
+
'id': ConjureFieldDefinition('id', api_ids_WorkspaceId),
|
|
68901
|
+
'rid': ConjureFieldDefinition('rid', api_rids_WorkspaceRid),
|
|
68902
|
+
'org': ConjureFieldDefinition('org', authentication_api_OrgRid)
|
|
68903
|
+
}
|
|
68904
|
+
|
|
68905
|
+
__slots__: List[str] = ['_id', '_rid', '_org']
|
|
68906
|
+
|
|
68907
|
+
def __init__(self, id: str, org: str, rid: str) -> None:
|
|
68908
|
+
self._id = id
|
|
68909
|
+
self._rid = rid
|
|
68910
|
+
self._org = org
|
|
68911
|
+
|
|
68912
|
+
@builtins.property
|
|
68913
|
+
def id(self) -> str:
|
|
68914
|
+
"""
|
|
68915
|
+
A unique identifier for the workspace within the organization. The workspace ID must be lower case alphanumeric characters, optionally separated by hyphens.
|
|
68916
|
+
"""
|
|
68917
|
+
return self._id
|
|
68918
|
+
|
|
68919
|
+
@builtins.property
|
|
68920
|
+
def rid(self) -> str:
|
|
68921
|
+
return self._rid
|
|
68922
|
+
|
|
68923
|
+
@builtins.property
|
|
68924
|
+
def org(self) -> str:
|
|
68925
|
+
return self._org
|
|
68926
|
+
|
|
68927
|
+
|
|
68928
|
+
security_api_workspace_Workspace.__name__ = "Workspace"
|
|
68929
|
+
security_api_workspace_Workspace.__qualname__ = "Workspace"
|
|
68930
|
+
security_api_workspace_Workspace.__module__ = "nominal_api.security_api_workspace"
|
|
68931
|
+
|
|
68932
|
+
|
|
68933
|
+
class security_api_workspace_WorkspaceService(Service):
|
|
68934
|
+
"""
|
|
68935
|
+
This service provides information about workspaces. Workspaces provide access control boundaries. All resources in
|
|
68936
|
+
Nominal live within a workspace.
|
|
68937
|
+
"""
|
|
68938
|
+
|
|
68939
|
+
def get_workspaces(self, auth_header: str) -> List["security_api_workspace_Workspace"]:
|
|
68940
|
+
"""
|
|
68941
|
+
Gets all workspaces that the requesting user belongs to.
|
|
68942
|
+
"""
|
|
68943
|
+
|
|
68944
|
+
_headers: Dict[str, Any] = {
|
|
68945
|
+
'Accept': 'application/json',
|
|
68946
|
+
'Authorization': auth_header,
|
|
68947
|
+
}
|
|
68948
|
+
|
|
68949
|
+
_params: Dict[str, Any] = {
|
|
68950
|
+
}
|
|
68951
|
+
|
|
68952
|
+
_path_params: Dict[str, Any] = {
|
|
68953
|
+
}
|
|
68954
|
+
|
|
68955
|
+
_json: Any = None
|
|
68956
|
+
|
|
68957
|
+
_path = '/workspaces/v1/workspaces'
|
|
68958
|
+
_path = _path.format(**_path_params)
|
|
68959
|
+
|
|
68960
|
+
_response: Response = self._request(
|
|
68961
|
+
'GET',
|
|
68962
|
+
self._uri + _path,
|
|
68963
|
+
params=_params,
|
|
68964
|
+
headers=_headers,
|
|
68965
|
+
json=_json)
|
|
68966
|
+
|
|
68967
|
+
_decoder = ConjureDecoder()
|
|
68968
|
+
return _decoder.decode(_response.json(), List[security_api_workspace_Workspace], self._return_none_for_unknown_union_types)
|
|
68969
|
+
|
|
68970
|
+
def get_workspace(self, auth_header: str, workspace_rid: str) -> "security_api_workspace_Workspace":
|
|
68971
|
+
"""
|
|
68972
|
+
Gets the workspace with the specified WorkspaceRid.
|
|
68973
|
+
"""
|
|
68974
|
+
|
|
68975
|
+
_headers: Dict[str, Any] = {
|
|
68976
|
+
'Accept': 'application/json',
|
|
68977
|
+
'Authorization': auth_header,
|
|
68978
|
+
}
|
|
68979
|
+
|
|
68980
|
+
_params: Dict[str, Any] = {
|
|
68981
|
+
}
|
|
68982
|
+
|
|
68983
|
+
_path_params: Dict[str, Any] = {
|
|
68984
|
+
'workspaceRid': workspace_rid,
|
|
68985
|
+
}
|
|
68986
|
+
|
|
68987
|
+
_json: Any = None
|
|
68988
|
+
|
|
68989
|
+
_path = '/workspaces/v1/workspaces/{workspaceRid}'
|
|
68990
|
+
_path = _path.format(**_path_params)
|
|
68991
|
+
|
|
68992
|
+
_response: Response = self._request(
|
|
68993
|
+
'GET',
|
|
68994
|
+
self._uri + _path,
|
|
68995
|
+
params=_params,
|
|
68996
|
+
headers=_headers,
|
|
68997
|
+
json=_json)
|
|
68998
|
+
|
|
68999
|
+
_decoder = ConjureDecoder()
|
|
69000
|
+
return _decoder.decode(_response.json(), security_api_workspace_Workspace, self._return_none_for_unknown_union_types)
|
|
69001
|
+
|
|
69002
|
+
def get_default_workspace(self, auth_header: str) -> Optional["security_api_workspace_Workspace"]:
|
|
69003
|
+
"""
|
|
69004
|
+
Gets the default workspace for the requesting user. It may not be present if the user does not have
|
|
69005
|
+
access to any workspaces or no default workspace is configured for the user's organization.
|
|
69006
|
+
"""
|
|
69007
|
+
|
|
69008
|
+
_headers: Dict[str, Any] = {
|
|
69009
|
+
'Accept': 'application/json',
|
|
69010
|
+
'Authorization': auth_header,
|
|
69011
|
+
}
|
|
69012
|
+
|
|
69013
|
+
_params: Dict[str, Any] = {
|
|
69014
|
+
}
|
|
69015
|
+
|
|
69016
|
+
_path_params: Dict[str, Any] = {
|
|
69017
|
+
}
|
|
69018
|
+
|
|
69019
|
+
_json: Any = None
|
|
69020
|
+
|
|
69021
|
+
_path = '/workspaces/v1/default-workspace'
|
|
69022
|
+
_path = _path.format(**_path_params)
|
|
69023
|
+
|
|
69024
|
+
_response: Response = self._request(
|
|
69025
|
+
'GET',
|
|
69026
|
+
self._uri + _path,
|
|
69027
|
+
params=_params,
|
|
69028
|
+
headers=_headers,
|
|
69029
|
+
json=_json)
|
|
69030
|
+
|
|
69031
|
+
_decoder = ConjureDecoder()
|
|
69032
|
+
return None if _response.status_code == 204 else _decoder.decode(_response.json(), OptionalTypeWrapper[security_api_workspace_Workspace], self._return_none_for_unknown_union_types)
|
|
69033
|
+
|
|
69034
|
+
|
|
69035
|
+
security_api_workspace_WorkspaceService.__name__ = "WorkspaceService"
|
|
69036
|
+
security_api_workspace_WorkspaceService.__qualname__ = "WorkspaceService"
|
|
69037
|
+
security_api_workspace_WorkspaceService.__module__ = "nominal_api.security_api_workspace"
|
|
69038
|
+
|
|
69039
|
+
|
|
67312
69040
|
class storage_datasource_api_CreateNominalDataSourceRequest(ConjureBeanType):
|
|
67313
69041
|
|
|
67314
69042
|
@builtins.classmethod
|
|
@@ -73170,6 +74898,8 @@ scout_channelvariables_api_ChannelVariableName = str
|
|
|
73170
74898
|
|
|
73171
74899
|
scout_datareview_api_ManualCheckEvaluationRid = str
|
|
73172
74900
|
|
|
74901
|
+
api_ids_WorkspaceId = str
|
|
74902
|
+
|
|
73173
74903
|
scout_asset_api_Channel = str
|
|
73174
74904
|
|
|
73175
74905
|
scout_rids_api_FunctionRid = str
|
|
@@ -73244,6 +74974,8 @@ storage_writer_api_Field = str
|
|
|
73244
74974
|
|
|
73245
74975
|
api_TagName = str
|
|
73246
74976
|
|
|
74977
|
+
authentication_api_UserRid = str
|
|
74978
|
+
|
|
73247
74979
|
scout_datasource_connection_api_ConnectionRid = str
|
|
73248
74980
|
|
|
73249
74981
|
scout_channelvariables_api_ComputeSpecV1 = str
|
|
@@ -73346,6 +75078,8 @@ scout_api_HexColor = str
|
|
|
73346
75078
|
|
|
73347
75079
|
scout_datasource_connection_api_SecretRid = str
|
|
73348
75080
|
|
|
75081
|
+
authorization_ApiKeyRid = str
|
|
75082
|
+
|
|
73349
75083
|
scout_rids_api_ApiKeyRid = str
|
|
73350
75084
|
|
|
73351
75085
|
ingest_api_ChannelPrefix = OptionalTypeWrapper[str]
|