vellum-ai 1.5.4__py3-none-any.whl → 1.5.6__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 (66) hide show
  1. vellum/__init__.py +36 -0
  2. vellum/client/__init__.py +6 -0
  3. vellum/client/core/client_wrapper.py +2 -2
  4. vellum/client/reference.md +497 -11
  5. vellum/client/resources/__init__.py +4 -0
  6. vellum/client/resources/integration_auth_configs/__init__.py +4 -0
  7. vellum/client/resources/integration_auth_configs/client.py +186 -0
  8. vellum/client/resources/integration_auth_configs/raw_client.py +171 -0
  9. vellum/client/resources/integration_providers/__init__.py +4 -0
  10. vellum/client/resources/integration_providers/client.py +279 -0
  11. vellum/client/resources/integration_providers/raw_client.py +255 -0
  12. vellum/client/resources/integrations/client.py +226 -28
  13. vellum/client/resources/integrations/raw_client.py +257 -20
  14. vellum/client/resources/test_suite_runs/client.py +6 -6
  15. vellum/client/resources/test_suite_runs/raw_client.py +6 -6
  16. vellum/client/types/__init__.py +32 -0
  17. vellum/client/types/components_schemas_composio_integration_exec_config.py +5 -0
  18. vellum/client/types/components_schemas_slim_composio_tool_definition.py +5 -0
  19. vellum/client/types/composio_integration_exec_config.py +20 -0
  20. vellum/client/types/composio_tool_definition.py +4 -1
  21. vellum/client/types/integration_auth_config_integration.py +23 -0
  22. vellum/client/types/integration_auth_config_integration_credential.py +19 -0
  23. vellum/client/types/integration_credential_access_type.py +5 -0
  24. vellum/client/types/integration_name.py +20 -0
  25. vellum/client/types/integration_provider.py +5 -0
  26. vellum/client/types/integration_read.py +30 -0
  27. vellum/client/types/paginated_slim_integration_auth_config_read_list.py +23 -0
  28. vellum/client/types/paginated_slim_integration_read_list.py +23 -0
  29. vellum/client/types/paginated_slim_tool_definition_list.py +23 -0
  30. vellum/client/types/slim_composio_tool_definition.py +23 -0
  31. vellum/client/types/slim_integration_auth_config_read.py +29 -0
  32. vellum/client/types/slim_integration_read.py +25 -0
  33. vellum/client/types/tool_definition_integration.py +23 -0
  34. vellum/resources/integration_auth_configs/__init__.py +3 -0
  35. vellum/resources/integration_auth_configs/client.py +3 -0
  36. vellum/resources/integration_auth_configs/raw_client.py +3 -0
  37. vellum/resources/integration_providers/__init__.py +3 -0
  38. vellum/resources/integration_providers/client.py +3 -0
  39. vellum/resources/integration_providers/raw_client.py +3 -0
  40. vellum/types/components_schemas_composio_integration_exec_config.py +3 -0
  41. vellum/types/components_schemas_slim_composio_tool_definition.py +3 -0
  42. vellum/types/composio_integration_exec_config.py +3 -0
  43. vellum/types/integration_auth_config_integration.py +3 -0
  44. vellum/types/integration_auth_config_integration_credential.py +3 -0
  45. vellum/types/integration_credential_access_type.py +3 -0
  46. vellum/types/integration_name.py +3 -0
  47. vellum/types/integration_provider.py +3 -0
  48. vellum/types/integration_read.py +3 -0
  49. vellum/types/paginated_slim_integration_auth_config_read_list.py +3 -0
  50. vellum/types/paginated_slim_integration_read_list.py +3 -0
  51. vellum/types/paginated_slim_tool_definition_list.py +3 -0
  52. vellum/types/slim_composio_tool_definition.py +3 -0
  53. vellum/types/slim_integration_auth_config_read.py +3 -0
  54. vellum/types/slim_integration_read.py +3 -0
  55. vellum/types/tool_definition_integration.py +3 -0
  56. vellum/workflows/integrations/tests/test_vellum_integration_service.py +26 -19
  57. vellum/workflows/integrations/vellum_integration_service.py +5 -5
  58. vellum/workflows/nodes/displayable/tool_calling_node/node.py +2 -4
  59. vellum/workflows/types/definition.py +1 -1
  60. vellum/workflows/types/tests/test_definition.py +40 -2
  61. {vellum_ai-1.5.4.dist-info → vellum_ai-1.5.6.dist-info}/METADATA +1 -1
  62. {vellum_ai-1.5.4.dist-info → vellum_ai-1.5.6.dist-info}/RECORD +66 -21
  63. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +68 -0
  64. {vellum_ai-1.5.4.dist-info → vellum_ai-1.5.6.dist-info}/LICENSE +0 -0
  65. {vellum_ai-1.5.4.dist-info → vellum_ai-1.5.6.dist-info}/WHEEL +0 -0
  66. {vellum_ai-1.5.4.dist-info → vellum_ai-1.5.6.dist-info}/entry_points.txt +0 -0
