strongdm 3.6.1__zip → 3.7.0__zip

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.
Files changed (83) hide show
  1. {strongdm-3.6.1 → strongdm-3.7.0}/PKG-INFO +2 -2
  2. {strongdm-3.6.1 → strongdm-3.7.0}/setup.py +2 -2
  3. strongdm-3.7.0/strongdm/account_attachments_history_pb2.py +96 -0
  4. strongdm-3.7.0/strongdm/account_attachments_history_pb2_grpc.py +84 -0
  5. strongdm-3.7.0/strongdm/account_grants_history_pb2.py +96 -0
  6. strongdm-3.7.0/strongdm/account_grants_history_pb2_grpc.py +84 -0
  7. strongdm-3.7.0/strongdm/account_permissions_pb2.py +97 -0
  8. strongdm-3.7.0/strongdm/account_permissions_pb2_grpc.py +87 -0
  9. strongdm-3.7.0/strongdm/account_resources_pb2.py +99 -0
  10. strongdm-3.7.0/strongdm/account_resources_pb2_grpc.py +87 -0
  11. strongdm-3.7.0/strongdm/accounts_history_pb2.py +96 -0
  12. strongdm-3.7.0/strongdm/accounts_history_pb2_grpc.py +84 -0
  13. strongdm-3.7.0/strongdm/activities_pb2.py +177 -0
  14. strongdm-3.7.0/strongdm/activities_pb2_grpc.py +124 -0
  15. strongdm-3.7.0/strongdm/client.py +432 -0
  16. strongdm-3.7.0/strongdm/constants.py +377 -0
  17. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/drivers_pb2.py +6 -6
  18. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/models.py +1872 -132
  19. strongdm-3.7.0/strongdm/nodes_history_pb2.py +96 -0
  20. strongdm-3.7.0/strongdm/nodes_history_pb2_grpc.py +84 -0
  21. strongdm-3.7.0/strongdm/organization_history_pb2.py +154 -0
  22. strongdm-3.7.0/strongdm/organization_history_pb2_grpc.py +84 -0
  23. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/plumbing.py +935 -0
  24. strongdm-3.7.0/strongdm/queries_pb2.py +133 -0
  25. strongdm-3.7.0/strongdm/queries_pb2_grpc.py +90 -0
  26. strongdm-3.7.0/strongdm/remote_identities_history_pb2.py +96 -0
  27. strongdm-3.7.0/strongdm/remote_identities_history_pb2_grpc.py +84 -0
  28. strongdm-3.7.0/strongdm/remote_identity_groups_history_pb2.py +96 -0
  29. strongdm-3.7.0/strongdm/remote_identity_groups_history_pb2_grpc.py +84 -0
  30. strongdm-3.7.0/strongdm/replays_pb2.py +107 -0
  31. strongdm-3.7.0/strongdm/replays_pb2_grpc.py +87 -0
  32. strongdm-3.7.0/strongdm/resources_history_pb2.py +96 -0
  33. strongdm-3.7.0/strongdm/resources_history_pb2_grpc.py +84 -0
  34. strongdm-3.7.0/strongdm/role_resources_history_pb2.py +96 -0
  35. strongdm-3.7.0/strongdm/role_resources_history_pb2_grpc.py +84 -0
  36. strongdm-3.7.0/strongdm/role_resources_pb2.py +93 -0
  37. strongdm-3.7.0/strongdm/role_resources_pb2_grpc.py +87 -0
  38. strongdm-3.7.0/strongdm/roles_history_pb2.py +96 -0
  39. strongdm-3.7.0/strongdm/roles_history_pb2_grpc.py +84 -0
  40. strongdm-3.7.0/strongdm/secret_stores_history_pb2.py +96 -0
  41. strongdm-3.7.0/strongdm/secret_stores_history_pb2_grpc.py +84 -0
  42. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/svc.py +1199 -12
  43. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/PKG-INFO +2 -2
  44. strongdm-3.7.0/strongdm.egg-info/SOURCES.txt +78 -0
  45. strongdm-3.6.1/strongdm/client.py +0 -199
  46. strongdm-3.6.1/strongdm/constants.py +0 -66
  47. strongdm-3.6.1/strongdm.egg-info/SOURCES.txt +0 -44
  48. {strongdm-3.6.1 → strongdm-3.7.0}/README.md +0 -0
  49. {strongdm-3.6.1 → strongdm-3.7.0}/setup.cfg +0 -0
  50. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/__init__.py +0 -0
  51. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_attachments_pb2.py +0 -0
  52. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  53. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_grants_pb2.py +0 -0
  54. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  55. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/accounts_pb2.py +0 -0
  56. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/accounts_pb2_grpc.py +0 -0
  57. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/control_panel_pb2.py +0 -0
  58. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  59. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/drivers_pb2_grpc.py +0 -0
  60. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/errors.py +0 -0
  61. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/nodes_pb2.py +0 -0
  62. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/nodes_pb2_grpc.py +0 -0
  63. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/options_pb2.py +0 -0
  64. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/options_pb2_grpc.py +0 -0
  65. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identities_pb2.py +0 -0
  66. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  67. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  68. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  69. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/resources_pb2.py +0 -0
  70. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/resources_pb2_grpc.py +0 -0
  71. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/roles_pb2.py +0 -0
  72. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/roles_pb2_grpc.py +0 -0
  73. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_store_types_pb2.py +0 -0
  74. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_store_types_pb2_grpc.py +0 -0
  75. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_stores_pb2.py +0 -0
  76. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  77. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/spec_pb2.py +0 -0
  78. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/spec_pb2_grpc.py +0 -0
  79. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/tags_pb2.py +0 -0
  80. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm/tags_pb2_grpc.py +0 -0
  81. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/dependency_links.txt +0 -0
  82. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/requires.txt +0 -0
  83. {strongdm-3.6.1 → strongdm-3.7.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -1331,6 +1331,70 @@ class AccountAttachmentGetResponse:
1331
1331
  )
1332
1332
 
1333
1333
 
1334
+ class AccountAttachmentHistory:
1335
+ '''
1336
+ AccountAttachmentHistory records the state of an AccountAttachment at a given point in time,
1337
+ where every change (create or delete) to an AccountAttachment produces an
1338
+ AccountAttachmentHistory record.
1339
+ '''
1340
+ __slots__ = [
1341
+ 'account_attachment',
1342
+ 'activity_id',
1343
+ 'deleted_at',
1344
+ 'timestamp',
1345
+ ]
1346
+
1347
+ def __init__(
1348
+ self,
1349
+ account_attachment=None,
1350
+ activity_id=None,
1351
+ deleted_at=None,
1352
+ timestamp=None,
1353
+ ):
1354
+ self.account_attachment = account_attachment if account_attachment is not None else None
1355
+ '''
1356
+ The complete AccountAttachment state at this time.
1357
+ '''
1358
+ self.activity_id = activity_id if activity_id is not None else ''
1359
+ '''
1360
+ The unique identifier of the Activity that produced this change to the AccountAttachment.
1361
+ May be empty for some system-initiated updates.
1362
+ '''
1363
+ self.deleted_at = deleted_at if deleted_at is not None else None
1364
+ '''
1365
+ If this AccountAttachment was deleted, the time it was deleted.
1366
+ '''
1367
+ self.timestamp = timestamp if timestamp is not None else None
1368
+ '''
1369
+ The time at which the AccountAttachment state was recorded.
1370
+ '''
1371
+
1372
+ def __repr__(self):
1373
+ return '<sdm.AccountAttachmentHistory ' + \
1374
+ 'account_attachment: ' + repr(self.account_attachment) + ' ' +\
1375
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
1376
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
1377
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
1378
+ '>'
1379
+
1380
+ def to_dict(self):
1381
+ return {
1382
+ 'account_attachment': self.account_attachment,
1383
+ 'activity_id': self.activity_id,
1384
+ 'deleted_at': self.deleted_at,
1385
+ 'timestamp': self.timestamp,
1386
+ }
1387
+
1388
+ @classmethod
1389
+ def from_dict(cls, d):
1390
+ return cls(
1391
+ account_attachment=d.get('account_attachment'),
1392
+ activity_id=d.get('activity_id'),
1393
+ deleted_at=d.get('deleted_at'),
1394
+ timestamp=d.get('timestamp'),
1395
+ )
1396
+
1397
+
1334
1398
  class AccountCreateResponse:
1335
1399
  '''
1336
1400
  AccountCreateResponse reports how the Accounts were created in the system.
@@ -1630,101 +1694,667 @@ class AccountGrantDeleteResponse:
1630
1694
  '''
1631
1695
  self.rate_limit = rate_limit if rate_limit is not None else None
