render_sdk 0.1.3__py3-none-any.whl → 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. render_sdk/__init__.py +41 -4
  2. render_sdk/client/__init__.py +25 -0
  3. render_sdk/client/client.py +5 -0
  4. render_sdk/client/sse.py +5 -1
  5. render_sdk/client/tests/test_client.py +6 -4
  6. render_sdk/client/tests/test_sse.py +1 -0
  7. render_sdk/client/workflows.py +10 -2
  8. render_sdk/experimental/__init__.py +31 -0
  9. render_sdk/experimental/experimental.py +71 -0
  10. render_sdk/experimental/object/__init__.py +30 -0
  11. render_sdk/experimental/object/api.py +260 -0
  12. render_sdk/experimental/object/client.py +475 -0
  13. render_sdk/experimental/object/types.py +87 -0
  14. render_sdk/public_api/api/audit_logs/list_organization_audit_logs.py +303 -0
  15. render_sdk/public_api/api/audit_logs/list_owner_audit_logs.py +303 -0
  16. render_sdk/public_api/api/blob_storage/delete_blob.py +215 -0
  17. render_sdk/public_api/api/blob_storage/get_blob.py +221 -0
  18. render_sdk/public_api/api/{workflows/list_workflow_versions.py → blob_storage/list_blobs.py} +52 -30
  19. render_sdk/public_api/api/blob_storage/put_blob.py +248 -0
  20. render_sdk/public_api/api/blueprints/validate_blueprint.py +212 -0
  21. render_sdk/public_api/api/key_value/resume_key_value.py +203 -0
  22. render_sdk/public_api/api/key_value/suspend_key_value.py +203 -0
  23. render_sdk/public_api/api/metrics/get_bandwidth_sources.py +251 -0
  24. render_sdk/public_api/api/postgres/create_postgres_user.py +229 -0
  25. render_sdk/public_api/api/postgres/delete_postgres_user.py +201 -0
  26. render_sdk/public_api/api/postgres/list_postgres_users.py +195 -0
  27. render_sdk/public_api/api/redis_deprecated/__init__.py +1 -0
  28. render_sdk/public_api/api/{redis → redis_deprecated}/create_redis.py +4 -4
  29. render_sdk/public_api/api/{redis → redis_deprecated}/delete_redis.py +4 -4
  30. render_sdk/public_api/api/{redis → redis_deprecated}/list_redis.py +4 -0
  31. render_sdk/public_api/api/{redis → redis_deprecated}/retrieve_redis.py +4 -4
  32. render_sdk/public_api/api/{redis → redis_deprecated}/retrieve_redis_connection_info.py +4 -0
  33. render_sdk/public_api/api/{redis → redis_deprecated}/update_redis.py +4 -4
  34. render_sdk/public_api/api/services/create_service.py +4 -4
  35. render_sdk/public_api/api/workflow_tasks_ea/__init__.py +1 -0
  36. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/cancel_task_run.py +12 -4
  37. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/create_task.py +12 -4
  38. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/get_task.py +12 -4
  39. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/get_task_run.py +12 -4
  40. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/list_task_runs.py +12 -0
  41. render_sdk/public_api/api/{workflows → workflow_tasks_ea}/list_tasks.py +24 -12
  42. render_sdk/public_api/api/workflows_ea/__init__.py +1 -0
  43. render_sdk/public_api/api/workflows_ea/create_workflow.py +199 -0
  44. render_sdk/public_api/api/{workflows/deploy_workflow.py → workflows_ea/create_workflow_version.py} +31 -14
  45. render_sdk/public_api/api/{workflows → workflows_ea}/delete_workflow.py +12 -4
  46. render_sdk/public_api/api/{workflows → workflows_ea}/get_workflow.py +32 -14
  47. render_sdk/public_api/api/{workflows → workflows_ea}/get_workflow_version.py +12 -4
  48. render_sdk/public_api/api/workflows_ea/list_workflow_versions.py +275 -0
  49. render_sdk/public_api/api/{workflows → workflows_ea}/list_workflows.py +41 -14
  50. render_sdk/public_api/api/workflows_ea/update_workflow.py +212 -0
  51. render_sdk/public_api/api/workspaces/remove_workspace_member.py +206 -0
  52. render_sdk/public_api/api/workspaces/update_workspace_member.py +235 -0
  53. render_sdk/public_api/models/__init__.py +82 -4
  54. render_sdk/public_api/models/audit_log.py +113 -0
  55. render_sdk/public_api/models/audit_log_actor.py +80 -0
  56. render_sdk/public_api/models/audit_log_actor_type.py +10 -0
  57. render_sdk/public_api/models/audit_log_event.py +80 -0
  58. render_sdk/public_api/models/audit_log_metadata.py +49 -0
  59. render_sdk/public_api/models/audit_log_status.py +9 -0
  60. render_sdk/public_api/models/audit_log_with_cursor.py +73 -0
  61. render_sdk/public_api/models/background_worker_details.py +2 -2
  62. render_sdk/public_api/models/background_worker_details_patch.py +1 -1
  63. render_sdk/public_api/models/background_worker_details_post.py +1 -1
  64. render_sdk/public_api/models/blob_metadata.py +85 -0
  65. render_sdk/public_api/models/blob_with_cursor.py +73 -0
  66. render_sdk/public_api/models/cache.py +6 -4
  67. render_sdk/public_api/models/cache_profile.py +10 -0
  68. render_sdk/public_api/models/create_deploy_body.py +23 -0
  69. render_sdk/public_api/models/create_version.py +70 -0
  70. render_sdk/public_api/models/credential_create_input.py +59 -0
  71. render_sdk/public_api/models/cron_job_details.py +2 -2
  72. render_sdk/public_api/models/cron_job_details_patch.py +1 -1
  73. render_sdk/public_api/models/cron_job_details_post.py +1 -1
  74. render_sdk/public_api/models/deploy_mode.py +9 -0
  75. render_sdk/public_api/models/event.py +11 -27
  76. render_sdk/public_api/models/event_type.py +1 -1
  77. render_sdk/public_api/models/get_bandwidth_sources_response_200.py +75 -0
  78. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item.py +101 -0
  79. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_labels.py +78 -0
  80. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_labels_traffic_source.py +12 -0
  81. render_sdk/public_api/models/get_bandwidth_sources_response_200_data_item_values_item.py +68 -0
  82. render_sdk/public_api/models/{server_unhealthy.py → get_bandwidth_sources_response_400.py} +12 -12
  83. render_sdk/public_api/models/get_blob_output.py +71 -0
  84. render_sdk/public_api/models/list_postgres_users_response_200_item.py +86 -0
  85. render_sdk/public_api/models/otel_provider_type.py +2 -0
  86. render_sdk/public_api/models/postgres.py +8 -0
  87. render_sdk/public_api/models/postgres_detail.py +26 -0
  88. render_sdk/public_api/models/postgres_parameter_overrides.py +44 -0
  89. render_sdk/public_api/models/postgres_patch_input.py +27 -0
  90. render_sdk/public_api/models/postgres_post_input.py +27 -0
  91. render_sdk/public_api/models/postgres_version.py +1 -0
  92. render_sdk/public_api/models/preview_input.py +2 -2
  93. render_sdk/public_api/models/private_service_details.py +2 -2
  94. render_sdk/public_api/models/private_service_details_patch.py +1 -1
  95. render_sdk/public_api/models/private_service_details_post.py +1 -1
  96. render_sdk/public_api/models/project_post_environment_input.py +26 -1
  97. render_sdk/public_api/models/put_blob_input.py +59 -0
  98. render_sdk/public_api/models/put_blob_output.py +79 -0
  99. render_sdk/public_api/models/read_replica.py +25 -1
  100. render_sdk/public_api/models/read_replica_input.py +25 -1
  101. render_sdk/public_api/models/run_task.py +35 -7
  102. render_sdk/public_api/models/service_event.py +12 -27
  103. render_sdk/public_api/models/service_event_type.py +0 -1
  104. render_sdk/public_api/models/service_post.py +9 -6
  105. render_sdk/public_api/models/task_attempt.py +88 -0
  106. render_sdk/public_api/models/task_attempt_details.py +108 -0
  107. render_sdk/public_api/models/task_data_type_1.py +44 -0
  108. render_sdk/public_api/models/task_run.py +23 -1
  109. render_sdk/public_api/models/task_run_details.py +50 -5
  110. render_sdk/public_api/models/task_run_status.py +1 -0
  111. render_sdk/public_api/models/task_with_cursor.py +73 -0
  112. render_sdk/public_api/models/team_member.py +5 -4
  113. render_sdk/public_api/models/team_member_role.py +12 -0
  114. render_sdk/public_api/models/update_workspace_member_body.py +61 -0
  115. render_sdk/public_api/models/validate_blueprint_request.py +84 -0
  116. render_sdk/public_api/models/validate_blueprint_response.py +105 -0
  117. render_sdk/public_api/models/validation_error.py +88 -0
  118. render_sdk/public_api/models/validation_plan_summary.py +107 -0
  119. render_sdk/public_api/models/web_service_details.py +2 -2
  120. render_sdk/public_api/models/web_service_details_patch.py +6 -5
  121. render_sdk/public_api/models/web_service_details_post.py +6 -5
  122. render_sdk/public_api/models/workflow.py +144 -0
  123. render_sdk/public_api/models/workflow_create.py +99 -0
  124. render_sdk/public_api/models/workflow_update.py +90 -0
  125. render_sdk/public_api/models/workflow_version.py +10 -14
  126. render_sdk/public_api/models/workflow_version_status.py +13 -0
  127. render_sdk/public_api/models/workflow_version_with_cursor.py +73 -0
  128. render_sdk/public_api/models/workflow_with_cursor.py +73 -0
  129. render_sdk/render.py +65 -0
  130. render_sdk/version.py +27 -0
  131. render_sdk/workflows/__init__.py +5 -1
  132. render_sdk/workflows/app.py +262 -0
  133. render_sdk/workflows/callback_api/models/task_options.py +18 -0
  134. render_sdk/workflows/cli.py +58 -0
  135. render_sdk/workflows/client.py +2 -7
  136. render_sdk/workflows/runner.py +12 -7
  137. render_sdk/workflows/task.py +11 -2
  138. render_sdk/workflows/tests/test_app.py +412 -0
  139. render_sdk/workflows/tests/test_cli.py +134 -0
  140. render_sdk/workflows/tests/test_end_to_end.py +69 -1
  141. render_sdk/workflows/tests/test_registration.py +56 -1
  142. {render_sdk-0.1.3.dist-info → render_sdk-0.2.0.dist-info}/METADATA +1 -1
  143. {render_sdk-0.1.3.dist-info → render_sdk-0.2.0.dist-info}/RECORD +149 -78
  144. render_sdk-0.2.0.dist-info/entry_points.txt +3 -0
  145. render_sdk/public_api/models/image_version.py +0 -79
  146. /render_sdk/public_api/api/{redis → audit_logs}/__init__.py +0 -0
  147. /render_sdk/public_api/api/{workflows → blob_storage}/__init__.py +0 -0
  148. /render_sdk/public_api/api/{workflows → workflow_tasks_ea}/stream_task_runs_events.py +0 -0
  149. {render_sdk-0.1.3.dist-info → render_sdk-0.2.0.dist-info}/WHEEL +0 -0
  150. {render_sdk-0.1.3.dist-info → render_sdk-0.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,86 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="ListPostgresUsersResponse200Item")
