|
37 | 37 | devbox_list_disk_snapshots_params, |
38 | 38 | devbox_snapshot_disk_async_params, |
39 | 39 | devbox_write_file_contents_params, |
| 40 | + devbox_create_gateway_token_params, |
40 | 41 | ) |
41 | 42 | from ..._files import deepcopy_with_paths |
42 | 43 | from ..._types import Body, Omit, Query, Headers, NotGiven, FileTypes, omit, not_given |
|
94 | 95 | from ...lib.wait_for_status import wait_for_status, async_wait_for_status |
95 | 96 | from ...types.mcp_token_view import McpTokenView |
96 | 97 | from ...types.pty_tunnel_view import PtyTunnelView |
| 98 | +from ...types.gateway_token_view import GatewayTokenView |
97 | 99 | from ...types.shared_params.mount import Mount |
98 | 100 | from ...types.devbox_snapshot_view import DevboxSnapshotView |
99 | 101 | from ...types.shared.launch_parameters import LaunchParameters as SharedLaunchParameters |
@@ -610,6 +612,66 @@ def list( |
610 | 612 | model=DevboxView, |
611 | 613 | ) |
612 | 614 |
|
| 615 | + def create_gateway_token( |
| 616 | + self, |
| 617 | + id: str, |
| 618 | + *, |
| 619 | + gateway: str, |
| 620 | + secret: str, |
| 621 | + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. |
| 622 | + # The extra values given here take precedence over values defined on the client or passed to this method. |
| 623 | + extra_headers: Headers | None = None, |
| 624 | + extra_query: Query | None = None, |
| 625 | + extra_body: Body | None = None, |
| 626 | + timeout: float | httpx.Timeout | None | NotGiven = not_given, |
| 627 | + idempotency_key: str | None = None, |
| 628 | + ) -> GatewayTokenView: |
| 629 | + """ |
| 630 | + Mint a token that lets a running Devbox call an external API through the Runloop |
| 631 | + agent gateway, using the credential in the supplied secret. The gateway applies |
| 632 | + the credential to proxied requests, so the real API key is never exposed to the |
| 633 | + Devbox. |
| 634 | +
|
| 635 | + The token is bound to this Devbox and is only accepted for requests that |
| 636 | + originate from it. Nothing is stored on the Devbox: the token is returned to the |
| 637 | + caller and is not re-issued when the Devbox is resumed. |
| 638 | +
|
| 639 | + Args: |
| 640 | + gateway: The gateway config to use. Can be a gateway config ID (gwc_xxx) or name. |
| 641 | +
|
| 642 | + secret: The secret containing the credential. Can be a secret ID or name. |
| 643 | +
|
| 644 | + extra_headers: Send extra headers |
| 645 | +
|
| 646 | + extra_query: Add additional query parameters to the request |
| 647 | +
|
| 648 | + extra_body: Add additional JSON properties to the request |
| 649 | +
|
| 650 | + timeout: Override the client-level default timeout for this request, in seconds |
| 651 | +
|
| 652 | + idempotency_key: Specify a custom idempotency key for this request |
| 653 | + """ |
| 654 | + if not id: |
| 655 | + raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") |
| 656 | + return self._post( |
| 657 | + path_template("/v1/devboxes/{id}/create_gateway_token", id=id), |
| 658 | + body=maybe_transform( |
| 659 | + { |
| 660 | + "gateway": gateway, |
| 661 | + "secret": secret, |
| 662 | + }, |
| 663 | + devbox_create_gateway_token_params.DevboxCreateGatewayTokenParams, |
| 664 | + ), |
| 665 | + options=make_request_options( |
| 666 | + extra_headers=extra_headers, |
| 667 | + extra_query=extra_query, |
| 668 | + extra_body=extra_body, |
| 669 | + timeout=timeout, |
| 670 | + idempotency_key=idempotency_key, |
| 671 | + ), |
| 672 | + cast_to=GatewayTokenView, |
| 673 | + ) |
| 674 | + |
613 | 675 | def create_mcp_token( |
614 | 676 | self, |
615 | 677 | id: str, |
@@ -2386,6 +2448,66 @@ def list( |
2386 | 2448 | model=DevboxView, |
2387 | 2449 | ) |
2388 | 2450 |
|
| 2451 | + async def create_gateway_token( |
| 2452 | + self, |
| 2453 | + id: str, |
| 2454 | + *, |
| 2455 | + gateway: str, |
| 2456 | + secret: str, |
| 2457 | + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. |
| 2458 | + # The extra values given here take precedence over values defined on the client or passed to this method. |
| 2459 | + extra_headers: Headers | None = None, |
| 2460 | + extra_query: Query | None = None, |
| 2461 | + extra_body: Body | None = None, |
| 2462 | + timeout: float | httpx.Timeout | None | NotGiven = not_given, |
| 2463 | + idempotency_key: str | None = None, |
| 2464 | + ) -> GatewayTokenView: |
| 2465 | + """ |
| 2466 | + Mint a token that lets a running Devbox call an external API through the Runloop |
| 2467 | + agent gateway, using the credential in the supplied secret. The gateway applies |
| 2468 | + the credential to proxied requests, so the real API key is never exposed to the |
| 2469 | + Devbox. |
| 2470 | +
|
| 2471 | + The token is bound to this Devbox and is only accepted for requests that |
| 2472 | + originate from it. Nothing is stored on the Devbox: the token is returned to the |
| 2473 | + caller and is not re-issued when the Devbox is resumed. |
| 2474 | +
|
| 2475 | + Args: |
| 2476 | + gateway: The gateway config to use. Can be a gateway config ID (gwc_xxx) or name. |
| 2477 | +
|
| 2478 | + secret: The secret containing the credential. Can be a secret ID or name. |
| 2479 | +
|
| 2480 | + extra_headers: Send extra headers |
| 2481 | +
|
| 2482 | + extra_query: Add additional query parameters to the request |
| 2483 | +
|
| 2484 | + extra_body: Add additional JSON properties to the request |
| 2485 | +
|
| 2486 | + timeout: Override the client-level default timeout for this request, in seconds |
| 2487 | +
|
| 2488 | + idempotency_key: Specify a custom idempotency key for this request |
| 2489 | + """ |
| 2490 | + if not id: |
| 2491 | + raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") |
| 2492 | + return await self._post( |
| 2493 | + path_template("/v1/devboxes/{id}/create_gateway_token", id=id), |
| 2494 | + body=await async_maybe_transform( |
| 2495 | + { |
| 2496 | + "gateway": gateway, |
| 2497 | + "secret": secret, |
| 2498 | + }, |
| 2499 | + devbox_create_gateway_token_params.DevboxCreateGatewayTokenParams, |
| 2500 | + ), |
| 2501 | + options=make_request_options( |
| 2502 | + extra_headers=extra_headers, |
| 2503 | + extra_query=extra_query, |
| 2504 | + extra_body=extra_body, |
| 2505 | + timeout=timeout, |
| 2506 | + idempotency_key=idempotency_key, |
| 2507 | + ), |
| 2508 | + cast_to=GatewayTokenView, |
| 2509 | + ) |
| 2510 | + |
2389 | 2511 | async def create_mcp_token( |
2390 | 2512 | self, |
2391 | 2513 | id: str, |
@@ -3700,6 +3822,9 @@ def __init__(self, devboxes: DevboxesResource) -> None: |
3700 | 3822 | self.list = to_raw_response_wrapper( |
3701 | 3823 | devboxes.list, |
3702 | 3824 | ) |
| 3825 | + self.create_gateway_token = to_raw_response_wrapper( |
| 3826 | + devboxes.create_gateway_token, |
| 3827 | + ) |
3703 | 3828 | self.create_mcp_token = to_raw_response_wrapper( |
3704 | 3829 | devboxes.create_mcp_token, |
3705 | 3830 | ) |
@@ -3802,6 +3927,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None: |
3802 | 3927 | self.list = async_to_raw_response_wrapper( |
3803 | 3928 | devboxes.list, |
3804 | 3929 | ) |
| 3930 | + self.create_gateway_token = async_to_raw_response_wrapper( |
| 3931 | + devboxes.create_gateway_token, |
| 3932 | + ) |
3805 | 3933 | self.create_mcp_token = async_to_raw_response_wrapper( |
3806 | 3934 | devboxes.create_mcp_token, |
3807 | 3935 | ) |
@@ -3904,6 +4032,9 @@ def __init__(self, devboxes: DevboxesResource) -> None: |
3904 | 4032 | self.list = to_streamed_response_wrapper( |
3905 | 4033 | devboxes.list, |
3906 | 4034 | ) |
| 4035 | + self.create_gateway_token = to_streamed_response_wrapper( |
| 4036 | + devboxes.create_gateway_token, |
| 4037 | + ) |
3907 | 4038 | self.create_mcp_token = to_streamed_response_wrapper( |
3908 | 4039 | devboxes.create_mcp_token, |
3909 | 4040 | ) |
@@ -4006,6 +4137,9 @@ def __init__(self, devboxes: AsyncDevboxesResource) -> None: |
4006 | 4137 | self.list = async_to_streamed_response_wrapper( |
4007 | 4138 | devboxes.list, |
4008 | 4139 | ) |
| 4140 | + self.create_gateway_token = async_to_streamed_response_wrapper( |
| 4141 | + devboxes.create_gateway_token, |
| 4142 | + ) |
4009 | 4143 | self.create_mcp_token = async_to_streamed_response_wrapper( |
4010 | 4144 | devboxes.create_mcp_token, |
4011 | 4145 | ) |
|
0 commit comments