1632
1696
  '''
1633
- Rate limit information.
1697
+ Rate limit information.
1698
+ '''
1699
+
1700
+ def __repr__(self):
1701
+ return '<sdm.AccountGrantDeleteResponse ' + \
1702
+ 'meta: ' + repr(self.meta) + ' ' +\
1703
+ 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
1704
+ '>'
1705
+
1706
+ def to_dict(self):
1707
+ return {
1708
+ 'meta': self.meta,
1709
+ 'rate_limit': self.rate_limit,
1710
+ }
1711
+
1712
+ @classmethod
1713
+ def from_dict(cls, d):
1714
+ return cls(
1715
+ meta=d.get('meta'),
1716
+ rate_limit=d.get('rate_limit'),
1717
+ )
1718
+
1719
+
1720
+ class AccountGrantGetResponse:
1721
+ '''
1722
+ AccountGrantGetResponse returns a requested AccountGrant.
1723
+ '''
1724
+ __slots__ = [
1725
+ 'account_grant',
1726
+ 'meta',
1727
+ 'rate_limit',
1728
+ ]
1729
+
1730
+ def __init__(
1731
+ self,
1732
+ account_grant=None,
1733
+ meta=None,
1734
+ rate_limit=None,
1735
+ ):
1736
+ self.account_grant = account_grant if account_grant is not None else None
1737
+ '''
1738
+ The requested AccountGrant.
1739
+ '''
1740
+ self.meta = meta if meta is not None else None
1741
+ '''
1742
+ Reserved for future use.
1743
+ '''
1744
+ self.rate_limit = rate_limit if rate_limit is not None else None
1745
+ '''
1746
+ Rate limit information.
1747
+ '''
1748
+
1749
+ def __repr__(self):
1750
+ return '<sdm.AccountGrantGetResponse ' + \
1751
+ 'account_grant: ' + repr(self.account_grant) + ' ' +\
1752
+ 'meta: ' + repr(self.meta) + ' ' +\
1753
+ 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
1754
+ '>'
1755
+
1756
+ def to_dict(self):
1757
+ return {
1758
+ 'account_grant': self.account_grant,
1759
+ 'meta': self.meta,
1760
+ 'rate_limit': self.rate_limit,
1761
+ }
1762
+
1763
+ @classmethod
1764
+ def from_dict(cls, d):
1765
+ return cls(
1766
+ account_grant=d.get('account_grant'),
1767
+ meta=d.get('meta'),
1768
+ rate_limit=d.get('rate_limit'),
1769
+ )
1770
+
1771
+
1772
+ class AccountGrantHistory:
1773
+ '''
1774
+ AccountGrantHistory records the state of an AccountGrant at a given point in time,
1775
+ where every change (create or delete) to an AccountGrant produces an
1776
+ AccountGrantHistory record.
1777
+ '''
1778
+ __slots__ = [
1779
+ 'account_grant',
1780
+ 'activity_id',
1781
+ 'deleted_at',
1782
+ 'timestamp',
1783
+ ]
1784
+
1785
+ def __init__(
1786
+ self,
1787
+ account_grant=None,
1788
+ activity_id=None,
1789
+ deleted_at=None,
1790
+ timestamp=None,
1791
+ ):
1792
+ self.account_grant = account_grant if account_grant is not None else None
1793
+ '''
1794
+ The complete AccountGrant state at this time.
1795
+ '''
1796
+ self.activity_id = activity_id if activity_id is not None else ''
1797
+ '''
1798
+ The unique identifier of the Activity that produced this change to the AccountGrant.
1799
+ May be empty for some system-initiated updates.
1800
+ '''
1801
+ self.deleted_at = deleted_at if deleted_at is not None else None
1802
+ '''
1803
+ If this AccountGrant was deleted, the time it was deleted.
1804
+ '''
1805
+ self.timestamp = timestamp if timestamp is not None else None
1806
+ '''
1807
+ The time at which the AccountGrant state was recorded.
1808
+ '''
1809
+
1810
+ def __repr__(self):
1811
+ return '<sdm.AccountGrantHistory ' + \
1812
+ 'account_grant: ' + repr(self.account_grant) + ' ' +\
1813
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
1814
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
1815
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
1816
+ '>'
1817
+
1818
+ def to_dict(self):
1819
+ return {
1820
+ 'account_grant': self.account_grant,
1821
+ 'activity_id': self.activity_id,
1822
+ 'deleted_at': self.deleted_at,
1823
+ 'timestamp': self.timestamp,
1824
+ }
1825
+
1826
+ @classmethod
1827
+ def from_dict(cls, d):
1828
+ return cls(
1829
+ account_grant=d.get('account_grant'),
1830
+ activity_id=d.get('activity_id'),
1831
+ deleted_at=d.get('deleted_at'),
1832
+ timestamp=d.get('timestamp'),
1833
+ )
1834
+
1835
+
1836
+ class AccountHistory:
1837
+ '''
1838
+ AccountHistory records the state of an Account at a given point in time,
1839
+ where every change (create, update and delete) to an Account produces an
1840
+ AccountHistory record.
1841
+ '''
1842
+ __slots__ = [
1843
+ 'account',
1844
+ 'activity_id',
1845
+ 'deleted_at',
1846
+ 'timestamp',
1847
+ ]
1848
+
1849
+ def __init__(
1850
+ self,
1851
+ account=None,
1852
+ activity_id=None,
1853
+ deleted_at=None,
1854
+ timestamp=None,
1855
+ ):
1856
+ self.account = account if account is not None else None
1857
+ '''
1858
+ The complete Account state at this time.
1859
+ '''
1860
+ self.activity_id = activity_id if activity_id is not None else ''
1861
+ '''
1862
+ The unique identifier of the Activity that produced this change to the Account.
1863
+ May be empty for some system-initiated updates.
1864
+ '''
1865
+ self.deleted_at = deleted_at if deleted_at is not None else None
1866
+ '''
1867
+ If this Account was deleted, the time it was deleted.
1868
+ '''
1869
+ self.timestamp = timestamp if timestamp is not None else None
1870
+ '''
1871
+ The time at which the Account state was recorded.
1872
+ '''
1873
+
1874
+ def __repr__(self):
1875
+ return '<sdm.AccountHistory ' + \
1876
+ 'account: ' + repr(self.account) + ' ' +\
1877
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
1878
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
1879
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
1880
+ '>'
1881
+
1882
+ def to_dict(self):
1883
+ return {
1884
+ 'account': self.account,
1885
+ 'activity_id': self.activity_id,
1886
+ 'deleted_at': self.deleted_at,
1887
+ 'timestamp': self.timestamp,
1888
+ }
1889
+
1890
+ @classmethod
1891
+ def from_dict(cls, d):
1892
+ return cls(
1893
+ account=d.get('account'),
1894
+ activity_id=d.get('activity_id'),
1895
+ deleted_at=d.get('deleted_at'),
1896
+ timestamp=d.get('timestamp'),
1897
+ )
1898
+
1899
+
1900
+ class AccountPermission:
1901
+ '''
1902
+ AccountPermission represents an individual API action available to an account.
1903
+ '''
1904
+ __slots__ = [
1905
+ 'account_id',
1906
+ 'granted_at',
1907
+ 'permission',
1908
+ 'scope',
1909
+ 'scoped_id',
1910
+ ]
1911
+
1912
+ def __init__(
1913
+ self,
1914
+ account_id=None,
1915
+ granted_at=None,
1916
+ permission=None,
1917
+ scope=None,
1918
+ scoped_id=None,
1919
+ ):
1920
+ self.account_id = account_id if account_id is not None else ''
1921
+ '''
1922
+ The unique identifier of the Account this permission belongs to.
1923
+ '''
1924
+ self.granted_at = granted_at if granted_at is not None else None
1925
+ '''
1926
+ The most recent time at which the permission was granted. If a permission was
1927
+ granted, revoked, and granted again, this will reflect the later time.
1928
+ '''
1929
+ self.permission = permission if permission is not None else ''
1930
+ '''
1931
+ The value of this permission, split into vertical and action e.g.
1932
+ 'secretstore:List', 'role:update'
1933
+ '''
1934
+ self.scope = scope if scope is not None else ''
1935
+ '''
1936
+ The scope of this permission. A global scope means this action can be taken
1937
+ on any entity; otherwise the action can only be taken on or in the scope of
1938
+ the scoped id.
1939
+ '''
1940
+ self.scoped_id = scoped_id if scoped_id is not None else ''
1941
+ '''
1942
+ The ID to which or in whose context this operation is permitted. e.g. The ID of a
1943
+ role that a team leader has the abillity to remove and add accounts to, or the
1944
+ ID of a resource that a user has the permission to connect to. If Scope is global,
1945
+ scoped id is not populated.
1946
+ '''
1947
+
1948
+ def __repr__(self):
1949
+ return '<sdm.AccountPermission ' + \
1950
+ 'account_id: ' + repr(self.account_id) + ' ' +\
1951
+ 'granted_at: ' + repr(self.granted_at) + ' ' +\
1952
+ 'permission: ' + repr(self.permission) + ' ' +\
1953
+ 'scope: ' + repr(self.scope) + ' ' +\
1954
+ 'scoped_id: ' + repr(self.scoped_id) + ' ' +\
1955
+ '>'
1956
+
1957
+ def to_dict(self):
1958
+ return {
1959
+ 'account_id': self.account_id,
1960
+ 'granted_at': self.granted_at,
1961
+ 'permission': self.permission,
1962
+ 'scope': self.scope,
1963
+ 'scoped_id': self.scoped_id,
1964
+ }
1965
+
1966
+ @classmethod
1967
+ def from_dict(cls, d):
1968
+ return cls(
1969
+ account_id=d.get('account_id'),
1970
+ granted_at=d.get('granted_at'),
1971
+ permission=d.get('permission'),
1972
+ scope=d.get('scope'),
1973
+ scoped_id=d.get('scoped_id'),
1974
+ )
1975
+
1976
+
1977
+ class AccountResource:
1978
+ '''
1979
+ AccountResource represents an individual access grant of a Account to a Resource.
1980
+ '''
1981
+ __slots__ = [
1982
+ 'account_grant_id',
1983
+ 'account_id',
1984
+ 'expires_at',
1985
+ 'granted_at',
1986
+ 'resource_id',
1987
+ 'role_id',
1988
+ ]
1989
+
1990
+ def __init__(
1991
+ self,
1992
+ account_grant_id=None,
1993
+ account_id=None,
1994
+ expires_at=None,
1995
+ granted_at=None,
1996
+ resource_id=None,
1997
+ role_id=None,
1998
+ ):
1999
+ self.account_grant_id = account_grant_id if account_grant_id is not None else ''
2000
+ '''
2001
+ The unique identifier of the AccountGrant through which the Account was granted access to the Resource.
2002
+ If empty, access was not granted through an AccountGrant.
2003
+ '''
2004
+ self.account_id = account_id if account_id is not None else ''
2005
+ '''
2006
+ The unique identifier of the Account to which access is granted.
2007
+ '''
2008
+ self.expires_at = expires_at if expires_at is not None else None
2009
+ '''
2010
+ The time at which access will expire. If empty, this access has no expiration.
2011
+ '''
2012
+ self.granted_at = granted_at if granted_at is not None else None
2013
+ '''
2014
+ The most recent time at which access was granted. If access was granted,
2015
+ revoked, and granted again, this will reflect the later time.
2016
+ '''
2017
+ self.resource_id = resource_id if resource_id is not None else ''
2018
+ '''
2019
+ The unique identifier of the Resource to which access is granted.
2020
+ '''
2021
+ self.role_id = role_id if role_id is not None else ''
2022
+ '''
2023
+ The unique identifier of the Role through which the Account was granted access to the Resource.
2024
+ If empty, access was not granted through an AccountAttachment to a Role.
2025
+ '''
2026
+
2027
+ def __repr__(self):
2028
+ return '<sdm.AccountResource ' + \
2029
+ 'account_grant_id: ' + repr(self.account_grant_id) + ' ' +\
2030
+ 'account_id: ' + repr(self.account_id) + ' ' +\
2031
+ 'expires_at: ' + repr(self.expires_at) + ' ' +\
2032
+ 'granted_at: ' + repr(self.granted_at) + ' ' +\
2033
+ 'resource_id: ' + repr(self.resource_id) + ' ' +\
2034
+ 'role_id: ' + repr(self.role_id) + ' ' +\
2035
+ '>'
2036
+
2037
+ def to_dict(self):
2038
+ return {
2039
+ 'account_grant_id': self.account_grant_id,
2040
+ 'account_id': self.account_id,
2041
+ 'expires_at': self.expires_at,
2042
+ 'granted_at': self.granted_at,
2043
+ 'resource_id': self.resource_id,
2044
+ 'role_id': self.role_id,
2045
+ }
2046
+
2047
+ @classmethod
2048
+ def from_dict(cls, d):
2049
+ return cls(
2050
+ account_grant_id=d.get('account_grant_id'),
2051
+ account_id=d.get('account_id'),
2052
+ expires_at=d.get('expires_at'),
2053
+ granted_at=d.get('granted_at'),
2054
+ resource_id=d.get('resource_id'),
2055
+ role_id=d.get('role_id'),
2056
+ )
2057
+
2058
+
2059
+ class AccountUpdateResponse:
2060
+ '''
2061
+ AccountUpdateResponse returns the fields of a Account after it has been updated by
2062
+ a AccountUpdateRequest.
2063
+ '''
2064
+ __slots__ = [
2065
+ 'account',
2066
+ 'meta',
2067
+ 'rate_limit',
2068
+ ]
2069
+
2070
+ def __init__(
2071
+ self,
2072
+ account=None,
2073
+ meta=None,
2074
+ rate_limit=None,
2075
+ ):
2076
+ self.account = account if account is not None else None
2077
+ '''
2078
+ The updated Account.
2079
+ '''
2080
+ self.meta = meta if meta is not None else None
2081
+ '''
2082
+ Reserved for future use.
2083
+ '''
2084
+ self.rate_limit = rate_limit if rate_limit is not None else None
2085
+ '''
2086
+ Rate limit information.
2087
+ '''
2088
+
2089
+ def __repr__(self):
2090
+ return '<sdm.AccountUpdateResponse ' + \
2091
+ 'account: ' + repr(self.account) + ' ' +\
2092
+ 'meta: ' + repr(self.meta) + ' ' +\
2093
+ 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
2094
+ '>'
2095
+
2096
+ def to_dict(self):
2097
+ return {
2098
+ 'account': self.account,
2099
+ 'meta': self.meta,
2100
+ 'rate_limit': self.rate_limit,
2101
+ }
2102
+
2103
+ @classmethod
2104
+ def from_dict(cls, d):
2105
+ return cls(
2106
+ account=d.get('account'),
2107
+ meta=d.get('meta'),
2108
+ rate_limit=d.get('rate_limit'),
2109
+ )
2110
+
2111
+
2112
+ class Activity:
2113
+ '''
2114
+ An Activity is a record of an action taken against a strongDM deployment, e.g.
2115
+ a user creation, resource deletion, sso configuration change, etc.
2116
+ '''
2117
+ __slots__ = [
2118
+ 'actor',
2119
+ 'completed_at',
2120
+ 'description',
2121
+ 'entities',
2122
+ 'id',
2123
+ 'ip_address',
2124
+ 'verb',
2125
+ ]
2126
+
2127
+ def __init__(
2128
+ self,
2129
+ actor=None,
2130
+ completed_at=None,
2131
+ description=None,
2132
+ entities=None,
2133
+ id=None,
2134
+ ip_address=None,
2135
+ verb=None,
2136
+ ):
2137
+ self.actor = actor if actor is not None else None
2138
+ '''
2139
+ The account who executed this activity. If the actor later has a name or email change,
2140
+ that change is not reflected here. Actor is a snapshot of the executing account at
2141
+ the time an activity took place.
2142
+ '''
2143
+ self.completed_at = completed_at if completed_at is not None else None
2144
+ '''
2145
+ The time this activity took effect.
2146
+ '''
2147
+ self.description = description if description is not None else ''
2148
+ '''
2149
+ A humanized description of the activity.
2150
+ '''
2151
+ self.entities = entities if entities is not None else []
2152
+ '''
2153
+ The entities involved in this activity. These entities can be any first class
2154
+ entity in the strongDM system, eg. a user, a role, a node, an account grant. Not
2155
+ every activity affects explicit entities.
2156
+ '''
2157
+ self.id = id if id is not None else ''
2158
+ '''
2159
+ Unique identifier of the Activity.
2160
+ '''
2161
+ self.ip_address = ip_address if ip_address is not None else ''
2162
+ '''
2163
+ The IP from which this action was taken.
2164
+ '''
2165
+ self.verb = verb if verb is not None else ''
2166
+ '''
2167
+ The kind of activity which has taken place.
2168
+ '''
2169
+
2170
+ def __repr__(self):
2171
+ return '<sdm.Activity ' + \
2172
+ 'actor: ' + repr(self.actor) + ' ' +\
2173
+ 'completed_at: ' + repr(self.completed_at) + ' ' +\
2174
+ 'description: ' + repr(self.description) + ' ' +\
2175
+ 'entities: ' + repr(self.entities) + ' ' +\
2176
+ 'id: ' + repr(self.id) + ' ' +\
2177
+ 'ip_address: ' + repr(self.ip_address) + ' ' +\
2178
+ 'verb: ' + repr(self.verb) + ' ' +\
2179
+ '>'
2180
+
2181
+ def to_dict(self):
2182
+ return {
2183
+ 'actor': self.actor,
2184
+ 'completed_at': self.completed_at,
2185
+ 'description': self.description,
2186
+ 'entities': self.entities,
2187
+ 'id': self.id,
2188
+ 'ip_address': self.ip_address,
2189
+ 'verb': self.verb,
2190
+ }
2191
+
2192
+ @classmethod
2193
+ def from_dict(cls, d):
2194
+ return cls(
2195
+ actor=d.get('actor'),
2196
+ completed_at=d.get('completed_at'),
2197
+ description=d.get('description'),
2198
+ entities=d.get('entities'),
2199
+ id=d.get('id'),
2200
+ ip_address=d.get('ip_address'),
2201
+ verb=d.get('verb'),
2202
+ )
2203
+
2204
+
2205
+ class ActivityActor:
2206
+ __slots__ = [
2207
+ 'activity_external_id',
2208
+ 'email',
2209
+ 'first_name',
2210
+ 'id',
2211
+ 'last_name',
2212
+ ]
2213
+
2214
+ def __init__(
2215
+ self,
2216
+ activity_external_id=None,
2217
+ email=None,
2218
+ first_name=None,
2219
+ id=None,
2220
+ last_name=None,
2221
+ ):
2222
+ self.activity_external_id = activity_external_id if activity_external_id is not None else ''
2223
+ '''
2224
+ The external ID of the actor at the time this activity occurred.
2225
+ '''
2226
+ self.email = email if email is not None else ''
2227
+ '''
2228
+ The email of the actor at the time this activity occurred.
2229
+ '''
2230
+ self.first_name = first_name if first_name is not None else ''
2231
+ '''
2232
+ The first name of the actor at the time this activity occurred.
2233
+ '''
2234
+ self.id = id if id is not None else ''
2235
+ '''
2236
+ Unique identifier of the actor. Immutable.
2237
+ '''
2238
+ self.last_name = last_name if last_name is not None else ''
2239
+ '''
2240
+ The last name of the actor at the time this activity occurred.
1634
2241
  '''
