mirascope 2.0.0a4__py3-none-any.whl → 2.0.0a6__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 (215) hide show
  1. mirascope/__init__.py +10 -1
  2. mirascope/_stubs.py +363 -0
  3. mirascope/api/__init__.py +8 -0
  4. mirascope/api/_generated/__init__.py +119 -1
  5. mirascope/api/_generated/annotations/__init__.py +33 -0
  6. mirascope/api/_generated/annotations/client.py +474 -0
  7. mirascope/api/_generated/annotations/raw_client.py +1095 -0
  8. mirascope/api/_generated/annotations/types/__init__.py +31 -0
  9. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
  10. mirascope/api/_generated/annotations/types/annotations_create_response.py +35 -0
  11. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
  12. mirascope/api/_generated/annotations/types/annotations_get_response.py +35 -0
  13. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
  14. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
  15. mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
  16. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +35 -0
  17. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
  18. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
  19. mirascope/api/_generated/annotations/types/annotations_update_response.py +35 -0
  20. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
  21. mirascope/api/_generated/api_keys/__init__.py +7 -0
  22. mirascope/api/_generated/api_keys/client.py +429 -0
  23. mirascope/api/_generated/api_keys/raw_client.py +788 -0
  24. mirascope/api/_generated/api_keys/types/__init__.py +9 -0
  25. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +28 -0
  26. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +27 -0
  27. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +27 -0
  28. mirascope/api/_generated/client.py +12 -0
  29. mirascope/api/_generated/core/client_wrapper.py +2 -14
  30. mirascope/api/_generated/core/datetime_utils.py +1 -3
  31. mirascope/api/_generated/core/file.py +2 -5
  32. mirascope/api/_generated/core/http_client.py +36 -112
  33. mirascope/api/_generated/core/jsonable_encoder.py +1 -3
  34. mirascope/api/_generated/core/pydantic_utilities.py +19 -74
  35. mirascope/api/_generated/core/query_encoder.py +1 -3
  36. mirascope/api/_generated/core/serialization.py +4 -10
  37. mirascope/api/_generated/docs/client.py +2 -6
  38. mirascope/api/_generated/docs/raw_client.py +4 -20
  39. mirascope/api/_generated/environments/__init__.py +17 -0
  40. mirascope/api/_generated/environments/client.py +500 -0
  41. mirascope/api/_generated/environments/raw_client.py +999 -0
  42. mirascope/api/_generated/environments/types/__init__.py +15 -0
  43. mirascope/api/_generated/environments/types/environments_create_response.py +24 -0
  44. mirascope/api/_generated/environments/types/environments_get_response.py +24 -0
  45. mirascope/api/_generated/environments/types/environments_list_response_item.py +24 -0
  46. mirascope/api/_generated/environments/types/environments_update_response.py +24 -0
  47. mirascope/api/_generated/errors/__init__.py +2 -0
  48. mirascope/api/_generated/errors/bad_request_error.py +1 -5
  49. mirascope/api/_generated/errors/conflict_error.py +1 -5
  50. mirascope/api/_generated/errors/forbidden_error.py +1 -5
  51. mirascope/api/_generated/errors/internal_server_error.py +1 -6
  52. mirascope/api/_generated/errors/not_found_error.py +1 -5
  53. mirascope/api/_generated/errors/unauthorized_error.py +11 -0
  54. mirascope/api/_generated/functions/__init__.py +29 -0
  55. mirascope/api/_generated/functions/client.py +433 -0
  56. mirascope/api/_generated/functions/raw_client.py +1049 -0
  57. mirascope/api/_generated/functions/types/__init__.py +29 -0
  58. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
  59. mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
  60. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
  61. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
  62. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
  63. mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
  64. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
  65. mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
  66. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
  67. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
  68. mirascope/api/_generated/health/client.py +2 -6
  69. mirascope/api/_generated/health/raw_client.py +5 -23
  70. mirascope/api/_generated/health/types/health_check_response.py +1 -3
  71. mirascope/api/_generated/organizations/__init__.py +2 -0
  72. mirascope/api/_generated/organizations/client.py +94 -27
  73. mirascope/api/_generated/organizations/raw_client.py +246 -128
  74. mirascope/api/_generated/organizations/types/__init__.py +2 -0
  75. mirascope/api/_generated/organizations/types/organizations_create_response.py +5 -3
  76. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +1 -3
  77. mirascope/api/_generated/organizations/types/organizations_credits_response.py +19 -0
  78. mirascope/api/_generated/organizations/types/organizations_get_response.py +5 -3
  79. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +1 -3
  80. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +5 -3
  81. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +1 -3
  82. mirascope/api/_generated/organizations/types/organizations_update_response.py +5 -3
  83. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +1 -3
  84. mirascope/api/_generated/projects/__init__.py +2 -12
  85. mirascope/api/_generated/projects/client.py +38 -68
  86. mirascope/api/_generated/projects/raw_client.py +92 -163
  87. mirascope/api/_generated/projects/types/__init__.py +1 -6
  88. mirascope/api/_generated/projects/types/projects_create_response.py +4 -9
  89. mirascope/api/_generated/projects/types/projects_get_response.py +4 -9
  90. mirascope/api/_generated/projects/types/projects_list_response_item.py +4 -9
  91. mirascope/api/_generated/projects/types/projects_update_response.py +4 -9
  92. mirascope/api/_generated/reference.md +1862 -70
  93. mirascope/api/_generated/traces/__init__.py +22 -0
  94. mirascope/api/_generated/traces/client.py +398 -0
  95. mirascope/api/_generated/traces/raw_client.py +902 -18
  96. mirascope/api/_generated/traces/types/__init__.py +32 -0
  97. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +4 -11
  98. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +2 -6
  99. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +1 -3
  100. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +8 -24
  101. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +2 -6
  102. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +3 -9
  103. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +2 -6
  104. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +3 -9
  105. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +4 -8
  106. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +2 -6
  107. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +8 -24
  108. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +2 -6
  109. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +3 -9
  110. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +1 -3
  111. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +6 -18
  112. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +3 -9
  113. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +8 -24
  114. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +2 -6
  115. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +2 -6
  116. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +1 -3
  117. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +2 -6
  118. mirascope/api/_generated/traces/types/traces_create_response.py +2 -5
  119. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +3 -9
  120. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +54 -0
  121. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
  122. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
  123. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
  124. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +90 -0
  125. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
  126. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
  127. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
  128. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
  129. mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
  130. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +41 -0
  131. mirascope/api/_generated/types/__init__.py +18 -0
  132. mirascope/api/_generated/types/already_exists_error.py +1 -3
  133. mirascope/api/_generated/types/click_house_error.py +22 -0
  134. mirascope/api/_generated/types/database_error.py +1 -3
  135. mirascope/api/_generated/types/http_api_decode_error.py +1 -3
  136. mirascope/api/_generated/types/internal_server_error_body.py +49 -0
  137. mirascope/api/_generated/types/issue.py +1 -3
  138. mirascope/api/_generated/types/issue_tag.py +1 -8
  139. mirascope/api/_generated/types/not_found_error_body.py +1 -3
  140. mirascope/api/_generated/types/number_from_string.py +3 -0
  141. mirascope/api/_generated/types/permission_denied_error.py +1 -3
  142. mirascope/api/_generated/types/permission_denied_error_tag.py +1 -3
  143. mirascope/api/_generated/types/property_key_key.py +1 -3
  144. mirascope/api/_generated/types/stripe_error.py +20 -0
  145. mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
  146. mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
  147. mirascope/llm/__init__.py +6 -2
  148. mirascope/llm/content/tool_call.py +6 -0
  149. mirascope/llm/exceptions.py +28 -0
  150. mirascope/llm/formatting/__init__.py +2 -2
  151. mirascope/llm/formatting/format.py +120 -8
  152. mirascope/llm/formatting/types.py +1 -56
  153. mirascope/llm/mcp/__init__.py +2 -2
  154. mirascope/llm/mcp/mcp_client.py +130 -0
  155. mirascope/llm/providers/__init__.py +26 -5
  156. mirascope/llm/providers/anthropic/__init__.py +3 -21
  157. mirascope/llm/providers/anthropic/_utils/__init__.py +2 -0
  158. mirascope/llm/providers/anthropic/_utils/beta_decode.py +4 -2
  159. mirascope/llm/providers/anthropic/_utils/beta_encode.py +13 -12
  160. mirascope/llm/providers/anthropic/_utils/decode.py +4 -2
  161. mirascope/llm/providers/anthropic/_utils/encode.py +57 -14
  162. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  163. mirascope/llm/providers/anthropic/beta_provider.py +6 -0
  164. mirascope/llm/providers/anthropic/provider.py +5 -0
  165. mirascope/llm/providers/base/__init__.py +5 -2
  166. mirascope/llm/providers/base/_utils.py +2 -7
  167. mirascope/llm/providers/base/base_provider.py +173 -58
  168. mirascope/llm/providers/base/params.py +63 -34
  169. mirascope/llm/providers/google/__init__.py +2 -17
  170. mirascope/llm/providers/google/_utils/__init__.py +2 -0
  171. mirascope/llm/providers/google/_utils/decode.py +17 -8
  172. mirascope/llm/providers/google/_utils/encode.py +105 -16
  173. mirascope/llm/providers/google/_utils/errors.py +49 -0
  174. mirascope/llm/providers/google/model_info.py +1 -0
  175. mirascope/llm/providers/google/provider.py +9 -5
  176. mirascope/llm/providers/mirascope/__init__.py +5 -0
  177. mirascope/llm/providers/mirascope/_utils.py +77 -0
  178. mirascope/llm/providers/mirascope/provider.py +318 -0
  179. mirascope/llm/providers/mlx/__init__.py +2 -17
  180. mirascope/llm/providers/mlx/_utils.py +9 -2
  181. mirascope/llm/providers/mlx/provider.py +8 -0
  182. mirascope/llm/providers/ollama/__init__.py +1 -13
  183. mirascope/llm/providers/openai/__init__.py +10 -1
  184. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  185. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  186. mirascope/llm/providers/openai/completions/__init__.py +2 -20
  187. mirascope/llm/providers/openai/completions/_utils/decode.py +14 -3
  188. mirascope/llm/providers/openai/completions/_utils/encode.py +15 -12
  189. mirascope/llm/providers/openai/completions/base_provider.py +6 -6
  190. mirascope/llm/providers/openai/provider.py +14 -1
  191. mirascope/llm/providers/openai/responses/__init__.py +1 -17
  192. mirascope/llm/providers/openai/responses/_utils/decode.py +2 -2
  193. mirascope/llm/providers/openai/responses/_utils/encode.py +43 -15
  194. mirascope/llm/providers/openai/responses/provider.py +13 -7
  195. mirascope/llm/providers/provider_id.py +1 -0
  196. mirascope/llm/providers/provider_registry.py +59 -3
  197. mirascope/llm/providers/together/__init__.py +1 -13
  198. mirascope/llm/responses/base_stream_response.py +24 -20
  199. mirascope/llm/tools/decorator.py +8 -4
  200. mirascope/llm/tools/tool_schema.py +33 -6
  201. mirascope/llm/tools/tools.py +84 -16
  202. mirascope/ops/__init__.py +60 -109
  203. mirascope/ops/_internal/closure.py +62 -11
  204. mirascope/ops/_internal/instrumentation/llm/llm.py +1 -2
  205. mirascope/ops/_internal/traced_functions.py +23 -4
  206. mirascope/ops/_internal/versioned_functions.py +54 -43
  207. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a6.dist-info}/METADATA +7 -7
  208. mirascope-2.0.0a6.dist-info/RECORD +316 -0
  209. mirascope/llm/formatting/_utils.py +0 -78
  210. mirascope/llm/mcp/client.py +0 -118
  211. mirascope/llm/providers/_missing_import_stubs.py +0 -49
  212. mirascope/llm/providers/load_provider.py +0 -54
  213. mirascope-2.0.0a4.dist-info/RECORD +0 -247
  214. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a6.dist-info}/WHEEL +0 -0
  215. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a6.dist-info}/licenses/LICENSE +0 -0