@@ -10,8 +10,11 @@ from ...core.jsonable_encoder import jsonable_encoder
10
10
  from ...core.pydantic_utilities import parse_obj_as
11
11
  from ...core.request_options import RequestOptions
12
12
  from ...errors.bad_request_error import BadRequestError
13
+ from ...errors.forbidden_error import ForbiddenError
13
14
  from ...types.components_schemas_composio_execute_tool_response import ComponentsSchemasComposioExecuteToolResponse
14
15
  from ...types.components_schemas_composio_tool_definition import ComponentsSchemasComposioToolDefinition
16
+ from ...types.integration_read import IntegrationRead
17
+ from ...types.paginated_slim_integration_read_list import PaginatedSlimIntegrationReadList
15
18
 
16
19
  # this is used as the default value for optional parameters
17
20
  OMIT = typing.cast(typing.Any, ...)
@@ -23,8 +26,8 @@ class RawIntegrationsClient:
23
26
 
24
27
  def retrieve_integration_tool_definition(
25
28
  self,
26
- integration: str,
27
- provider: str,
29
+ integration_name: str,
30
+ integration_provider: str,
28
31
  tool_name: str,
29
32
  *,
30
33
  request_options: typing.Optional[RequestOptions] = None,
@@ -32,10 +35,10 @@ class RawIntegrationsClient:
32
35
  """
33
36
  Parameters
34
37
  ----------
35
- integration : str
38
+ integration_name : str
36
39
  The integration name
37
40
 
38
- provider : str
41
+ integration_provider : str
39
42
  The integration provider name
40
43
 
41
44
  tool_name : str
@@ -50,7 +53,7 @@ class RawIntegrationsClient:
50
53
 
51
54
  """
52
55
  _response = self._client_wrapper.httpx_client.request(
53
- f"integrations/v1/providers/{jsonable_encoder(provider)}/integrations/{jsonable_encoder(integration)}/tools/{jsonable_encoder(tool_name)}",
56
+ f"integrations/v1/providers/{jsonable_encoder(integration_provider)}/integrations/{jsonable_encoder(integration_name)}/tools/{jsonable_encoder(tool_name)}",
54
57
  base_url=self._client_wrapper.get_environment().default,
55
58
  method="GET",
56
59
  request_options=request_options,
@@ -72,8 +75,8 @@ class RawIntegrationsClient:
72
75
 
73
76
  def execute_integration_tool(
74
77
  self,
75
- integration: str,
76
- provider: str,
78
+ integration_name: str,
79
+ integration_provider: str,
77
80
  tool_name: str,
78
81
  *,
79
82
  arguments: typing.Dict[str, typing.Optional[typing.Any]],
@@ -82,10 +85,10 @@ class RawIntegrationsClient:
82
85
  """
83
86
  Parameters
84
87
  ----------
85
- integration : str
88
+ integration_name : str
86
89
  The integration name
87
90
 
88
- provider : str
91
+ integration_provider : str
89
92
  The integration provider name
90
93
 
91
94
  tool_name : str
@@ -102,7 +105,7 @@ class RawIntegrationsClient:
102
105
 
103
106
  """
104
107
  _response = self._client_wrapper.httpx_client.request(
105
- f"integrations/v1/providers/{jsonable_encoder(provider)}/integrations/{jsonable_encoder(integration)}/tools/{jsonable_encoder(tool_name)}/execute",
108
+ f"integrations/v1/providers/{jsonable_encoder(integration_provider)}/integrations/{jsonable_encoder(integration_name)}/tools/{jsonable_encoder(tool_name)}/execute",
106
109
  base_url=self._client_wrapper.get_environment().default,
107
110
  method="POST",
108
111
  json={
@@ -136,6 +139,123 @@ class RawIntegrationsClient:
136
139
  ),
137
140
  ),
138
141
  )
142
+ if _response.status_code == 403:
143
+ raise ForbiddenError(
144
+ headers=dict(_response.headers),
145
+ body=typing.cast(
146
+ typing.Optional[typing.Any],
147
+ parse_obj_as(
148
+ type_=typing.Optional[typing.Any], # type: ignore
149
+ object_=_response.json(),
150
+ ),
151
+ ),
152
+ )
153
+ _response_json = _response.json()
154
+ except JSONDecodeError:
155
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
156
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
157
+
158
+ def list(
159
+ self,
160
+ *,
161
+ integration_provider: typing.Optional[typing.Literal["COMPOSIO"]] = None,
162
+ limit: typing.Optional[int] = None,
163
+ offset: typing.Optional[int] = None,
164
+ ordering: typing.Optional[str] = None,
165
+ search: typing.Optional[str] = None,
166
+ request_options: typing.Optional[RequestOptions] = None,
167
+ ) -> HttpResponse[PaginatedSlimIntegrationReadList]:
168
+ """
169
+ List all integrations
170
+
171
+ Parameters
172
+ ----------
173
+ integration_provider : typing.Optional[typing.Literal["COMPOSIO"]]
174
+ * `COMPOSIO` - Composio
175
+
176
+ limit : typing.Optional[int]
177
+ Number of results to return per page.
178
+
179
+ offset : typing.Optional[int]
180
+ The initial index from which to return the results.
181
+
182
+ ordering : typing.Optional[str]
183
+ Which field to use when ordering the results.
184
+
185
+ search : typing.Optional[str]
186
+ A search term.
187
+
188
+ request_options : typing.Optional[RequestOptions]
189
+ Request-specific configuration.
190
+
191
+ Returns
192
+ -------
193
+ HttpResponse[PaginatedSlimIntegrationReadList]
194
+
195
+ """
196
+ _response = self._client_wrapper.httpx_client.request(
197
+ "v1/integrations",
198
+ base_url=self._client_wrapper.get_environment().default,
199
+ method="GET",
200
+ params={
201
+ "integration_provider": integration_provider,
202
+ "limit": limit,
203
+ "offset": offset,
204
+ "ordering": ordering,
205
+ "search": search,
206
+ },
207
+ request_options=request_options,
208
+ )
209
+ try:
210
+ if 200 <= _response.status_code < 300:
211
+ _data = typing.cast(
212
+ PaginatedSlimIntegrationReadList,
213
+ parse_obj_as(
214
+ type_=PaginatedSlimIntegrationReadList, # type: ignore
215
+ object_=_response.json(),
216
+ ),
217
+ )
218
+ return HttpResponse(response=_response, data=_data)
219
+ _response_json = _response.json()
220
+ except JSONDecodeError:
221
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
222
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
223
+
224
+ def retrieve(
225
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
226
+ ) -> HttpResponse[IntegrationRead]:
227
+ """
228
+ Retrieve an integration
229
+
230
+ Parameters
231
+ ----------
232
+ id : str
233
+ A UUID string identifying this integration.
234
+
235
+ request_options : typing.Optional[RequestOptions]
236
+ Request-specific configuration.
237
+
238
+ Returns
239
+ -------
240
+ HttpResponse[IntegrationRead]
241
+
242
+ """
243
+ _response = self._client_wrapper.httpx_client.request(
244
+ f"v1/integrations/{jsonable_encoder(id)}",
245
+ base_url=self._client_wrapper.get_environment().default,
246
+ method="GET",
247
+ request_options=request_options,
248
+ )
249
+ try:
250
+ if 200 <= _response.status_code < 300:
251
+ _data = typing.cast(
252
+ IntegrationRead,
253
+ parse_obj_as(
254
+ type_=IntegrationRead, # type: ignore
255
+ object_=_response.json(),
256
+ ),
257
+ )
258
+ return HttpResponse(response=_response, data=_data)
139
259
  _response_json = _response.json()
140
260
  except JSONDecodeError:
141
261
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -148,8 +268,8 @@ class AsyncRawIntegrationsClient:
148
268
 
149
269
  async def retrieve_integration_tool_definition(
150
270
  self,
151
- integration: str,
152
- provider: str,
271
+ integration_name: str,
272
+ integration_provider: str,
153
273
  tool_name: str,
154
274
  *,
155
275
  request_options: typing.Optional[RequestOptions] = None,
@@ -157,10 +277,10 @@ class AsyncRawIntegrationsClient:
157
277
  """
158
278
  Parameters
159
279
  ----------
160
- integration : str
280
+ integration_name : str
161
281
  The integration name
162
282
 
163
- provider : str
283
+ integration_provider : str
164
284
  The integration provider name
165
285
 
166
286
  tool_name : str
@@ -175,7 +295,7 @@ class AsyncRawIntegrationsClient:
175
295
 
176
296
  """
177
297
  _response = await self._client_wrapper.httpx_client.request(
178
- f"integrations/v1/providers/{jsonable_encoder(provider)}/integrations/{jsonable_encoder(integration)}/tools/{jsonable_encoder(tool_name)}",
298
+ f"integrations/v1/providers/{jsonable_encoder(integration_provider)}/integrations/{jsonable_encoder(integration_name)}/tools/{jsonable_encoder(tool_name)}",
179
299
  base_url=self._client_wrapper.get_environment().default,
180
300
  method="GET",
181
301
  request_options=request_options,
@@ -197,8 +317,8 @@ class AsyncRawIntegrationsClient:
197
317
 
198
318
  async def execute_integration_tool(
199
319
  self,
200
- integration: str,
201
- provider: str,
320
+ integration_name: str,
321
+ integration_provider: str,
202
322
  tool_name: str,
203
323
  *,
204
324
  arguments: typing.Dict[str, typing.Optional[typing.Any]],
@@ -207,10 +327,10 @@ class AsyncRawIntegrationsClient:
207
327
  """
208
328
  Parameters
209
329
  ----------
210
- integration : str
330
+ integration_name : str
211
331
  The integration name
212
332
 
213
- provider : str
333
+ integration_provider : str
214
334
  The integration provider name
215
335
 
216
336
  tool_name : str
@@ -227,7 +347,7 @@ class AsyncRawIntegrationsClient:
227
347
 
228
348
  """
229
349
  _response = await self._client_wrapper.httpx_client.request(
230
- f"integrations/v1/providers/{jsonable_encoder(provider)}/integrations/{jsonable_encoder(integration)}/tools/{jsonable_encoder(tool_name)}/execute",
350
+ f"integrations/v1/providers/{jsonable_encoder(integration_provider)}/integrations/{jsonable_encoder(integration_name)}/tools/{jsonable_encoder(tool_name)}/execute",
231
351
  base_url=self._client_wrapper.get_environment().default,
232
352
  method="POST",
233
353
  json={
@@ -261,6 +381,123 @@ class AsyncRawIntegrationsClient:
261
381
  ),
262
382
  ),
263
383
  )
384
+ if _response.status_code == 403:
385
+ raise ForbiddenError(
386
+ headers=dict(_response.headers),
387
+ body=typing.cast(
388
+ typing.Optional[typing.Any],
389
+ parse_obj_as(
390
+ type_=typing.Optional[typing.Any], # type: ignore
391
+ object_=_response.json(),
392
+ ),
393
+ ),
394
+ )
395
+ _response_json = _response.json()
396
+ except JSONDecodeError:
397
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
398
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
399
+
400
+ async def list(
401
+ self,
402
+ *,
403
+ integration_provider: typing.Optional[typing.Literal["COMPOSIO"]] = None,
404
+ limit: typing.Optional[int] = None,
405
+ offset: typing.Optional[int] = None,
406
+ ordering: typing.Optional[str] = None,
407
+ search: typing.Optional[str] = None,
408
+ request_options: typing.Optional[RequestOptions] = None,
409
+ ) -> AsyncHttpResponse[PaginatedSlimIntegrationReadList]:
410
+ """
411
+ List all integrations
412
+
413
+ Parameters
414
+ ----------
415
+ integration_provider : typing.Optional[typing.Literal["COMPOSIO"]]
416
+ * `COMPOSIO` - Composio
417
+
418
+ limit : typing.Optional[int]
419
+ Number of results to return per page.
420
+
421
+ offset : typing.Optional[int]
422
+ The initial index from which to return the results.
423
+
424
+ ordering : typing.Optional[str]
425
+ Which field to use when ordering the results.
426
+
427
+ search : typing.Optional[str]
428
+ A search term.
429
+
430
+ request_options : typing.Optional[RequestOptions]
431
+ Request-specific configuration.
432
+
433
+ Returns
434
+ -------
435
+ AsyncHttpResponse[PaginatedSlimIntegrationReadList]
436
+
437
+ """
438
+ _response = await self._client_wrapper.httpx_client.request(
439
+ "v1/integrations",
440
+ base_url=self._client_wrapper.get_environment().default,
441
+ method="GET",
442
+ params={
443
+ "integration_provider": integration_provider,
444
+ "limit": limit,
445
+ "offset": offset,
446
+ "ordering": ordering,
447
+ "search": search,
448
+ },
449
+ request_options=request_options,
450
+ )
451
+ try:
452
+ if 200 <= _response.status_code < 300:
453
+ _data = typing.cast(
454
+ PaginatedSlimIntegrationReadList,
455
+ parse_obj_as(
456
+ type_=PaginatedSlimIntegrationReadList, # type: ignore
457
+ object_=_response.json(),
458
+ ),
459
+ )
460
+ return AsyncHttpResponse(response=_response, data=_data)
461
+ _response_json = _response.json()
462
+ except JSONDecodeError:
463
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
464
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
465
+
466
+ async def retrieve(
467
+ self, id: str, *, request_options: typing.Optional[RequestOptions] = None
468
+ ) -> AsyncHttpResponse[IntegrationRead]:
469
+ """
470
+ Retrieve an integration
471
+
472
+ Parameters
473
+ ----------
474
+ id : str
475
+ A UUID string identifying this integration.
476
+
477
+ request_options : typing.Optional[RequestOptions]
478
+ Request-specific configuration.
479
+
480
+ Returns
481
+ -------
482
+ AsyncHttpResponse[IntegrationRead]
483
+
484
+ """
485
+ _response = await self._client_wrapper.httpx_client.request(
486
+ f"v1/integrations/{jsonable_encoder(id)}",
487
+ base_url=self._client_wrapper.get_environment().default,
488
+ method="GET",
489
+ request_options=request_options,
490
+ )
491
+ try:
492
+ if 200 <= _response.status_code < 300:
493
+ _data = typing.cast(
494
+ IntegrationRead,
495
+ parse_obj_as(
496
+ type_=IntegrationRead, # type: ignore
497
+ object_=_response.json(),
498
+ ),
499
+ )
500
+ return AsyncHttpResponse(response=_response, data=_data)
264
501
  _response_json = _response.json()
265
502
  except JSONDecodeError:
266
503
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -139,9 +139,9 @@ class TestSuiteRunsClient:
139
139
 
140
140
  expand : typing.Optional[typing.Union[str, typing.Sequence[str]]]
141
141
  The response fields to expand for more information.
142
- - 'results.metric_results.metric_label' expands the metric label for each metric result.
143
- - 'results.metric_results.metric_definition' expands the metric definition for each metric result.
144
- - 'results.metric_results.metric_definition.name' expands the metric definition name for each metric result.
142
+ - 'metric_results.metric_label' expands the metric label for each metric result.
143
+ - 'metric_results.metric_definition' expands the metric definition for each metric result.
144
+ - 'metric_results.metric_definition.name' expands the metric definition name for each metric result.
145
145
 
146
146
  limit : typing.Optional[int]
147
147
  Number of results to return per page.
@@ -313,9 +313,9 @@ class AsyncTestSuiteRunsClient:
313
313
 
314
314
  expand : typing.Optional[typing.Union[str, typing.Sequence[str]]]
315
315
  The response fields to expand for more information.
316
- - 'results.metric_results.metric_label' expands the metric label for each metric result.
317
- - 'results.metric_results.metric_definition' expands the metric definition for each metric result.
318
- - 'results.metric_results.metric_definition.name' expands the metric definition name for each metric result.
316
+ - 'metric_results.metric_label' expands the metric label for each metric result.
317
+ - 'metric_results.metric_definition' expands the metric definition for each metric result.
318
+ - 'metric_results.metric_definition.name' expands the metric definition name for each metric result.
319
319
 
320
320
  limit : typing.Optional[int]
321
321
  Number of results to return per page.
@@ -141,9 +141,9 @@ class RawTestSuiteRunsClient:
141
141
 
142
142
  expand : typing.Optional[typing.Union[str, typing.Sequence[str]]]
143
143
  The response fields to expand for more information.
144
- - 'results.metric_results.metric_label' expands the metric label for each metric result.
145
- - 'results.metric_results.metric_definition' expands the metric definition for each metric result.
146
- - 'results.metric_results.metric_definition.name' expands the metric definition name for each metric result.
144
+ - 'metric_results.metric_label' expands the metric label for each metric result.
145
+ - 'metric_results.metric_definition' expands the metric definition for each metric result.
146
+ - 'metric_results.metric_definition.name' expands the metric definition name for each metric result.
147
147
 
148
148
  limit : typing.Optional[int]
149
149
  Number of results to return per page.
@@ -309,9 +309,9 @@ class AsyncRawTestSuiteRunsClient:
309
309
 
310
310
  expand : typing.Optional[typing.Union[str, typing.Sequence[str]]]
311
311
  The response fields to expand for more information.
312
- - 'results.metric_results.metric_label' expands the metric label for each metric result.
313
- - 'results.metric_results.metric_definition' expands the metric definition for each metric result.
314
- - 'results.metric_results.metric_definition.name' expands the metric definition name for each metric result.
312
+ - 'metric_results.metric_label' expands the metric label for each metric result.
313
+ - 'metric_results.metric_definition' expands the metric definition for each metric result.
314
+ - 'metric_results.metric_definition.name' expands the metric definition name for each metric result.
315
315
 
316
316
  limit : typing.Optional[int]
317
317
  Number of results to return per page.
@@ -74,12 +74,15 @@ from .compile_prompt_deployment_expand_meta_request import CompilePromptDeployme
74
74
  from .compile_prompt_meta import CompilePromptMeta
75
75
  from .components_schemas_composio_execute_tool_request import ComponentsSchemasComposioExecuteToolRequest
76
76
  from .components_schemas_composio_execute_tool_response import ComponentsSchemasComposioExecuteToolResponse
77
+ from .components_schemas_composio_integration_exec_config import ComponentsSchemasComposioIntegrationExecConfig
77
78
  from .components_schemas_composio_tool_definition import ComponentsSchemasComposioToolDefinition
78
79
  from .components_schemas_pdf_search_result_meta_source import ComponentsSchemasPdfSearchResultMetaSource
79
80
  from .components_schemas_pdf_search_result_meta_source_request import ComponentsSchemasPdfSearchResultMetaSourceRequest
80
81
  from .components_schemas_prompt_version_build_config_sandbox import ComponentsSchemasPromptVersionBuildConfigSandbox
82
+ from .components_schemas_slim_composio_tool_definition import ComponentsSchemasSlimComposioToolDefinition
81
83
  from .composio_execute_tool_request import ComposioExecuteToolRequest
82
84
  from .composio_execute_tool_response import ComposioExecuteToolResponse
85
+ from .composio_integration_exec_config import ComposioIntegrationExecConfig
83
86
  from .composio_tool_definition import ComposioToolDefinition
84
87
  from .condition_combinator import ConditionCombinator
85
88
  from .conditional_node_result import ConditionalNodeResult
@@ -227,6 +230,12 @@ from .initiated_prompt_execution_meta import InitiatedPromptExecutionMeta
227
230
  from .initiated_workflow_node_result_event import InitiatedWorkflowNodeResultEvent
228
231
  from .instructor_vectorizer_config import InstructorVectorizerConfig
229
232
  from .instructor_vectorizer_config_request import InstructorVectorizerConfigRequest
233
+ from .integration_auth_config_integration import IntegrationAuthConfigIntegration
234
+ from .integration_auth_config_integration_credential import IntegrationAuthConfigIntegrationCredential
235
+ from .integration_credential_access_type import IntegrationCredentialAccessType
236
+ from .integration_name import IntegrationName
237
+ from .integration_provider import IntegrationProvider
238
+ from .integration_read import IntegrationRead
230
239
  from .invoked_port import InvokedPort
231
240
  from .iteration_state_enum import IterationStateEnum
232
241
  from .jinja_prompt_block import JinjaPromptBlock
@@ -346,6 +355,9 @@ from .paginated_document_index_read_list import PaginatedDocumentIndexReadList
346
355
  from .paginated_folder_entity_list import PaginatedFolderEntityList
347
356
  from .paginated_slim_deployment_read_list import PaginatedSlimDeploymentReadList
348
357
  from .paginated_slim_document_list import PaginatedSlimDocumentList
358
+ from .paginated_slim_integration_auth_config_read_list import PaginatedSlimIntegrationAuthConfigReadList
359
+ from .paginated_slim_integration_read_list import PaginatedSlimIntegrationReadList
360
+ from .paginated_slim_tool_definition_list import PaginatedSlimToolDefinitionList
349
361
  from .paginated_slim_workflow_deployment_list import PaginatedSlimWorkflowDeploymentList
350
362
  from .paginated_test_suite_run_execution_list import PaginatedTestSuiteRunExecutionList
351
363
  from .paginated_test_suite_test_case_list import PaginatedTestSuiteTestCaseList
@@ -436,9 +448,12 @@ from .sentence_chunker_config import SentenceChunkerConfig
436
448
  from .sentence_chunker_config_request import SentenceChunkerConfigRequest
437
449
  from .sentence_chunking import SentenceChunking
438
450
  from .sentence_chunking_request import SentenceChunkingRequest
451
+ from .slim_composio_tool_definition import SlimComposioToolDefinition
439
452
  from .slim_deployment_read import SlimDeploymentRead
440
453
  from .slim_document import SlimDocument
441
454
  from .slim_document_document_to_document_index import SlimDocumentDocumentToDocumentIndex
455
+ from .slim_integration_auth_config_read import SlimIntegrationAuthConfigRead
456
+ from .slim_integration_read import SlimIntegrationRead
442
457
  from .slim_release_review import SlimReleaseReview
443
458
  from .slim_workflow_deployment import SlimWorkflowDeployment
444
459
  from .slim_workflow_execution_read import SlimWorkflowExecutionRead
@@ -578,6 +593,7 @@ from .token_overlapping_window_chunker_config import TokenOverlappingWindowChunk
578
593
  from .token_overlapping_window_chunker_config_request import TokenOverlappingWindowChunkerConfigRequest
579
594
  from .token_overlapping_window_chunking import TokenOverlappingWindowChunking
580
595
  from .token_overlapping_window_chunking_request import TokenOverlappingWindowChunkingRequest
596
+ from .tool_definition_integration import ToolDefinitionIntegration
581
597
  from .unit_enum import UnitEnum
582
598
  from .upload_document_response import UploadDocumentResponse
583
599
  from .upsert_test_suite_test_case_request import UpsertTestSuiteTestCaseRequest
@@ -768,12 +784,15 @@ __all__ = [
768
784
  "CompilePromptMeta",
769
785
  "ComponentsSchemasComposioExecuteToolRequest",
770
786
  "ComponentsSchemasComposioExecuteToolResponse",
787
+ "ComponentsSchemasComposioIntegrationExecConfig",
771
788
  "ComponentsSchemasComposioToolDefinition",
772
789
  "ComponentsSchemasPdfSearchResultMetaSource",
773
790
  "ComponentsSchemasPdfSearchResultMetaSourceRequest",
774
791
  "ComponentsSchemasPromptVersionBuildConfigSandbox",
792
+ "ComponentsSchemasSlimComposioToolDefinition",
775
793
  "ComposioExecuteToolRequest",
776
794
  "ComposioExecuteToolResponse",
795
+ "ComposioIntegrationExecConfig",
777
796
  "ComposioToolDefinition",
778
797
  "ConditionCombinator",
779
798
  "ConditionalNodeResult",
@@ -917,6 +936,12 @@ __all__ = [
917
936
  "InitiatedWorkflowNodeResultEvent",
918
937
  "InstructorVectorizerConfig",
919
938
  "InstructorVectorizerConfigRequest",
939
+ "IntegrationAuthConfigIntegration",
940
+ "IntegrationAuthConfigIntegrationCredential",
941
+ "IntegrationCredentialAccessType",
942
+ "IntegrationName",
943
+ "IntegrationProvider",
944
+ "IntegrationRead",
920
945
  "InvokedPort",
921
946
  "IterationStateEnum",
922
947
  "JinjaPromptBlock",
@@ -1036,6 +1061,9 @@ __all__ = [
1036
1061
  "PaginatedFolderEntityList",
1037
1062
  "PaginatedSlimDeploymentReadList",
1038
1063
  "PaginatedSlimDocumentList",
1064
+ "PaginatedSlimIntegrationAuthConfigReadList",
1065
+ "PaginatedSlimIntegrationReadList",
1066
+ "PaginatedSlimToolDefinitionList",
1039
1067
  "PaginatedSlimWorkflowDeploymentList",
1040
1068
  "PaginatedTestSuiteRunExecutionList",
1041
1069
  "PaginatedTestSuiteTestCaseList",
@@ -1126,9 +1154,12 @@ __all__ = [
1126
1154
  "SentenceChunkerConfigRequest",
1127
1155
  "SentenceChunking",
1128
1156
  "SentenceChunkingRequest",
1157
+ "SlimComposioToolDefinition",
1129
1158
  "SlimDeploymentRead",
1130
1159
  "SlimDocument",
1131
1160
  "SlimDocumentDocumentToDocumentIndex",
1161
+ "SlimIntegrationAuthConfigRead",
1162
+ "SlimIntegrationRead",
1132
1163
  "SlimReleaseReview",
1133
1164
  "SlimWorkflowDeployment",
1134
1165
  "SlimWorkflowExecutionRead",
@@ -1252,6 +1283,7 @@ __all__ = [
1252
1283
  "TokenOverlappingWindowChunkerConfigRequest",
1253
1284
  "TokenOverlappingWindowChunking",
1254
1285
  "TokenOverlappingWindowChunkingRequest",
1286
+ "ToolDefinitionIntegration",
1255
1287
  "UnitEnum",
1256
1288
  "UploadDocumentResponse",
1257
1289
  "UpsertTestSuiteTestCaseRequest",
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from .composio_integration_exec_config import ComposioIntegrationExecConfig
4
+
5
+ ComponentsSchemasComposioIntegrationExecConfig = ComposioIntegrationExecConfig
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from .slim_composio_tool_definition import SlimComposioToolDefinition
4
+
5
+ ComponentsSchemasSlimComposioToolDefinition = SlimComposioToolDefinition
@@ -0,0 +1,20 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class ComposioIntegrationExecConfig(UniversalBaseModel):
10
+ type: typing.Literal["COMPOSIO"] = "COMPOSIO"
11
+ slug: str
12
+
13
+ if IS_PYDANTIC_V2:
14
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15
+ else:
16
+
17
+ class Config:
18
+ frozen = True
19
+ smart_union = True
20
+ extra = pydantic.Extra.allow
@@ -4,6 +4,7 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .tool_definition_integration import ToolDefinitionIntegration
7
8
 
8
9
 
9
10
  class ComposioToolDefinition(UniversalBaseModel):
@@ -12,9 +13,11 @@ class ComposioToolDefinition(UniversalBaseModel):
12
13
  """
13
14
 
14
15
  provider: typing.Literal["COMPOSIO"] = "COMPOSIO"
16
+ integration: ToolDefinitionIntegration
15
17
  name: str
16
18
  description: str
17
- parameters: typing.Dict[str, typing.Optional[typing.Any]]
19
+ input_parameters: typing.Dict[str, typing.Optional[typing.Any]]
20
+ output_parameters: typing.Dict[str, typing.Optional[typing.Any]]
18
21
 
19
22
  if IS_PYDANTIC_V2:
20
23
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -0,0 +1,23 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .integration_name import IntegrationName
8
+ from .integration_provider import IntegrationProvider
9
+
10
+
11
+ class IntegrationAuthConfigIntegration(UniversalBaseModel):
12
+ id: str
13
+ provider: IntegrationProvider = "COMPOSIO"
14
+ name: IntegrationName
15
+
16
+ if IS_PYDANTIC_V2:
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
18
+ else:
19
+
20
+ class Config:
21
+ frozen = True
22
+ smart_union = True
23
+ extra = pydantic.Extra.allow
@@ -0,0 +1,19 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class IntegrationAuthConfigIntegrationCredential(UniversalBaseModel):
10
+ id: str
11
+
12
+ if IS_PYDANTIC_V2:
13
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
14
+ else:
15
+
16
+ class Config:
17
+ frozen = True
18
+ smart_union = True
19
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ IntegrationCredentialAccessType = typing.Union[typing.Literal["ENVIRONMENT", "USER"], typing.Any]