1635
2242
 
1636
2243
  def __repr__(self):
1637
- return '<sdm.AccountGrantDeleteResponse ' + \
1638
- 'meta: ' + repr(self.meta) + ' ' +\
1639
- 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
2244
+ return '<sdm.ActivityActor ' + \
2245
+ 'activity_external_id: ' + repr(self.activity_external_id) + ' ' +\
2246
+ 'email: ' + repr(self.email) + ' ' +\
2247
+ 'first_name: ' + repr(self.first_name) + ' ' +\
2248
+ 'id: ' + repr(self.id) + ' ' +\
2249
+ 'last_name: ' + repr(self.last_name) + ' ' +\
1640
2250
  '>'
1641
2251
 
1642
2252
  def to_dict(self):
1643
2253
  return {
1644
- 'meta': self.meta,
1645
- 'rate_limit': self.rate_limit,
2254
+ 'activity_external_id': self.activity_external_id,
2255
+ 'email': self.email,
2256
+ 'first_name': self.first_name,
2257
+ 'id': self.id,
2258
+ 'last_name': self.last_name,
1646
2259
  }
1647
2260
 
1648
2261
  @classmethod
1649
2262
  def from_dict(cls, d):
1650
2263
  return cls(
1651
- meta=d.get('meta'),
1652
- rate_limit=d.get('rate_limit'),
2264
+ activity_external_id=d.get('activity_external_id'),
2265
+ email=d.get('email'),
2266
+ first_name=d.get('first_name'),
2267
+ id=d.get('id'),
2268
+ last_name=d.get('last_name'),
1653
2269
  )
1654
2270
 
1655
2271
 
1656
- class AccountGrantGetResponse:
1657
- '''
1658
- AccountGrantGetResponse returns a requested AccountGrant.
1659
- '''
2272
+ class ActivityEntity:
1660
2273
  __slots__ = [
1661
- 'account_grant',
1662
- 'meta',
1663
- 'rate_limit',
2274
+ 'email',
2275
+ 'external_id',
2276
+ 'id',
2277
+ 'name',
2278
+ 'type',
1664
2279
  ]
1665
2280
 
1666
2281
  def __init__(
1667
2282
  self,
1668
- account_grant=None,
1669
- meta=None,
1670
- rate_limit=None,
2283
+ email=None,
2284
+ external_id=None,
2285
+ id=None,
2286
+ name=None,
2287
+ type=None,
1671
2288
  ):
1672
- self.account_grant = account_grant if account_grant is not None else None
2289
+ self.email = email if email is not None else ''
1673
2290
  '''
1674
- The requested AccountGrant.
2291
+ The email of the affected entity, if it has one (for example, if it is an account).
1675
2292
  '''
1676
- self.meta = meta if meta is not None else None
2293
+ self.external_id = external_id if external_id is not None else ''
1677
2294
  '''
1678
- Reserved for future use.
2295
+ The external ID of the affected entity, if it has one (for example, if it is an account).
1679
2296
  '''
1680
- self.rate_limit = rate_limit if rate_limit is not None else None
2297
+ self.id = id if id is not None else ''
1681
2298
  '''
1682
- Rate limit information.
2299
+ The unique identifier of the entity this activity affected.
2300
+ '''
2301
+ self.name = name if name is not None else ''
2302
+ '''
2303
+ A display name representing the affected entity.
2304
+ '''
2305
+ self.type = type if type is not None else ''
2306
+ '''
2307
+ The type of entity affected, one of the Activity Entities constants.
1683
2308
  '''
1684
2309
 
1685
2310
  def __repr__(self):
1686
- return '<sdm.AccountGrantGetResponse ' + \
1687
- 'account_grant: ' + repr(self.account_grant) + ' ' +\
1688
- 'meta: ' + repr(self.meta) + ' ' +\
1689
- 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
2311
+ return '<sdm.ActivityEntity ' + \
2312
+ 'email: ' + repr(self.email) + ' ' +\
2313
+ 'external_id: ' + repr(self.external_id) + ' ' +\
2314
+ 'id: ' + repr(self.id) + ' ' +\
2315
+ 'name: ' + repr(self.name) + ' ' +\
2316
+ 'type: ' + repr(self.type) + ' ' +\
1690
2317
  '>'
1691
2318
 
1692
2319
  def to_dict(self):
1693
2320
  return {
1694
- 'account_grant': self.account_grant,
1695
- 'meta': self.meta,
1696
- 'rate_limit': self.rate_limit,
2321
+ 'email': self.email,
2322
+ 'external_id': self.external_id,
2323
+ 'id': self.id,
2324
+ 'name': self.name,
2325
+ 'type': self.type,
1697
2326
  }
1698
2327
 
1699
2328
  @classmethod
1700
2329
  def from_dict(cls, d):
1701
2330
  return cls(
1702
- account_grant=d.get('account_grant'),
1703
- meta=d.get('meta'),
1704
- rate_limit=d.get('rate_limit'),
2331
+ email=d.get('email'),
2332
+ external_id=d.get('external_id'),
2333
+ id=d.get('id'),
2334
+ name=d.get('name'),
2335
+ type=d.get('type'),
1705
2336
  )
1706
2337
 
1707
2338
 
1708
- class AccountUpdateResponse:
2339
+ class ActivityGetResponse:
1709
2340
  '''
1710
- AccountUpdateResponse returns the fields of a Account after it has been updated by
1711
- a AccountUpdateRequest.
2341
+ ActivityGetResponse returns a requested Activity.
1712
2342
  '''
1713
2343
  __slots__ = [
1714
- 'account',
2344
+ 'activity',
1715
2345
  'meta',
1716
2346
  'rate_limit',
1717
2347
  ]
1718
2348
 
1719
2349
  def __init__(
1720
2350
  self,
1721
- account=None,
2351
+ activity=None,
1722
2352
  meta=None,
1723
2353
  rate_limit=None,
1724
2354
  ):
1725
- self.account = account if account is not None else None
2355
+ self.activity = activity if activity is not None else None
1726
2356
  '''
1727
- The updated Account.
2357
+ The requested Activity.
1728
2358
  '''
1729
2359
  self.meta = meta if meta is not None else None
1730
2360
  '''
@@ -1736,15 +2366,15 @@ class AccountUpdateResponse:
1736
2366
  '''
1737
2367
 
1738
2368
  def __repr__(self):
1739
- return '<sdm.AccountUpdateResponse ' + \
1740
- 'account: ' + repr(self.account) + ' ' +\
2369
+ return '<sdm.ActivityGetResponse ' + \
2370
+ 'activity: ' + repr(self.activity) + ' ' +\
1741
2371
  'meta: ' + repr(self.meta) + ' ' +\
1742
2372
  'rate_limit: ' + repr(self.rate_limit) + ' ' +\
1743
2373
  '>'
1744
2374
 
1745
2375
  def to_dict(self):
1746
2376
  return {
1747
- 'account': self.account,
2377
+ 'activity': self.activity,
1748
2378
  'meta': self.meta,
1749
2379
  'rate_limit': self.rate_limit,
1750
2380
  }