@@ -15,7 +15,6 @@ from ..errors.forbidden_error import ForbiddenError
15
15
  from ..errors.internal_server_error import InternalServerError
16
16
  from ..errors.not_found_error import NotFoundError
17
17
  from ..types.already_exists_error import AlreadyExistsError
18
- from ..types.database_error import DatabaseError
19
18
  from ..types.http_api_decode_error import HttpApiDecodeError
20
19
  from ..types.not_found_error_body import NotFoundErrorBody
21
20
  from ..types.permission_denied_error import PermissionDeniedError
@@ -33,10 +32,7 @@ class RawProjectsClient:
33
32
  self._client_wrapper = client_wrapper
34
33
 
35
34
  def list(
36
- self,
37
- organization_id: str,
38
- *,
39
- request_options: typing.Optional[RequestOptions] = None,
35
+ self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
40
36
  ) -> HttpResponse[typing.List[ProjectsListResponseItem]]:
41
37
  """
42
38
  Parameters
@@ -103,32 +99,20 @@ class RawProjectsClient:
103
99
  raise InternalServerError(
104
100
  headers=dict(_response.headers),
105
101
  body=typing.cast(
106
- DatabaseError,
102
+ typing.Optional[typing.Any],
107
103
  parse_obj_as(
108
- type_=DatabaseError, # type: ignore
104
+ type_=typing.Optional[typing.Any], # type: ignore
109
105
  object_=_response.json(),
110
106
  ),
111
107
  ),
112
108
  )
113
109
  _response_json = _response.json()
114
110
  except JSONDecodeError:
115
- raise ApiError(
116
- status_code=_response.status_code,
117
- headers=dict(_response.headers),
118
- body=_response.text,
119
- )
120
- raise ApiError(
121
- status_code=_response.status_code,
122
- headers=dict(_response.headers),
123
- body=_response_json,
124
- )
111
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
112
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
125
113
 
126
114
  def create(
127
- self,
128
- organization_id: str,
129
- *,
130
- name: str,
131
- request_options: typing.Optional[RequestOptions] = None,
115
+ self, organization_id: str, *, name: str, slug: str, request_options: typing.Optional[RequestOptions] = None
132
116
  ) -> HttpResponse[ProjectsCreateResponse]:
133
117
  """
