strongdm 11.7.0__zip → 11.9.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 (141) hide show
  1. {strongdm-11.7.0 → strongdm-11.9.0}/PKG-INFO +2 -2
  2. {strongdm-11.7.0 → strongdm-11.9.0}/setup.py +2 -2
  3. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/access_requests_pb2.py +14 -10
  4. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/client.py +7 -7
  5. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/constants.py +21 -0
  6. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/drivers_pb2.py +428 -172
  7. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/models.py +318 -0
  8. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/plumbing.py +152 -1
  9. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/spec_pb2.py +4 -2
  10. strongdm-11.9.0/strongdm/spec_pb2_grpc.py +18 -0
  11. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/svc.py +83 -81
  12. strongdm-11.9.0/strongdm/tags_pb2_grpc.py +18 -0
  13. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm.egg-info/PKG-INFO +2 -2
  14. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm.egg-info/SOURCES.txt +2 -0
  15. {strongdm-11.7.0 → strongdm-11.9.0}/LICENSE +0 -0
  16. {strongdm-11.7.0 → strongdm-11.9.0}/README.md +0 -0
  17. {strongdm-11.7.0 → strongdm-11.9.0}/setup.cfg +0 -0
  18. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/__init__.py +0 -0
  19. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/access_request_events_history_pb2.py +0 -0
  20. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/access_request_events_history_pb2_grpc.py +0 -0
  21. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/access_requests_history_pb2.py +0 -0
  22. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/access_requests_history_pb2_grpc.py +0 -0
  23. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/access_requests_pb2_grpc.py +0 -0
  24. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_attachments_history_pb2.py +0 -0
  25. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_attachments_history_pb2_grpc.py +0 -0
  26. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_attachments_pb2.py +0 -0
  27. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_attachments_pb2_grpc.py +0 -0
  28. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_grants_history_pb2.py +0 -0
  29. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_grants_history_pb2_grpc.py +0 -0
  30. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_grants_pb2.py +0 -0
  31. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_grants_pb2_grpc.py +0 -0
  32. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_permissions_pb2.py +0 -0
  33. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_permissions_pb2_grpc.py +0 -0
  34. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_resources_history_pb2.py +0 -0
  35. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_resources_history_pb2_grpc.py +0 -0
  36. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_resources_pb2.py +0 -0
  37. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/account_resources_pb2_grpc.py +0 -0
  38. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/accounts_history_pb2.py +0 -0
  39. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/accounts_history_pb2_grpc.py +0 -0
  40. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/accounts_pb2.py +0 -0
  41. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/accounts_pb2_grpc.py +0 -0
  42. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/activities_pb2.py +0 -0
  43. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/activities_pb2_grpc.py +0 -0
  44. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_approvers_history_pb2.py +0 -0
  45. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_approvers_history_pb2_grpc.py +0 -0
  46. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_approvers_pb2.py +0 -0
  47. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_approvers_pb2_grpc.py +0 -0
  48. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_steps_history_pb2.py +0 -0
  49. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_steps_history_pb2_grpc.py +0 -0
  50. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_steps_pb2.py +0 -0
  51. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflow_steps_pb2_grpc.py +0 -0
  52. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflows_history_pb2.py +0 -0
  53. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflows_history_pb2_grpc.py +0 -0
  54. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflows_pb2.py +0 -0
  55. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/approval_workflows_pb2_grpc.py +0 -0
  56. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/control_panel_pb2.py +0 -0
  57. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/control_panel_pb2_grpc.py +0 -0
  58. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/drivers_pb2_grpc.py +0 -0
  59. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/errors.py +0 -0
  60. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_aliases_history_pb2.py +0 -0
  61. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_aliases_history_pb2_grpc.py +0 -0
  62. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_aliases_pb2.py +0 -0
  63. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_aliases_pb2_grpc.py +0 -0
  64. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_sets_history_pb2.py +0 -0
  65. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_sets_history_pb2_grpc.py +0 -0
  66. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_sets_pb2.py +0 -0
  67. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/identity_sets_pb2_grpc.py +0 -0
  68. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/nodes_history_pb2.py +0 -0
  69. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/nodes_history_pb2_grpc.py +0 -0
  70. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/nodes_pb2.py +0 -0
  71. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/nodes_pb2_grpc.py +0 -0
  72. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/options_pb2.py +0 -0
  73. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/options_pb2_grpc.py +0 -0
  74. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/organization_history_pb2.py +0 -0
  75. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/organization_history_pb2_grpc.py +0 -0
  76. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_group_nodes_pb2.py +0 -0
  77. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_group_nodes_pb2_grpc.py +0 -0
  78. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_group_peers_pb2.py +0 -0
  79. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_group_peers_pb2_grpc.py +0 -0
  80. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_group_resources_pb2.py +0 -0
  81. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_group_resources_pb2_grpc.py +0 -0
  82. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_groups_pb2.py +0 -0
  83. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/peering_groups_pb2_grpc.py +0 -0
  84. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/policies_history_pb2.py +0 -0
  85. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/policies_history_pb2_grpc.py +0 -0
  86. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/policies_pb2.py +0 -0
  87. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/policies_pb2_grpc.py +0 -0
  88. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/queries_pb2.py +0 -0
  89. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/queries_pb2_grpc.py +0 -0
  90. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identities_history_pb2.py +0 -0
  91. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identities_history_pb2_grpc.py +0 -0
  92. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identities_pb2.py +0 -0
  93. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identities_pb2_grpc.py +0 -0
  94. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identity_groups_history_pb2.py +0 -0
  95. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identity_groups_history_pb2_grpc.py +0 -0
  96. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identity_groups_pb2.py +0 -0
  97. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/remote_identity_groups_pb2_grpc.py +0 -0
  98. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/replays_pb2.py +0 -0
  99. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/replays_pb2_grpc.py +0 -0
  100. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/resources_history_pb2.py +0 -0
  101. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/resources_history_pb2_grpc.py +0 -0
  102. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/resources_pb2.py +0 -0
  103. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/resources_pb2_grpc.py +0 -0
  104. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/role_resources_history_pb2.py +0 -0
  105. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/role_resources_history_pb2_grpc.py +0 -0
  106. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/role_resources_pb2.py +0 -0
  107. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/role_resources_pb2_grpc.py +0 -0
  108. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/roles_history_pb2.py +0 -0
  109. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/roles_history_pb2_grpc.py +0 -0
  110. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/roles_pb2.py +0 -0
  111. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/roles_pb2_grpc.py +0 -0
  112. /strongdm-11.7.0/strongdm/secret_store_types_pb2_grpc.py → /strongdm-11.9.0/strongdm/secret_engine_policy_pb2_grpc.py +0 -0
  113. /strongdm-11.7.0/strongdm/spec_pb2_grpc.py → /strongdm-11.9.0/strongdm/secret_engine_types_pb2_grpc.py +0 -0
  114. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_store_healths_pb2.py +0 -0
  115. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_store_healths_pb2_grpc.py +0 -0
  116. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_store_types_pb2.py +0 -0
  117. /strongdm-11.7.0/strongdm/tags_pb2_grpc.py → /strongdm-11.9.0/strongdm/secret_store_types_pb2_grpc.py +0 -0
  118. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_stores_history_pb2.py +0 -0
  119. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_stores_history_pb2_grpc.py +0 -0
  120. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_stores_pb2.py +0 -0
  121. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/secret_stores_pb2_grpc.py +0 -0
  122. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/tags_pb2.py +0 -0
  123. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_approvers_history_pb2.py +0 -0
  124. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_approvers_history_pb2_grpc.py +0 -0
  125. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_approvers_pb2.py +0 -0
  126. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_approvers_pb2_grpc.py +0 -0
  127. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_assignments_history_pb2.py +0 -0
  128. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_assignments_history_pb2_grpc.py +0 -0
  129. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_assignments_pb2.py +0 -0
  130. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_assignments_pb2_grpc.py +0 -0
  131. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_roles_history_pb2.py +0 -0
  132. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_roles_history_pb2_grpc.py +0 -0
  133. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_roles_pb2.py +0 -0
  134. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflow_roles_pb2_grpc.py +0 -0
  135. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflows_history_pb2.py +0 -0
  136. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflows_history_pb2_grpc.py +0 -0
  137. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflows_pb2.py +0 -0
  138. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm/workflows_pb2_grpc.py +0 -0
  139. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm.egg-info/dependency_links.txt +0 -0
  140. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm.egg-info/requires.txt +0 -0
  141. {strongdm-11.7.0 → strongdm-11.9.0}/strongdm.egg-info/top_level.txt +0 -0