@@ -1752,7 +2382,7 @@ class AccountUpdateResponse:
1752
2382
  @classmethod
1753
2383
  def from_dict(cls, d):
1754
2384
  return cls(
1755
- account=d.get('account'),
2385
+ activity=d.get('activity'),
1756
2386
  meta=d.get('meta'),
1757
2387
  rate_limit=d.get('rate_limit'),
1758
2388
  )
@@ -8820,6 +9450,70 @@ class NodeGetResponse:
8820
9450
  )
8821
9451
 
8822
9452
 
9453
+ class NodeHistory:
9454
+ '''
9455
+ NodeHistory records the state of a Node at a given point in time,
9456
+ where every change (create, update and delete) to a Node produces an
9457
+ NodeHistory record.
9458
+ '''
9459
+ __slots__ = [
9460
+ 'activity_id',
9461
+ 'deleted_at',
9462
+ 'node',
9463
+ 'timestamp',
9464
+ ]
9465
+
9466
+ def __init__(
9467
+ self,
9468
+ activity_id=None,
9469
+ deleted_at=None,
9470
+ node=None,
9471
+ timestamp=None,
9472
+ ):
9473
+ self.activity_id = activity_id if activity_id is not None else ''
9474
+ '''
9475
+ The unique identifier of the Activity that produced this change to the Node.
9476
+ May be empty for some system-initiated updates.
9477
+ '''
9478
+ self.deleted_at = deleted_at if deleted_at is not None else None
9479
+ '''
9480
+ If this Node was deleted, the time it was deleted.
9481
+ '''
9482
+ self.node = node if node is not None else None
9483
+ '''
9484
+ The complete Node state at this time.
9485
+ '''
9486
+ self.timestamp = timestamp if timestamp is not None else None
9487
+ '''
9488
+ The time at which the Node state was recorded.
9489
+ '''
9490
+
9491
+ def __repr__(self):
9492
+ return '<sdm.NodeHistory ' + \
9493
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
9494
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
9495
+ 'node: ' + repr(self.node) + ' ' +\
9496
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
9497
+ '>'
9498
+
9499
+ def to_dict(self):
9500
+ return {
9501
+ 'activity_id': self.activity_id,
9502
+ 'deleted_at': self.deleted_at,
9503
+ 'node': self.node,
9504
+ 'timestamp': self.timestamp,
9505
+ }
9506
+
9507
+ @classmethod
9508
+ def from_dict(cls, d):
9509
+ return cls(
9510
+ activity_id=d.get('activity_id'),
9511
+ deleted_at=d.get('deleted_at'),
9512
+ node=d.get('node'),
9513
+ timestamp=d.get('timestamp'),
9514
+ )
9515
+
9516
+
8823
9517
  class NodeUpdateResponse:
8824
9518
  '''
8825
9519
  NodeUpdateResponse returns the fields of a Node after it has been updated by
@@ -8935,68 +9629,364 @@ class Oracle:
8935
9629
  self.port_override = port_override if port_override is not None else 0
8936
9630
  self.secret_store_id = secret_store_id if secret_store_id is not None else ''
8937
9631
  '''
8938
- ID of the secret store containing credentials for this resource, if any.
9632
+ ID of the secret store containing credentials for this resource, if any.
9633
+ '''
9634
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
9635
+ '''
9636
+ Tags is a map of key, value pairs.
9637
+ '''
9638
+ self.tls_required = tls_required if tls_required is not None else False
9639
+ self.username = username if username is not None else ''
9640
+
9641
+ def __repr__(self):
9642
+ return '<sdm.Oracle ' + \
9643
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
9644
+ 'database: ' + repr(self.database) + ' ' +\
9645
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
9646
+ 'healthy: ' + repr(self.healthy) + ' ' +\
9647
+ 'hostname: ' + repr(self.hostname) + ' ' +\
9648
+ 'id: ' + repr(self.id) + ' ' +\
9649
+ 'name: ' + repr(self.name) + ' ' +\
9650
+ 'password: ' + repr(self.password) + ' ' +\
9651
+ 'port: ' + repr(self.port) + ' ' +\
9652
+ 'port_override: ' + repr(self.port_override) + ' ' +\
9653
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
9654
+ 'tags: ' + repr(self.tags) + ' ' +\
9655
+ 'tls_required: ' + repr(self.tls_required) + ' ' +\
9656
+ 'username: ' + repr(self.username) + ' ' +\
9657
+ '>'
9658
+
9659
+ def to_dict(self):
9660
+ return {
9661
+ 'bind_interface': self.bind_interface,
9662
+ 'database': self.database,
9663
+ 'egress_filter': self.egress_filter,
9664
+ 'healthy': self.healthy,
9665
+ 'hostname': self.hostname,
9666
+ 'id': self.id,
9667
+ 'name': self.name,
9668
+ 'password': self.password,
9669
+ 'port': self.port,
9670
+ 'port_override': self.port_override,
9671
+ 'secret_store_id': self.secret_store_id,
9672
+ 'tags': self.tags,
9673
+ 'tls_required': self.tls_required,
9674
+ 'username': self.username,
9675
+ }
9676
+
9677
+ @classmethod
9678
+ def from_dict(cls, d):
9679
+ return cls(
9680
+ bind_interface=d.get('bind_interface'),
9681
+ database=d.get('database'),
9682
+ egress_filter=d.get('egress_filter'),
9683
+ healthy=d.get('healthy'),
9684
+ hostname=d.get('hostname'),
9685
+ id=d.get('id'),
9686
+ name=d.get('name'),
9687
+ password=d.get('password'),
9688
+ port=d.get('port'),
9689
+ port_override=d.get('port_override'),
9690
+ secret_store_id=d.get('secret_store_id'),
9691
+ tags=d.get('tags'),
9692
+ tls_required=d.get('tls_required'),
9693
+ username=d.get('username'),
9694
+ )
9695
+
9696
+
9697
+ class Organization:
9698
+ __slots__ = [
9699
+ 'auth_provider',
9700
+ 'created_at',
9701
+ 'idle_timeout',
9702
+ 'idle_timeout_enabled',
9703
+ 'kind',
9704
+ 'log_local_encoder',
9705
+ 'log_local_format',
9706
+ 'log_local_storage',
9707
+ 'log_remote_encoder',
9708
+ 'log_socket_path',
9709
+ 'log_tcp_address',
9710
+ 'mfa_enabled',
9711
+ 'mfa_provider',
9712
+ 'name',
9713
+ 'require_secret_store',
9714
+ 'saml_metadata_url',
9715
+ 'scim_provider',
9716
+ 'sensitive_label',
9717
+ 'session_timeout',
9718
+ 'session_timeout_enabled',
9719
+ 'ssh_certificate_authority_public_key',
9720
+ 'ssh_certificate_authority_updated_at',
9721
+ 'updated_at',
9722
+ 'websites_subdomain',
9723
+ ]
9724
+
9725
+ def __init__(
9726
+ self,
9727
+ auth_provider=None,
9728
+ created_at=None,
9729
+ idle_timeout=None,
9730
+ idle_timeout_enabled=None,
9731
+ kind=None,
9732
+ log_local_encoder=None,
9733
+ log_local_format=None,
9734
+ log_local_storage=None,
9735
+ log_remote_encoder=None,
9736
+ log_socket_path=None,
9737
+ log_tcp_address=None,
9738
+ mfa_enabled=None,
9739
+ mfa_provider=None,
9740
+ name=None,
9741
+ require_secret_store=None,
9742
+ saml_metadata_url=None,
9743
+ scim_provider=None,
9744
+ sensitive_label=None,
9745
+ session_timeout=None,
9746
+ session_timeout_enabled=None,
9747
+ ssh_certificate_authority_public_key=None,
9748
+ ssh_certificate_authority_updated_at=None,
9749
+ updated_at=None,
9750
+ websites_subdomain=None,
9751
+ ):
9752
+ self.auth_provider = auth_provider if auth_provider is not None else ''
9753
+ '''
9754
+ The Organization's authentication provider.
9755
+ '''
9756
+ self.created_at = created_at if created_at is not None else None
9757
+ '''
9758
+ The time at which the Organization was created.
9759
+ '''
9760
+ self.idle_timeout = idle_timeout if idle_timeout is not None else None
9761
+ '''
9762
+ The Organization's idle timeout, if enabled.
9763
+ '''
9764
+ self.idle_timeout_enabled = idle_timeout_enabled if idle_timeout_enabled is not None else False
9765
+ '''
9766
+ Indicates if the Organization has idle timeouts enabled.
9767
+ '''
9768
+ self.kind = kind if kind is not None else ''
9769
+ '''
9770
+ The Organization's type.
9771
+ '''
9772
+ self.log_local_encoder = log_local_encoder if log_local_encoder is not None else ''
9773
+ '''
9774
+ The Organization's local log encryption encoder.
9775
+ '''
9776
+ self.log_local_format = log_local_format if log_local_format is not None else ''
9777
+ '''
9778
+ The Organization's local log format.
9779
+ '''
9780
+ self.log_local_storage = log_local_storage if log_local_storage is not None else ''
9781
+ '''
9782
+ The Organization's local log storage.
9783
+ '''
9784
+ self.log_remote_encoder = log_remote_encoder if log_remote_encoder is not None else ''
9785
+ '''
9786
+ The Organization's remote log encryption encoder.
9787
+ '''
9788
+ self.log_socket_path = log_socket_path if log_socket_path is not None else ''
9789
+ '''
9790
+ The Organization's socket path for Socket local log storage.
9791
+ '''
9792
+ self.log_tcp_address = log_tcp_address if log_tcp_address is not None else ''
9793
+ '''
9794
+ The Organization's TCP address for TCP or Syslog local log storage.
9795
+ '''
9796
+ self.mfa_enabled = mfa_enabled if mfa_enabled is not None else False
9797
+ '''
9798
+ Indicates if the Organization has multi-factor authentication enabled.
9799
+ '''
9800
+ self.mfa_provider = mfa_provider if mfa_provider is not None else ''
9801
+ '''
9802
+ The Organization's multi-factor authentication provider, if enabled.
9803
+ '''
9804
+ self.name = name if name is not None else ''
9805
+ '''
9806
+ The Organization's name.
9807
+ '''
9808
+ self.require_secret_store = require_secret_store if require_secret_store is not None else False
9809
+ '''
9810
+ Indicates if the Organization requires secret stores.
9811
+ '''
9812
+ self.saml_metadata_url = saml_metadata_url if saml_metadata_url is not None else ''
9813
+ '''
9814
+ The Organization's URL for SAML metadata.
9815
+ '''
9816
+ self.scim_provider = scim_provider if scim_provider is not None else ''
9817
+ '''
9818
+ The Organization's SCIM provider.
9819
+ '''
9820
+ self.sensitive_label = sensitive_label if sensitive_label is not None else ''
9821
+ '''
9822
+ The Organization's label for sensitive resources.
9823
+ '''
9824
+ self.session_timeout = session_timeout if session_timeout is not None else None
9825
+ '''
9826
+ The Organization's session timeout, if enabled.
9827
+ '''
9828
+ self.session_timeout_enabled = session_timeout_enabled if session_timeout_enabled is not None else False
9829
+ '''
9830
+ Indicates if the Organization has session timeouts enabled.
9831
+ '''
9832
+ self.ssh_certificate_authority_public_key = ssh_certificate_authority_public_key if ssh_certificate_authority_public_key is not None else ''
9833
+ '''
9834
+ The Organization's SSH certificate authority public key.
9835
+ '''
9836
+ self.ssh_certificate_authority_updated_at = ssh_certificate_authority_updated_at if ssh_certificate_authority_updated_at is not None else None
9837
+ '''
9838
+ The time at which the Organization's SSH certificate authority was last updated.
9839
+ '''
9840
+ self.updated_at = updated_at if updated_at is not None else None
9841
+ '''
9842
+ The time at which the Organization was last updated.
9843
+ '''
9844
+ self.websites_subdomain = websites_subdomain if websites_subdomain is not None else ''
9845
+ '''
9846
+ The Organization's web site domain.
9847
+ '''
9848
+
9849
+ def __repr__(self):
9850
+ return '<sdm.Organization ' + \
9851
+ 'auth_provider: ' + repr(self.auth_provider) + ' ' +\
9852
+ 'created_at: ' + repr(self.created_at) + ' ' +\
9853
+ 'idle_timeout: ' + repr(self.idle_timeout) + ' ' +\
9854
+ 'idle_timeout_enabled: ' + repr(self.idle_timeout_enabled) + ' ' +\
9855
+ 'kind: ' + repr(self.kind) + ' ' +\
9856
+ 'log_local_encoder: ' + repr(self.log_local_encoder) + ' ' +\
9857
+ 'log_local_format: ' + repr(self.log_local_format) + ' ' +\
9858
+ 'log_local_storage: ' + repr(self.log_local_storage) + ' ' +\
9859
+ 'log_remote_encoder: ' + repr(self.log_remote_encoder) + ' ' +\
9860
+ 'log_socket_path: ' + repr(self.log_socket_path) + ' ' +\
9861
+ 'log_tcp_address: ' + repr(self.log_tcp_address) + ' ' +\
9862
+ 'mfa_enabled: ' + repr(self.mfa_enabled) + ' ' +\
9863
+ 'mfa_provider: ' + repr(self.mfa_provider) + ' ' +\
9864
+ 'name: ' + repr(self.name) + ' ' +\
9865
+ 'require_secret_store: ' + repr(self.require_secret_store) + ' ' +\
9866
+ 'saml_metadata_url: ' + repr(self.saml_metadata_url) + ' ' +\
9867
+ 'scim_provider: ' + repr(self.scim_provider) + ' ' +\
9868
+ 'sensitive_label: ' + repr(self.sensitive_label) + ' ' +\
9869
+ 'session_timeout: ' + repr(self.session_timeout) + ' ' +\
9870
+ 'session_timeout_enabled: ' + repr(self.session_timeout_enabled) + ' ' +\
9871
+ 'ssh_certificate_authority_public_key: ' + repr(self.ssh_certificate_authority_public_key) + ' ' +\
9872
+ 'ssh_certificate_authority_updated_at: ' + repr(self.ssh_certificate_authority_updated_at) + ' ' +\
9873
+ 'updated_at: ' + repr(self.updated_at) + ' ' +\
9874
+ 'websites_subdomain: ' + repr(self.websites_subdomain) + ' ' +\
9875
+ '>'
9876
+
9877
+ def to_dict(self):
9878
+ return {
9879
+ 'auth_provider': self.auth_provider,
9880
+ 'created_at': self.created_at,
9881
+ 'idle_timeout': self.idle_timeout,
9882
+ 'idle_timeout_enabled': self.idle_timeout_enabled,
9883
+ 'kind': self.kind,
9884
+ 'log_local_encoder': self.log_local_encoder,
9885
+ 'log_local_format': self.log_local_format,
9886
+ 'log_local_storage': self.log_local_storage,
9887
+ 'log_remote_encoder': self.log_remote_encoder,
9888
+ 'log_socket_path': self.log_socket_path,
9889
+ 'log_tcp_address': self.log_tcp_address,
9890
+ 'mfa_enabled': self.mfa_enabled,
9891
+ 'mfa_provider': self.mfa_provider,
9892
+ 'name': self.name,
9893
+ 'require_secret_store': self.require_secret_store,
9894
+ 'saml_metadata_url': self.saml_metadata_url,
9895
+ 'scim_provider': self.scim_provider,
9896
+ 'sensitive_label': self.sensitive_label,
9897
+ 'session_timeout': self.session_timeout,
9898
+ 'session_timeout_enabled': self.session_timeout_enabled,
9899
+ 'ssh_certificate_authority_public_key':
9900
+ self.ssh_certificate_authority_public_key,
9901
+ 'ssh_certificate_authority_updated_at':
9902
+ self.ssh_certificate_authority_updated_at,
9903
+ 'updated_at': self.updated_at,
9904
+ 'websites_subdomain': self.websites_subdomain,
9905
+ }
9906
+
9907
+ @classmethod
9908
+ def from_dict(cls, d):
9909
+ return cls(
9910
+ auth_provider=d.get('auth_provider'),
9911
+ created_at=d.get('created_at'),
9912
+ idle_timeout=d.get('idle_timeout'),
9913
+ idle_timeout_enabled=d.get('idle_timeout_enabled'),
9914
+ kind=d.get('kind'),
9915
+ log_local_encoder=d.get('log_local_encoder'),
9916
+ log_local_format=d.get('log_local_format'),
9917
+ log_local_storage=d.get('log_local_storage'),
9918
+ log_remote_encoder=d.get('log_remote_encoder'),
9919
+ log_socket_path=d.get('log_socket_path'),
9920
+ log_tcp_address=d.get('log_tcp_address'),
9921
+ mfa_enabled=d.get('mfa_enabled'),
9922
+ mfa_provider=d.get('mfa_provider'),
9923
+ name=d.get('name'),
9924
+ require_secret_store=d.get('require_secret_store'),
9925
+ saml_metadata_url=d.get('saml_metadata_url'),
9926
+ scim_provider=d.get('scim_provider'),
9927
+ sensitive_label=d.get('sensitive_label'),
9928
+ session_timeout=d.get('session_timeout'),
9929
+ session_timeout_enabled=d.get('session_timeout_enabled'),
9930
+ ssh_certificate_authority_public_key=d.get(
9931
+ 'ssh_certificate_authority_public_key'),
9932
+ ssh_certificate_authority_updated_at=d.get(
9933
+ 'ssh_certificate_authority_updated_at'),
9934
+ updated_at=d.get('updated_at'),
9935
+ websites_subdomain=d.get('websites_subdomain'),
9936
+ )
9937
+
9938
+
9939
+ class OrganizationHistoryRecord:
9940
+ '''
9941
+ OrganizationHistoryRecord records the state of an Organization at a given point in time,
9942
+ where every change to an Organization produces an OrganizationHistoryRecord.
9943
+ '''
9944
+ __slots__ = [
9945
+ 'activity_id',
9946
+ 'organization',
9947
+ 'timestamp',
9948
+ ]
9949
+
9950
+ def __init__(
9951
+ self,
9952
+ activity_id=None,
9953
+ organization=None,
9954
+ timestamp=None,
9955
+ ):
9956
+ self.activity_id = activity_id if activity_id is not None else ''
9957
+ '''
9958
+ The unique identifier of the Activity that produced this change to the Organization.
9959
+ May be empty for some system-initiated organization updates.
9960
+ '''
9961
+ self.organization = organization if organization is not None else None
9962
+ '''
9963
+ The complete Organization state at this time.
8939
9964
  '''
8940
- self.tags = tags if tags is not None else _porcelain_zero_value_tags()
9965
+ self.timestamp = timestamp if timestamp is not None else None
8941
9966
  '''