10
+
11
+
12
+ @_attrs_define
13
+ class ListPostgresUsersResponse200Item:
14
+ """
15
+ Attributes:
16
+ username (Union[Unset, str]):
17
+ default (Union[Unset, bool]):
18
+ created_at (Union[Unset, str]):
19
+ open_connections (Union[Unset, int]):
20
+ """
21
+
22
+ username: Union[Unset, str] = UNSET
23
+ default: Union[Unset, bool] = UNSET
24
+ created_at: Union[Unset, str] = UNSET
25
+ open_connections: Union[Unset, int] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ username = self.username
30
+
31
+ default = self.default
32
+
33
+ created_at = self.created_at
34
+
35
+ open_connections = self.open_connections
36
+
37
+ field_dict: dict[str, Any] = {}
38
+ field_dict.update(self.additional_properties)
39
+ field_dict.update({})
40
+ if username is not UNSET:
41
+ field_dict["username"] = username
42
+ if default is not UNSET:
43
+ field_dict["default"] = default
44
+ if created_at is not UNSET:
45
+ field_dict["createdAt"] = created_at
46
+ if open_connections is not UNSET:
47
+ field_dict["openConnections"] = open_connections
48
+
49
+ return field_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
53
+ d = dict(src_dict)
54
+ username = d.pop("username", UNSET)
55
+
56
+ default = d.pop("default", UNSET)
57
+
58
+ created_at = d.pop("createdAt", UNSET)
59
+
60
+ open_connections = d.pop("openConnections", UNSET)
61
+
62
+ list_postgres_users_response_200_item = cls(
63
+ username=username,
64
+ default=default,
65
+ created_at=created_at,
66
+ open_connections=open_connections,
67
+ )
68
+
69
+ list_postgres_users_response_200_item.additional_properties = d
70
+ return list_postgres_users_response_200_item
71
+
72
+ @property
73
+ def additional_keys(self) -> list[str]:
74
+ return list(self.additional_properties.keys())
75
+
76
+ def __getitem__(self, key: str) -> Any:
77
+ return self.additional_properties[key]
78
+
79
+ def __setitem__(self, key: str, value: Any) -> None:
80
+ self.additional_properties[key] = value
81
+
82
+ def __delitem__(self, key: str) -> None:
83
+ del self.additional_properties[key]
84
+
85
+ def __contains__(self, key: str) -> bool:
86
+ return key in self.additional_properties
@@ -6,8 +6,10 @@ class OtelProviderType(str, Enum):
6
6
  CUSTOM = "CUSTOM"