134
118
  Parameters
@@ -138,6 +122,9 @@ class RawProjectsClient:
138
122
  name : str
139
123
  a string at most 100 character(s) long
140
124
 
125
+ slug : str
126
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
127
+
141
128
  request_options : typing.Optional[RequestOptions]
142
129
  Request-specific configuration.
143
130
 
@@ -151,6 +138,7 @@ class RawProjectsClient:
151
138
  method="POST",
152
139
  json={
153
140
  "name": name,
141
+ "slug": slug,
154
142
  },
155
143
  headers={
156
144
  "content-type": "application/json",
@@ -216,32 +204,20 @@ class RawProjectsClient:
216
204
  raise InternalServerError(
217
205
  headers=dict(_response.headers),
218
206
  body=typing.cast(
219
- DatabaseError,
207
+ typing.Optional[typing.Any],
220
208
  parse_obj_as(
221
- type_=DatabaseError, # type: ignore
209
+ type_=typing.Optional[typing.Any], # type: ignore
222
210
  object_=_response.json(),
223
211
  ),
224
212
  ),
225
213
  )
226
214
  _response_json = _response.json()
227
215
  except JSONDecodeError:
228
- raise ApiError(
229
- status_code=_response.status_code,
230
- headers=dict(_response.headers),
231
- body=_response.text,
232
- )
233
- raise ApiError(
234
- status_code=_response.status_code,
235
- headers=dict(_response.headers),
236
- body=_response_json,
237
- )
216
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
217
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
238
218
 
239
219
  def get(
240
- self,
241
- organization_id: str,
242
- project_id: str,
243
- *,
244
- request_options: typing.Optional[RequestOptions] = None,
220
+ self, organization_id: str, project_id: str, *, request_options: typing.Optional[RequestOptions] = None
245
221
  ) -> HttpResponse[ProjectsGetResponse]:
246
222
  """
247
223
  Parameters
@@ -310,32 +286,25 @@ class RawProjectsClient:
310
286
  raise InternalServerError(
311
287
  headers=dict(_response.headers),
312
288
  body=typing.cast(
313
- DatabaseError,
289
+ typing.Optional[typing.Any],
314
290
  parse_obj_as(
315
- type_=DatabaseError, # type: ignore
291
+ type_=typing.Optional[typing.Any], # type: ignore
316
292
  object_=_response.json(),
317
293
  ),
318
294
  ),
319
295
  )
320
296
  _response_json = _response.json()
321
297
  except JSONDecodeError:
322
- raise ApiError(
323
- status_code=_response.status_code,
324
- headers=dict(_response.headers),
325
- body=_response.text,
326
- )
327
- raise ApiError(
328
- status_code=_response.status_code,
329
- headers=dict(_response.headers),
330
- body=_response_json,
331
- )
298
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
299
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
332
300
 
333
301
  def update(
334
302
  self,
335
303
  organization_id: str,
336
304
  project_id: str,
337
305
  *,
338
- name: str,
306
+ name: typing.Optional[str] = OMIT,
307
+ slug: typing.Optional[str] = OMIT,
339
308
  request_options: typing.Optional[RequestOptions] = None,
340
309
  ) -> HttpResponse[ProjectsUpdateResponse]:
341
310
  """
@@ -345,9 +314,12 @@ class RawProjectsClient:
345
314
 
346
315
  project_id : str
347
316
 
348
- name : str
317
+ name : typing.Optional[str]
349
318
  a string at most 100 character(s) long
350
319
 
320
+ slug : typing.Optional[str]
321
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
322
+
351
323
  request_options : typing.Optional[RequestOptions]
352
324
  Request-specific configuration.
353
325
 
@@ -361,6 +333,7 @@ class RawProjectsClient:
361
333
  method="PUT",
362
334
  json={
363
335
  "name": name,
336
+ "slug": slug,
364
337
  },
365
338
  headers={
366
339
  "content-type": "application/json",
@@ -411,36 +384,35 @@ class RawProjectsClient:
411
384
  ),
412
385
  ),
