mirascope 2.0.0a4__py3-none-any.whl → 2.0.0a5__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 (57) hide show
  1. mirascope/api/_generated/__init__.py +17 -1
  2. mirascope/api/_generated/api_keys/__init__.py +7 -0
  3. mirascope/api/_generated/api_keys/client.py +453 -0
  4. mirascope/api/_generated/api_keys/raw_client.py +853 -0
  5. mirascope/api/_generated/api_keys/types/__init__.py +9 -0
  6. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +36 -0
  7. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +35 -0
  8. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +35 -0
  9. mirascope/api/_generated/client.py +6 -0
  10. mirascope/api/_generated/environments/__init__.py +17 -0
  11. mirascope/api/_generated/environments/client.py +532 -0
  12. mirascope/api/_generated/environments/raw_client.py +1088 -0
  13. mirascope/api/_generated/environments/types/__init__.py +15 -0
  14. mirascope/api/_generated/environments/types/environments_create_response.py +26 -0
  15. mirascope/api/_generated/environments/types/environments_get_response.py +26 -0
  16. mirascope/api/_generated/environments/types/environments_list_response_item.py +26 -0
  17. mirascope/api/_generated/environments/types/environments_update_response.py +26 -0
  18. mirascope/api/_generated/organizations/client.py +36 -12
  19. mirascope/api/_generated/organizations/raw_client.py +32 -6
  20. mirascope/api/_generated/organizations/types/organizations_create_response.py +1 -0
  21. mirascope/api/_generated/organizations/types/organizations_get_response.py +1 -0
  22. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +1 -0
  23. mirascope/api/_generated/organizations/types/organizations_update_response.py +1 -0
  24. mirascope/api/_generated/projects/client.py +34 -10
  25. mirascope/api/_generated/projects/raw_client.py +46 -4
  26. mirascope/api/_generated/projects/types/projects_create_response.py +1 -0
  27. mirascope/api/_generated/projects/types/projects_get_response.py +1 -0
  28. mirascope/api/_generated/projects/types/projects_list_response_item.py +1 -0
  29. mirascope/api/_generated/projects/types/projects_update_response.py +1 -0
  30. mirascope/api/_generated/reference.md +729 -4
  31. mirascope/llm/__init__.py +2 -2
  32. mirascope/llm/exceptions.py +28 -0
  33. mirascope/llm/providers/__init__.py +6 -4
  34. mirascope/llm/providers/anthropic/_utils/__init__.py +2 -0
  35. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  36. mirascope/llm/providers/anthropic/beta_provider.py +6 -0
  37. mirascope/llm/providers/anthropic/provider.py +5 -0
  38. mirascope/llm/providers/base/__init__.py +2 -1
  39. mirascope/llm/providers/base/base_provider.py +173 -58
  40. mirascope/llm/providers/google/_utils/__init__.py +2 -0
  41. mirascope/llm/providers/google/_utils/errors.py +49 -0
  42. mirascope/llm/providers/google/provider.py +5 -4
  43. mirascope/llm/providers/mlx/_utils.py +8 -1
  44. mirascope/llm/providers/mlx/provider.py +8 -0
  45. mirascope/llm/providers/openai/__init__.py +10 -1
  46. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  47. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  48. mirascope/llm/providers/openai/completions/base_provider.py +6 -6
  49. mirascope/llm/providers/openai/provider.py +14 -1
  50. mirascope/llm/providers/openai/responses/provider.py +13 -7
  51. mirascope/llm/providers/provider_registry.py +56 -3
  52. mirascope/ops/_internal/closure.py +62 -11
  53. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a5.dist-info}/METADATA +1 -1
  54. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a5.dist-info}/RECORD +56 -38
  55. mirascope/llm/providers/load_provider.py +0 -54
  56. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a5.dist-info}/WHEEL +0 -0
  57. {mirascope-2.0.0a4.dist-info → mirascope-2.0.0a5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,15 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .environments_create_response import EnvironmentsCreateResponse
6
+ from .environments_get_response import EnvironmentsGetResponse
7
+ from .environments_list_response_item import EnvironmentsListResponseItem
8
+ from .environments_update_response import EnvironmentsUpdateResponse
9
+
10
+ __all__ = [
11
+ "EnvironmentsCreateResponse",
12
+ "EnvironmentsGetResponse",
13
+ "EnvironmentsListResponseItem",
14
+ "EnvironmentsUpdateResponse",
15
+ ]
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class EnvironmentsCreateResponse(UniversalBaseModel):
12
+ id: str
13
+ name: str
14
+ slug: str
15
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class EnvironmentsGetResponse(UniversalBaseModel):
12
+ id: str
13
+ name: str
14
+ slug: str
15
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class EnvironmentsListResponseItem(UniversalBaseModel):
12
+ id: str
13
+ name: str
14
+ slug: str
15
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ...core.serialization import FieldMetadata
9
+
10
+
11
+ class EnvironmentsUpdateResponse(UniversalBaseModel):
12
+ id: str
13
+ name: str
14
+ slug: str
15
+ project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
19
+ extra="allow", frozen=True
20
+ ) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -54,7 +54,11 @@ class OrganizationsClient:
54
54
  return _response.data
55
55
 
56
56
  def create(
57
- self, *, name: str, request_options: typing.Optional[RequestOptions] = None
57
+ self,
58
+ *,
59
+ name: str,
60
+ slug: str,
61
+ request_options: typing.Optional[RequestOptions] = None,
58
62
  ) -> OrganizationsCreateResponse:
59
63
  """
60
64
  Parameters
@@ -62,6 +66,9 @@ class OrganizationsClient:
62
66
  name : str
63
67
  a string at most 100 character(s) long
64
68
 
69
+ slug : str
70
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
71
+
65
72
  request_options : typing.Optional[RequestOptions]
66
73
  Request-specific configuration.
67
74
 
@@ -77,9 +84,12 @@ class OrganizationsClient:
77
84
  client = Mirascope()
78
85
  client.organizations.create(
79
86
  name="name",
87
+ slug="slug",
80
88
  )
81
89
  """
82
- _response = self._raw_client.create(name=name, request_options=request_options)
90
+ _response = self._raw_client.create(
91
+ name=name, slug=slug, request_options=request_options
92
+ )
83
93
  return _response.data
84
94
 
85
95
  def get(
@@ -114,7 +124,8 @@ class OrganizationsClient:
114
124
  self,
115
125
  id: str,
116
126
  *,
117
- name: str,
127
+ name: typing.Optional[str] = OMIT,
128
+ slug: typing.Optional[str] = OMIT,
118
129
  request_options: typing.Optional[RequestOptions] = None,
119
130
  ) -> OrganizationsUpdateResponse:
120
131
  """
@@ -122,9 +133,12 @@ class OrganizationsClient:
122
133
  ----------
123
134
  id : str
124
135
 
125
- name : str
136
+ name : typing.Optional[str]
126
137
  a string at most 100 character(s) long
127
138
 
139
+ slug : typing.Optional[str]
140
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
141
+
128
142
  request_options : typing.Optional[RequestOptions]
129
143
  Request-specific configuration.
130
144
 
@@ -140,11 +154,10 @@ class OrganizationsClient:
140
154
  client = Mirascope()
141
155
  client.organizations.update(
142
156
  id="id",
143
- name="name",
144
157
  )
145
158
  """
146
159
  _response = self._raw_client.update(
147
- id, name=name, request_options=request_options
160
+ id, name=name, slug=slug, request_options=request_options
148
161
  )
149
162
  return _response.data
150
163
 
@@ -224,7 +237,11 @@ class AsyncOrganizationsClient:
224
237
  return _response.data
225
238
 
226
239
  async def create(
227
- self, *, name: str, request_options: typing.Optional[RequestOptions] = None
240
+ self,
241
+ *,
242
+ name: str,
243
+ slug: str,
244
+ request_options: typing.Optional[RequestOptions] = None,
228
245
  ) -> OrganizationsCreateResponse:
229
246
  """
230
247
  Parameters
@@ -232,6 +249,9 @@ class AsyncOrganizationsClient:
232
249
  name : str
233
250
  a string at most 100 character(s) long
234
251
 
252
+ slug : str
253
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
254
+
235
255
  request_options : typing.Optional[RequestOptions]
236
256
  Request-specific configuration.
237
257
 
@@ -252,13 +272,14 @@ class AsyncOrganizationsClient:
252
272
  async def main() -> None:
253
273
  await client.organizations.create(
254
274
  name="name",
275
+ slug="slug",
255
276
  )
256
277
 
257
278
 
258
279
  asyncio.run(main())
259
280
  """
260
281
  _response = await self._raw_client.create(
261
- name=name, request_options=request_options
282
+ name=name, slug=slug, request_options=request_options
262
283
  )
263
284
  return _response.data
264
285
 
@@ -302,7 +323,8 @@ class AsyncOrganizationsClient:
302
323
  self,
303
324
  id: str,
304
325
  *,
305
- name: str,
326
+ name: typing.Optional[str] = OMIT,
327
+ slug: typing.Optional[str] = OMIT,
306
328
  request_options: typing.Optional[RequestOptions] = None,
307
329
  ) -> OrganizationsUpdateResponse:
308
330
  """
@@ -310,9 +332,12 @@ class AsyncOrganizationsClient:
310
332
  ----------
311
333
  id : str
312
334
 
313
- name : str
335
+ name : typing.Optional[str]
314
336
  a string at most 100 character(s) long
315
337
 
338
+ slug : typing.Optional[str]
339
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
340
+
316
341
  request_options : typing.Optional[RequestOptions]
317
342
  Request-specific configuration.
318
343
 
@@ -333,14 +358,13 @@ class AsyncOrganizationsClient:
333
358
  async def main() -> None:
334
359
  await client.organizations.update(
335
360
  id="id",
336
- name="name",
337
361
  )
338
362
 
339
363
 
340
364
  asyncio.run(main())
341
365
  """
342
366
  _response = await self._raw_client.update(
343
- id, name=name, request_options=request_options
367
+ id, name=name, slug=slug, request_options=request_options
344
368
  )
345
369
  return _response.data
346
370
 
@@ -97,7 +97,11 @@ class RawOrganizationsClient:
97
97
  )
98
98
 
99
99
  def create(
100
- self, *, name: str, request_options: typing.Optional[RequestOptions] = None
100
+ self,
101
+ *,
102
+ name: str,
103
+ slug: str,
104
+ request_options: typing.Optional[RequestOptions] = None,
101
105
  ) -> HttpResponse[OrganizationsCreateResponse]:
102
106
  """
103
107
  Parameters
@@ -105,6 +109,9 @@ class RawOrganizationsClient:
105
109
  name : str
106
110
  a string at most 100 character(s) long
107
111
 
112
+ slug : str
113
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
114
+
108
115
  request_options : typing.Optional[RequestOptions]
109
116
  Request-specific configuration.
110
117
 
@@ -118,6 +125,7 @@ class RawOrganizationsClient:
118
125
  method="POST",
119
126
  json={
120
127
  "name": name,
128
+ "slug": slug,
121
129
  },
122
130
  headers={
123
131
  "content-type": "application/json",
@@ -273,7 +281,8 @@ class RawOrganizationsClient:
273
281
  self,
274
282
  id: str,
275
283
  *,
276
- name: str,
284
+ name: typing.Optional[str] = OMIT,
285
+ slug: typing.Optional[str] = OMIT,
277
286
  request_options: typing.Optional[RequestOptions] = None,
278
287
  ) -> HttpResponse[OrganizationsUpdateResponse]:
279
288
  """
@@ -281,9 +290,12 @@ class RawOrganizationsClient:
281
290
  ----------
282
291
  id : str
283
292
 
284
- name : str
293
+ name : typing.Optional[str]
285
294
  a string at most 100 character(s) long
286
295
 
296
+ slug : typing.Optional[str]
297
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
298
+
287
299
  request_options : typing.Optional[RequestOptions]
288
300
  Request-specific configuration.
289
301
 
@@ -297,6 +309,7 @@ class RawOrganizationsClient:
297
309
  method="PUT",
298
310
  json={
299
311
  "name": name,
312
+ "slug": slug,
300
313
  },
301
314
  headers={
302
315
  "content-type": "application/json",
@@ -521,7 +534,11 @@ class AsyncRawOrganizationsClient:
521
534
  )
522
535
 
523
536
  async def create(
524
- self, *, name: str, request_options: typing.Optional[RequestOptions] = None
537
+ self,
538
+ *,
539
+ name: str,
540
+ slug: str,
541
+ request_options: typing.Optional[RequestOptions] = None,
525
542
  ) -> AsyncHttpResponse[OrganizationsCreateResponse]:
526
543
  """
527
544
  Parameters
@@ -529,6 +546,9 @@ class AsyncRawOrganizationsClient:
529
546
  name : str
530
547
  a string at most 100 character(s) long
531
548
 
549
+ slug : str
550
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
551
+
532
552
  request_options : typing.Optional[RequestOptions]
533
553
  Request-specific configuration.
534
554
 
@@ -542,6 +562,7 @@ class AsyncRawOrganizationsClient:
542
562
  method="POST",
543
563
  json={
544
564
  "name": name,
565
+ "slug": slug,
545
566
  },
546
567
  headers={
547
568
  "content-type": "application/json",
@@ -697,7 +718,8 @@ class AsyncRawOrganizationsClient:
697
718
  self,
698
719
  id: str,
699
720
  *,
700
- name: str,
721
+ name: typing.Optional[str] = OMIT,
722
+ slug: typing.Optional[str] = OMIT,
701
723
  request_options: typing.Optional[RequestOptions] = None,
702
724
  ) -> AsyncHttpResponse[OrganizationsUpdateResponse]:
703
725
  """
@@ -705,9 +727,12 @@ class AsyncRawOrganizationsClient:
705
727
  ----------
706
728
  id : str
707
729
 
708
- name : str
730
+ name : typing.Optional[str]
709
731
  a string at most 100 character(s) long
710
732
 
733
+ slug : typing.Optional[str]
734
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
735
+
711
736
  request_options : typing.Optional[RequestOptions]
712
737
  Request-specific configuration.
713
738
 
@@ -721,6 +746,7 @@ class AsyncRawOrganizationsClient:
721
746
  method="PUT",
722
747
  json={
723
748
  "name": name,
749
+ "slug": slug,
724
750
  },
725
751
  headers={
726
752
  "content-type": "application/json",
@@ -10,6 +10,7 @@ from .organizations_create_response_role import OrganizationsCreateResponseRole
10
10
  class OrganizationsCreateResponse(UniversalBaseModel):
11
11
  id: str
12
12
  name: str
13
+ slug: str
13
14
  role: OrganizationsCreateResponseRole
14
15
 
15
16
  if IS_PYDANTIC_V2:
@@ -10,6 +10,7 @@ from .organizations_get_response_role import OrganizationsGetResponseRole
10
10
  class OrganizationsGetResponse(UniversalBaseModel):
11
11
  id: str
12
12
  name: str
13
+ slug: str
13
14
  role: OrganizationsGetResponseRole
14
15
 
15
16
  if IS_PYDANTIC_V2:
@@ -10,6 +10,7 @@ from .organizations_list_response_item_role import OrganizationsListResponseItem
10
10
  class OrganizationsListResponseItem(UniversalBaseModel):
11
11
  id: str
12
12
  name: str
13
+ slug: str
13
14
  role: OrganizationsListResponseItemRole
14
15
 
15
16
  if IS_PYDANTIC_V2:
@@ -10,6 +10,7 @@ from .organizations_update_response_role import OrganizationsUpdateResponseRole
10
10
  class OrganizationsUpdateResponse(UniversalBaseModel):
11
11
  id: str
12
12
  name: str
13
+ slug: str
13
14
  role: OrganizationsUpdateResponseRole
14
15
 
15
16
  if IS_PYDANTIC_V2:
@@ -67,6 +67,7 @@ class ProjectsClient:
67
67
  organization_id: str,
68
68
  *,
69
69
  name: str,
70
+ slug: str,
70
71
  request_options: typing.Optional[RequestOptions] = None,
71
72
  ) -> ProjectsCreateResponse:
72
73
  """
@@ -77,6 +78,9 @@ class ProjectsClient:
77
78
  name : str
78
79
  a string at most 100 character(s) long
79
80
 
81
+ slug : str
82
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
83
+
80
84
  request_options : typing.Optional[RequestOptions]
81
85
  Request-specific configuration.
82
86
 
@@ -93,10 +97,11 @@ class ProjectsClient:
93
97
  client.projects.create(
94
98
  organization_id="organizationId",
95
99
  name="name",
100
+ slug="slug",
96
101
  )
97
102
  """
98
103
  _response = self._raw_client.create(
99
- organization_id, name=name, request_options=request_options
104
+ organization_id, name=name, slug=slug, request_options=request_options
100
105
  )
101
106
  return _response.data
102
107
 
@@ -142,7 +147,8 @@ class ProjectsClient:
142
147
  organization_id: str,
143
148
  project_id: str,
144
149
  *,
145
- name: str,
150
+ name: typing.Optional[str] = OMIT,
151
+ slug: typing.Optional[str] = OMIT,
146
152
  request_options: typing.Optional[RequestOptions] = None,
147
153
  ) -> ProjectsUpdateResponse:
148
154
  """
@@ -152,9 +158,12 @@ class ProjectsClient:
152
158
 
153
159
  project_id : str
154
160
 
155
- name : str
161
+ name : typing.Optional[str]
156
162
  a string at most 100 character(s) long
157
163
 
164
+ slug : typing.Optional[str]
165
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
166
+
158
167
  request_options : typing.Optional[RequestOptions]
159
168
  Request-specific configuration.
160
169
 
@@ -171,11 +180,14 @@ class ProjectsClient:
171
180
  client.projects.update(
172
181
  organization_id="organizationId",
173
182
  project_id="projectId",
174
- name="name",
175
183
  )
176
184
  """
177
185
  _response = self._raw_client.update(
178
- organization_id, project_id, name=name, request_options=request_options
186
+ organization_id,
187
+ project_id,
188
+ name=name,
189
+ slug=slug,
190
+ request_options=request_options,
179
191
  )
180
192
  return _response.data
181
193
 
@@ -277,6 +289,7 @@ class AsyncProjectsClient:
277
289
  organization_id: str,
278
290
  *,
279
291
  name: str,
292
+ slug: str,
280
293
  request_options: typing.Optional[RequestOptions] = None,
281
294
  ) -> ProjectsCreateResponse:
282
295
  """
@@ -287,6 +300,9 @@ class AsyncProjectsClient:
287
300
  name : str
288
301
  a string at most 100 character(s) long
289
302
 
303
+ slug : str
304
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
305
+
290
306
  request_options : typing.Optional[RequestOptions]
291
307
  Request-specific configuration.
292
308
 
@@ -308,13 +324,14 @@ class AsyncProjectsClient:
308
324
  await client.projects.create(
309
325
  organization_id="organizationId",
310
326
  name="name",
327
+ slug="slug",
311
328
  )
312
329
 
313
330
 
314
331
  asyncio.run(main())
315
332
  """
316
333
  _response = await self._raw_client.create(
317
- organization_id, name=name, request_options=request_options
334
+ organization_id, name=name, slug=slug, request_options=request_options
318
335
  )
319
336
  return _response.data
320
337
 
@@ -368,7 +385,8 @@ class AsyncProjectsClient:
368
385
  organization_id: str,
369
386
  project_id: str,
370
387
  *,
371
- name: str,
388
+ name: typing.Optional[str] = OMIT,
389
+ slug: typing.Optional[str] = OMIT,
372
390
  request_options: typing.Optional[RequestOptions] = None,
373
391
  ) -> ProjectsUpdateResponse:
374
392
  """
@@ -378,9 +396,12 @@ class AsyncProjectsClient:
378
396
 
379
397
  project_id : str
380
398
 
381
- name : str
399
+ name : typing.Optional[str]
382
400
  a string at most 100 character(s) long
383
401
 
402
+ slug : typing.Optional[str]
403
+ a string matching the pattern ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
404
+
384
405
  request_options : typing.Optional[RequestOptions]
385
406
  Request-specific configuration.
386
407
 
@@ -402,14 +423,17 @@ class AsyncProjectsClient:
402
423
  await client.projects.update(
403
424
  organization_id="organizationId",
404
425
  project_id="projectId",
405
- name="name",
406
426
  )
407
427
 
408
428
 
409
429
  asyncio.run(main())
410
430
  """
411
431
  _response = await self._raw_client.update(
412
- organization_id, project_id, name=name, request_options=request_options
432
+ organization_id,
433
+ project_id,
434
+ name=name,
435
+ slug=slug,
436
+ request_options=request_options,
413
437
  )
414
438
  return _response.data
415
439