7
7
  DATADOG = "DATADOG"
8
8
  GRAFANA = "GRAFANA"
9
+ GROUNDSOURCE = "GROUNDSOURCE"
9
10
  HONEYCOMB = "HONEYCOMB"
10
11
  NEW_RELIC = "NEW_RELIC"
12
+ SIGNOZ = "SIGNOZ"
11
13
 
12
14
  def __str__(self) -> str:
13
15
  return str(self.value)
@@ -46,6 +46,7 @@ class Postgres:
46
46
  suspended (PostgresSuspended):
47
47
  suspenders (list[SuspenderType]):
48
48
  dashboard_url (str): The URL to view the Postgres instance in the Render Dashboard
49
+ disk_autoscaling_enabled (bool):
49
50
  expires_at (Union[Unset, datetime.datetime]): The time at which the database will be expire. Applies to free
50
51
  tier databases only.
51
52
  environment_id (Union[Unset, str]):
@@ -71,6 +72,7 @@ class Postgres:
71
72
  suspended: PostgresSuspended
72
73
  suspenders: list[SuspenderType]
73
74
  dashboard_url: str
75
+ disk_autoscaling_enabled: bool
74
76
  expires_at: Union[Unset, datetime.datetime] = UNSET
75
77
  environment_id: Union[Unset, str] = UNSET
76
78
  disk_size_gb: Union[Unset, int] = UNSET
@@ -123,6 +125,8 @@ class Postgres:
123
125
 
124
126
  dashboard_url = self.dashboard_url
125
127
 
128
+ disk_autoscaling_enabled = self.disk_autoscaling_enabled
129
+
126
130
  expires_at: Union[Unset, str] = UNSET
127
131
  if not isinstance(self.expires_at, Unset):
128
132
  expires_at = self.expires_at.isoformat()
@@ -155,6 +159,7 @@ class Postgres:
155
159
  "suspended": suspended,
156
160
  "suspenders": suspenders,
157
161
  "dashboardUrl": dashboard_url,