413
386
  )
387
+ if _response.status_code == 409:
388
+ raise ConflictError(
389
+ headers=dict(_response.headers),
390
+ body=typing.cast(
391
+ AlreadyExistsError,
392
+ parse_obj_as(
393
+ type_=AlreadyExistsError, # type: ignore
394
+ object_=_response.json(),
395
+ ),
396
+ ),
397
+ )
414
398
  if _response.status_code == 500:
415
399
  raise InternalServerError(
416
400
  headers=dict(_response.headers),
417
401
  body=typing.cast(
418
- DatabaseError,
402
+ typing.Optional[typing.Any],
419
403
  parse_obj_as(
420
- type_=DatabaseError, # type: ignore
404
+ type_=typing.Optional[typing.Any], # type: ignore
421
405
  object_=_response.json(),
422
406
  ),
423
407
  ),
424
408
  )
425
409
  _response_json = _response.json()
426
410
  except JSONDecodeError:
427
- raise ApiError(
428
- status_code=_response.status_code,
429
- headers=dict(_response.headers),
430
- body=_response.text,
431
- )
432
- raise ApiError(
433
- status_code=_response.status_code,
434
- headers=dict(_response.headers),
435
- body=_response_json,
436
- )
411
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
412
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
437
413
 
438
414
  def delete(
439
- self,
440
- organization_id: str,
441
- project_id: str,
442
- *,
443
- request_options: typing.Optional[RequestOptions] = None,
415
+ self, organization_id: str, project_id: str, *, request_options: typing.Optional[RequestOptions] = None
444
416
  ) -> HttpResponse[None]:
445
417
  """
446
418
  Parameters
@@ -501,25 +473,17 @@ class RawProjectsClient:
501
473
  raise InternalServerError(
502
474
  headers=dict(_response.headers),
503
475
  body=typing.cast(
504
- DatabaseError,
476
+ typing.Optional[typing.Any],
505
477
  parse_obj_as(
506
- type_=DatabaseError, # type: ignore
478
+ type_=typing.Optional[typing.Any], # type: ignore
507
479
  object_=_response.json(),
508
480
  ),
509
481
  ),
510
482
  )
511
483
  _response_json = _response.json()
512
484
  except JSONDecodeError:
513
- raise ApiError(
514
- status_code=_response.status_code,
515
- headers=dict(_response.headers),
516
- body=_response.text,
517
- )
518
- raise ApiError(
519
- status_code=_response.status_code,
520
- headers=dict(_response.headers),
521
- body=_response_json,
522
- )
485
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
486
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
523
487
 
524
488
 
525
489
  class AsyncRawProjectsClient:
@@ -527,10 +491,7 @@ class AsyncRawProjectsClient:
527
491
  self._client_wrapper = client_wrapper
528
492
 
529
493
  async def list(
530
- self,
531
- organization_id: str,
532
- *,
533
- request_options: typing.Optional[RequestOptions] = None,
494
+ self, organization_id: str, *, request_options: typing.Optional[RequestOptions] = None
534
495
  ) -> AsyncHttpResponse[typing.List[ProjectsListResponseItem]]:
535
496
  """
