casedev 0.2.0__py3-none-any.whl → 0.4.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 (157) hide show
  1. casedev/_base_client.py +5 -2
  2. casedev/_client.py +275 -1
  3. casedev/_compat.py +3 -3
  4. casedev/_utils/_json.py +35 -0
  5. casedev/_version.py +1 -1
  6. casedev/resources/__init__.py +98 -0
  7. casedev/resources/applications/__init__.py +33 -0
  8. casedev/resources/applications/applications.py +102 -0
  9. casedev/resources/applications/v1/__init__.py +61 -0
  10. casedev/resources/applications/v1/deployments.py +867 -0
  11. casedev/resources/applications/v1/projects.py +1377 -0
  12. casedev/resources/applications/v1/v1.py +166 -0
  13. casedev/resources/applications/v1/workflows.py +182 -0
  14. casedev/resources/compute/v1/__init__.py +28 -0
  15. casedev/resources/compute/v1/instance_types.py +145 -0
  16. casedev/resources/compute/v1/instances.py +448 -0
  17. casedev/resources/compute/v1/v1.py +64 -0
  18. casedev/resources/database/__init__.py +33 -0
  19. casedev/resources/database/database.py +102 -0
  20. casedev/resources/database/v1/__init__.py +33 -0
  21. casedev/resources/database/v1/projects.py +771 -0
  22. casedev/resources/database/v1/v1.py +175 -0
  23. casedev/resources/legal/__init__.py +33 -0
  24. casedev/resources/legal/legal.py +102 -0
  25. casedev/resources/legal/v1.py +924 -0
  26. casedev/resources/memory/__init__.py +33 -0
  27. casedev/resources/memory/memory.py +102 -0
  28. casedev/resources/memory/v1.py +1100 -0
  29. casedev/resources/ocr/v1.py +2 -2
  30. casedev/resources/privilege/__init__.py +33 -0
  31. casedev/resources/privilege/privilege.py +102 -0
  32. casedev/resources/privilege/v1.py +260 -0
  33. casedev/resources/superdoc/__init__.py +33 -0
  34. casedev/resources/superdoc/superdoc.py +102 -0
  35. casedev/resources/superdoc/v1.py +349 -0
  36. casedev/resources/translate/__init__.py +33 -0
  37. casedev/resources/translate/translate.py +102 -0
  38. casedev/resources/translate/v1.py +418 -0
  39. casedev/resources/vault/__init__.py +14 -0
  40. casedev/resources/vault/graphrag.py +91 -0
  41. casedev/resources/vault/multipart.py +549 -0
  42. casedev/resources/vault/objects.py +481 -1
  43. casedev/resources/vault/vault.py +264 -5
  44. casedev/resources/voice/streaming.py +2 -2
  45. casedev/types/__init__.py +4 -0
  46. casedev/types/applications/v1/__init__.py +20 -0
  47. casedev/types/applications/v1/deployment_cancel_params.py +14 -0
  48. casedev/types/applications/v1/deployment_create_params.py +20 -0
  49. casedev/types/applications/v1/deployment_get_logs_params.py +14 -0
  50. casedev/types/applications/v1/deployment_list_params.py +23 -0
  51. casedev/types/applications/v1/deployment_retrieve_params.py +17 -0
  52. casedev/types/applications/v1/deployment_stream_params.py +17 -0
  53. casedev/types/applications/v1/project_create_deployment_params.py +29 -0
  54. casedev/types/applications/v1/project_create_domain_params.py +17 -0
  55. casedev/types/applications/v1/project_create_env_params.py +27 -0
  56. casedev/types/applications/v1/project_create_params.py +53 -0
  57. casedev/types/applications/v1/project_delete_params.py +14 -0
  58. casedev/types/applications/v1/project_get_runtime_logs_params.py +12 -0
  59. casedev/types/applications/v1/project_list_deployments_params.py +18 -0
  60. casedev/types/applications/v1/project_list_env_params.py +12 -0
  61. casedev/types/applications/v1/project_list_response.py +45 -0
  62. casedev/types/applications/v1/workflow_get_status_params.py +14 -0
  63. casedev/types/compute/v1/__init__.py +6 -0
  64. casedev/types/compute/v1/instance_create_params.py +28 -0
  65. casedev/types/compute/v1/instance_create_response.py +35 -0
  66. casedev/types/compute/v1/instance_delete_response.py +23 -0
  67. casedev/types/compute/v1/instance_list_response.py +45 -0
  68. casedev/types/compute/v1/instance_retrieve_response.py +55 -0
  69. casedev/types/compute/v1/instance_type_list_response.py +46 -0
  70. casedev/types/database/__init__.py +5 -0
  71. casedev/types/database/v1/__init__.py +14 -0
  72. casedev/types/database/v1/project_create_branch_params.py +17 -0
  73. casedev/types/database/v1/project_create_branch_response.py +30 -0
  74. casedev/types/database/v1/project_create_params.py +27 -0
  75. casedev/types/database/v1/project_create_response.py +47 -0
  76. casedev/types/database/v1/project_delete_response.py +13 -0
  77. casedev/types/database/v1/project_get_connection_params.py +15 -0
  78. casedev/types/database/v1/project_get_connection_response.py +18 -0
  79. casedev/types/database/v1/project_list_branches_response.py +37 -0
  80. casedev/types/database/v1/project_list_response.py +64 -0
  81. casedev/types/database/v1/project_retrieve_response.py +100 -0
  82. casedev/types/database/v1_get_usage_response.py +116 -0
  83. casedev/types/legal/__init__.py +20 -0
  84. casedev/types/legal/v1_find_params.py +23 -0
  85. casedev/types/legal/v1_find_response.py +37 -0
  86. casedev/types/legal/v1_get_citations_from_url_params.py +12 -0
  87. casedev/types/legal/v1_get_citations_from_url_response.py +69 -0
  88. casedev/types/legal/v1_get_citations_params.py +16 -0
  89. casedev/types/legal/v1_get_citations_response.py +60 -0
  90. casedev/types/legal/v1_get_full_text_params.py +23 -0
  91. casedev/types/legal/v1_get_full_text_response.py +35 -0
  92. casedev/types/legal/v1_list_jurisdictions_params.py +12 -0
  93. casedev/types/legal/v1_list_jurisdictions_response.py +35 -0
  94. casedev/types/legal/v1_research_params.py +27 -0
  95. casedev/types/legal/v1_research_response.py +51 -0
  96. casedev/types/legal/v1_similar_params.py +25 -0
  97. casedev/types/legal/v1_similar_response.py +42 -0
  98. casedev/types/legal/v1_verify_params.py +16 -0
  99. casedev/types/legal/v1_verify_response.py +92 -0
  100. casedev/types/memory/__init__.py +14 -0
  101. casedev/types/memory/v1_create_params.py +69 -0
  102. casedev/types/memory/v1_create_response.py +23 -0
  103. casedev/types/memory/v1_delete_all_params.py +45 -0
  104. casedev/types/memory/v1_delete_all_response.py +12 -0
  105. casedev/types/memory/v1_delete_response.py +13 -0
  106. casedev/types/memory/v1_list_params.py +54 -0
  107. casedev/types/memory/v1_list_response.py +29 -0
  108. casedev/types/memory/v1_retrieve_response.py +23 -0
  109. casedev/types/memory/v1_search_params.py +54 -0
  110. casedev/types/memory/v1_search_response.py +61 -0
  111. casedev/types/ocr/v1_process_params.py +21 -13
  112. casedev/types/ocr/v1_retrieve_response.py +7 -7
  113. casedev/types/privilege/__init__.py +6 -0
  114. casedev/types/privilege/v1_detect_params.py +34 -0
  115. casedev/types/privilege/v1_detect_response.py +41 -0
  116. casedev/types/superdoc/__init__.py +6 -0
  117. casedev/types/superdoc/v1_annotate_params.py +56 -0
  118. casedev/types/superdoc/v1_convert_params.py +23 -0
  119. casedev/types/translate/__init__.py +10 -0
  120. casedev/types/translate/v1_detect_params.py +18 -0
  121. casedev/types/translate/v1_detect_response.py +28 -0
  122. casedev/types/translate/v1_list_languages_params.py +18 -0
  123. casedev/types/translate/v1_list_languages_response.py +23 -0
  124. casedev/types/translate/v1_translate_params.py +30 -0
  125. casedev/types/translate/v1_translate_response.py +28 -0
  126. casedev/types/vault/__init__.py +14 -0
  127. casedev/types/vault/graphrag_process_object_response.py +45 -0
  128. casedev/types/vault/multipart_abort_params.py +15 -0
  129. casedev/types/vault/multipart_complete_params.py +26 -0
  130. casedev/types/vault/multipart_get_part_urls_params.py +24 -0
  131. casedev/types/vault/multipart_get_part_urls_response.py +19 -0
  132. casedev/types/vault/multipart_init_params.py +32 -0
  133. casedev/types/vault/multipart_init_response.py +23 -0
  134. casedev/types/vault/object_create_presigned_url_params.py +6 -0
  135. casedev/types/vault/object_delete_params.py +17 -0
  136. casedev/types/vault/object_delete_response.py +29 -0
  137. casedev/types/vault/object_get_ocr_words_params.py +28 -0
  138. casedev/types/vault/object_get_ocr_words_response.py +48 -0
  139. casedev/types/vault/object_get_summarize_job_response.py +40 -0
  140. casedev/types/vault/object_get_text_response.py +10 -10
  141. casedev/types/vault/object_list_response.py +13 -13
  142. casedev/types/vault/object_retrieve_response.py +13 -13
  143. casedev/types/vault/object_update_params.py +24 -0
  144. casedev/types/vault/object_update_response.py +39 -0
  145. casedev/types/vault_delete_params.py +17 -0
  146. casedev/types/vault_delete_response.py +30 -0
  147. casedev/types/vault_retrieve_response.py +13 -13
  148. casedev/types/vault_search_response.py +14 -0
  149. casedev/types/vault_update_params.py +21 -0
  150. casedev/types/vault_update_response.py +60 -0
  151. casedev/types/vault_upload_params.py +5 -2
  152. {casedev-0.2.0.dist-info → casedev-0.4.0.dist-info}/METADATA +1 -1
  153. casedev-0.4.0.dist-info/RECORD +275 -0
  154. casedev-0.2.0.dist-info/RECORD +0 -149
  155. /casedev/types/{webhooks → applications}/__init__.py +0 -0
  156. {casedev-0.2.0.dist-info → casedev-0.4.0.dist-info}/WHEEL +0 -0
  157. {casedev-0.2.0.dist-info → casedev-0.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,771 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal
6
+
7
+ import httpx
8
+
9
+ from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
10
+ from ...._utils import maybe_transform, async_maybe_transform
11
+ from ...._compat import cached_property
12
+ from ...._resource import SyncAPIResource, AsyncAPIResource
13
+ from ...._response import (
14
+ to_raw_response_wrapper,
15
+ to_streamed_response_wrapper,
16
+ async_to_raw_response_wrapper,
17
+ async_to_streamed_response_wrapper,
18
+ )
19
+ from ...._base_client import make_request_options
20
+ from ....types.database.v1 import project_create_params, project_create_branch_params, project_get_connection_params
21
+ from ....types.database.v1.project_list_response import ProjectListResponse
22
+ from ....types.database.v1.project_create_response import ProjectCreateResponse
23
+ from ....types.database.v1.project_delete_response import ProjectDeleteResponse
24
+ from ....types.database.v1.project_retrieve_response import ProjectRetrieveResponse
25
+ from ....types.database.v1.project_create_branch_response import ProjectCreateBranchResponse
26
+ from ....types.database.v1.project_list_branches_response import ProjectListBranchesResponse
27
+ from ....types.database.v1.project_get_connection_response import ProjectGetConnectionResponse
28
+
29
+ __all__ = ["ProjectsResource", "AsyncProjectsResource"]
30
+
31
+
32
+ class ProjectsResource(SyncAPIResource):
33
+ @cached_property
34
+ def with_raw_response(self) -> ProjectsResourceWithRawResponse:
35
+ """
36
+ This property can be used as a prefix for any HTTP method call to return
37
+ the raw response object instead of the parsed content.
38
+
39
+ For more information, see https://www.github.com/CaseMark/casedev-python#accessing-raw-response-data-eg-headers
40
+ """
41
+ return ProjectsResourceWithRawResponse(self)
42
+
43
+ @cached_property
44
+ def with_streaming_response(self) -> ProjectsResourceWithStreamingResponse:
45
+ """
46
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
47
+
48
+ For more information, see https://www.github.com/CaseMark/casedev-python#with_streaming_response
49
+ """
50
+ return ProjectsResourceWithStreamingResponse(self)
51
+
52
+ def create(
53
+ self,
54
+ *,
55
+ name: str,
56
+ description: str | Omit = omit,
57
+ region: Literal[
58
+ "aws-us-east-1",
59
+ "aws-us-east-2",
60
+ "aws-us-west-2",
61
+ "aws-eu-central-1",
62
+ "aws-eu-west-1",
63
+ "aws-eu-west-2",
64
+ "aws-ap-southeast-1",
65
+ "aws-ap-southeast-2",
66
+ ]
67
+ | Omit = omit,
68
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
69
+ # The extra values given here take precedence over values defined on the client or passed to this method.
70
+ extra_headers: Headers | None = None,
71
+ extra_query: Query | None = None,
72
+ extra_body: Body | None = None,
73
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
74
+ ) -> ProjectCreateResponse:
75
+ """Creates a new serverless Postgres database project powered by Neon.
76
+
77
+ Includes
78
+ automatic scaling, connection pooling, and a default 'main' branch with 'neondb'
79
+ database. Supports branching for isolated dev/staging environments. Perfect for
80
+ case management applications, document workflows, and litigation support
81
+ systems.
82
+
83
+ Args:
84
+ name: Project name (letters, numbers, hyphens, underscores only)
85
+
86
+ description: Optional project description
87
+
88
+ region: AWS region for database deployment
89
+
90
+ extra_headers: Send extra headers
91
+
92
+ extra_query: Add additional query parameters to the request
93
+
94
+ extra_body: Add additional JSON properties to the request
95
+
96
+ timeout: Override the client-level default timeout for this request, in seconds
97
+ """
98
+ return self._post(
99
+ "/database/v1/projects",
100
+ body=maybe_transform(
101
+ {
102
+ "name": name,
103
+ "description": description,
104
+ "region": region,
105
+ },
106
+ project_create_params.ProjectCreateParams,
107
+ ),
108
+ options=make_request_options(
109
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
110
+ ),
111
+ cast_to=ProjectCreateResponse,
112
+ )
113
+
114
+ def retrieve(
115
+ self,
116
+ id: str,
117
+ *,
118
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
119
+ # The extra values given here take precedence over values defined on the client or passed to this method.
120
+ extra_headers: Headers | None = None,
121
+ extra_query: Query | None = None,
122
+ extra_body: Body | None = None,
123
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
124
+ ) -> ProjectRetrieveResponse:
125
+ """
126
+ Retrieves detailed information about a specific database project including
127
+ branches, databases, storage/compute metrics, connection host, and linked
128
+ deployments. Fetches live usage statistics from Neon API.
129
+
130
+ Args:
131
+ extra_headers: Send extra headers
132
+
133
+ extra_query: Add additional query parameters to the request
134
+
135
+ extra_body: Add additional JSON properties to the request
136
+
137
+ timeout: Override the client-level default timeout for this request, in seconds
138
+ """
139
+ if not id:
140
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
141
+ return self._get(
142
+ f"/database/v1/projects/{id}",
143
+ options=make_request_options(
144
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
145
+ ),
146
+ cast_to=ProjectRetrieveResponse,
147
+ )
148
+
149
+ def list(
150
+ self,
151
+ *,
152
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
153
+ # The extra values given here take precedence over values defined on the client or passed to this method.
154
+ extra_headers: Headers | None = None,
155
+ extra_query: Query | None = None,
156
+ extra_body: Body | None = None,
157
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
158
+ ) -> ProjectListResponse:
159
+ """
160
+ Retrieves all serverless Postgres database projects for the authenticated
161
+ organization. Includes storage and compute metrics, plus linked deployments from
162
+ Thurgood apps and Compute instances.
163
+ """
164
+ return self._get(
165
+ "/database/v1/projects",
166
+ options=make_request_options(
167
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
168
+ ),
169
+ cast_to=ProjectListResponse,
170
+ )
171
+
172
+ def delete(
173
+ self,
174
+ id: str,
175
+ *,
176
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
177
+ # The extra values given here take precedence over values defined on the client or passed to this method.
178
+ extra_headers: Headers | None = None,
179
+ extra_query: Query | None = None,
180
+ extra_body: Body | None = None,
181
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
182
+ ) -> ProjectDeleteResponse:
183
+ """
184
+ Permanently deletes a database project from Neon and marks it as deleted in
185
+ Case.dev. This action cannot be undone and will destroy all data including
186
+ branches and databases. Use with caution.
187
+
188
+ Args:
189
+ extra_headers: Send extra headers
190
+
191
+ extra_query: Add additional query parameters to the request
192
+
193
+ extra_body: Add additional JSON properties to the request
194
+
195
+ timeout: Override the client-level default timeout for this request, in seconds
196
+ """
197
+ if not id:
198
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
199
+ return self._delete(
200
+ f"/database/v1/projects/{id}",
201
+ options=make_request_options(
202
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
203
+ ),
204
+ cast_to=ProjectDeleteResponse,
205
+ )
206
+
207
+ def create_branch(
208
+ self,
209
+ id: str,
210
+ *,
211
+ name: str,
212
+ parent_branch_id: str | Omit = omit,
213
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
214
+ # The extra values given here take precedence over values defined on the client or passed to this method.
215
+ extra_headers: Headers | None = None,
216
+ extra_query: Query | None = None,
217
+ extra_body: Body | None = None,
218
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
219
+ ) -> ProjectCreateBranchResponse:
220
+ """Creates a new branch from the specified parent branch (or default 'main'
221
+ branch).
222
+
223
+ Branches provide instant point-in-time clones of your database for
224
+ isolated development, staging, testing, or feature work. Perfect for testing
225
+ schema changes, running migrations safely, or creating ephemeral preview
226
+ environments.
227
+
228
+ Args:
229
+ name: Branch name (letters, numbers, hyphens, underscores only)
230
+
231
+ parent_branch_id: Parent branch ID to clone from (defaults to main branch)
232
+
233
+ extra_headers: Send extra headers
234
+
235
+ extra_query: Add additional query parameters to the request
236
+
237
+ extra_body: Add additional JSON properties to the request
238
+
239
+ timeout: Override the client-level default timeout for this request, in seconds
240
+ """
241
+ if not id:
242
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
243
+ return self._post(
244
+ f"/database/v1/projects/{id}/branches",
245
+ body=maybe_transform(
246
+ {
247
+ "name": name,
248
+ "parent_branch_id": parent_branch_id,
249
+ },
250
+ project_create_branch_params.ProjectCreateBranchParams,
251
+ ),
252
+ options=make_request_options(
253
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
254
+ ),
255
+ cast_to=ProjectCreateBranchResponse,
256
+ )
257
+
258
+ def get_connection(
259
+ self,
260
+ id: str,
261
+ *,
262
+ branch: str | Omit = omit,
263
+ pooled: bool | Omit = omit,
264
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
265
+ # The extra values given here take precedence over values defined on the client or passed to this method.
266
+ extra_headers: Headers | None = None,
267
+ extra_query: Query | None = None,
268
+ extra_body: Body | None = None,
269
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
270
+ ) -> ProjectGetConnectionResponse:
271
+ """Retrieves the PostgreSQL connection URI for a database project.
272
+
273
+ Supports
274
+ selecting specific branches and pooled vs direct connections. Connection strings
275
+ include credentials and should be stored securely. Use for configuring
276
+ applications and deployment environments.
277
+
278
+ Args:
279
+ branch: Branch name (defaults to 'main')
280
+
281
+ pooled: Use pooled connection (PgBouncer)
282
+
283
+ extra_headers: Send extra headers
284
+
285
+ extra_query: Add additional query parameters to the request
286
+
287
+ extra_body: Add additional JSON properties to the request
288
+
289
+ timeout: Override the client-level default timeout for this request, in seconds
290
+ """
291
+ if not id:
292
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
293
+ return self._get(
294
+ f"/database/v1/projects/{id}/connection",
295
+ options=make_request_options(
296
+ extra_headers=extra_headers,
297
+ extra_query=extra_query,
298
+ extra_body=extra_body,
299
+ timeout=timeout,
300
+ query=maybe_transform(
301
+ {
302
+ "branch": branch,
303
+ "pooled": pooled,
304
+ },
305
+ project_get_connection_params.ProjectGetConnectionParams,
306
+ ),
307
+ ),
308
+ cast_to=ProjectGetConnectionResponse,
309
+ )
310
+
311
+ def list_branches(
312
+ self,
313
+ id: str,
314
+ *,
315
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
316
+ # The extra values given here take precedence over values defined on the client or passed to this method.
317
+ extra_headers: Headers | None = None,
318
+ extra_query: Query | None = None,
319
+ extra_body: Body | None = None,
320
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
321
+ ) -> ProjectListBranchesResponse:
322
+ """Retrieves all branches for a database project.
323
+
324
+ Branches enable isolated
325
+ development and testing environments with instant point-in-time cloning. Each
326
+ branch includes the default branch and any custom branches created for staging,
327
+ testing, or feature development.
328
+
329
+ Args:
330
+ extra_headers: Send extra headers
331
+
332
+ extra_query: Add additional query parameters to the request
333
+
334
+ extra_body: Add additional JSON properties to the request
335
+
336
+ timeout: Override the client-level default timeout for this request, in seconds
337
+ """
338
+ if not id:
339
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
340
+ return self._get(
341
+ f"/database/v1/projects/{id}/branches",
342
+ options=make_request_options(
343
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
344
+ ),
345
+ cast_to=ProjectListBranchesResponse,
346
+ )
347
+
348
+
349
+ class AsyncProjectsResource(AsyncAPIResource):
350
+ @cached_property
351
+ def with_raw_response(self) -> AsyncProjectsResourceWithRawResponse:
352
+ """
353
+ This property can be used as a prefix for any HTTP method call to return
354
+ the raw response object instead of the parsed content.
355
+
356
+ For more information, see https://www.github.com/CaseMark/casedev-python#accessing-raw-response-data-eg-headers
357
+ """
358
+ return AsyncProjectsResourceWithRawResponse(self)
359
+
360
+ @cached_property
361
+ def with_streaming_response(self) -> AsyncProjectsResourceWithStreamingResponse:
362
+ """
363
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
364
+
365
+ For more information, see https://www.github.com/CaseMark/casedev-python#with_streaming_response
366
+ """
367
+ return AsyncProjectsResourceWithStreamingResponse(self)
368
+
369
+ async def create(
370
+ self,
371
+ *,
372
+ name: str,
373
+ description: str | Omit = omit,
374
+ region: Literal[
375
+ "aws-us-east-1",
376
+ "aws-us-east-2",
377
+ "aws-us-west-2",
378
+ "aws-eu-central-1",
379
+ "aws-eu-west-1",
380
+ "aws-eu-west-2",
381
+ "aws-ap-southeast-1",
382
+ "aws-ap-southeast-2",
383
+ ]
384
+ | Omit = omit,
385
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
386
+ # The extra values given here take precedence over values defined on the client or passed to this method.
387
+ extra_headers: Headers | None = None,
388
+ extra_query: Query | None = None,
389
+ extra_body: Body | None = None,
390
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
391
+ ) -> ProjectCreateResponse:
392
+ """Creates a new serverless Postgres database project powered by Neon.
393
+
394
+ Includes
395
+ automatic scaling, connection pooling, and a default 'main' branch with 'neondb'
396
+ database. Supports branching for isolated dev/staging environments. Perfect for
397
+ case management applications, document workflows, and litigation support
398
+ systems.
399
+
400
+ Args:
401
+ name: Project name (letters, numbers, hyphens, underscores only)
402
+
403
+ description: Optional project description
404
+
405
+ region: AWS region for database deployment
406
+
407
+ extra_headers: Send extra headers
408
+
409
+ extra_query: Add additional query parameters to the request
410
+
411
+ extra_body: Add additional JSON properties to the request
412
+
413
+ timeout: Override the client-level default timeout for this request, in seconds
414
+ """
415
+ return await self._post(
416
+ "/database/v1/projects",
417
+ body=await async_maybe_transform(
418
+ {
419
+ "name": name,
420
+ "description": description,
421
+ "region": region,
422
+ },
423
+ project_create_params.ProjectCreateParams,
424
+ ),
425
+ options=make_request_options(
426
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
427
+ ),
428
+ cast_to=ProjectCreateResponse,
429
+ )
430
+
431
+ async def retrieve(
432
+ self,
433
+ id: str,
434
+ *,
435
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
436
+ # The extra values given here take precedence over values defined on the client or passed to this method.
437
+ extra_headers: Headers | None = None,
438
+ extra_query: Query | None = None,
439
+ extra_body: Body | None = None,
440
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
441
+ ) -> ProjectRetrieveResponse:
442
+ """
443
+ Retrieves detailed information about a specific database project including
444
+ branches, databases, storage/compute metrics, connection host, and linked
445
+ deployments. Fetches live usage statistics from Neon API.
446
+
447
+ Args:
448
+ extra_headers: Send extra headers
449
+
450
+ extra_query: Add additional query parameters to the request
451
+
452
+ extra_body: Add additional JSON properties to the request
453
+
454
+ timeout: Override the client-level default timeout for this request, in seconds
455
+ """
456
+ if not id:
457
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
458
+ return await self._get(
459
+ f"/database/v1/projects/{id}",
460
+ options=make_request_options(
461
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
462
+ ),
463
+ cast_to=ProjectRetrieveResponse,
464
+ )
465
+
466
+ async def list(
467
+ self,
468
+ *,
469
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
470
+ # The extra values given here take precedence over values defined on the client or passed to this method.
471
+ extra_headers: Headers | None = None,
472
+ extra_query: Query | None = None,
473
+ extra_body: Body | None = None,
474
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
475
+ ) -> ProjectListResponse:
476
+ """
477
+ Retrieves all serverless Postgres database projects for the authenticated
478
+ organization. Includes storage and compute metrics, plus linked deployments from
479
+ Thurgood apps and Compute instances.
480
+ """
481
+ return await self._get(
482
+ "/database/v1/projects",
483
+ options=make_request_options(
484
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
485
+ ),
486
+ cast_to=ProjectListResponse,
487
+ )
488
+
489
+ async def delete(
490
+ self,
491
+ id: str,
492
+ *,
493
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
494
+ # The extra values given here take precedence over values defined on the client or passed to this method.
495
+ extra_headers: Headers | None = None,
496
+ extra_query: Query | None = None,
497
+ extra_body: Body | None = None,
498
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
499
+ ) -> ProjectDeleteResponse:
500
+ """
501
+ Permanently deletes a database project from Neon and marks it as deleted in
502
+ Case.dev. This action cannot be undone and will destroy all data including
503
+ branches and databases. Use with caution.
504
+
505
+ Args:
506
+ extra_headers: Send extra headers
507
+
508
+ extra_query: Add additional query parameters to the request
509
+
510
+ extra_body: Add additional JSON properties to the request
511
+
512
+ timeout: Override the client-level default timeout for this request, in seconds
513
+ """
514
+ if not id:
515
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
516
+ return await self._delete(
517
+ f"/database/v1/projects/{id}",
518
+ options=make_request_options(
519
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
520
+ ),
521
+ cast_to=ProjectDeleteResponse,
522
+ )
523
+
524
+ async def create_branch(
525
+ self,
526
+ id: str,
527
+ *,
528
+ name: str,
529
+ parent_branch_id: str | Omit = omit,
530
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
531
+ # The extra values given here take precedence over values defined on the client or passed to this method.
532
+ extra_headers: Headers | None = None,
533
+ extra_query: Query | None = None,
534
+ extra_body: Body | None = None,
535
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
536
+ ) -> ProjectCreateBranchResponse:
537
+ """Creates a new branch from the specified parent branch (or default 'main'
538
+ branch).
539
+
540
+ Branches provide instant point-in-time clones of your database for
541
+ isolated development, staging, testing, or feature work. Perfect for testing
542
+ schema changes, running migrations safely, or creating ephemeral preview
543
+ environments.
544
+
545
+ Args:
546
+ name: Branch name (letters, numbers, hyphens, underscores only)
547
+
548
+ parent_branch_id: Parent branch ID to clone from (defaults to main branch)
549
+
550
+ extra_headers: Send extra headers
551
+
552
+ extra_query: Add additional query parameters to the request
553
+
554
+ extra_body: Add additional JSON properties to the request
555
+
556
+ timeout: Override the client-level default timeout for this request, in seconds
557
+ """
558
+ if not id:
559
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
560
+ return await self._post(
561
+ f"/database/v1/projects/{id}/branches",
562
+ body=await async_maybe_transform(
563
+ {
564
+ "name": name,
565
+ "parent_branch_id": parent_branch_id,
566
+ },
567
+ project_create_branch_params.ProjectCreateBranchParams,
568
+ ),
569
+ options=make_request_options(
570
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
571
+ ),
572
+ cast_to=ProjectCreateBranchResponse,
573
+ )
574
+
575
+ async def get_connection(
576
+ self,
577
+ id: str,
578
+ *,
579
+ branch: str | Omit = omit,
580
+ pooled: bool | Omit = omit,
581
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
582
+ # The extra values given here take precedence over values defined on the client or passed to this method.
583
+ extra_headers: Headers | None = None,
584
+ extra_query: Query | None = None,
585
+ extra_body: Body | None = None,
586
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
587
+ ) -> ProjectGetConnectionResponse:
588
+ """Retrieves the PostgreSQL connection URI for a database project.
589
+
590
+ Supports
591
+ selecting specific branches and pooled vs direct connections. Connection strings
592
+ include credentials and should be stored securely. Use for configuring
593
+ applications and deployment environments.
594
+
595
+ Args:
596
+ branch: Branch name (defaults to 'main')
597
+
598
+ pooled: Use pooled connection (PgBouncer)
599
+
600
+ extra_headers: Send extra headers
601
+
602
+ extra_query: Add additional query parameters to the request
603
+
604
+ extra_body: Add additional JSON properties to the request
605
+
606
+ timeout: Override the client-level default timeout for this request, in seconds
607
+ """
608
+ if not id:
609
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
610
+ return await self._get(
611
+ f"/database/v1/projects/{id}/connection",
612
+ options=make_request_options(
613
+ extra_headers=extra_headers,
614
+ extra_query=extra_query,
615
+ extra_body=extra_body,
616
+ timeout=timeout,
617
+ query=await async_maybe_transform(
618
+ {
619
+ "branch": branch,
620
+ "pooled": pooled,
621
+ },
622
+ project_get_connection_params.ProjectGetConnectionParams,
623
+ ),
624
+ ),
625
+ cast_to=ProjectGetConnectionResponse,
626
+ )
627
+
628
+ async def list_branches(
629
+ self,
630
+ id: str,
631
+ *,
632
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
633
+ # The extra values given here take precedence over values defined on the client or passed to this method.
634
+ extra_headers: Headers | None = None,
635
+ extra_query: Query | None = None,
636
+ extra_body: Body | None = None,
637
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
638
+ ) -> ProjectListBranchesResponse:
639
+ """Retrieves all branches for a database project.
640
+
641
+ Branches enable isolated
642
+ development and testing environments with instant point-in-time cloning. Each
643
+ branch includes the default branch and any custom branches created for staging,
644
+ testing, or feature development.
645
+
646
+ Args:
647
+ extra_headers: Send extra headers
648
+
649
+ extra_query: Add additional query parameters to the request
650
+
651
+ extra_body: Add additional JSON properties to the request
652
+
653
+ timeout: Override the client-level default timeout for this request, in seconds
654
+ """
655
+ if not id:
656
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
657
+ return await self._get(
658
+ f"/database/v1/projects/{id}/branches",
659
+ options=make_request_options(
660
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
661
+ ),
662
+ cast_to=ProjectListBranchesResponse,
663
+ )
664
+
665
+
666
+ class ProjectsResourceWithRawResponse:
667
+ def __init__(self, projects: ProjectsResource) -> None:
668
+ self._projects = projects
669
+
670
+ self.create = to_raw_response_wrapper(
671
+ projects.create,
672
+ )
673
+ self.retrieve = to_raw_response_wrapper(
674
+ projects.retrieve,
675
+ )
676
+ self.list = to_raw_response_wrapper(
677
+ projects.list,
678
+ )
679
+ self.delete = to_raw_response_wrapper(
680
+ projects.delete,
681
+ )
682
+ self.create_branch = to_raw_response_wrapper(
683
+ projects.create_branch,
684
+ )
685
+ self.get_connection = to_raw_response_wrapper(
686
+ projects.get_connection,
687
+ )
688
+ self.list_branches = to_raw_response_wrapper(
689
+ projects.list_branches,
690
+ )
691
+
692
+
693
+ class AsyncProjectsResourceWithRawResponse:
694
+ def __init__(self, projects: AsyncProjectsResource) -> None:
695
+ self._projects = projects
696
+
697
+ self.create = async_to_raw_response_wrapper(
698
+ projects.create,
699
+ )
700
+ self.retrieve = async_to_raw_response_wrapper(
701
+ projects.retrieve,
702
+ )
703
+ self.list = async_to_raw_response_wrapper(
704
+ projects.list,
705
+ )
706
+ self.delete = async_to_raw_response_wrapper(
707
+ projects.delete,
708
+ )
709
+ self.create_branch = async_to_raw_response_wrapper(
710
+ projects.create_branch,
711
+ )
712
+ self.get_connection = async_to_raw_response_wrapper(
713
+ projects.get_connection,
714
+ )
715
+ self.list_branches = async_to_raw_response_wrapper(
716
+ projects.list_branches,
717
+ )
718
+
719
+
720
+ class ProjectsResourceWithStreamingResponse:
721
+ def __init__(self, projects: ProjectsResource) -> None:
722
+ self._projects = projects
723
+
724
+ self.create = to_streamed_response_wrapper(
725
+ projects.create,
726
+ )
727
+ self.retrieve = to_streamed_response_wrapper(
728
+ projects.retrieve,
729
+ )
730
+ self.list = to_streamed_response_wrapper(
731
+ projects.list,
732
+ )
733
+ self.delete = to_streamed_response_wrapper(
734
+ projects.delete,
735
+ )
736
+ self.create_branch = to_streamed_response_wrapper(
737
+ projects.create_branch,
738
+ )
739
+ self.get_connection = to_streamed_response_wrapper(
740
+ projects.get_connection,
741
+ )
742
+ self.list_branches = to_streamed_response_wrapper(
743
+ projects.list_branches,
744
+ )
745
+
746
+
747
+ class AsyncProjectsResourceWithStreamingResponse:
748
+ def __init__(self, projects: AsyncProjectsResource) -> None:
749
+ self._projects = projects
750
+
751
+ self.create = async_to_streamed_response_wrapper(
752
+ projects.create,
753
+ )
754
+ self.retrieve = async_to_streamed_response_wrapper(
755
+ projects.retrieve,
756
+ )
757
+ self.list = async_to_streamed_response_wrapper(
758
+ projects.list,
759
+ )
760
+ self.delete = async_to_streamed_response_wrapper(
761
+ projects.delete,
762
+ )
763
+ self.create_branch = async_to_streamed_response_wrapper(
764
+ projects.create_branch,
765
+ )
766
+ self.get_connection = async_to_streamed_response_wrapper(
767
+ projects.get_connection,
768
+ )
769
+ self.list_branches = async_to_streamed_response_wrapper(
770
+ projects.list_branches,
771
+ )