162
+ "diskAutoscalingEnabled": disk_autoscaling_enabled,
158
163
  }
159
164
  )
160
165
  if expires_at is not UNSET:
@@ -226,6 +231,8 @@ class Postgres:
226
231
 
227
232
  dashboard_url = d.pop("dashboardUrl")
228
233
 
234
+ disk_autoscaling_enabled = d.pop("diskAutoscalingEnabled")
235
+
229
236
  _expires_at = d.pop("expiresAt", UNSET)
230
237
  expires_at: Union[Unset, datetime.datetime]
231
238
  if isinstance(_expires_at, Unset):
@@ -258,6 +265,7 @@ class Postgres:
258
265
  suspended=suspended,
259
266
  suspenders=suspenders,
260
267
  dashboard_url=dashboard_url,
268
+ disk_autoscaling_enabled=disk_autoscaling_enabled,
261
269
  expires_at=expires_at,
262
270
  environment_id=environment_id,
263
271
  disk_size_gb=disk_size_gb,
@@ -19,6 +19,7 @@ if TYPE_CHECKING:
19
19
  from ..models.cidr_block_and_description import CidrBlockAndDescription
20
20
  from ..models.maintenance_run import MaintenanceRun
21
21
  from ..models.owner import Owner
22
+ from ..models.postgres_parameter_overrides import PostgresParameterOverrides
22
23
  from ..models.read_replica import ReadReplica
23
24
 
24
25
 
@@ -47,11 +48,13 @@ class PostgresDetail:
47
48
  version (PostgresVersion): The PostgreSQL version
48
49
  suspended (PostgresDetailSuspended):
49
50
  suspenders (list[SuspenderType]):
51
+ disk_autoscaling_enabled (bool):
50
52
  expires_at (Union[Unset, datetime.datetime]): The time at which the database will be expire. Applies to free
51
53
  tier databases only.
52
54
  environment_id (Union[Unset, str]):
53
55
  maintenance (Union[Unset, MaintenanceRun]):
54
56
  disk_size_gb (Union[Unset, int]):
57
+ parameter_overrides (Union[Unset, PostgresParameterOverrides]):
55
58
  primary_postgres_id (Union[Unset, str]):