536
497
  Parameters
@@ -597,32 +558,20 @@ class AsyncRawProjectsClient:
597
558
  raise InternalServerError(
598
559
  headers=dict(_response.headers),
599
560
  body=typing.cast(
600
- DatabaseError,
561
+ typing.Optional[typing.Any],
601
562
  parse_obj_as(
602
- type_=DatabaseError, # type: ignore
563
+ type_=typing.Optional[typing.Any], # type: ignore
603
564
  object_=_response.json(),
604
565
  ),
605
566
  ),
606
567
  )
607
568
  _response_json = _response.json()
608
569
  except JSONDecodeError:
609
- raise ApiError(
610
- status_code=_response.status_code,
611
- headers=dict(_response.headers),
612
- body=_response.text,
613
- )
614
- raise ApiError(
615
- status_code=_response.status_code,
616
- headers=dict(_response.headers),
617
- body=_response_json,
618
- )
570
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
571
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
619
572
 
620
573
  async def create(
621
- self,
622
- organization_id: str,
623
- *,
624
- name: str,
625
- request_options: typing.Optional[RequestOptions] = None,
574
+ self, organization_id: str, *, name: str, slug: str, request_options: typing.Optional[RequestOptions] = None
626
575
  ) -> AsyncHttpResponse[ProjectsCreateResponse]:
627
576
  """
628
577
  Parameters
@@ -632,6 +581,9 @@ class AsyncRawProjectsClient:
632
581
  name : str
633
582
  a string at most 100 character(s) long
634
583
 
584
+ slug : str
585
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
586
+
635
587
  request_options : typing.Optional[RequestOptions]
636
588
  Request-specific configuration.
637
589
 
@@ -645,6 +597,7 @@ class AsyncRawProjectsClient:
645
597
  method="POST",
646
598
  json={
647
599
  "name": name,
600
+ "slug": slug,
648
601
  },
649
602
  headers={
650
603
  "content-type": "application/json",
@@ -710,32 +663,20 @@ class AsyncRawProjectsClient:
710
663
  raise InternalServerError(
711
664
  headers=dict(_response.headers),
712
665
  body=typing.cast(
713
- DatabaseError,
666
+ typing.Optional[typing.Any],
714
667
  parse_obj_as(
715
- type_=DatabaseError, # type: ignore
668
+ type_=typing.Optional[typing.Any], # type: ignore
716
669
  object_=_response.json(),
717
670
  ),
718
671
  ),
719
672
  )
720
673
  _response_json = _response.json()
721
674
  except JSONDecodeError:
722
- raise ApiError(
723
- status_code=_response.status_code,
724
- headers=dict(_response.headers),
725
- body=_response.text,
726
- )
727
- raise ApiError(
728
- status_code=_response.status_code,
729
- headers=dict(_response.headers),
730
- body=_response_json,
731
- )
675
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
676
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
732
677
 
733
678
  async def get(
734
- self,
735
- organization_id: str,
736
- project_id: str,
737
- *,
738
- request_options: typing.Optional[RequestOptions] = None,
679
+ self, organization_id: str, project_id: str, *, request_options: typing.Optional[RequestOptions] = None
739
680
  ) -> AsyncHttpResponse[ProjectsGetResponse]:
740
681
  """
741
682
  Parameters
@@ -804,32 +745,25 @@ class AsyncRawProjectsClient:
804
745
  raise InternalServerError(
805
746
  headers=dict(_response.headers),
806
747
  body=typing.cast(
807
- DatabaseError,
748
+ typing.Optional[typing.Any],
808
749
  parse_obj_as(
809
- type_=DatabaseError, # type: ignore
750
+ type_=typing.Optional[typing.Any], # type: ignore
810
751
  object_=_response.json(),
811
752
  ),
812
753
  ),
813
754
  )
814
755
  _response_json = _response.json()
815
756
  except JSONDecodeError:
816
- raise ApiError(
817
- status_code=_response.status_code,
818
- headers=dict(_response.headers),
819
- body=_response.text,
820
- )
821
- raise ApiError(
822
- status_code=_response.status_code,
823
- headers=dict(_response.headers),
824
- body=_response_json,
825
- )
757
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
758
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
826
759
 
827
760
  async def update(
828
761
  self,
829
762
  organization_id: str,
830
763
  project_id: str,
831
764
  *,
832
- name: str,
765
+ name: typing.Optional[str] = OMIT,
766
+ slug: typing.Optional[str] = OMIT,
833
767
  request_options: typing.Optional[RequestOptions] = None,
834
768
  ) -> AsyncHttpResponse[ProjectsUpdateResponse]:
835
769
  """
@@ -839,9 +773,12 @@ class AsyncRawProjectsClient:
839
773
 
840
774
  project_id : str
841
775
 
842
- name : str
776
+ name : typing.Optional[str]
843
777
  a string at most 100 character(s) long
844
778
 
779
+ slug : typing.Optional[str]
780
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
781
+
845
782
  request_options : typing.Optional[RequestOptions]
846
783
  Request-specific configuration.
847
784
 
@@ -855,6 +792,7 @@ class AsyncRawProjectsClient:
855
792
  method="PUT",
856
793
  json={
857
794
  "name": name,
795
+ "slug": slug,
858
796
  },
859
797
  headers={
860
798
  "content-type": "application/json",
@@ -905,36 +843,35 @@ class AsyncRawProjectsClient:
905
843
  ),
906
844
  ),
907
845
  )
846
+ if _response.status_code == 409:
847
+ raise ConflictError(
848
+ headers=dict(_response.headers),
849
+ body=typing.cast(
850
+ AlreadyExistsError,
851
+ parse_obj_as(
852
+ type_=AlreadyExistsError, # type: ignore
853
+ object_=_response.json(),
854
+ ),
855
+ ),
856
+ )
908
857
  if _response.status_code == 500:
909
858
  raise InternalServerError(
910
859
  headers=dict(_response.headers),
911
860
  body=typing.cast(
912
- DatabaseError,
861
+ typing.Optional[typing.Any],
913
862
  parse_obj_as(
914
- type_=DatabaseError, # type: ignore
863
+ type_=typing.Optional[typing.Any], # type: ignore
915
864
  object_=_response.json(),
916
865
  ),
917
866
  ),
918
867
  )
919
868
  _response_json = _response.json()
920
869
  except JSONDecodeError:
921
- raise ApiError(
922
- status_code=_response.status_code,
923
- headers=dict(_response.headers),
924
- body=_response.text,
925
- )
926
- raise ApiError(
927
- status_code=_response.status_code,
928
- headers=dict(_response.headers),
929
- body=_response_json,
930
- )
870
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
871
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
931
872
 
932
873
  async def delete(
933
- self,
934
- organization_id: str,
935
- project_id: str,
936
- *,
937
- request_options: typing.Optional[RequestOptions] = None,
874
+ self, organization_id: str, project_id: str, *, request_options: typing.Optional[RequestOptions] = None
938
875
  ) -> AsyncHttpResponse[None]:
939
876
  """
940
877
  Parameters
@@ -995,22 +932,14 @@ class AsyncRawProjectsClient:
995
932
  raise InternalServerError(
996
933
  headers=dict(_response.headers),
997
934
  body=typing.cast(
998
- DatabaseError,
935
+ typing.Optional[typing.Any],
999
936
  parse_obj_as(
1000
- type_=DatabaseError, # type: ignore
937
+ type_=typing.Optional[typing.Any], # type: ignore
1001
938
  object_=_response.json(),
1002
939
  ),
1003
940
  ),
1004
941
  )
1005
942
  _response_json = _response.json()
1006
943
  except JSONDecodeError:
1007
- raise ApiError(
1008
- status_code=_response.status_code,
1009
- headers=dict(_response.headers),
1010
- body=_response.text,
1011
- )
1012
- raise ApiError(
1013
- status_code=_response.status_code,
1014
- headers=dict(_response.headers),
1015
- body=_response_json,
1016
- )
944
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
945
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
@@ -7,9 +7,4 @@ from .projects_get_response import ProjectsGetResponse
7
7
  from .projects_list_response_item import ProjectsListResponseItem