@@ -1511,6 +1511,7 @@ class AccessRequest:
1511
1511
  '''
1512
1512
  __slots__ = [
1513
1513
  'account_id',
1514
+ 'duration',
1514
1515
  'grant_id',
1515
1516
  'id',
1516
1517
  'reason',
@@ -1525,6 +1526,7 @@ class AccessRequest:
1525
1526
  def __init__(
1526
1527
  self,
1527
1528
  account_id=None,
1529
+ duration=None,
1528
1530
  grant_id=None,
1529
1531
  id=None,
1530
1532
  reason=None,
@@ -1539,6 +1541,10 @@ class AccessRequest:
1539
1541
  '''
1540
1542
  The account that initiated the request.
1541
1543
  '''
1544
+ self.duration = duration if duration is not None else 0
1545
+ '''
1546
+ Duration of the access request.
1547
+ '''
1542
1548
  self.grant_id = grant_id if grant_id is not None else ''
1543
1549
  '''
1544
1550
  The account grant created, if it exists.
@@ -1580,6 +1586,7 @@ class AccessRequest:
1580
1586
  def __repr__(self):
1581
1587
  return '<sdm.AccessRequest ' + \
1582
1588
  'account_id: ' + repr(self.account_id) + ' ' +\
1589
+ 'duration: ' + repr(self.duration) + ' ' +\
1583
1590
  'grant_id: ' + repr(self.grant_id) + ' ' +\