8942
- Tags is a map of key, value pairs.
9967
+ The time at which the Organization state was recorded.
8943
9968
  '''
8944
- self.tls_required = tls_required if tls_required is not None else False
8945
- self.username = username if username is not None else ''
8946
9969
 
8947
9970
  def __repr__(self):
8948
- return '<sdm.Oracle ' + \
8949
- 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
8950
- 'database: ' + repr(self.database) + ' ' +\
8951
- 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
8952
- 'healthy: ' + repr(self.healthy) + ' ' +\
8953
- 'hostname: ' + repr(self.hostname) + ' ' +\
8954
- 'id: ' + repr(self.id) + ' ' +\
8955
- 'name: ' + repr(self.name) + ' ' +\
8956
- 'password: ' + repr(self.password) + ' ' +\
8957
- 'port: ' + repr(self.port) + ' ' +\
8958
- 'port_override: ' + repr(self.port_override) + ' ' +\
8959
- 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
8960
- 'tags: ' + repr(self.tags) + ' ' +\
8961
- 'tls_required: ' + repr(self.tls_required) + ' ' +\
8962
- 'username: ' + repr(self.username) + ' ' +\
9971
+ return '<sdm.OrganizationHistoryRecord ' + \
9972
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
9973
+ 'organization: ' + repr(self.organization) + ' ' +\
9974
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
8963
9975
  '>'
8964
9976
 
8965
9977
  def to_dict(self):
8966
9978
  return {
8967
- 'bind_interface': self.bind_interface,
8968
- 'database': self.database,
8969
- 'egress_filter': self.egress_filter,
8970
- 'healthy': self.healthy,
8971
- 'hostname': self.hostname,
8972
- 'id': self.id,
8973
- 'name': self.name,
8974
- 'password': self.password,
8975
- 'port': self.port,
8976
- 'port_override': self.port_override,
8977
- 'secret_store_id': self.secret_store_id,
8978
- 'tags': self.tags,
8979
- 'tls_required': self.tls_required,
8980
- 'username': self.username,
9979
+ 'activity_id': self.activity_id,
9980
+ 'organization': self.organization,
9981
+ 'timestamp': self.timestamp,
8981
9982
  }
8982
9983
 
8983
9984
  @classmethod
8984
9985
  def from_dict(cls, d):
8985
9986
  return cls(
8986
- bind_interface=d.get('bind_interface'),
8987
- database=d.get('database'),
8988
- egress_filter=d.get('egress_filter'),
8989
- healthy=d.get('healthy'),
8990
- hostname=d.get('hostname'),
8991
- id=d.get('id'),
8992
- name=d.get('name'),
8993
- password=d.get('password'),
8994
- port=d.get('port'),
8995
- port_override=d.get('port_override'),
8996
- secret_store_id=d.get('secret_store_id'),
8997
- tags=d.get('tags'),
8998
- tls_required=d.get('tls_required'),
8999
- username=d.get('username'),
9987
+ activity_id=d.get('activity_id'),
9988
+ organization=d.get('organization'),
9989
+ timestamp=d.get('timestamp'),
9000
9990
  )
9001
9991
 
9002
9992
 
@@ -9254,6 +10244,231 @@ class Presto:
9254
10244
  )
9255
10245
 
9256
10246
 
10247
+ class Query:
10248
+ '''
10249
+ A Query is a record of a single client request to a resource, such as an SQL query.
10250
+ '''
10251
+ __slots__ = [
10252
+ 'account_email',
10253
+ 'account_first_name',
10254
+ 'account_id',
10255
+ 'account_last_name',
10256
+ 'account_tags',
10257
+ 'duration',
10258
+ 'egress_node_id',
10259
+ 'encrypted',
10260
+ 'id',
10261
+ 'query_body',
10262
+ 'query_category',
10263
+ 'query_hash',
10264
+ 'query_key',
10265
+ 'record_count',
10266
+ 'remote_identity_username',
10267
+ 'replayable',
10268
+ 'resource_id',
10269
+ 'resource_name',
10270
+ 'resource_tags',
10271
+ 'resource_type',
10272
+ 'timestamp',
10273
+ ]
10274
+
10275
+ def __init__(
10276
+ self,
10277
+ account_email=None,
10278
+ account_first_name=None,
10279
+ account_id=None,
10280
+ account_last_name=None,
10281
+ account_tags=None,
10282
+ duration=None,
10283
+ egress_node_id=None,
10284
+ encrypted=None,
10285
+ id=None,
10286
+ query_body=None,
10287
+ query_category=None,
10288
+ query_hash=None,
10289
+ query_key=None,
10290
+ record_count=None,
10291
+ remote_identity_username=None,
10292
+ replayable=None,
10293
+ resource_id=None,
10294
+ resource_name=None,
10295
+ resource_tags=None,
10296
+ resource_type=None,
10297
+ timestamp=None,
10298
+ ):
10299
+ self.account_email = account_email if account_email is not None else ''
10300
+ '''
10301
+ The email of the account performing this query, at the time the query was executed.
10302
+ If the account email is later changed, that change will not be reflected via this field.
10303
+ '''
10304
+ self.account_first_name = account_first_name if account_first_name is not None else ''
10305
+ '''
10306
+ The given name of the account performing this query, at the time the query was executed.
10307
+ If the account is later renamed, that change will not be reflected via this field.
10308
+ '''
10309
+ self.account_id = account_id if account_id is not None else ''
10310
+ '''
10311
+ Unique identifier of the Account that performed the Query.
10312
+ '''
10313
+ self.account_last_name = account_last_name if account_last_name is not None else ''
10314
+ '''
10315
+ The family name of the account performing this query, at the time the query was executed.
10316
+ If the account is later renamed, that change will not be reflected via this field.
10317
+ '''
10318
+ self.account_tags = account_tags if account_tags is not None else _porcelain_zero_value_tags(
10319
+ )
10320
+ '''
10321
+ The tags of the account accessed, at the time the query was executed. If the account
10322
+ tags are later changed, that change will not be reflected via this field.
10323
+ '''
10324
+ self.duration = duration if duration is not None else None
10325
+ '''
10326
+ The duration of the Query.
10327
+ '''
10328
+ self.egress_node_id = egress_node_id if egress_node_id is not None else ''
10329
+ '''
10330
+ The unique ID of the node through which the Resource was accessed.
10331
+ '''
10332
+ self.encrypted = encrypted if encrypted is not None else False
10333
+ '''
10334
+ Indicates that the body of the Query is encrypted.
10335
+ '''
10336
+ self.id = id if id is not None else ''
10337
+ '''
10338
+ Unique identifier of the Query.
10339
+ '''
10340
+ self.query_body = query_body if query_body is not None else ''
10341
+ '''
10342
+ The captured content of the Query.
10343
+ '''
10344
+ self.query_category = query_category if query_category is not None else ''
10345
+ '''
10346
+ The general category of Resource against which Query was performed, e.g. "web" or "cloud".
10347
+ '''
10348
+ self.query_hash = query_hash if query_hash is not None else ''
10349
+ '''
10350
+ The hash of the body of the Query.
10351
+ '''
10352
+ self.query_key = query_key if query_key is not None else ''
10353
+ '''
10354
+ The symmetric key used to encrypt the body of this Query and its replay if replayable.
10355
+ If the Query is encrypted, this field contains an encrypted symmetric key in base64 encoding.
10356
+ This key must be decrypted with the organization's private key to obtain the symmetric key needed to decrypt the body.
10357
+ If the Query is not encrypted, this field is empty.
10358
+ '''
10359
+ self.record_count = record_count if record_count is not None else 0
10360
+ '''
10361
+ The number of records returned by the Query, for a database Resource.
10362
+ '''
10363
+ self.remote_identity_username = remote_identity_username if remote_identity_username is not None else ''
10364
+ '''
10365
+ The username of the RemoteIdentity used to access the Resource.
10366
+ '''
10367
+ self.replayable = replayable if replayable is not None else False
10368
+ '''
10369
+ Indicates that the Query is replayable, e.g. for some SSH or K8s sessions.
10370
+ '''
10371
+ self.resource_id = resource_id if resource_id is not None else ''
10372
+ '''
10373
+ Unique identifier of the Resource against which the Query was performed.
10374
+ '''
10375
+ self.resource_name = resource_name if resource_name is not None else ''
10376
+ '''
10377
+ The name of the resource accessed, at the time the query was executed. If the resource
10378
+ is later renamed, that change will not be reflected via this field.
10379
+ '''
10380
+ self.resource_tags = resource_tags if resource_tags is not None else _porcelain_zero_value_tags(
10381
+ )
10382
+ '''
10383
+ The tags of the resource accessed, at the time the query was executed. If the resource
10384
+ tags are later changed, that change will not be reflected via this field.
10385
+ '''
10386
+ self.resource_type = resource_type if resource_type is not None else ''
10387
+ '''
10388
+ The specific type of Resource against which the Query was performed, e.g. "ssh" or "postgres".
10389
+ '''
10390
+ self.timestamp = timestamp if timestamp is not None else None
10391
+ '''
10392
+ The time at which the Query was performed.
10393
+ '''
10394
+
10395
+ def __repr__(self):
10396
+ return '<sdm.Query ' + \
10397
+ 'account_email: ' + repr(self.account_email) + ' ' +\
10398
+ 'account_first_name: ' + repr(self.account_first_name) + ' ' +\
10399
+ 'account_id: ' + repr(self.account_id) + ' ' +\
10400
+ 'account_last_name: ' + repr(self.account_last_name) + ' ' +\
10401
+ 'account_tags: ' + repr(self.account_tags) + ' ' +\
10402
+ 'duration: ' + repr(self.duration) + ' ' +\
10403
+ 'egress_node_id: ' + repr(self.egress_node_id) + ' ' +\
10404
+ 'encrypted: ' + repr(self.encrypted) + ' ' +\
10405
+ 'id: ' + repr(self.id) + ' ' +\
10406
+ 'query_body: ' + repr(self.query_body) + ' ' +\
10407
+ 'query_category: ' + repr(self.query_category) + ' ' +\
10408
+ 'query_hash: ' + repr(self.query_hash) + ' ' +\
10409
+ 'query_key: ' + repr(self.query_key) + ' ' +\
10410
+ 'record_count: ' + repr(self.record_count) + ' ' +\
10411
+ 'remote_identity_username: ' + repr(self.remote_identity_username) + ' ' +\
10412
+ 'replayable: ' + repr(self.replayable) + ' ' +\
10413
+ 'resource_id: ' + repr(self.resource_id) + ' ' +\
10414
+ 'resource_name: ' + repr(self.resource_name) + ' ' +\
10415
+ 'resource_tags: ' + repr(self.resource_tags) + ' ' +\
10416
+ 'resource_type: ' + repr(self.resource_type) + ' ' +\
10417
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
10418
+ '>'
10419
+
10420
+ def to_dict(self):
10421
+ return {
10422
+ 'account_email': self.account_email,
10423
+ 'account_first_name': self.account_first_name,
10424
+ 'account_id': self.account_id,
10425
+ 'account_last_name': self.account_last_name,
10426
+ 'account_tags': self.account_tags,
10427
+ 'duration': self.duration,
10428
+ 'egress_node_id': self.egress_node_id,
10429
+ 'encrypted': self.encrypted,
10430
+ 'id': self.id,
10431
+ 'query_body': self.query_body,
10432
+ 'query_category': self.query_category,
10433
+ 'query_hash': self.query_hash,
10434
+ 'query_key': self.query_key,
10435
+ 'record_count': self.record_count,
10436
+ 'remote_identity_username': self.remote_identity_username,
10437
+ 'replayable': self.replayable,
10438
+ 'resource_id': self.resource_id,
10439
+ 'resource_name': self.resource_name,
10440
+ 'resource_tags': self.resource_tags,
10441
+ 'resource_type': self.resource_type,
10442
+ 'timestamp': self.timestamp,
10443
+ }
10444
+
10445
+ @classmethod
10446
+ def from_dict(cls, d):
10447
+ return cls(
10448
+ account_email=d.get('account_email'),
10449
+ account_first_name=d.get('account_first_name'),
10450
+ account_id=d.get('account_id'),
10451
+ account_last_name=d.get('account_last_name'),
10452
+ account_tags=d.get('account_tags'),
10453
+ duration=d.get('duration'),
10454
+ egress_node_id=d.get('egress_node_id'),
10455
+ encrypted=d.get('encrypted'),
10456
+ id=d.get('id'),
10457
+ query_body=d.get('query_body'),
10458
+ query_category=d.get('query_category'),
10459
+ query_hash=d.get('query_hash'),
10460
+ query_key=d.get('query_key'),
10461
+ record_count=d.get('record_count'),
10462
+ remote_identity_username=d.get('remote_identity_username'),
10463
+ replayable=d.get('replayable'),
10464
+ resource_id=d.get('resource_id'),
10465
+ resource_name=d.get('resource_name'),
10466
+ resource_tags=d.get('resource_tags'),
10467
+ resource_type=d.get('resource_type'),
10468
+ timestamp=d.get('timestamp'),
10469
+ )
10470
+
10471
+
9257
10472
  class RDP:
9258
10473
  __slots__ = [
9259
10474
  'bind_interface',
@@ -10254,33 +11469,214 @@ class RemoteIdentityGroup:
10254
11469
 
10255
11470
  def to_dict(self):
10256
11471
  return {
10257
- 'id': self.id,
10258
- 'name': self.name,
11472
+ 'id': self.id,
11473
+ 'name': self.name,
11474
+ }
11475
+
11476
+ @classmethod
11477
+ def from_dict(cls, d):
11478
+ return cls(
11479
+ id=d.get('id'),
11480
+ name=d.get('name'),
11481
+ )
11482
+
11483
+
11484
+ class RemoteIdentityGroupGetResponse:
11485
+ '''
11486
+ RemoteIdentityGroupGetResponse returns a requested RemoteIdentityGroup.
11487
+ '''
11488
+ __slots__ = [
11489
+ 'meta',
11490
+ 'rate_limit',
11491
+ 'remote_identity_group',
11492
+ ]
11493
+
11494
+ def __init__(
11495
+ self,
11496
+ meta=None,
11497
+ rate_limit=None,
11498
+ remote_identity_group=None,
11499
+ ):
11500
+ self.meta = meta if meta is not None else None
11501
+ '''
11502
+ Reserved for future use.
11503
+ '''
11504
+ self.rate_limit = rate_limit if rate_limit is not None else None
11505
+ '''
11506
+ Rate limit information.
11507
+ '''
11508
+ self.remote_identity_group = remote_identity_group if remote_identity_group is not None else None
11509
+ '''
11510
+ The requested RemoteIdentityGroup.
11511
+ '''
11512
+
11513
+ def __repr__(self):
11514
+ return '<sdm.RemoteIdentityGroupGetResponse ' + \
11515
+ 'meta: ' + repr(self.meta) + ' ' +\
11516
+ 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
11517
+ 'remote_identity_group: ' + repr(self.remote_identity_group) + ' ' +\
11518
+ '>'
11519
+
11520
+ def to_dict(self):
11521
+ return {
11522
+ 'meta': self.meta,
11523
+ 'rate_limit': self.rate_limit,
11524
+ 'remote_identity_group': self.remote_identity_group,
11525
+ }
11526
+
11527
+ @classmethod
11528
+ def from_dict(cls, d):
11529
+ return cls(
11530
+ meta=d.get('meta'),
11531
+ rate_limit=d.get('rate_limit'),
11532
+ remote_identity_group=d.get('remote_identity_group'),
11533
+ )
11534
+
11535
+
11536
+ class RemoteIdentityGroupHistory:
11537
+ '''
11538
+ RemoteIdentityGroupHistory records the state of a RemoteIdentityGroup at a given point in time,
11539
+ where every change (create, update and delete) to a RemoteIdentityGroup produces an
11540
+ RemoteIdentityGroupHistory record.
11541
+ '''
11542
+ __slots__ = [
11543
+ 'activity_id',
11544
+ 'deleted_at',
11545
+ 'remote_identity_group',
11546
+ 'timestamp',
11547
+ ]
11548
+
11549
+ def __init__(
11550
+ self,
11551
+ activity_id=None,
11552
+ deleted_at=None,
11553
+ remote_identity_group=None,
11554
+ timestamp=None,
11555
+ ):
11556
+ self.activity_id = activity_id if activity_id is not None else ''
11557
+ '''
11558
+ The unique identifier of the Activity that produced this change to the RemoteIdentityGroup.
11559
+ May be empty for some system-initiated updates.
11560
+ '''
11561
+ self.deleted_at = deleted_at if deleted_at is not None else None
11562
+ '''
11563
+ If this RemoteIdentityGroup was deleted, the time it was deleted.
11564
+ '''
11565
+ self.remote_identity_group = remote_identity_group if remote_identity_group is not None else None
11566
+ '''
11567
+ The complete RemoteIdentityGroup state at this time.
11568
+ '''
11569
+ self.timestamp = timestamp if timestamp is not None else None
11570
+ '''
11571
+ The time at which the RemoteIdentityGroup state was recorded.
11572
+ '''
11573
+
11574
+ def __repr__(self):
11575
+ return '<sdm.RemoteIdentityGroupHistory ' + \
11576
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
11577
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
11578
+ 'remote_identity_group: ' + repr(self.remote_identity_group) + ' ' +\
11579
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
11580
+ '>'
11581
+
11582
+ def to_dict(self):
11583
+ return {
11584
+ 'activity_id': self.activity_id,
11585
+ 'deleted_at': self.deleted_at,
11586
+ 'remote_identity_group': self.remote_identity_group,
11587
+ 'timestamp': self.timestamp,
11588
+ }
11589
+
11590
+ @classmethod
11591
+ def from_dict(cls, d):
11592
+ return cls(
11593
+ activity_id=d.get('activity_id'),
11594
+ deleted_at=d.get('deleted_at'),
11595
+ remote_identity_group=d.get('remote_identity_group'),
11596
+ timestamp=d.get('timestamp'),
11597
+ )
11598
+
11599
+
11600
+ class RemoteIdentityHistory:
11601
+ '''
11602
+ RemoteIdentityHistory records the state of a RemoteIdentity at a given point in time,
11603
+ where every change (create, update and delete) to a RemoteIdentity produces an
11604
+ RemoteIdentityHistory record.
11605
+ '''
11606
+ __slots__ = [
11607
+ 'activity_id',
11608
+ 'deleted_at',
11609
+ 'remote_identity',
11610
+ 'timestamp',
11611
+ ]
11612
+
11613
+ def __init__(
11614
+ self,
11615
+ activity_id=None,
11616
+ deleted_at=None,
11617
+ remote_identity=None,
11618
+ timestamp=None,
11619
+ ):
11620
+ self.activity_id = activity_id if activity_id is not None else ''
11621
+ '''
11622
+ The unique identifier of the Activity that produced this change to the RemoteIdentity.
11623
+ May be empty for some system-initiated updates.
11624
+ '''
11625
+ self.deleted_at = deleted_at if deleted_at is not None else None
11626
+ '''
11627
+ If this RemoteIdentity was deleted, the time it was deleted.
11628
+ '''
11629
+ self.remote_identity = remote_identity if remote_identity is not None else None
11630
+ '''
11631
+ The complete RemoteIdentity state at this time.
11632
+ '''
11633
+ self.timestamp = timestamp if timestamp is not None else None
11634
+ '''
11635
+ The time at which the RemoteIdentity state was recorded.
11636
+ '''
11637
+
11638
+ def __repr__(self):
11639
+ return '<sdm.RemoteIdentityHistory ' + \
11640
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
11641
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
11642
+ 'remote_identity: ' + repr(self.remote_identity) + ' ' +\
11643
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
11644
+ '>'
11645
+
11646
+ def to_dict(self):
11647
+ return {
11648
+ 'activity_id': self.activity_id,
11649
+ 'deleted_at': self.deleted_at,
11650
+ 'remote_identity': self.remote_identity,
11651
+ 'timestamp': self.timestamp,
10259
11652
  }
10260
11653
 
10261
11654
  @classmethod
10262
11655
  def from_dict(cls, d):
10263
11656
  return cls(
10264
- id=d.get('id'),
10265
- name=d.get('name'),
11657
+ activity_id=d.get('activity_id'),
11658
+ deleted_at=d.get('deleted_at'),
11659
+ remote_identity=d.get('remote_identity'),
11660
+ timestamp=d.get('timestamp'),
10266
11661
  )
10267
11662
 
10268
11663
 
10269
- class RemoteIdentityGroupGetResponse:
11664
+ class RemoteIdentityUpdateResponse:
10270
11665
  '''
