vellum-ai 0.6.1__py3-none-any.whl → 0.6.2__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.
vellum/__init__.py CHANGED
@@ -73,6 +73,8 @@ from .types import (
73
73
  ConditionalNodeResultData,
74
74
  DeploymentProviderPayloadResponse,
75
75
  DeploymentRead,
76
+ DeploymentReleaseTagDeploymentHistoryItem,
77
+ DeploymentReleaseTagRead,
76
78
  DocumentDocumentToDocumentIndex,
77
79
  DocumentIndexChunking,
78
80
  DocumentIndexChunkingRequest,
@@ -314,6 +316,7 @@ from .types import (
314
316
  RejectedExecuteWorkflowWorkflowResultEvent,
315
317
  RejectedPromptExecutionMeta,
316
318
  RejectedWorkflowNodeResultEvent,
319
+ ReleaseTagSource,
317
320
  SandboxScenario,
318
321
  ScenarioInput,
319
322
  ScenarioInputChatHistoryVariableValue,
@@ -361,6 +364,7 @@ from .types import (
361
364
  SubmitWorkflowExecutionActualRequest_String,
362
365
  SubworkflowEnum,
363
366
  SubworkflowNodeResult,
367
+ SubworkflowNodeResultData,
364
368
  TemplatingNodeArrayResult,
365
369
  TemplatingNodeChatHistoryResult,
366
370
  TemplatingNodeErrorResult,
@@ -531,6 +535,8 @@ from .types import (
531
535
  WorkflowOutput_Number,
532
536
  WorkflowOutput_SearchResults,
533
537
  WorkflowOutput_String,
538
+ WorkflowReleaseTagRead,
539
+ WorkflowReleaseTagWorkflowDeploymentHistoryItem,
534
540
  WorkflowRequestChatHistoryInputRequest,
535
541
  WorkflowRequestInputRequest,
536
542
  WorkflowRequestInputRequest_ChatHistory,
@@ -571,6 +577,7 @@ from .resources import (
571
577
  document_indexes,
572
578
  documents,
573
579
  folder_entities,
580
+ prompt_versions,
574
581
  sandboxes,
575
582
  test_suite_runs,
576
583
  test_suites,
@@ -653,6 +660,8 @@ __all__ = [
653
660
  "ConditionalNodeResultData",
654
661
  "DeploymentProviderPayloadResponse",
655
662
  "DeploymentRead",
663
+ "DeploymentReleaseTagDeploymentHistoryItem",
664
+ "DeploymentReleaseTagRead",
656
665
  "DeploymentsListRequestStatus",
657
666
  "DocumentDocumentToDocumentIndex",
658
667
  "DocumentIndexChunking",
@@ -899,6 +908,7 @@ __all__ = [
899
908
  "RejectedExecuteWorkflowWorkflowResultEvent",
900
909
  "RejectedPromptExecutionMeta",
901
910
  "RejectedWorkflowNodeResultEvent",
911
+ "ReleaseTagSource",
902
912
  "SandboxScenario",
903
913
  "ScenarioInput",
904
914
  "ScenarioInputChatHistoryVariableValue",
@@ -946,6 +956,7 @@ __all__ = [
946
956
  "SubmitWorkflowExecutionActualRequest_String",
947
957
  "SubworkflowEnum",
948
958
  "SubworkflowNodeResult",
959
+ "SubworkflowNodeResultData",
949
960
  "TemplatingNodeArrayResult",
950
961
  "TemplatingNodeChatHistoryResult",
951
962
  "TemplatingNodeErrorResult",
@@ -1118,6 +1129,8 @@ __all__ = [
1118
1129
  "WorkflowOutput_Number",
1119
1130
  "WorkflowOutput_SearchResults",
1120
1131
  "WorkflowOutput_String",
1132
+ "WorkflowReleaseTagRead",
1133
+ "WorkflowReleaseTagWorkflowDeploymentHistoryItem",
1121
1134
  "WorkflowRequestChatHistoryInputRequest",
1122
1135
  "WorkflowRequestInputRequest",
1123
1136
  "WorkflowRequestInputRequest_ChatHistory",
@@ -1153,6 +1166,7 @@ __all__ = [
1153
1166
  "document_indexes",
1154
1167
  "documents",
1155
1168
  "folder_entities",
1169
+ "prompt_versions",
1156
1170
  "sandboxes",
1157
1171
  "test_suite_runs",
1158
1172
  "test_suites",
vellum/client.py CHANGED
@@ -22,6 +22,7 @@ from .resources.deployments.client import AsyncDeploymentsClient, DeploymentsCli
22
22
  from .resources.document_indexes.client import AsyncDocumentIndexesClient, DocumentIndexesClient
23
23
  from .resources.documents.client import AsyncDocumentsClient, DocumentsClient
24
24
  from .resources.folder_entities.client import AsyncFolderEntitiesClient, FolderEntitiesClient
25
+ from .resources.prompt_versions.client import AsyncPromptVersionsClient, PromptVersionsClient
25
26
  from .resources.sandboxes.client import AsyncSandboxesClient, SandboxesClient
26
27
  from .resources.test_suite_runs.client import AsyncTestSuiteRunsClient, TestSuiteRunsClient
27
28
  from .resources.test_suites.client import AsyncTestSuitesClient, TestSuitesClient
@@ -96,6 +97,7 @@ class Vellum:
96
97
  self.document_indexes = DocumentIndexesClient(client_wrapper=self._client_wrapper)
97
98
  self.documents = DocumentsClient(client_wrapper=self._client_wrapper)
98
99
  self.folder_entities = FolderEntitiesClient(client_wrapper=self._client_wrapper)
100
+ self.prompt_versions = PromptVersionsClient(client_wrapper=self._client_wrapper)
99
101
  self.sandboxes = SandboxesClient(client_wrapper=self._client_wrapper)
100
102
  self.test_suite_runs = TestSuiteRunsClient(client_wrapper=self._client_wrapper)
101
103
  self.test_suites = TestSuitesClient(client_wrapper=self._client_wrapper)
@@ -1058,6 +1060,7 @@ class AsyncVellum:
1058
1060
  self.document_indexes = AsyncDocumentIndexesClient(client_wrapper=self._client_wrapper)
1059
1061
  self.documents = AsyncDocumentsClient(client_wrapper=self._client_wrapper)
1060
1062
  self.folder_entities = AsyncFolderEntitiesClient(client_wrapper=self._client_wrapper)
1063
+ self.prompt_versions = AsyncPromptVersionsClient(client_wrapper=self._client_wrapper)
1061
1064
  self.sandboxes = AsyncSandboxesClient(client_wrapper=self._client_wrapper)
1062
1065
  self.test_suite_runs = AsyncTestSuiteRunsClient(client_wrapper=self._client_wrapper)
1063
1066
  self.test_suites = AsyncTestSuitesClient(client_wrapper=self._client_wrapper)
@@ -18,7 +18,7 @@ class BaseClientWrapper:
18
18
  headers: typing.Dict[str, str] = {
19
19
  "X-Fern-Language": "Python",
20
20
  "X-Fern-SDK-Name": "vellum-ai",
21
- "X-Fern-SDK-Version": "0.6.1",
21
+ "X-Fern-SDK-Version": "0.6.2",
22
22
  }
23
23
  headers["X_API_KEY"] = self.api_key
24
24
  return headers
@@ -5,6 +5,7 @@ from . import (
5
5
  document_indexes,
6
6
  documents,
7
7
  folder_entities,
8
+ prompt_versions,
8
9
  sandboxes,
9
10
  test_suite_runs,
10
11
  test_suites,
@@ -22,6 +23,7 @@ __all__ = [
22
23
  "document_indexes",
23
24
  "documents",
24
25
  "folder_entities",
26
+ "prompt_versions",
25
27
  "sandboxes",
26
28
  "test_suite_runs",
27
29
  "test_suites",
@@ -16,8 +16,10 @@ from ...errors.internal_server_error import InternalServerError
16
16
  from ...errors.not_found_error import NotFoundError
17
17
  from ...types.deployment_provider_payload_response import DeploymentProviderPayloadResponse
18
18
  from ...types.deployment_read import DeploymentRead
19
+ from ...types.deployment_release_tag_read import DeploymentReleaseTagRead
19
20
  from ...types.paginated_slim_deployment_read_list import PaginatedSlimDeploymentReadList
20
21
  from ...types.prompt_deployment_input_request import PromptDeploymentInputRequest
22
+ from ...types.workflow_deployment_read import WorkflowDeploymentRead
21
23
  from .types.deployments_list_request_status import DeploymentsListRequestStatus
22
24
 
23
25
  # this is used as the default value for optional parameters
@@ -144,6 +146,130 @@ class DeploymentsClient:
144
146
  raise ApiError(status_code=_response.status_code, body=_response.text)
145
147
  raise ApiError(status_code=_response.status_code, body=_response_json)
146
148
 
149
+ def retrieve_deployment_release_tag(
150
+ self, id: str, name: str, *, request_options: typing.Optional[RequestOptions] = None
151
+ ) -> DeploymentReleaseTagRead:
152
+ """
153
+ Retrieve a Deployment Release Tag by tag name, associated with a specified Deployment.
154
+
155
+ Parameters:
156
+ - id: str. A UUID string identifying this deployment.
157
+
158
+ - name: str. The name of the Release Tag associated with this Deployment that you'd like to retrieve.
159
+
160
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
161
+ ---
162
+ from vellum.client import Vellum
163
+
164
+ client = Vellum(
165
+ api_key="YOUR_API_KEY",
166
+ )
167
+ client.deployments.retrieve_deployment_release_tag(
168
+ id="id",
169
+ name="name",
170
+ )
171
+ """
172
+ _response = self._client_wrapper.httpx_client.request(
173
+ method="GET",
174
+ url=urllib.parse.urljoin(
175
+ f"{self._client_wrapper.get_environment().default}/",
176
+ f"v1/deployments/{jsonable_encoder(id)}/release-tags/{jsonable_encoder(name)}",
177
+ ),
178
+ params=jsonable_encoder(
179
+ request_options.get("additional_query_parameters") if request_options is not None else None
180
+ ),
181
+ headers=jsonable_encoder(
182
+ remove_none_from_dict(
183
+ {
184
+ **self._client_wrapper.get_headers(),
185
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
186
+ }
187
+ )
188
+ ),
189
+ timeout=request_options.get("timeout_in_seconds")
190
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
191
+ else self._client_wrapper.get_timeout(),
192
+ retries=0,
193
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
194
+ )
195
+ if 200 <= _response.status_code < 300:
196
+ return pydantic_v1.parse_obj_as(DeploymentReleaseTagRead, _response.json()) # type: ignore
197
+ try:
198
+ _response_json = _response.json()
199
+ except JSONDecodeError:
200
+ raise ApiError(status_code=_response.status_code, body=_response.text)
201
+ raise ApiError(status_code=_response.status_code, body=_response_json)
202
+
203
+ def update_deployment_release_tag(
204
+ self,
205
+ id: str,
206
+ name: str,
207
+ *,
208
+ history_item_id: typing.Optional[str] = OMIT,
209
+ request_options: typing.Optional[RequestOptions] = None,
210
+ ) -> DeploymentReleaseTagRead:
211
+ """
212
+ Updates an existing Release Tag associated with the specified Deployment.
213
+
214
+ Parameters:
215
+ - id: str. A UUID string identifying this deployment.
216
+
217
+ - name: str. The name of the Release Tag associated with this Deployment that you'd like to update.
218
+
219
+ - history_item_id: typing.Optional[str]. The ID of the Deployment History Item to tag
220
+
221
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
222
+ ---
223
+ from vellum.client import Vellum
224
+
225
+ client = Vellum(
226
+ api_key="YOUR_API_KEY",
227
+ )
228
+ client.deployments.update_deployment_release_tag(
229
+ id="id",
230
+ name="name",
231
+ )
232
+ """
233
+ _request: typing.Dict[str, typing.Any] = {}
234
+ if history_item_id is not OMIT:
235
+ _request["history_item_id"] = history_item_id
236
+ _response = self._client_wrapper.httpx_client.request(
237
+ method="PATCH",
238
+ url=urllib.parse.urljoin(
239
+ f"{self._client_wrapper.get_environment().default}/",
240
+ f"v1/deployments/{jsonable_encoder(id)}/release-tags/{jsonable_encoder(name)}",
241
+ ),
242
+ params=jsonable_encoder(
243
+ request_options.get("additional_query_parameters") if request_options is not None else None
244
+ ),
245
+ json=jsonable_encoder(_request)
246
+ if request_options is None or request_options.get("additional_body_parameters") is None
247
+ else {
248
+ **jsonable_encoder(_request),
249
+ **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
250
+ },
251
+ headers=jsonable_encoder(
252
+ remove_none_from_dict(
253
+ {
254
+ **self._client_wrapper.get_headers(),
255
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
256
+ }
257
+ )
258
+ ),
259
+ timeout=request_options.get("timeout_in_seconds")
260
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
261
+ else self._client_wrapper.get_timeout(),
262
+ retries=0,
263
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
264
+ )
265
+ if 200 <= _response.status_code < 300:
266
+ return pydantic_v1.parse_obj_as(DeploymentReleaseTagRead, _response.json()) # type: ignore
267
+ try:
268
+ _response_json = _response.json()
269
+ except JSONDecodeError:
270
+ raise ApiError(status_code=_response.status_code, body=_response.text)
271
+ raise ApiError(status_code=_response.status_code, body=_response_json)
272
+
147
273
  def retrieve_provider_payload(
148
274
  self,
149
275
  *,
@@ -225,6 +351,89 @@ class DeploymentsClient:
225
351
  raise ApiError(status_code=_response.status_code, body=_response.text)
226
352
  raise ApiError(status_code=_response.status_code, body=_response_json)
227
353
 
354
+ def deploy_workflow(
355
+ self,
356
+ id: str,
357
+ workflow_id: str,
358
+ *,
359
+ workflow_deployment_id: typing.Optional[str] = OMIT,
360
+ workflow_deployment_name: typing.Optional[str] = OMIT,
361
+ label: typing.Optional[str] = OMIT,
362
+ release_tags: typing.Optional[typing.Sequence[str]] = OMIT,
363
+ request_options: typing.Optional[RequestOptions] = None,
364
+ ) -> WorkflowDeploymentRead:
365
+ """
366
+ Parameters:
367
+ - id: str. A UUID string identifying this workflow sandbox.
368
+
369
+ - workflow_id: str. An ID identifying the Workflow you'd like to deploy.
370
+
371
+ - workflow_deployment_id: typing.Optional[str]. The Vellum-generated ID of the Workflow Deployment you'd like to update. Cannot specify both this and workflow_deployment_name. Leave null to create a new Workflow Deployment.
372
+
373
+ - workflow_deployment_name: typing.Optional[str]. The unique name of the Workflow Deployment you'd like to either create or update. Cannot specify both this and workflow_deployment_id. If provided and matches an existing Workflow Deployment, that Workflow Deployment will be updated. Otherwise, a new Prompt Deployment will be created.
374
+
375
+ - label: typing.Optional[str]. In the event that a new Workflow Deployment is created, this will be the label it's given.
376
+
377
+ - release_tags: typing.Optional[typing.Sequence[str]]. Optionally provide the release tags that you'd like to be associated with the latest release of the created/updated Prompt Deployment.
378
+
379
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
380
+ ---
381
+ from vellum.client import Vellum
382
+
383
+ client = Vellum(
384
+ api_key="YOUR_API_KEY",
385
+ )
386
+ client.deployments.deploy_workflow(
387
+ id="id",
388
+ workflow_id="workflow_id",
389
+ )
390
+ """
391
+ _request: typing.Dict[str, typing.Any] = {}
392
+ if workflow_deployment_id is not OMIT:
393
+ _request["workflow_deployment_id"] = workflow_deployment_id
394
+ if workflow_deployment_name is not OMIT:
395
+ _request["workflow_deployment_name"] = workflow_deployment_name
396
+ if label is not OMIT:
397
+ _request["label"] = label
398
+ if release_tags is not OMIT:
399
+ _request["release_tags"] = release_tags
400
+ _response = self._client_wrapper.httpx_client.request(
401
+ method="POST",
402
+ url=urllib.parse.urljoin(
403
+ f"{self._client_wrapper.get_environment().default}/",
404
+ f"v1/workflow-sandboxes/{jsonable_encoder(id)}/workflows/{jsonable_encoder(workflow_id)}/deploy",
405
+ ),
406
+ params=jsonable_encoder(
407
+ request_options.get("additional_query_parameters") if request_options is not None else None
408
+ ),
409
+ json=jsonable_encoder(_request)
410
+ if request_options is None or request_options.get("additional_body_parameters") is None
411
+ else {
412
+ **jsonable_encoder(_request),
413
+ **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
414
+ },
415
+ headers=jsonable_encoder(
416
+ remove_none_from_dict(
417
+ {
418
+ **self._client_wrapper.get_headers(),
419
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
420
+ }
421
+ )
422
+ ),
423
+ timeout=request_options.get("timeout_in_seconds")
424
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
425
+ else self._client_wrapper.get_timeout(),
426
+ retries=0,
427
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
428
+ )
429
+ if 200 <= _response.status_code < 300:
430
+ return pydantic_v1.parse_obj_as(WorkflowDeploymentRead, _response.json()) # type: ignore
431
+ try:
432
+ _response_json = _response.json()
433
+ except JSONDecodeError:
434
+ raise ApiError(status_code=_response.status_code, body=_response.text)
435
+ raise ApiError(status_code=_response.status_code, body=_response_json)
436
+
228
437
 
229
438
  class AsyncDeploymentsClient:
230
439
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -346,6 +555,130 @@ class AsyncDeploymentsClient:
346
555
  raise ApiError(status_code=_response.status_code, body=_response.text)
347
556
  raise ApiError(status_code=_response.status_code, body=_response_json)
348
557
 
558
+ async def retrieve_deployment_release_tag(
559
+ self, id: str, name: str, *, request_options: typing.Optional[RequestOptions] = None
560
+ ) -> DeploymentReleaseTagRead:
561
+ """
562
+ Retrieve a Deployment Release Tag by tag name, associated with a specified Deployment.
563
+
564
+ Parameters:
565
+ - id: str. A UUID string identifying this deployment.
566
+
567
+ - name: str. The name of the Release Tag associated with this Deployment that you'd like to retrieve.
568
+
569
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
570
+ ---
571
+ from vellum.client import AsyncVellum
572
+
573
+ client = AsyncVellum(
574
+ api_key="YOUR_API_KEY",
575
+ )
576
+ await client.deployments.retrieve_deployment_release_tag(
577
+ id="id",
578
+ name="name",
579
+ )
580
+ """
581
+ _response = await self._client_wrapper.httpx_client.request(
582
+ method="GET",
583
+ url=urllib.parse.urljoin(
584
+ f"{self._client_wrapper.get_environment().default}/",
585
+ f"v1/deployments/{jsonable_encoder(id)}/release-tags/{jsonable_encoder(name)}",
586
+ ),
587
+ params=jsonable_encoder(
588
+ request_options.get("additional_query_parameters") if request_options is not None else None
589
+ ),
590
+ headers=jsonable_encoder(
591
+ remove_none_from_dict(
592
+ {
593
+ **self._client_wrapper.get_headers(),
594
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
595
+ }
596
+ )
597
+ ),
598
+ timeout=request_options.get("timeout_in_seconds")
599
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
600
+ else self._client_wrapper.get_timeout(),
601
+ retries=0,
602
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
603
+ )
604
+ if 200 <= _response.status_code < 300:
605
+ return pydantic_v1.parse_obj_as(DeploymentReleaseTagRead, _response.json()) # type: ignore
606
+ try:
607
+ _response_json = _response.json()
608
+ except JSONDecodeError:
609
+ raise ApiError(status_code=_response.status_code, body=_response.text)
610
+ raise ApiError(status_code=_response.status_code, body=_response_json)
611
+
612
+ async def update_deployment_release_tag(
613
+ self,
614
+ id: str,
615
+ name: str,
616
+ *,
617
+ history_item_id: typing.Optional[str] = OMIT,
618
+ request_options: typing.Optional[RequestOptions] = None,
619
+ ) -> DeploymentReleaseTagRead:
620
+ """
621
+ Updates an existing Release Tag associated with the specified Deployment.
622
+
623
+ Parameters:
624
+ - id: str. A UUID string identifying this deployment.
625
+
626
+ - name: str. The name of the Release Tag associated with this Deployment that you'd like to update.
627
+
628
+ - history_item_id: typing.Optional[str]. The ID of the Deployment History Item to tag
629
+
630
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
631
+ ---
632
+ from vellum.client import AsyncVellum
633
+
634
+ client = AsyncVellum(
635
+ api_key="YOUR_API_KEY",
636
+ )
637
+ await client.deployments.update_deployment_release_tag(
638
+ id="id",
639
+ name="name",
640
+ )
641
+ """
642
+ _request: typing.Dict[str, typing.Any] = {}
643
+ if history_item_id is not OMIT:
644
+ _request["history_item_id"] = history_item_id
645
+ _response = await self._client_wrapper.httpx_client.request(
646
+ method="PATCH",
647
+ url=urllib.parse.urljoin(
648
+ f"{self._client_wrapper.get_environment().default}/",
649
+ f"v1/deployments/{jsonable_encoder(id)}/release-tags/{jsonable_encoder(name)}",
650
+ ),
651
+ params=jsonable_encoder(
652
+ request_options.get("additional_query_parameters") if request_options is not None else None
653
+ ),
654
+ json=jsonable_encoder(_request)
655
+ if request_options is None or request_options.get("additional_body_parameters") is None
656
+ else {
657
+ **jsonable_encoder(_request),
658
+ **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
659
+ },
660
+ headers=jsonable_encoder(
661
+ remove_none_from_dict(
662
+ {
663
+ **self._client_wrapper.get_headers(),
664
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
665
+ }
666
+ )
667
+ ),
668
+ timeout=request_options.get("timeout_in_seconds")
669
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
670
+ else self._client_wrapper.get_timeout(),
671
+ retries=0,
672
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
673
+ )
674
+ if 200 <= _response.status_code < 300:
675
+ return pydantic_v1.parse_obj_as(DeploymentReleaseTagRead, _response.json()) # type: ignore
676
+ try:
677
+ _response_json = _response.json()
678
+ except JSONDecodeError:
679
+ raise ApiError(status_code=_response.status_code, body=_response.text)
680
+ raise ApiError(status_code=_response.status_code, body=_response_json)
681
+
349
682
  async def retrieve_provider_payload(
350
683
  self,
351
684
  *,
@@ -426,3 +759,86 @@ class AsyncDeploymentsClient:
426
759
  except JSONDecodeError:
427
760
  raise ApiError(status_code=_response.status_code, body=_response.text)
428
761
  raise ApiError(status_code=_response.status_code, body=_response_json)
762
+
763
+ async def deploy_workflow(
764
+ self,
765
+ id: str,
766
+ workflow_id: str,
767
+ *,
768
+ workflow_deployment_id: typing.Optional[str] = OMIT,
769
+ workflow_deployment_name: typing.Optional[str] = OMIT,
770
+ label: typing.Optional[str] = OMIT,
771
+ release_tags: typing.Optional[typing.Sequence[str]] = OMIT,
772
+ request_options: typing.Optional[RequestOptions] = None,
773
+ ) -> WorkflowDeploymentRead:
774
+ """
775
+ Parameters:
776
+ - id: str. A UUID string identifying this workflow sandbox.
777
+
778
+ - workflow_id: str. An ID identifying the Workflow you'd like to deploy.
779
+
780
+ - workflow_deployment_id: typing.Optional[str]. The Vellum-generated ID of the Workflow Deployment you'd like to update. Cannot specify both this and workflow_deployment_name. Leave null to create a new Workflow Deployment.
781
+
782
+ - workflow_deployment_name: typing.Optional[str]. The unique name of the Workflow Deployment you'd like to either create or update. Cannot specify both this and workflow_deployment_id. If provided and matches an existing Workflow Deployment, that Workflow Deployment will be updated. Otherwise, a new Prompt Deployment will be created.
783
+
784
+ - label: typing.Optional[str]. In the event that a new Workflow Deployment is created, this will be the label it's given.
785
+
786
+ - release_tags: typing.Optional[typing.Sequence[str]]. Optionally provide the release tags that you'd like to be associated with the latest release of the created/updated Prompt Deployment.
787
+
788
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
789
+ ---
790
+ from vellum.client import AsyncVellum
791
+
792
+ client = AsyncVellum(
793
+ api_key="YOUR_API_KEY",
794
+ )
795
+ await client.deployments.deploy_workflow(
796
+ id="id",
797
+ workflow_id="workflow_id",
798
+ )
799
+ """
800
+ _request: typing.Dict[str, typing.Any] = {}
801
+ if workflow_deployment_id is not OMIT:
802
+ _request["workflow_deployment_id"] = workflow_deployment_id
803
+ if workflow_deployment_name is not OMIT:
804
+ _request["workflow_deployment_name"] = workflow_deployment_name
805
+ if label is not OMIT:
806
+ _request["label"] = label
807
+ if release_tags is not OMIT:
808
+ _request["release_tags"] = release_tags
809
+ _response = await self._client_wrapper.httpx_client.request(
810
+ method="POST",
811
+ url=urllib.parse.urljoin(
812
+ f"{self._client_wrapper.get_environment().default}/",
813
+ f"v1/workflow-sandboxes/{jsonable_encoder(id)}/workflows/{jsonable_encoder(workflow_id)}/deploy",
814
+ ),
815
+ params=jsonable_encoder(
816
+ request_options.get("additional_query_parameters") if request_options is not None else None
817
+ ),
818
+ json=jsonable_encoder(_request)
819
+ if request_options is None or request_options.get("additional_body_parameters") is None
820
+ else {
821
+ **jsonable_encoder(_request),
822
+ **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
823
+ },
824
+ headers=jsonable_encoder(
825
+ remove_none_from_dict(
826
+ {
827
+ **self._client_wrapper.get_headers(),
828
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
829
+ }
830
+ )
831
+ ),
832
+ timeout=request_options.get("timeout_in_seconds")
833
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
834
+ else self._client_wrapper.get_timeout(),
835
+ retries=0,
836
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
837
+ )
838
+ if 200 <= _response.status_code < 300:
839
+ return pydantic_v1.parse_obj_as(WorkflowDeploymentRead, _response.json()) # type: ignore
840
+ try:
841
+ _response_json = _response.json()
842
+ except JSONDecodeError:
843
+ raise ApiError(status_code=_response.status_code, body=_response.text)
844
+ raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -0,0 +1,2 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+