1584
1591
  'id: ' + repr(self.id) + ' ' +\
1585
1592
  'reason: ' + repr(self.reason) + ' ' +\
@@ -1594,6 +1601,7 @@ class AccessRequest:
1594
1601
  def to_dict(self):
1595
1602
  return {
1596
1603
  'account_id': self.account_id,
1604
+ 'duration': self.duration,
1597
1605
  'grant_id': self.grant_id,
1598
1606
  'id': self.id,
1599
1607
  'reason': self.reason,
@@ -1609,6 +1617,7 @@ class AccessRequest:
1609
1617
  def from_dict(cls, d):
1610
1618
  return cls(
1611
1619
  account_id=d.get('account_id'),
1620
+ duration=d.get('duration'),
1612
1621
  grant_id=d.get('grant_id'),
1613
1622
  id=d.get('id'),
1614
1623
  reason=d.get('reason'),
@@ -7778,6 +7787,293 @@ class ControlPanelVerifyJWTResponse:
7778
7787
  )
7779
7788
 
7780
7789
 
7790
+ class CouchbaseDatabase:
7791
+ __slots__ = [
7792
+ 'bind_interface',
7793
+ 'egress_filter',
7794
+ 'healthy',
7795
+ 'hostname',
7796
+ 'id',
7797
+ 'n1ql_port',
7798
+ 'name',
7799
+ 'password',
7800
+ 'port',
7801
+ 'port_override',
7802
+ 'secret_store_id',
7803
+ 'subdomain',
7804
+ 'tags',
7805
+ 'tls_required',
7806
+ 'username',
7807
+ ]
7808
+
7809
+ def __init__(
7810
+ self,
7811
+ bind_interface=None,
7812
+ egress_filter=None,
7813
+ healthy=None,
7814
+ hostname=None,
7815
+ id=None,
7816
+ n1ql_port=None,
7817
+ name=None,
7818
+ password=None,
7819
+ port=None,
7820
+ port_override=None,
7821
+ secret_store_id=None,
7822
+ subdomain=None,
7823
+ tags=None,
7824
+ tls_required=None,
7825
+ username=None,
7826
+ ):
7827
+ self.bind_interface = bind_interface if bind_interface is not None else ''
7828
+ '''
7829
+ The bind interface is the IP address to which the port override of a resource is bound (for example, 127.0.0.1). It is automatically generated if not provided.
7830
+ '''
7831
+ self.egress_filter = egress_filter if egress_filter is not None else ''
7832
+ '''
7833
+ A filter applied to the routing logic to pin datasource to nodes.
7834
+ '''
7835
+ self.healthy = healthy if healthy is not None else False
7836
+ '''
7837
+ True if the datasource is reachable and the credentials are valid.
7838
+ '''
7839
+ self.hostname = hostname if hostname is not None else ''
7840
+ '''
7841
+ The host to dial to initiate a connection from the egress node to this resource.
7842
+ '''
7843
+ self.id = id if id is not None else ''
7844
+ '''
7845
+ Unique identifier of the Resource.
7846
+ '''
7847
+ self.n1ql_port = n1ql_port if n1ql_port is not None else 0
7848
+ '''
7849
+ The port number for N1QL queries. Default HTTP is 8093. Default HTTPS is 18093.
7850
+ '''
7851
+ self.name = name if name is not None else ''
7852
+ '''
7853
+ Unique human-readable name of the Resource.
7854
+ '''
7855
+ self.password = password if password is not None else ''
7856
+ '''
7857
+ The password to authenticate with.
7858
+ '''
7859
+ self.port = port if port is not None else 0
7860
+ '''
7861
+ The port to dial to initiate a connection from the egress node to this resource.
7862
+ '''
7863
+ self.port_override = port_override if port_override is not None else 0
7864
+ '''
7865
+ The local port used by clients to connect to this resource.
7866
+ '''
7867
+ self.secret_store_id = secret_store_id if secret_store_id is not None else ''
7868
+ '''
7869
+ ID of the secret store containing credentials for this resource, if any.
7870
+ '''
7871
+ self.subdomain = subdomain if subdomain is not None else ''
7872
+ '''
7873
+ Subdomain is the local DNS address. (e.g. app-prod1 turns into app-prod1.your-org-name.sdm.network)
7874
+ '''
7875
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
7876
+ '''
7877
+ Tags is a map of key, value pairs.
7878
+ '''
7879
+ self.tls_required = tls_required if tls_required is not None else False
7880
+ '''
7881
+ If set, TLS must be used to connect to this resource.
7882
+ '''
7883
+ self.username = username if username is not None else ''
7884
+ '''
7885
+ The username to authenticate with.
7886
+ '''
7887
+
7888
+ def __repr__(self):
7889
+ return '<sdm.CouchbaseDatabase ' + \
7890
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
7891
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
7892
+ 'healthy: ' + repr(self.healthy) + ' ' +\
7893
+ 'hostname: ' + repr(self.hostname) + ' ' +\
7894
+ 'id: ' + repr(self.id) + ' ' +\
7895
+ 'n1ql_port: ' + repr(self.n1ql_port) + ' ' +\
7896
+ 'name: ' + repr(self.name) + ' ' +\
7897
+ 'password: ' + repr(self.password) + ' ' +\
7898
+ 'port: ' + repr(self.port) + ' ' +\
7899
+ 'port_override: ' + repr(self.port_override) + ' ' +\
7900
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
7901
+ 'subdomain: ' + repr(self.subdomain) + ' ' +\
7902
+ 'tags: ' + repr(self.tags) + ' ' +\
7903
+ 'tls_required: ' + repr(self.tls_required) + ' ' +\
7904
+ 'username: ' + repr(self.username) + ' ' +\
7905
+ '>'
7906
+
7907
+ def to_dict(self):
7908
+ return {
7909
+ 'bind_interface': self.bind_interface,
7910
+ 'egress_filter': self.egress_filter,
7911
+ 'healthy': self.healthy,
7912
+ 'hostname': self.hostname,
7913
+ 'id': self.id,
7914
+ 'n1ql_port': self.n1ql_port,
7915
+ 'name': self.name,
7916
+ 'password': self.password,
7917
+ 'port': self.port,
7918
+ 'port_override': self.port_override,
7919
+ 'secret_store_id': self.secret_store_id,
7920
+ 'subdomain': self.subdomain,
7921
+ 'tags': self.tags,
7922
+ 'tls_required': self.tls_required,
7923
+ 'username': self.username,
7924
+ }
7925
+
7926
+ @classmethod
7927
+ def from_dict(cls, d):
7928
+ return cls(
7929
+ bind_interface=d.get('bind_interface'),
7930
+ egress_filter=d.get('egress_filter'),
7931
+ healthy=d.get('healthy'),
7932
+ hostname=d.get('hostname'),
7933
+ id=d.get('id'),
7934
+ n1ql_port=d.get('n1ql_port'),
7935
+ name=d.get('name'),
7936
+ password=d.get('password'),
7937
+ port=d.get('port'),
7938
+ port_override=d.get('port_override'),
7939
+ secret_store_id=d.get('secret_store_id'),
7940
+ subdomain=d.get('subdomain'),
7941
+ tags=d.get('tags'),
7942
+ tls_required=d.get('tls_required'),
7943
+ username=d.get('username'),
7944
+ )
7945
+
7946
+
7947
+ class CouchbaseWebUI:
7948
+ __slots__ = [
7949
+ 'bind_interface',
7950
+ 'egress_filter',
7951
+ 'healthy',
7952
+ 'id',
7953
+ 'name',
7954
+ 'password',
7955
+ 'port_override',
7956
+ 'secret_store_id',
7957
+ 'subdomain',
7958
+ 'tags',
7959
+ 'url',
7960
+ 'username',
7961
+ ]
7962
+
7963
+ def __init__(
7964
+ self,
7965
+ bind_interface=None,
7966
+ egress_filter=None,
7967
+ healthy=None,
7968
+ id=None,
7969
+ name=None,
7970
+ password=None,
7971
+ port_override=None,
7972
+ secret_store_id=None,
7973
+ subdomain=None,
7974
+ tags=None,
7975
+ url=None,
7976
+ username=None,
7977
+ ):
7978
+ self.bind_interface = bind_interface if bind_interface is not None else ''
7979
+ '''
7980
+ The bind interface is the IP address to which the port override of a resource is bound (for example, 127.0.0.1). It is automatically generated if not provided.
7981
+ '''
7982
+ self.egress_filter = egress_filter if egress_filter is not None else ''
7983
+ '''
7984
+ A filter applied to the routing logic to pin datasource to nodes.
7985
+ '''
7986
+ self.healthy = healthy if healthy is not None else False
7987
+ '''
7988
+ True if the datasource is reachable and the credentials are valid.
7989
+ '''
7990
+ self.id = id if id is not None else ''
7991
+ '''
7992
+ Unique identifier of the Resource.
7993
+ '''
7994
+ self.name = name if name is not None else ''
7995
+ '''
7996
+ Unique human-readable name of the Resource.
7997
+ '''
7998
+ self.password = password if password is not None else ''
7999
+ '''
8000
+ The password to authenticate with.
8001
+ '''
8002
+ self.port_override = port_override if port_override is not None else 0
8003
+ '''
8004
+ The local port used by clients to connect to this resource.
8005
+ '''
8006
+ self.secret_store_id = secret_store_id if secret_store_id is not None else ''
8007
+ '''
8008
+ ID of the secret store containing credentials for this resource, if any.
8009
+ '''
8010
+ self.subdomain = subdomain if subdomain is not None else ''
8011
+ '''
8012
+ Subdomain is the local DNS address. (e.g. app-prod1 turns into app-prod1.your-org-name.sdm.network)
8013
+ '''
8014
+ self.tags = tags if tags is not None else _porcelain_zero_value_tags()
8015
+ '''
8016
+ Tags is a map of key, value pairs.
8017
+ '''
8018
+ self.url = url if url is not None else ''
8019
+ '''
8020
+ The base address of your website without the path.
8021
+ '''
8022
+ self.username = username if username is not None else ''
8023
+ '''
8024
+ The username to authenticate with.
8025
+ '''
8026
+
8027
+ def __repr__(self):
8028
+ return '<sdm.CouchbaseWebUI ' + \
8029
+ 'bind_interface: ' + repr(self.bind_interface) + ' ' +\
8030
+ 'egress_filter: ' + repr(self.egress_filter) + ' ' +\
8031
+ 'healthy: ' + repr(self.healthy) + ' ' +\
8032
+ 'id: ' + repr(self.id) + ' ' +\
8033
+ 'name: ' + repr(self.name) + ' ' +\
8034
+ 'password: ' + repr(self.password) + ' ' +\
8035
+ 'port_override: ' + repr(self.port_override) + ' ' +\
8036
+ 'secret_store_id: ' + repr(self.secret_store_id) + ' ' +\
8037
+ 'subdomain: ' + repr(self.subdomain) + ' ' +\
8038
+ 'tags: ' + repr(self.tags) + ' ' +\
8039
+ 'url: ' + repr(self.url) + ' ' +\
8040
+ 'username: ' + repr(self.username) + ' ' +\
8041
+ '>'
8042
+
8043
+ def to_dict(self):
8044
+ return {
8045
+ 'bind_interface': self.bind_interface,
8046
+ 'egress_filter': self.egress_filter,
8047
+ 'healthy': self.healthy,
8048
+ 'id': self.id,
8049
+ 'name': self.name,
8050
+ 'password': self.password,
8051
+ 'port_override': self.port_override,
8052
+ 'secret_store_id': self.secret_store_id,
8053
+ 'subdomain': self.subdomain,
8054
+ 'tags': self.tags,
8055
+ 'url': self.url,
8056
+ 'username': self.username,
8057
+ }
8058
+
8059
+ @classmethod
8060
+ def from_dict(cls, d):
8061
+ return cls(
8062
+ bind_interface=d.get('bind_interface'),
8063
+ egress_filter=d.get('egress_filter'),
8064
+ healthy=d.get('healthy'),
8065
+ id=d.get('id'),
8066
+ name=d.get('name'),
8067
+ password=d.get('password'),
8068
+ port_override=d.get('port_override'),
8069
+ secret_store_id=d.get('secret_store_id'),
8070
+ subdomain=d.get('subdomain'),
8071
+ tags=d.get('tags'),
8072
+ url=d.get('url'),
8073
+ username=d.get('username'),
8074
+ )
8075
+
8076
+
7781
8077
  class CreateResponseMetadata:
7782
8078
  '''
7783
8079
  CreateResponseMetadata is reserved for future use.
@@ -9672,6 +9968,28 @@ class Gateway:
9672
9968
  )
9673
9969
 
9674
9970
 
9971
+ class GenericResponseMetadata:
9972
+ '''
9973
+ GenericResponseMetadata contains common headers for generic request
9974
+ responses.
9975
+ '''
9976
+ __slots__ = []
9977
+
9978
+ def __init__(self, ):
9979
+ pass
9980
+
9981
+ def __repr__(self):
9982
+ return '<sdm.GenericResponseMetadata ' + \
9983
+ '>'
9984
+
9985
+ def to_dict(self):
9986
+ return {}
9987
+
9988
+ @classmethod
9989
+ def from_dict(cls, d):
9990
+ return cls()
9991
+
9992
+
9675
9993
  class GetResponseMetadata:
9676
9994
  '''
9677
9995
  GetResponseMetadata is reserved for future use.
@@ -73,9 +73,9 @@ from .role_resources_pb2 import *
73
73
  from .role_resources_history_pb2 import *
74
74
  from .roles_pb2 import *
75
75
  from .roles_history_pb2 import *
76
- from .secret_store_healths_pb2 import *
77
76
  from .secret_store_types_pb2 import *
78
77
  from .secret_stores_pb2 import *
78
+ from .secret_store_healths_pb2 import *
79
79
  from .secret_stores_history_pb2 import *
80
80
  from .workflow_approvers_pb2 import *
81
81
  from .workflow_approvers_history_pb2 import *
@@ -716,6 +716,7 @@ def convert_access_request_to_porcelain(plumbing):
716
716
  return None
717
717
  porcelain = models.AccessRequest()
718
718
  porcelain.account_id = (plumbing.account_id)
719
+ porcelain.duration = (plumbing.duration)
719
720
  porcelain.grant_id = (plumbing.grant_id)
720
721
  porcelain.id = (plumbing.id)
721
722
  porcelain.reason = (plumbing.reason)
@@ -734,6 +735,7 @@ def convert_access_request_to_plumbing(porcelain):
734
735
  if porcelain is None:
735
736
  return plumbing
736
737
  plumbing.account_id = (porcelain.account_id)
738
+ plumbing.duration = (porcelain.duration)
737
739
  plumbing.grant_id = (porcelain.grant_id)
738
740
  plumbing.id = (porcelain.id)
739
741
  plumbing.reason = (porcelain.reason)
@@ -3933,6 +3935,116 @@ def convert_repeated_control_panel_verify_jwt_response_to_porcelain(plumbings):
3933
3935
  ]