56
59
  """
57
60
 
@@ -73,10 +76,12 @@ class PostgresDetail:
73
76
  version: PostgresVersion
74
77
  suspended: PostgresDetailSuspended
75
78
  suspenders: list[SuspenderType]
79
+ disk_autoscaling_enabled: bool
76
80
  expires_at: Union[Unset, datetime.datetime] = UNSET
77
81
  environment_id: Union[Unset, str] = UNSET
78
82
  maintenance: Union[Unset, "MaintenanceRun"] = UNSET
79
83
  disk_size_gb: Union[Unset, int] = UNSET
84
+ parameter_overrides: Union[Unset, "PostgresParameterOverrides"] = UNSET
80
85
  primary_postgres_id: Union[Unset, str] = UNSET
81
86
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
82
87
 
@@ -126,6 +131,8 @@ class PostgresDetail:
126
131
  suspenders_item = suspenders_item_data.value
127
132
  suspenders.append(suspenders_item)
128
133
 
134
+ disk_autoscaling_enabled = self.disk_autoscaling_enabled
135
+
129
136
  expires_at: Union[Unset, str] = UNSET
130
137
  if not isinstance(self.expires_at, Unset):
131
138
  expires_at = self.expires_at.isoformat()
@@ -138,6 +145,10 @@ class PostgresDetail:
138
145
 
139
146
  disk_size_gb = self.disk_size_gb
140
147
 
148
+ parameter_overrides: Union[Unset, dict[str, Any]] = UNSET
149
+ if not isinstance(self.parameter_overrides, Unset):
150
+ parameter_overrides = self.parameter_overrides.to_dict()
151
+
141
152
  primary_postgres_id = self.primary_postgres_id
142
153
 
143
154
  field_dict: dict[str, Any] = {}
@@ -162,6 +173,7 @@ class PostgresDetail:
162
173
  "version": version,
163
174
  "suspended": suspended,
164
175
  "suspenders": suspenders,
176
+ "diskAutoscalingEnabled": disk_autoscaling_enabled,
165
177
  }
166
178
  )
167
179
  if expires_at is not UNSET:
@@ -172,6 +184,8 @@ class PostgresDetail:
172
184
  field_dict["maintenance"] = maintenance
173
185
  if disk_size_gb is not UNSET:
174
186
  field_dict["diskSizeGB"] = disk_size_gb
187
+ if parameter_overrides is not UNSET:
188
+ field_dict["parameterOverrides"] = parameter_overrides
175
189
  if primary_postgres_id is not UNSET:
176
190
  field_dict["primaryPostgresID"] = primary_postgres_id
177
191
 
@@ -182,6 +196,7 @@ class PostgresDetail:
182
196
  from ..models.cidr_block_and_description import CidrBlockAndDescription
183
197
  from ..models.maintenance_run import MaintenanceRun
184
198
  from ..models.owner import Owner
199
+ from ..models.postgres_parameter_overrides import PostgresParameterOverrides
185
200
  from ..models.read_replica import ReadReplica
186
201
 
187
202
  d = dict(src_dict)
@@ -236,6 +251,8 @@ class PostgresDetail:
236
251
 
237
252
  suspenders.append(suspenders_item)
238
253
 
254
+ disk_autoscaling_enabled = d.pop("diskAutoscalingEnabled")
255
+
239
256
  _expires_at = d.pop("expiresAt", UNSET)
240
257
  expires_at: Union[Unset, datetime.datetime]
241
258
  if isinstance(_expires_at, Unset):
@@ -254,6 +271,13 @@ class PostgresDetail:
254
271
 
255
272
  disk_size_gb = d.pop("diskSizeGB", UNSET)
256
273
 
274
+ _parameter_overrides = d.pop("parameterOverrides", UNSET)
275
+ parameter_overrides: Union[Unset, PostgresParameterOverrides]
276
+ if isinstance(_parameter_overrides, Unset):
277
+ parameter_overrides = UNSET
278
+ else:
279
+ parameter_overrides = PostgresParameterOverrides.from_dict(_parameter_overrides)
280
+
257
281
  primary_postgres_id = d.pop("primaryPostgresID", UNSET)
258
282
 
259
283
  postgres_detail = cls(
@@ -275,10 +299,12 @@ class PostgresDetail:
275
299
  version=version,
276
300
  suspended=suspended,
277
301
  suspenders=suspenders,
302
+ disk_autoscaling_enabled=disk_autoscaling_enabled,
278
303
  expires_at=expires_at,
279
304
  environment_id=environment_id,
280
305
  maintenance=maintenance,
281
306
  disk_size_gb=disk_size_gb,
307
+ parameter_overrides=parameter_overrides,
282
308
  primary_postgres_id=primary_postgres_id,
283
309
  )
284
310
 
@@ -0,0 +1,44 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="PostgresParameterOverrides")
8
+
9
+
10
+ @_attrs_define
11
+ class PostgresParameterOverrides:
12
+ """ """
13
+
14
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ postgres_parameter_overrides = cls()
26
+
27
+ postgres_parameter_overrides.additional_properties = d
28
+ return postgres_parameter_overrides
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> str:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: str) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties
@@ -9,6 +9,7 @@ from ..types import UNSET, Unset
9
9
 
10
10
  if TYPE_CHECKING:
11
11
  from ..models.cidr_block_and_description import CidrBlockAndDescription
12
+ from ..models.postgres_parameter_overrides import PostgresParameterOverrides
12
13
  from ..models.read_replica_input import ReadReplicaInput
13
14
 
14
15
 
@@ -22,22 +23,26 @@ class PostgresPATCHInput:
22
23
  name (Union[Unset, str]):
23
24
  plan (Union[Unset, PostgresPlans]):
24
25
  disk_size_gb (Union[Unset, int]): The number of gigabytes of disk space to allocate for the database
26
+ enable_disk_autoscaling (Union[Unset, bool]):
25
27
  enable_high_availability (Union[Unset, bool]):
26
28
  datadog_api_key (Union[Unset, str]): The Datadog API key for the Datadog agent to monitor the database. Pass
27
29
  empty string to remove. Restarts Postgres on change.
28
30
  datadog_site (Union[Unset, str]): Datadog region to use for monitoring the new database. Defaults to 'US1'.
29
31
  Example: US1.
30
32
  ip_allow_list (Union[Unset, list['CidrBlockAndDescription']]):
33
+ parameter_overrides (Union[Unset, PostgresParameterOverrides]):
31
34
  read_replicas (Union[Unset, list['ReadReplicaInput']]):
32
35
  """
33
36
 
34
37
  name: Union[Unset, str] = UNSET
35
38
  plan: Union[Unset, PostgresPlans] = UNSET
36
39
  disk_size_gb: Union[Unset, int] = UNSET
40
+ enable_disk_autoscaling: Union[Unset, bool] = UNSET
37
41
  enable_high_availability: Union[Unset, bool] = UNSET
38
42
  datadog_api_key: Union[Unset, str] = UNSET
39
43
  datadog_site: Union[Unset, str] = UNSET
40
44
  ip_allow_list: Union[Unset, list["CidrBlockAndDescription"]] = UNSET
45
+ parameter_overrides: Union[Unset, "PostgresParameterOverrides"] = UNSET
41
46
  read_replicas: Union[Unset, list["ReadReplicaInput"]] = UNSET
42
47
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
43
48
 
@@ -50,6 +55,8 @@ class PostgresPATCHInput:
50
55
 
51
56
  disk_size_gb = self.disk_size_gb
52
57
 
58
+ enable_disk_autoscaling = self.enable_disk_autoscaling
59
+
53
60
  enable_high_availability = self.enable_high_availability
54
61
 
55
62
  datadog_api_key = self.datadog_api_key
@@ -63,6 +70,10 @@ class PostgresPATCHInput:
63
70
  ip_allow_list_item = ip_allow_list_item_data.to_dict()
64
71
  ip_allow_list.append(ip_allow_list_item)
65
72
 
73
+ parameter_overrides: Union[Unset, dict[str, Any]] = UNSET
74
+ if not isinstance(self.parameter_overrides, Unset):
75
+ parameter_overrides = self.parameter_overrides.to_dict()
76
+
66
77
  read_replicas: Union[Unset, list[dict[str, Any]]] = UNSET
67
78
  if not isinstance(self.read_replicas, Unset):
68
79
  read_replicas = []
@@ -79,6 +90,8 @@ class PostgresPATCHInput:
79
90
  field_dict["plan"] = plan
80
91
  if disk_size_gb is not UNSET:
81
92
  field_dict["diskSizeGB"] = disk_size_gb
93
+ if enable_disk_autoscaling is not UNSET:
94
+ field_dict["enableDiskAutoscaling"] = enable_disk_autoscaling
82
95
  if enable_high_availability is not UNSET:
83
96
  field_dict["enableHighAvailability"] = enable_high_availability
84
97
  if datadog_api_key is not UNSET:
@@ -87,6 +100,8 @@ class PostgresPATCHInput:
87
100
  field_dict["datadogSite"] = datadog_site
88
101
  if ip_allow_list is not UNSET:
89
102
  field_dict["ipAllowList"] = ip_allow_list
103
+ if parameter_overrides is not UNSET:
104
+ field_dict["parameterOverrides"] = parameter_overrides
90
105
  if read_replicas is not UNSET:
91
106
  field_dict["readReplicas"] = read_replicas
92
107
 
@@ -95,6 +110,7 @@ class PostgresPATCHInput:
95
110
  @classmethod
96
111
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
97
112
  from ..models.cidr_block_and_description import CidrBlockAndDescription
113
+ from ..models.postgres_parameter_overrides import PostgresParameterOverrides
98
114
  from ..models.read_replica_input import ReadReplicaInput
99
115
 
100
116
  d = dict(src_dict)
@@ -109,6 +125,8 @@ class PostgresPATCHInput:
109
125
 
110
126
  disk_size_gb = d.pop("diskSizeGB", UNSET)
111
127
 
128
+ enable_disk_autoscaling = d.pop("enableDiskAutoscaling", UNSET)
129
+
112
130
  enable_high_availability = d.pop("enableHighAvailability", UNSET)
113
131
 
114
132
  datadog_api_key = d.pop("datadogAPIKey", UNSET)
@@ -122,6 +140,13 @@ class PostgresPATCHInput:
122
140
 
123
141
  ip_allow_list.append(ip_allow_list_item)
124
142
 
143
+ _parameter_overrides = d.pop("parameterOverrides", UNSET)
144
+ parameter_overrides: Union[Unset, PostgresParameterOverrides]
145
+ if isinstance(_parameter_overrides, Unset):
146
+ parameter_overrides = UNSET
147
+ else:
148
+ parameter_overrides = PostgresParameterOverrides.from_dict(_parameter_overrides)
149
+
125
150
  read_replicas = []
126
151
  _read_replicas = d.pop("readReplicas", UNSET)
127
152
  for componentsschemasread_replicas_input_item_data in _read_replicas or []:
@@ -135,10 +160,12 @@ class PostgresPATCHInput:
135
160
  name=name,
136
161
  plan=plan,
137
162
  disk_size_gb=disk_size_gb,
163
+ enable_disk_autoscaling=enable_disk_autoscaling,
138
164
  enable_high_availability=enable_high_availability,
139
165
  datadog_api_key=datadog_api_key,
140
166
  datadog_site=datadog_site,
141
167
  ip_allow_list=ip_allow_list,
168
+ parameter_overrides=parameter_overrides,
142
169
  read_replicas=read_replicas,
143
170
  )
144
171
 
@@ -10,6 +10,7 @@ from ..types import UNSET, Unset
10
10
 
11
11
  if TYPE_CHECKING:
12
12
  from ..models.cidr_block_and_description import CidrBlockAndDescription
13
+ from ..models.postgres_parameter_overrides import PostgresParameterOverrides
13
14
  from ..models.read_replica_input import ReadReplicaInput
14
15
 
15
16
 
@@ -33,8 +34,10 @@ class PostgresPOSTInput:
33
34
  enable_high_availability (Union[Unset, bool]): Default: False.
34
35
  environment_id (Union[Unset, str]):
35
36
  disk_size_gb (Union[Unset, int]): The number of gigabytes of disk space to allocate for the database
37
+ enable_disk_autoscaling (Union[Unset, bool]): Default: False.
36
38
  region (Union[Unset, str]):
37
39
  ip_allow_list (Union[Unset, list['CidrBlockAndDescription']]):
40
+ parameter_overrides (Union[Unset, PostgresParameterOverrides]):
38
41
  read_replicas (Union[Unset, list['ReadReplicaInput']]):