10271
- RemoteIdentityGroupGetResponse returns a requested RemoteIdentityGroup.
11666
+ RemoteIdentityUpdateResponse returns the fields of a RemoteIdentity after it has been updated by
11667
+ a RemoteIdentityUpdateRequest.
10272
11668
  '''
10273
11669
  __slots__ = [
10274
11670
  'meta',
10275
11671
  'rate_limit',
10276
- 'remote_identity_group',
11672
+ 'remote_identity',
10277
11673
  ]
10278
11674
 
10279
11675
  def __init__(
10280
11676
  self,
10281
11677
  meta=None,
10282
11678
  rate_limit=None,
10283
- remote_identity_group=None,
11679
+ remote_identity=None,
10284
11680
  ):
10285
11681
  self.meta = meta if meta is not None else None
10286
11682
  '''
@@ -10290,23 +11686,23 @@ class RemoteIdentityGroupGetResponse:
10290
11686
  '''
10291
11687
  Rate limit information.
10292
11688
  '''
10293
- self.remote_identity_group = remote_identity_group if remote_identity_group is not None else None
11689
+ self.remote_identity = remote_identity if remote_identity is not None else None
10294
11690
  '''
10295
- The requested RemoteIdentityGroup.
11691
+ The updated RemoteIdentity.
10296
11692
  '''