3934
3936
 
3935
3937
 
3938
+ def convert_couchbase_database_to_porcelain(plumbing):
3939
+ if plumbing is None:
3940
+ return None
3941
+ porcelain = models.CouchbaseDatabase()
3942
+ porcelain.bind_interface = (plumbing.bind_interface)
3943
+ porcelain.egress_filter = (plumbing.egress_filter)
3944
+ porcelain.healthy = (plumbing.healthy)
3945
+ porcelain.hostname = (plumbing.hostname)
3946
+ porcelain.id = (plumbing.id)
3947
+ porcelain.n1ql_port = (plumbing.n1ql_port)
3948
+ porcelain.name = (plumbing.name)
3949
+ porcelain.password = (plumbing.password)
3950
+ porcelain.port = (plumbing.port)
3951
+ porcelain.port_override = (plumbing.port_override)
3952
+ porcelain.secret_store_id = (plumbing.secret_store_id)
3953
+ porcelain.subdomain = (plumbing.subdomain)
3954
+ porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
3955
+ porcelain.tls_required = (plumbing.tls_required)
3956
+ porcelain.username = (plumbing.username)
3957
+ return porcelain
3958
+
3959
+
3960
+ def convert_couchbase_database_to_plumbing(porcelain):
3961
+ plumbing = CouchbaseDatabase()
3962
+ if porcelain is None:
3963
+ return plumbing
3964
+ plumbing.bind_interface = (porcelain.bind_interface)
3965
+ plumbing.egress_filter = (porcelain.egress_filter)
3966
+ plumbing.healthy = (porcelain.healthy)
3967
+ plumbing.hostname = (porcelain.hostname)
3968
+ plumbing.id = (porcelain.id)
3969
+ plumbing.n1ql_port = (porcelain.n1ql_port)
3970
+ plumbing.name = (porcelain.name)
3971
+ plumbing.password = (porcelain.password)
3972
+ plumbing.port = (porcelain.port)
3973
+ plumbing.port_override = (porcelain.port_override)
3974
+ plumbing.secret_store_id = (porcelain.secret_store_id)
3975
+ plumbing.subdomain = (porcelain.subdomain)
3976
+ plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
3977
+ plumbing.tls_required = (porcelain.tls_required)
3978
+ plumbing.username = (porcelain.username)
3979
+ return plumbing
3980
+
3981
+
3982
+ def convert_repeated_couchbase_database_to_plumbing(porcelains):
3983
+ return [
3984
+ convert_couchbase_database_to_plumbing(porcelain)
3985
+ for porcelain in porcelains
3986
+ ]
3987
+
3988
+
3989
+ def convert_repeated_couchbase_database_to_porcelain(plumbings):
3990
+ return [
3991
+ convert_couchbase_database_to_porcelain(plumbing)
3992
+ for plumbing in plumbings
3993
+ ]
3994
+
3995
+
3996
+ def convert_couchbase_web_ui_to_porcelain(plumbing):
3997
+ if plumbing is None:
3998
+ return None
3999
+ porcelain = models.CouchbaseWebUI()
4000
+ porcelain.bind_interface = (plumbing.bind_interface)
4001
+ porcelain.egress_filter = (plumbing.egress_filter)
4002
+ porcelain.healthy = (plumbing.healthy)
4003
+ porcelain.id = (plumbing.id)
4004
+ porcelain.name = (plumbing.name)
4005
+ porcelain.password = (plumbing.password)
4006
+ porcelain.port_override = (plumbing.port_override)
4007
+ porcelain.secret_store_id = (plumbing.secret_store_id)
4008
+ porcelain.subdomain = (plumbing.subdomain)
4009
+ porcelain.tags = convert_tags_to_porcelain(plumbing.tags)
4010
+ porcelain.url = (plumbing.url)
4011
+ porcelain.username = (plumbing.username)
4012
+ return porcelain
4013
+
4014
+
4015
+ def convert_couchbase_web_ui_to_plumbing(porcelain):
4016
+ plumbing = CouchbaseWebUI()
4017
+ if porcelain is None:
4018
+ return plumbing
4019
+ plumbing.bind_interface = (porcelain.bind_interface)
4020
+ plumbing.egress_filter = (porcelain.egress_filter)
4021
+ plumbing.healthy = (porcelain.healthy)
4022
+ plumbing.id = (porcelain.id)
4023
+ plumbing.name = (porcelain.name)
4024
+ plumbing.password = (porcelain.password)
4025
+ plumbing.port_override = (porcelain.port_override)
4026
+ plumbing.secret_store_id = (porcelain.secret_store_id)
4027
+ plumbing.subdomain = (porcelain.subdomain)
4028
+ plumbing.tags.CopyFrom(convert_tags_to_plumbing(porcelain.tags))
4029
+ plumbing.url = (porcelain.url)
4030
+ plumbing.username = (porcelain.username)
4031
+ return plumbing
4032
+
4033
+
4034
+ def convert_repeated_couchbase_web_ui_to_plumbing(porcelains):
4035
+ return [
4036
+ convert_couchbase_web_ui_to_plumbing(porcelain)
4037
+ for porcelain in porcelains
4038
+ ]
4039
+
4040
+
4041
+ def convert_repeated_couchbase_web_ui_to_porcelain(plumbings):
4042
+ return [
4043
+ convert_couchbase_web_ui_to_porcelain(plumbing)
4044
+ for plumbing in plumbings
4045
+ ]
4046
+
4047
+
3936
4048
  def convert_create_response_metadata_to_porcelain(plumbing):
3937
4049
  if plumbing is None:
3938
4050
  return None
@@ -4726,6 +4838,34 @@ def convert_repeated_gateway_to_porcelain(plumbings):
4726
4838
  return [convert_gateway_to_porcelain(plumbing) for plumbing in plumbings]
4727
4839
 
4728
4840
 
4841
+ def convert_generic_response_metadata_to_porcelain(plumbing):
4842
+ if plumbing is None:
4843
+ return None
4844
+ porcelain = models.GenericResponseMetadata()
4845
+ return porcelain
4846
+
4847
+
4848
+ def convert_generic_response_metadata_to_plumbing(porcelain):
4849
+ plumbing = GenericResponseMetadata()
4850
+ if porcelain is None:
4851
+ return plumbing
4852
+ return plumbing
4853
+
4854
+
4855
+ def convert_repeated_generic_response_metadata_to_plumbing(porcelains):
4856
+ return [
4857
+ convert_generic_response_metadata_to_plumbing(porcelain)
4858
+ for porcelain in porcelains
4859
+ ]
4860
+
4861
+
4862
+ def convert_repeated_generic_response_metadata_to_porcelain(plumbings):
4863
+ return [
4864
+ convert_generic_response_metadata_to_porcelain(plumbing)
4865
+ for plumbing in plumbings
4866
+ ]
4867
+
4868
+
4729
4869
  def convert_get_response_metadata_to_porcelain(plumbing):
4730
4870
  if plumbing is None:
4731
4871
  return None
@@ -9220,6 +9360,12 @@ def convert_resource_to_plumbing(porcelain):
9220
9360
  plumbing.clustrix.CopyFrom(convert_clustrix_to_plumbing(porcelain))
9221
9361
  if isinstance(porcelain, models.Cockroach):
9222
9362
  plumbing.cockroach.CopyFrom(convert_cockroach_to_plumbing(porcelain))
9363
+ if isinstance(porcelain, models.CouchbaseDatabase):
9364
+ plumbing.couchbase_database.CopyFrom(
9365
+ convert_couchbase_database_to_plumbing(porcelain))
9366
+ if isinstance(porcelain, models.CouchbaseWebUI):
9367
+ plumbing.couchbase_web_ui.CopyFrom(
9368
+ convert_couchbase_web_ui_to_plumbing(porcelain))
9223
9369
  if isinstance(porcelain, models.DB2I):
9224
9370
  plumbing.db_2_i.CopyFrom(convert_db_2_i_to_plumbing(porcelain))
9225
9371
  if isinstance(porcelain, models.DB2LUW):
@@ -9431,6 +9577,11 @@ def convert_resource_to_porcelain(plumbing):
9431
9577
  return convert_clustrix_to_porcelain(plumbing.clustrix)
9432
9578
  if plumbing.HasField('cockroach'):
9433
9579
  return convert_cockroach_to_porcelain(plumbing.cockroach)
9580
+ if plumbing.HasField('couchbase_database'):
9581
+ return convert_couchbase_database_to_porcelain(
9582
+ plumbing.couchbase_database)
9583
+ if plumbing.HasField('couchbase_web_ui'):
9584
+ return convert_couchbase_web_ui_to_porcelain(plumbing.couchbase_web_ui)
9434
9585
  if plumbing.HasField('db_2_i'):
9435
9586
  return convert_db_2_i_to_porcelain(plumbing.db_2_i)
9436
9587
  if plumbing.HasField('db_2_luw'):
@@ -30,7 +30,7 @@ from . import options_pb2 as options__pb2
30
30
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
31
31
 
32
32
 
33
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nspec.proto\x12\x02v1\x1a\roptions.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"<\n\x12\x41lreadyExistsError\x12\x1a\n\x06\x65ntity\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x06\"7\n\rNotFoundError\x12\x1a\n\x06\x65ntity\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x05\"\x1d\n\x0f\x42\x61\x64RequestError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x03\"!\n\x13\x41uthenticationError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x10\"\x1d\n\x0fPermissionError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x07\"\x1b\n\rInternalError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\r\"u\n\x0eRateLimitError\x12W\n\nrate_limit\x18\x01 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x08\"\x17\n\x15\x43reateRequestMetadata\"$\n\x16\x43reateResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"E\n\x12GetRequestMetadata\x12/\n\x0bsnapshot_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"!\n\x13GetResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x17\n\x15UpdateRequestMetadata\"$\n\x16UpdateResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x17\n\x15\x44\x65leteRequestMetadata\"$\n\x16\x44\x65leteResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x85\x01\n\x13ListRequestMetadata\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x0c\n\x04page\x18\x02 \x01(\x05\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12/\n\x0bsnapshot_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\">\n\x14ListResponseMetadata\x12\x13\n\x0bnext_cursor\x18\x01 \x01(\t\x12\x11\n\x05total\x18\x02 \x01(\x05\x42\x02\x18\x01\"\xaf\x01\n\x11RateLimitMetadata\x12\x19\n\x05limit\x18\x01 \x01(\x03\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\tremaining\x18\x02 \x01(\x03\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x38\n\x08reset_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1a\n\x06\x62ucket\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x18\n\x16GenericRequestMetadata\"\x19\n\x17GenericResponseMetadataBR\n\x19\x63om.strongdm.api.plumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1b\x06proto3')
33
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nspec.proto\x12\x02v1\x1a\roptions.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"<\n\x12\x41lreadyExistsError\x12\x1a\n\x06\x65ntity\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x06\"7\n\rNotFoundError\x12\x1a\n\x06\x65ntity\x18\x01 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x05\"\x1d\n\x0f\x42\x61\x64RequestError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x03\"!\n\x13\x41uthenticationError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x10\"\x1d\n\x0fPermissionError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x07\"\x1b\n\rInternalError:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\r\"u\n\x0eRateLimitError\x12W\n\nrate_limit\x18\x01 \x01(\x0b\x32\x15.v1.RateLimitMetadataB,\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\xf2\xf8\xb3\x07\x06\xb2\xf4\xb3\x07\x01*\xf2\xf8\xb3\x07\x12\xb2\xf4\xb3\x07\r!json_gateway:\n\xfa\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x08\"\x17\n\x15\x43reateRequestMetadata\"$\n\x16\x43reateResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"E\n\x12GetRequestMetadata\x12/\n\x0bsnapshot_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"!\n\x13GetResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x17\n\x15UpdateRequestMetadata\"$\n\x16UpdateResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x17\n\x15\x44\x65leteRequestMetadata\"$\n\x16\x44\x65leteResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x85\x01\n\x13ListRequestMetadata\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x0c\n\x04page\x18\x02 \x01(\x05\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x10\n\x08order_by\x18\x04 \x01(\t\x12/\n\x0bsnapshot_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\">\n\x14ListResponseMetadata\x12\x13\n\x0bnext_cursor\x18\x01 \x01(\t\x12\x11\n\x05total\x18\x02 \x01(\x05\x42\x02\x18\x01\"\xaf\x01\n\x11RateLimitMetadata\x12\x19\n\x05limit\x18\x01 \x01(\x03\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1d\n\tremaining\x18\x02 \x01(\x03\x42\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x38\n\x08reset_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01\x12\x1a\n\x06\x62ucket\x18\x04 \x01(\tB\n\xf2\xf8\xb3\x07\x05\xb0\xf3\xb3\x07\x01:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\"\x18\n\x16GenericRequestMetadata\"%\n\x17GenericResponseMetadata:\n\xfa\xf8\xb3\x07\x05\xa8\xf3\xb3\x07\x01\x42R\n\x19\x63om.strongdm.api.plumbingZ5github.com/strongdm/strongdm-sdk-go/v3/internal/v1;v1b\x06proto3')
34
34
 