39
42
  """
40
43
 
@@ -49,8 +52,10 @@ class PostgresPOSTInput:
49
52
  enable_high_availability: Union[Unset, bool] = False
50
53
  environment_id: Union[Unset, str] = UNSET
51
54
  disk_size_gb: Union[Unset, int] = UNSET
55
+ enable_disk_autoscaling: Union[Unset, bool] = False
52
56
  region: Union[Unset, str] = UNSET
53
57
  ip_allow_list: Union[Unset, list["CidrBlockAndDescription"]] = UNSET
58
+ parameter_overrides: Union[Unset, "PostgresParameterOverrides"] = UNSET
54
59
  read_replicas: Union[Unset, list["ReadReplicaInput"]] = UNSET
55
60
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
56
61
 
@@ -77,6 +82,8 @@ class PostgresPOSTInput:
77
82
 
78
83
  disk_size_gb = self.disk_size_gb
79
84
 
85
+ enable_disk_autoscaling = self.enable_disk_autoscaling
86
+
80
87
  region = self.region
81
88
 
82
89
  ip_allow_list: Union[Unset, list[dict[str, Any]]] = UNSET
@@ -86,6 +93,10 @@ class PostgresPOSTInput:
86
93
  ip_allow_list_item = ip_allow_list_item_data.to_dict()
87
94
  ip_allow_list.append(ip_allow_list_item)
88
95
 
96
+ parameter_overrides: Union[Unset, dict[str, Any]] = UNSET
97
+ if not isinstance(self.parameter_overrides, Unset):
98
+ parameter_overrides = self.parameter_overrides.to_dict()
99
+
89
100
  read_replicas: Union[Unset, list[dict[str, Any]]] = UNSET
90
101
  if not isinstance(self.read_replicas, Unset):
91
102
  read_replicas = []
@@ -117,10 +128,14 @@ class PostgresPOSTInput:
117
128
  field_dict["environmentId"] = environment_id
118
129
  if disk_size_gb is not UNSET:
119
130
  field_dict["diskSizeGB"] = disk_size_gb
131
+ if enable_disk_autoscaling is not UNSET:
132
+ field_dict["enableDiskAutoscaling"] = enable_disk_autoscaling
120
133
  if region is not UNSET:
121
134
  field_dict["region"] = region
122
135
  if ip_allow_list is not UNSET:
123
136
  field_dict["ipAllowList"] = ip_allow_list
137
+ if parameter_overrides is not UNSET:
138
+ field_dict["parameterOverrides"] = parameter_overrides
124
139
  if read_replicas is not UNSET:
125
140
  field_dict["readReplicas"] = read_replicas
126
141
 
@@ -129,6 +144,7 @@ class PostgresPOSTInput:
129
144
  @classmethod
130
145
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
131
146
  from ..models.cidr_block_and_description import CidrBlockAndDescription
147
+ from ..models.postgres_parameter_overrides import PostgresParameterOverrides
132
148
  from ..models.read_replica_input import ReadReplicaInput
133
149
 
134
150
  d = dict(src_dict)
@@ -154,6 +170,8 @@ class PostgresPOSTInput:
154
170
 
155
171
  disk_size_gb = d.pop("diskSizeGB", UNSET)
156
172
 
173
+ enable_disk_autoscaling = d.pop("enableDiskAutoscaling", UNSET)
174
+
157
175
  region = d.pop("region", UNSET)
158
176
 
159
177
  ip_allow_list = []
@@ -163,6 +181,13 @@ class PostgresPOSTInput:
163
181
 
164
182
  ip_allow_list.append(ip_allow_list_item)
165
183
 
184
+ _parameter_overrides = d.pop("parameterOverrides", UNSET)
185
+ parameter_overrides: Union[Unset, PostgresParameterOverrides]
186
+ if isinstance(_parameter_overrides, Unset):
187
+ parameter_overrides = UNSET
188
+ else:
189
+ parameter_overrides = PostgresParameterOverrides.from_dict(_parameter_overrides)
190
+
166
191
  read_replicas = []
167
192
  _read_replicas = d.pop("readReplicas", UNSET)
168
193
  for componentsschemasread_replicas_input_item_data in _read_replicas or []:
@@ -184,8 +209,10 @@ class PostgresPOSTInput:
184
209
  enable_high_availability=enable_high_availability,
185
210
  environment_id=environment_id,
186
211
  disk_size_gb=disk_size_gb,
212
+ enable_disk_autoscaling=enable_disk_autoscaling,
187
213
  region=region,
188
214
  ip_allow_list=ip_allow_list,
215
+ parameter_overrides=parameter_overrides,
189
216
  read_replicas=read_replicas,
190
217
  )
191
218
 
@@ -9,6 +9,7 @@ class PostgresVersion(str, Enum):
9
9
  VALUE_4 = "15"
10
10
  VALUE_5 = "16"
11
11
  VALUE_6 = "17"
12
+ VALUE_7 = "18"
12
13
 
13
14
  def __str__(self) -> str:
14
15
  return str(self.value)
@@ -21,8 +21,8 @@ class PreviewInput:
21
21
  SHA can vary). Example: docker.io/library/nginx:latest.
22
22
  name (Union[Unset, str]): A name for the service preview instance. If not specified, Render generates the name
23
23
  using the base service's name and the specified tag or SHA. Example: preview.
24
- plan (Union[Unset, Plan]): The instance type to use for the preview instance. Note that base services with any
25
- paid instance type can't create preview instances with the `free` instance type. Example: starter.
24
+ plan (Union[Unset, Plan]): The instance type to use. Note that base services on any paid instance type can't
25
+ create preview instances with the `free` instance type. Example: starter.
26
26
  """
27
27
 
28
28
  image_path: str
@@ -34,8 +34,8 @@ class PrivateServiceDetails:
34
34
  num_instances (int): For a *manually* scaled service, this is the number of instances the service is scaled to.
35
35
  DOES NOT indicate the number of running instances for an *autoscaled* service.
36
36
  open_ports (list['ServerPort']):
37
- plan (Plan): The instance type to use for the preview instance. Note that base services with any paid instance
38
- type can't create preview instances with the `free` instance type. Example: starter.
37
+ plan (Plan): The instance type to use. Note that base services on any paid instance type can't create preview
38
+ instances with the `free` instance type. Example: starter.
39
39
  region (Region): Defaults to "oregon"
40
40
  runtime (ServiceRuntime): Runtime
41
41
  url (str):
@@ -23,7 +23,7 @@ class PrivateServiceDetailsPATCH:
23
23
  """
24
24
  Attributes:
25
25
  env_specific_details (Union['DockerDetailsPATCH', 'NativeEnvironmentDetailsPATCH', Unset]):
26
- plan (Union[Unset, PaidPlan]): Defaults to "starter"
26
+ plan (Union[Unset, PaidPlan]): Defaults to `starter` when creating a new database.
27
27
  pre_deploy_command (Union[Unset, str]):
28
28
  pull_request_previews_enabled (Union[Unset, PullRequestPreviewsEnabled]): This field has been deprecated.
29
29
  previews.generation should be used in its place.
@@ -32,7 +32,7 @@ class PrivateServiceDetailsPOST:
32
32
  env (Union[Unset, ServiceEnv]): This field has been deprecated, runtime should be used in its place.
33
33
  env_specific_details (Union['DockerDetailsPOST', 'NativeEnvironmentDetailsPOST', Unset]):
34
34
  num_instances (Union[Unset, int]): Defaults to 1 Default: 1.
35
- plan (Union[Unset, PaidPlan]): Defaults to "starter"
35
+ plan (Union[Unset, PaidPlan]): Defaults to `starter` when creating a new database.
36
36
  pre_deploy_command (Union[Unset, str]):
37
37
  pull_request_previews_enabled (Union[Unset, PullRequestPreviewsEnabled]): This field has been deprecated.
38
38
  previews.generation should be used in its place.
@@ -1,5 +1,5 @@
1
1
  from collections.abc import Mapping
2
- from typing import Any, TypeVar, Union
2
+ from typing import TYPE_CHECKING, Any, TypeVar, Union
3
3
 
4
4
  from attrs import define as _attrs_define
5
5
  from attrs import field as _attrs_field
@@ -7,6 +7,10 @@ from attrs import field as _attrs_field
7
7
  from ..models.protected_status import ProtectedStatus
8
8
  from ..types import UNSET, Unset
9
9
 
10
+ if TYPE_CHECKING:
11
+ from ..models.cidr_block_and_description import CidrBlockAndDescription
12
+
13
+
10
14
  T = TypeVar("T", bound="ProjectPOSTEnvironmentInput")
11
15
 
12
16
 
@@ -19,11 +23,13 @@ class ProjectPOSTEnvironmentInput:
19
23
  `protected`. Only admin users can perform destructive actions in `protected` environments.
20
24
  network_isolation_enabled (Union[Unset, bool]): Indicates whether network connections across environments are
21
25
  allowed.
26
+ ip_allow_list (Union[Unset, list['CidrBlockAndDescription']]):
22
27
  """
23
28
 
24
29
  name: str
25
30
  protected_status: Union[Unset, ProtectedStatus] = UNSET
26
31
  network_isolation_enabled: Union[Unset, bool] = UNSET
32
+ ip_allow_list: Union[Unset, list["CidrBlockAndDescription"]] = UNSET
27
33
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
34
 
29
35
  def to_dict(self) -> dict[str, Any]:
@@ -35,6 +41,13 @@ class ProjectPOSTEnvironmentInput:
35
41
 
36
42
  network_isolation_enabled = self.network_isolation_enabled
37
43
 
44
+ ip_allow_list: Union[Unset, list[dict[str, Any]]] = UNSET
45
+ if not isinstance(self.ip_allow_list, Unset):
46
+ ip_allow_list = []
47
+ for ip_allow_list_item_data in self.ip_allow_list:
48
+ ip_allow_list_item = ip_allow_list_item_data.to_dict()
49
+ ip_allow_list.append(ip_allow_list_item)
50
+
38
51
  field_dict: dict[str, Any] = {}
39
52
  field_dict.update(self.additional_properties)
40
53
  field_dict.update(
@@ -46,11 +59,15 @@ class ProjectPOSTEnvironmentInput:
46
59
  field_dict["protectedStatus"] = protected_status
47
60
  if network_isolation_enabled is not UNSET:
48
61
  field_dict["networkIsolationEnabled"] = network_isolation_enabled
62
+ if ip_allow_list is not UNSET:
63
+ field_dict["ipAllowList"] = ip_allow_list
49
64
 
50
65
  return field_dict
51
66
 
52
67
  @classmethod
53
68
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
69
+ from ..models.cidr_block_and_description import CidrBlockAndDescription
70
+
54
71
  d = dict(src_dict)
55
72
  name = d.pop("name")
56
73
 
@@ -63,10 +80,18 @@ class ProjectPOSTEnvironmentInput:
63
80
 
64
81
  network_isolation_enabled = d.pop("networkIsolationEnabled", UNSET)
65
82
 
83
+ ip_allow_list = []
84
+ _ip_allow_list = d.pop("ipAllowList", UNSET)
85
+ for ip_allow_list_item_data in _ip_allow_list or []:
86
+ ip_allow_list_item = CidrBlockAndDescription.from_dict(ip_allow_list_item_data)
87
+
88
+ ip_allow_list.append(ip_allow_list_item)
89
+
66
90
  project_post_environment_input = cls(
67
91
  name=name,
68
92
  protected_status=protected_status,
69
93
  network_isolation_enabled=network_isolation_enabled,
94
+ ip_allow_list=ip_allow_list,
70
95
  )
71
96
 
72
97
  project_post_environment_input.additional_properties = d