10297
11693
 
10298
11694
  def __repr__(self):
10299
- return '<sdm.RemoteIdentityGroupGetResponse ' + \
11695
+ return '<sdm.RemoteIdentityUpdateResponse ' + \
10300
11696
  'meta: ' + repr(self.meta) + ' ' +\
10301
11697
  'rate_limit: ' + repr(self.rate_limit) + ' ' +\
10302
- 'remote_identity_group: ' + repr(self.remote_identity_group) + ' ' +\
11698
+ 'remote_identity: ' + repr(self.remote_identity) + ' ' +\
10303
11699
  '>'
10304
11700
 
10305
11701
  def to_dict(self):
10306
11702
  return {
10307
11703
  'meta': self.meta,
10308
11704
  'rate_limit': self.rate_limit,
10309
- 'remote_identity_group': self.remote_identity_group,
11705
+ 'remote_identity': self.remote_identity,
10310
11706
  }
10311
11707
 
10312
11708
  @classmethod
@@ -10314,60 +11710,95 @@ class RemoteIdentityGroupGetResponse:
10314
11710
  return cls(
10315
11711
  meta=d.get('meta'),
10316
11712
  rate_limit=d.get('rate_limit'),
10317
- remote_identity_group=d.get('remote_identity_group'),
11713
+ remote_identity=d.get('remote_identity'),
10318
11714
  )
10319
11715
 
10320
11716
 
10321
- class RemoteIdentityUpdateResponse:
11717
+ class ReplayChunk:
10322
11718
  '''
10323
- RemoteIdentityUpdateResponse returns the fields of a RemoteIdentity after it has been updated by
10324
- a RemoteIdentityUpdateRequest.
11719
+ A ReplayChunk represents a single "chunk" of data from the query replay.
10325
11720
  '''
10326
11721
  __slots__ = [
10327
- 'meta',
10328
- 'rate_limit',
10329
- 'remote_identity',
11722
+ 'data',
11723
+ 'events',
10330
11724
  ]
10331
11725
 
10332
11726
  def __init__(
10333
11727
  self,
10334
- meta=None,
10335
- rate_limit=None,
10336
- remote_identity=None,
11728
+ data=None,
11729
+ events=None,
10337
11730
  ):
10338
- self.meta = meta if meta is not None else None
11731
+ self.data = data if data is not None else b''
10339
11732
  '''
10340
- Reserved for future use.
11733
+ The raw data of the ReplayChunk. The data is encrypted if the associated Query is encrypted.
10341
11734
  '''
10342
- self.rate_limit = rate_limit if rate_limit is not None else None
11735
+ self.events = events if events is not None else []
10343
11736
  '''
10344
- Rate limit information.
11737
+ The list of events of the ReplayChunk. If the Query is encrypted, this field is always empty
11738
+ and the events can be obtained by decrypting the data using the QueryKey returned with the Query.
10345
11739
  '''
10346
- self.remote_identity = remote_identity if remote_identity is not None else None
11740
+
11741
+ def __repr__(self):
11742
+ return '<sdm.ReplayChunk ' + \
11743
+ 'data: ' + repr(self.data) + ' ' +\
11744
+ 'events: ' + repr(self.events) + ' ' +\
11745
+ '>'
11746
+
11747
+ def to_dict(self):
11748
+ return {
11749
+ 'data': self.data,
11750
+ 'events': self.events,
11751
+ }
11752
+
11753
+ @classmethod
11754
+ def from_dict(cls, d):
11755
+ return cls(
11756
+ data=d.get('data'),
11757
+ events=d.get('events'),
11758
+ )
11759
+
11760
+
11761
+ class ReplayChunkEvent:
11762
+ '''
11763
+ A ReplayChunkEvent represents a single event within a query replay.
11764
+ The timing information included in each ReplayChunkEvent may be used to replay a session in real time.
11765
+ '''
11766
+ __slots__ = [
11767
+ 'data',
11768
+ 'duration',
11769
+ ]
11770
+
11771
+ def __init__(
11772
+ self,
11773
+ data=None,
11774
+ duration=None,
11775
+ ):
11776
+ self.data = data if data is not None else b''
10347
11777
  '''
10348
- The updated RemoteIdentity.
11778
+ The raw data of the ReplayChunkEvent.
11779
+ '''
11780
+ self.duration = duration if duration is not None else None
11781
+ '''
11782
+ The time duration over which the data in this ReplayChunkEvent was transferred.
10349
11783
  '''
10350
11784
 
10351
11785
  def __repr__(self):
10352
- return '<sdm.RemoteIdentityUpdateResponse ' + \
10353
- 'meta: ' + repr(self.meta) + ' ' +\
10354
- 'rate_limit: ' + repr(self.rate_limit) + ' ' +\
10355
- 'remote_identity: ' + repr(self.remote_identity) + ' ' +\
11786
+ return '<sdm.ReplayChunkEvent ' + \
11787
+ 'data: ' + repr(self.data) + ' ' +\
11788
+ 'duration: ' + repr(self.duration) + ' ' +\
10356
11789
  '>'
10357
11790
 
10358
11791
  def to_dict(self):
10359
11792
  return {
10360
- 'meta': self.meta,
10361
- 'rate_limit': self.rate_limit,
10362
- 'remote_identity': self.remote_identity,
11793
+ 'data': self.data,
11794
+ 'duration': self.duration,
10363
11795
  }
10364
11796
 
10365
11797
  @classmethod
10366
11798
  def from_dict(cls, d):
10367
11799
  return cls(
10368
- meta=d.get('meta'),
10369
- rate_limit=d.get('rate_limit'),
10370
- remote_identity=d.get('remote_identity'),
11800
+ data=d.get('data'),
11801
+ duration=d.get('duration'),
10371
11802
  )
10372
11803
 
10373
11804
 
@@ -10518,6 +11949,70 @@ class ResourceGetResponse:
10518
11949
  )
10519
11950
 
10520
11951
 
11952
+ class ResourceHistory:
11953
+ '''
11954
+ ResourceHistory records the state of a Resource at a given point in time,
11955
+ where every change (create, update and delete) to a Resource produces an
11956
+ ResourceHistory record.
11957
+ '''
11958
+ __slots__ = [
11959
+ 'activity_id',
11960
+ 'deleted_at',
11961
+ 'resource',
11962
+ 'timestamp',
11963
+ ]
11964
+
11965
+ def __init__(
11966
+ self,
11967
+ activity_id=None,
11968
+ deleted_at=None,
11969
+ resource=None,
11970
+ timestamp=None,
11971
+ ):
11972
+ self.activity_id = activity_id if activity_id is not None else ''
11973
+ '''
11974
+ The unique identifier of the Activity that produced this change to the Resource.
11975
+ May be empty for some system-initiated updates.
11976
+ '''
11977
+ self.deleted_at = deleted_at if deleted_at is not None else None
11978
+ '''
11979
+ If this Resource was deleted, the time it was deleted.
11980
+ '''
11981
+ self.resource = resource if resource is not None else None
11982
+ '''
11983
+ The complete Resource state at this time.
11984
+ '''
11985
+ self.timestamp = timestamp if timestamp is not None else None
11986
+ '''
11987
+ The time at which the Resource state was recorded.
11988
+ '''
11989
+
11990
+ def __repr__(self):
11991
+ return '<sdm.ResourceHistory ' + \
11992
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
11993
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
11994
+ 'resource: ' + repr(self.resource) + ' ' +\
11995
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
11996
+ '>'
11997
+
11998
+ def to_dict(self):
11999
+ return {
12000
+ 'activity_id': self.activity_id,
12001
+ 'deleted_at': self.deleted_at,
12002
+ 'resource': self.resource,
12003
+ 'timestamp': self.timestamp,
12004
+ }
12005
+
12006
+ @classmethod
12007
+ def from_dict(cls, d):
12008
+ return cls(
12009
+ activity_id=d.get('activity_id'),
12010
+ deleted_at=d.get('deleted_at'),
12011
+ resource=d.get('resource'),
12012
+ timestamp=d.get('timestamp'),
12013
+ )
12014
+
12015
+
10521
12016
  class ResourceUpdateResponse:
10522
12017
  '''
10523
12018
  ResourceUpdateResponse returns the fields of a Resource after it has been updated by
@@ -10792,6 +12287,187 @@ class RoleGetResponse:
10792
12287
  )
10793
12288
 
10794
12289
 
12290
+ class RoleHistory:
12291
+ '''
12292
+ RoleHistory records the state of a Role at a given point in time,
12293
+ where every change (create, update and delete) to a Role produces an
12294
+ RoleHistory record.
12295
+ '''
12296
+ __slots__ = [
12297
+ 'activity_id',
12298
+ 'deleted_at',
12299
+ 'role',
12300
+ 'timestamp',
12301
+ ]
12302
+
12303
+ def __init__(
12304
+ self,
12305
+ activity_id=None,
12306
+ deleted_at=None,
12307
+ role=None,
12308
+ timestamp=None,
12309
+ ):
12310
+ self.activity_id = activity_id if activity_id is not None else ''
12311
+ '''
12312
+ The unique identifier of the Activity that produced this change to the Role.
12313
+ May be empty for some system-initiated updates.
12314
+ '''
12315
+ self.deleted_at = deleted_at if deleted_at is not None else None
12316
+ '''
12317
+ If this Role was deleted, the time it was deleted.
12318
+ '''
12319
+ self.role = role if role is not None else None
12320
+ '''
12321
+ The complete Role state at this time.
12322
+ '''
12323
+ self.timestamp = timestamp if timestamp is not None else None
12324
+ '''
12325
+ The time at which the Role state was recorded.
12326
+ '''
12327
+
12328
+ def __repr__(self):
12329
+ return '<sdm.RoleHistory ' + \
12330
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
12331
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
12332
+ 'role: ' + repr(self.role) + ' ' +\
12333
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
12334
+ '>'
12335
+
12336
+ def to_dict(self):
12337
+ return {
12338
+ 'activity_id': self.activity_id,
12339
+ 'deleted_at': self.deleted_at,
12340
+ 'role': self.role,
12341
+ 'timestamp': self.timestamp,
12342
+ }
12343
+
12344
+ @classmethod
12345
+ def from_dict(cls, d):
12346
+ return cls(
12347
+ activity_id=d.get('activity_id'),
12348
+ deleted_at=d.get('deleted_at'),
12349
+ role=d.get('role'),
12350
+ timestamp=d.get('timestamp'),
12351
+ )
12352
+
12353
+
12354
+ class RoleResource:
12355
+ '''
12356
+ RoleResource represents an individual access grant of a Role to a Resource.
12357
+ '''
12358
+ __slots__ = [
12359
+ 'granted_at',
12360
+ 'resource_id',
12361
+ 'role_id',
12362
+ ]
12363
+
12364
+ def __init__(
12365
+ self,
12366
+ granted_at=None,
12367
+ resource_id=None,
12368
+ role_id=None,
12369
+ ):
12370
+ self.granted_at = granted_at if granted_at is not None else None
12371
+ '''
12372
+ The most recent time at which access was granted. If access was granted,
12373
+ revoked, and granted again, this will reflect the later time.
12374
+ '''
12375
+ self.resource_id = resource_id if resource_id is not None else ''
12376
+ '''
12377
+ The unique identifier of the Resource to which access is granted.
12378
+ '''
12379
+ self.role_id = role_id if role_id is not None else ''
12380
+ '''
12381
+ The unique identifier of the Role to which access is granted.
12382
+ '''
12383
+
12384
+ def __repr__(self):
12385
+ return '<sdm.RoleResource ' + \
12386
+ 'granted_at: ' + repr(self.granted_at) + ' ' +\
12387
+ 'resource_id: ' + repr(self.resource_id) + ' ' +\
12388
+ 'role_id: ' + repr(self.role_id) + ' ' +\
12389
+ '>'
12390
+
12391
+ def to_dict(self):
12392
+ return {
12393
+ 'granted_at': self.granted_at,
12394
+ 'resource_id': self.resource_id,
12395
+ 'role_id': self.role_id,
12396
+ }
12397
+
12398
+ @classmethod
12399
+ def from_dict(cls, d):
12400
+ return cls(
12401
+ granted_at=d.get('granted_at'),
12402
+ resource_id=d.get('resource_id'),
12403
+ role_id=d.get('role_id'),
12404
+ )
12405
+
12406
+
12407
+ class RoleResourceHistory:
12408
+ '''
12409
+ RoleResourceHistory records the state of a RoleResource at a given point in time,
12410
+ where every change (create or delete) to a RoleResource produces an
12411
+ RoleResourceHistory record.
12412
+ '''
12413
+ __slots__ = [
12414
+ 'activity_id',
12415
+ 'deleted_at',
12416
+ 'role_resource',
12417
+ 'timestamp',
12418
+ ]
12419
+
12420
+ def __init__(
12421
+ self,
12422
+ activity_id=None,
12423
+ deleted_at=None,
12424
+ role_resource=None,
12425
+ timestamp=None,
12426
+ ):
12427
+ self.activity_id = activity_id if activity_id is not None else ''
12428
+ '''
12429
+ The unique identifier of the Activity that produced this change to the RoleResource.
12430
+ May be empty for some system-initiated updates.
12431
+ '''
12432
+ self.deleted_at = deleted_at if deleted_at is not None else None
12433
+ '''
12434
+ If this RoleResource was deleted, the time it was deleted.
12435
+ '''
12436
+ self.role_resource = role_resource if role_resource is not None else None
12437
+ '''
12438
+ The complete RoleResource state at this time.
12439
+ '''
12440
+ self.timestamp = timestamp if timestamp is not None else None
12441
+ '''
12442
+ The time at which the RoleResource state was recorded.
12443
+ '''
12444
+
12445
+ def __repr__(self):
12446
+ return '<sdm.RoleResourceHistory ' + \
12447
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
12448
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
12449
+ 'role_resource: ' + repr(self.role_resource) + ' ' +\
12450
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
12451
+ '>'
12452
+
12453
+ def to_dict(self):
12454
+ return {
12455
+ 'activity_id': self.activity_id,
12456
+ 'deleted_at': self.deleted_at,
12457
+ 'role_resource': self.role_resource,
12458
+ 'timestamp': self.timestamp,
12459
+ }
12460
+
12461
+ @classmethod
12462
+ def from_dict(cls, d):
12463
+ return cls(
12464
+ activity_id=d.get('activity_id'),
12465
+ deleted_at=d.get('deleted_at'),
12466
+ role_resource=d.get('role_resource'),
12467
+ timestamp=d.get('timestamp'),
12468
+ )
12469
+
12470
+
10795
12471
  class RoleUpdateResponse:
10796
12472
  '''
10797
12473
  RoleUpdateResponse returns the fields of a Role after it has been updated by
@@ -11532,6 +13208,70 @@ class SecretStoreGetResponse:
11532
13208
  )
11533
13209
 
11534
13210
 
13211
+ class SecretStoreHistory:
13212
+ '''
13213
+ SecretStoreHistory records the state of a SecretStore at a given point in time,
13214
+ where every change (create, update and delete) to a SecretStore produces an
13215
+ SecretStoreHistory record.
13216
+ '''
13217
+ __slots__ = [
13218
+ 'activity_id',
13219
+ 'deleted_at',
13220
+ 'secret_store',
13221
+ 'timestamp',
13222
+ ]
13223
+
13224
+ def __init__(
13225
+ self,
13226
+ activity_id=None,
13227
+ deleted_at=None,
13228
+ secret_store=None,
13229
+ timestamp=None,
13230
+ ):
13231
+ self.activity_id = activity_id if activity_id is not None else ''
13232
+ '''
13233
+ The unique identifier of the Activity that produced this change to the SecretStore.
13234
+ May be empty for some system-initiated updates.
13235
+ '''
13236
+ self.deleted_at = deleted_at if deleted_at is not None else None
13237
+ '''
13238
+ If this SecretStore was deleted, the time it was deleted.
13239
+ '''
13240
+ self.secret_store = secret_store if secret_store is not None else None
13241
+ '''
13242
+ The complete SecretStore state at this time.
13243
+ '''
13244
+ self.timestamp = timestamp if timestamp is not None else None
13245
+ '''
13246
+ The time at which the SecretStore state was recorded.
13247
+ '''
13248
+
13249
+ def __repr__(self):
13250
+ return '<sdm.SecretStoreHistory ' + \
13251
+ 'activity_id: ' + repr(self.activity_id) + ' ' +\
13252
+ 'deleted_at: ' + repr(self.deleted_at) + ' ' +\
13253
+ 'secret_store: ' + repr(self.secret_store) + ' ' +\
13254
+ 'timestamp: ' + repr(self.timestamp) + ' ' +\
13255
+ '>'
13256
+
13257
+ def to_dict(self):
13258
+ return {
13259
+ 'activity_id': self.activity_id,
13260
+ 'deleted_at': self.deleted_at,
13261
+ 'secret_store': self.secret_store,
13262
+ 'timestamp': self.timestamp,
13263
+ }
13264
+
13265
+ @classmethod
13266
+ def from_dict(cls, d):
13267
+ return cls(
13268
+ activity_id=d.get('activity_id'),
13269
+ deleted_at=d.get('deleted_at'),
13270
+ secret_store=d.get('secret_store'),
13271
+ timestamp=d.get('timestamp'),
13272
+ )
13273
+
13274
+
11535
13275
  class SecretStoreUpdateResponse:
11536
13276
  '''
11537
13277
  SecretStoreUpdateResponse returns the fields of a SecretStore after it has been updated by