35
35
 
36
36
 
@@ -238,6 +238,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
238
238
  _RATELIMITMETADATA.fields_by_name['bucket']._serialized_options = b'\362\370\263\007\005\260\363\263\007\001'
239
239
  _RATELIMITMETADATA._options = None
240
240
  _RATELIMITMETADATA._serialized_options = b'\372\370\263\007\005\250\363\263\007\001'
241
+ _GENERICRESPONSEMETADATA._options = None
242
+ _GENERICRESPONSEMETADATA._serialized_options = b'\372\370\263\007\005\250\363\263\007\001'
241
243
  _ALREADYEXISTSERROR._serialized_start=66
242
244
  _ALREADYEXISTSERROR._serialized_end=126
243
245
  _NOTFOUNDERROR._serialized_start=128
@@ -277,5 +279,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
277
279
  _GENERICREQUESTMETADATA._serialized_start=1103
278
280
  _GENERICREQUESTMETADATA._serialized_end=1127
279
281
  _GENERICRESPONSEMETADATA._serialized_start=1129
280
- _GENERICRESPONSEMETADATA._serialized_end=1154
282
+ _GENERICRESPONSEMETADATA._serialized_end=1166
281
283
  # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,18 @@
1
+ # Copyright 2020 StrongDM Inc
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ #
15
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
16
+ """Client and server classes corresponding to protobuf-defined services."""
17
+ import grpc
18
+