8
8
  from .projects_update_response import ProjectsUpdateResponse
9
9
 
10
- __all__ = [
11
- "ProjectsCreateResponse",
12
- "ProjectsGetResponse",
13
- "ProjectsListResponseItem",
14
- "ProjectsUpdateResponse",
15
- ]
10
+ __all__ = ["ProjectsCreateResponse", "ProjectsGetResponse", "ProjectsListResponseItem", "ProjectsUpdateResponse"]
@@ -11,17 +11,12 @@ from ...core.serialization import FieldMetadata
11
11
  class ProjectsCreateResponse(UniversalBaseModel):
12
12
  id: str
13
13
  name: str
14
- organization_id: typing_extensions.Annotated[
15
- str, FieldMetadata(alias="organizationId")
16
- ]
17
- created_by_user_id: typing_extensions.Annotated[
18
- str, FieldMetadata(alias="createdByUserId")
19
- ]
14
+ slug: str
15
+ organization_id: typing_extensions.Annotated[str, FieldMetadata(alias="organizationId")]
16
+ created_by_user_id: typing_extensions.Annotated[str, FieldMetadata(alias="createdByUserId")]
20
17
 
21
18
  if IS_PYDANTIC_V2:
22
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
23
- extra="allow", frozen=True
24
- ) # type: ignore # Pydantic v2
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
25
20
  else:
26
21
 
27
22
  class Config:
@@ -11,17 +11,12 @@ from ...core.serialization import FieldMetadata
11
11
  class ProjectsGetResponse(UniversalBaseModel):
12
12
  id: str
13
13
  name: str
14
- organization_id: typing_extensions.Annotated[
15
- str, FieldMetadata(alias="organizationId")
16
- ]
17
- created_by_user_id: typing_extensions.Annotated[
18
- str, FieldMetadata(alias="createdByUserId")
19
- ]
14
+ slug: str
15
+ organization_id: typing_extensions.Annotated[str, FieldMetadata(alias="organizationId")]
16
+ created_by_user_id: typing_extensions.Annotated[str, FieldMetadata(alias="createdByUserId")]
20
17
 
21
18
  if IS_PYDANTIC_V2:
22
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
23
- extra="allow", frozen=True
24
- ) # type: ignore # Pydantic v2
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
25
20
  else:
26
21
 
27
22
  class Config:
@@ -11,17 +11,12 @@ from ...core.serialization import FieldMetadata
11
11
  class ProjectsListResponseItem(UniversalBaseModel):
12
12
  id: str
13
13
  name: str
14
- organization_id: typing_extensions.Annotated[
15
- str, FieldMetadata(alias="organizationId")
16
- ]
17
- created_by_user_id: typing_extensions.Annotated[
18
- str, FieldMetadata(alias="createdByUserId")
19
- ]
14
+ slug: str
15
+ organization_id: typing_extensions.Annotated[str, FieldMetadata(alias="organizationId")]
16
+ created_by_user_id: typing_extensions.Annotated[str, FieldMetadata(alias="createdByUserId")]
20
17
 
21
18
  if IS_PYDANTIC_V2:
22
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
23
- extra="allow", frozen=True
24
- ) # type: ignore # Pydantic v2
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
25
20
  else:
26
21
 
27
22
  class Config:
@@ -11,17 +11,12 @@ from ...core.serialization import FieldMetadata
11
11
  class ProjectsUpdateResponse(UniversalBaseModel):
12
12
  id: str
13
13
  name: str
14
- organization_id: typing_extensions.Annotated[
15
- str, FieldMetadata(alias="organizationId")
16
- ]
17
- created_by_user_id: typing_extensions.Annotated[
18
- str, FieldMetadata(alias="createdByUserId")
19
- ]
14
+ slug: str
15
+ organization_id: typing_extensions.Annotated[str, FieldMetadata(alias="organizationId")]
16
+ created_by_user_id: typing_extensions.Annotated[str, FieldMetadata(alias="createdByUserId")]
20
17
 
21
18
  if IS_PYDANTIC_V2:
22
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
23
- extra="allow", frozen=True
24
- ) # type: ignore # Pydantic v2
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
25
20
  else:
26
21
 
27
22
  class Config: