diff --git a/toolkits/vercel_api/.pre-commit-config.yaml b/toolkits/vercel_api/.pre-commit-config.yaml new file mode 100644 index 00000000..9d249221 --- /dev/null +++ b/toolkits/vercel_api/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +files: ^.*/vercel_api/.* +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: "v4.4.0" + hooks: + - id: check-case-conflict + - id: check-merge-conflict + - id: check-toml + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.6.7 + hooks: + - id: ruff + args: [--fix] + - id: ruff-format diff --git a/toolkits/vercel_api/.ruff.toml b/toolkits/vercel_api/.ruff.toml new file mode 100644 index 00000000..5f378f51 --- /dev/null +++ b/toolkits/vercel_api/.ruff.toml @@ -0,0 +1,47 @@ +target-version = "py310" +line-length = 100 +fix = true + +[lint] +ignore = [ + "E501", # Line too long - auto-generated files have long lines +] +select = [ + # flake8-2020 + "YTT", + # flake8-bandit + "S", + # flake8-bugbear + "B", + # flake8-builtins + "A", + # flake8-comprehensions + "C4", + # flake8-debugger + "T10", + # flake8-simplify + "SIM", + # isort + "I", + # mccabe + "C90", + # pycodestyle + "E", "W", + # pyflakes + "F", + # pygrep-hooks + "PGH", + # pyupgrade + "UP", + # ruff + "RUF", + # tryceratops + "TRY", +] + +[lint.per-file-ignores] +"**/tests/*" = ["S101"] + +[format] +preview = true +skip-magic-trailing-comma = false diff --git a/toolkits/vercel_api/LICENSE b/toolkits/vercel_api/LICENSE new file mode 100644 index 00000000..dfbb8b76 --- /dev/null +++ b/toolkits/vercel_api/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025, Arcade AI + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/toolkits/vercel_api/Makefile b/toolkits/vercel_api/Makefile new file mode 100644 index 00000000..86da492a --- /dev/null +++ b/toolkits/vercel_api/Makefile @@ -0,0 +1,54 @@ +.PHONY: help + +help: + @echo "🛠️ github Commands:\n" + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.PHONY: install +install: ## Install the uv environment and install all packages with dependencies + @echo "🚀 Creating virtual environment and installing all packages using uv" + @uv sync --active --all-extras --no-sources + @if [ -f .pre-commit-config.yaml ]; then uv run --no-sources pre-commit install; fi + @echo "✅ All packages and dependencies installed via uv" + +.PHONY: install-local +install-local: ## Install the uv environment and install all packages with dependencies with local Arcade sources + @echo "🚀 Creating virtual environment and installing all packages using uv" + @uv sync --active --all-extras + @if [ -f .pre-commit-config.yaml ]; then uv run pre-commit install; fi + @echo "✅ All packages and dependencies installed via uv" +.PHONY: build +build: clean-build ## Build wheel file using poetry + @echo "🚀 Creating wheel file" + uv build + +.PHONY: clean-build +clean-build: ## clean build artifacts + @echo "🗑️ Cleaning dist directory" + rm -rf dist + +.PHONY: test +test: ## Test the code with pytest + @echo "🚀 Testing code: Running pytest" + @uv run --no-sources pytest -W ignore -v --cov --cov-config=pyproject.toml --cov-report=xml + +.PHONY: coverage +coverage: ## Generate coverage report + @echo "coverage report" + @uv run --no-sources coverage report + @echo "Generating coverage report" + @uv run --no-sources coverage html + +.PHONY: bump-version +bump-version: ## Bump the version in the pyproject.toml file by a patch version + @echo "🚀 Bumping version in pyproject.toml" + uv version --no-sources --bump patch + +.PHONY: check +check: ## Run code quality tools. + @if [ -f .pre-commit-config.yaml ]; then\ + echo "🚀 Linting code: Running pre-commit";\ + uv run --no-sources pre-commit run -a;\ + fi + @echo "🚀 Static type checking: Running mypy" + @uv run --no-sources mypy --config-file=pyproject.toml diff --git a/toolkits/vercel_api/arcade_vercel_api/__init__.py b/toolkits/vercel_api/arcade_vercel_api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/toolkits/vercel_api/arcade_vercel_api/tools/__init__.py b/toolkits/vercel_api/arcade_vercel_api/tools/__init__.py new file mode 100644 index 00000000..f06c3029 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/tools/__init__.py @@ -0,0 +1,13621 @@ +"""Arcade Starter Tools for Vercel + +DO NOT EDIT THIS MODULE DIRECTLY. + +THIS MODULE WAS AUTO-GENERATED BY TRANSPILING THE API STARTER TOOL JSON DEFINITIONS +IN THE ../wrapper_tools DIRECTORY INTO PYTHON CODE. ANY CHANGES TO THIS MODULE WILL +BE OVERWRITTEN BY THE TRANSPILER. +""" + +import asyncio +import json +from enum import Enum +from typing import Annotated, Any + +import httpx +import jsonschema +from arcade_tdk import ToolContext, tool +from arcade_tdk.errors import RetryableToolError + +from .request_body_schemas import REQUEST_BODY_SCHEMAS + +# Retry configuration +INITIAL_RETRY_DELAY = 0.5 # seconds + +HTTP_CLIENT = httpx.AsyncClient( + timeout=httpx.Timeout(60.0, connect=10.0), + limits=httpx.Limits(max_keepalive_connections=20, max_connections=100), + transport=httpx.AsyncHTTPTransport(retries=3), + http2=True, + follow_redirects=True, +) + + +class ToolMode(str, Enum): + """Mode for tools with complex request bodies.""" + + GET_REQUEST_SCHEMA = "get_request_schema" + EXECUTE = "execute" + + +def remove_none_values(data: dict[str, Any]) -> dict[str, Any]: + return {k: v for k, v in data.items() if v is not None} + + +async def make_request( + url: str, + method: str, + params: dict[str, Any] | None = None, + headers: dict[str, Any] | None = None, + content: str | None = None, + data: dict[str, Any] | None = None, + auth: tuple[str, str] | None = None, + max_retries: int = 3, +) -> httpx.Response: + """Make an HTTP request with retry logic for 5xx server errors.""" + for attempt in range(max_retries): + try: + response = await HTTP_CLIENT.request( + url=url, + auth=auth, + method=method, + params=params, + headers=headers, + content=content, + ) + response.raise_for_status() + except httpx.HTTPStatusError as e: + # Only retry on 5xx server errors + if e.response.status_code >= 500 and attempt < max_retries - 1: + # Exponential backoff: 0.5s, 1s, 2s + await asyncio.sleep(INITIAL_RETRY_DELAY * (2**attempt)) + continue + # Re-raise for 4xx errors or if max retries reached + raise + except httpx.RequestError: + # Don't retry request errors (network issues are handled by transport) + raise + else: + return response + + # This should never be reached, but satisfies type checker + raise httpx.RequestError("Max retries exceeded") # noqa: TRY003 + + +async def make_request_with_schema_validation( + url: str, + method: str, + request_data: dict[str, Any], + schema: dict[str, Any], + params: dict[str, Any] | None = None, + headers: dict[str, Any] | None = None, + max_retries: int = 3, +) -> httpx.Response: + """Make an HTTP request with schema validation on format errors.""" + try: + response = await make_request( + url=url, + method=method, + params=params, + headers=headers, + content=json.dumps(request_data), + max_retries=max_retries, + ) + except httpx.HTTPStatusError as e: + # Only provide schema validation for format-related errors + if e.response.status_code in (400, 422): + # Run validation to provide additional context + is_valid, validation_error = validate_json_against_schema(request_data, schema) + + api_error_details = f"API returned {e.response.status_code}: {e.response.text}" + + if not is_valid: + # Schema validation found issues - additional context + additional_context = ( + f"{api_error_details}\n\n" + f"Schema validation found the following issues:\n" + f"{validation_error}" + ) + else: + # Schema validation passed - just show API error + additional_context = api_error_details + + raise RetryableToolError( + message=(f"API request failed with validation error: {e.response.status_code}"), + developer_message=api_error_details, + additional_prompt_content=additional_context, + ) from e + else: + # For non-validation errors, re-raise as-is + raise + else: + return response + + +def validate_json_against_schema( + json_data: dict[str, Any], schema: dict[str, Any] +) -> tuple[bool, str | None]: + """Validate JSON data against an OpenAPI/JSON Schema. + + This provides full JSON Schema Draft 7 validation including: + - Required fields, types, enums + - Pattern validation (regex) + - Format validation (email, uuid, date-time, etc.) + - Min/max length and values + - oneOf, anyOf, allOf + - And all other JSON Schema features + + Args: + json_data: The JSON data to validate + schema: The JSON Schema to validate against + + Returns: + Tuple of (is_valid, error_messages). If valid, error_messages is None. + If invalid, error_messages contains all validation errors. + """ + try: + validator = jsonschema.Draft7Validator( + schema, format_checker=jsonschema.Draft7Validator.FORMAT_CHECKER + ) + # Collect ALL validation errors + errors = list(validator.iter_errors(json_data)) + if errors: + # Format all errors with their paths + error_messages = [] + for error in errors: + error_path = ".".join(str(p) for p in error.path) if error.path else "root" + error_messages.append(f"{error.message} at {error_path}") + # Join all errors with newlines + return False, "\n".join(error_messages) + else: + return True, None + except jsonschema.SchemaError as e: + return False, f"Invalid schema: {e.message}" + except Exception as e: + return False, f"Validation error: {e!s}" + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def read_access_group( + context: ToolContext, + access_group_id_or_name: Annotated[ + str, "The ID or name of the access group to retrieve details for." + ], + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The Team slug used to perform the request on behalf of the specified team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'readAccessGroup'."]: + """Retrieve details of a specific access group. + + Use this tool to fetch information about an access group by its ID or name. It helps in obtaining the detailed configuration and properties of the specific access group.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{idOrName}".format( # noqa: UP032 + idOrName=access_group_id_or_name + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_access_group( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + access_group_id_or_name: Annotated[ + str | None, + "The ID or name of the access group to update. Use either the unique identifier or the group's name to specify which access group you want to modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team on whose behalf the request is performed. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The identifier for the team, used to perform the request on its behalf. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateAccessGroup'."]: + """Update metadata for an access group. + + Use this tool to update the metadata of a specified access group by its ID or name. This is helpful when you need to modify access controls or group settings. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEACCESSGROUP_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not access_group_id_or_name: + missing_params.append(("access_group_id_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEACCESSGROUP_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEACCESSGROUP_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/access-groups/{idOrName}".format( # noqa: UP032 + idOrName=access_group_id_or_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEACCESSGROUP_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_access_group( + context: ToolContext, + group_id_or_name: Annotated[str, "The ID or name of the access group to be deleted."], + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, + "The slug for the team on whose behalf the request will be made. This identifies the team uniquely.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteAccessGroup'."]: + """Deletes an access group by ID or name. + + Use this tool to delete an access group on Vercel by specifying the group's ID or name. It is useful for managing and updating your access control configurations.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{idOrName}".format(idOrName=group_id_or_name), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_access_group_members( + context: ToolContext, + access_group_id_or_name: Annotated[ + str, "Specify the ID or name of the access group to list its members." + ], + continuation_cursor_for_paging: Annotated[ + str | None, "Cursor used to retrieve the next page of access group members." + ] = None, + member_limit: Annotated[ + int | None, "Specify the maximum number of access group members to return." + ] = None, + member_search_query: Annotated[ + str | None, "Search for members using their name, username, or email." + ] = None, + team_identifier: Annotated[ + str | None, "The Team identifier for which to list access group members." + ] = None, + team_slug: Annotated[ + str | None, "The unique slug of the team for which you want to list access group members." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listAccessGroupMembers'."]: + """Retrieve members of a specific access group. + + This tool calls the API to list all members within a specified access group. Use it to retrieve member information for management or review purposes.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{idOrName}/members".format( # noqa: UP032 + idOrName=access_group_id_or_name + ), + method="GET", + params=remove_none_values({ + "limit": member_limit, + "next": continuation_cursor_for_paging, + "search": member_search_query, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_access_groups( + context: ToolContext, + access_groups_limit: Annotated[ + int | None, "Specify the maximum number of access groups to be returned in the response." + ] = None, + continuation_cursor_for_next_page: Annotated[ + str | None, "A string to retrieve the next page of results using a continuation cursor." + ] = None, + max_projects_in_response: Annotated[ + int | None, "Specify the maximum number of projects to include in the response list." + ] = None, + members_inclusion_limit: Annotated[ + int | None, "Specify the number of members to include in the response." + ] = None, + project_id: Annotated[ + str | None, "Filter access groups by the specified project ID in Vercel." + ] = None, + search_access_groups_by_name: Annotated[ + str | None, "Provide a name or keyword to search for specific access groups." + ] = None, + team_identifier: Annotated[ + str | None, + "The ID of the team for which to list access groups. Specify this to perform the request on behalf of a specific team.", + ] = None, + team_slug: Annotated[ + str | None, "A string representing the Team slug to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listAccessGroups'."]: + """Retrieve a list of access groups within Vercel. + + Use this tool to obtain a detailed list of all access groups available in your Vercel account.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups", + method="GET", + params=remove_none_values({ + "projectId": project_id, + "search": search_access_groups_by_name, + "membersLimit": members_inclusion_limit, + "projectsLimit": max_projects_in_response, + "limit": access_groups_limit, + "next": continuation_cursor_for_next_page, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_access_group( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The identifier of the team on whose behalf the access group is being created. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The unique slug identifier for the team to create the access group for. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createAccessGroup'."]: + """Create a new access group on Vercel. + + This tool should be called when there is a need to create a new access group in Vercel. It facilitates setting up user permissions and organization in projects. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEACCESSGROUP_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEACCESSGROUP_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEACCESSGROUP_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/access-groups", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEACCESSGROUP_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_access_group_projects( + context: ToolContext, + access_group_identifier: Annotated[ + str, "The ID or name of the Access Group to list its projects." + ], + continuation_cursor: Annotated[ + str | None, + "The continuation cursor used to retrieve the next page of results in a paginated response.", + ] = None, + max_project_count: Annotated[ + int | None, "Maximum number of access group projects to return. Must be an integer." + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to perform the request on behalf of. This specifies which team's access group projects to list.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. Specify to filter projects by team.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listAccessGroupProjects'."]: + """Retrieve a list of projects for a given access group. + + This tool should be called to obtain a list of projects associated with a specific access group by providing the group ID or name.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{idOrName}/projects".format( # noqa: UP032 + idOrName=access_group_identifier + ), + method="GET", + params=remove_none_values({ + "limit": max_project_count, + "next": continuation_cursor, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_access_group_project( + context: ToolContext, + access_group_id_or_name: Annotated[ + str, + "Identifier or name of the access group to associate with the project. It helps specify which access group the new project will be part of.", + ], + project_id: Annotated[str, "The unique ID of the project to be added to the access group."], + project_role: Annotated[ + str, + "The role to be assigned to the project within the access group. Options: 'ADMIN', 'PROJECT_VIEWER', 'PROJECT_DEVELOPER'.", + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The unique identifier slug for the team on whose behalf the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createAccessGroupProject'."]: + """Create a project within a specific access group.""" + request_data = remove_none_values({"projectId": project_id, "role": project_role}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects".format( # noqa: UP032 + accessGroupIdOrName=access_group_id_or_name + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_access_group_project( + context: ToolContext, + access_group_id_or_name: Annotated[ + str, "The identifier or name of the access group for the project." + ], + project_id: Annotated[ + str, + "The unique identifier for the project within the access group. It is required to fetch the project details.", + ], + team_identifier: Annotated[ + str | None, + "The identifier of the team to perform the request on behalf of. This should be a string representing the team's unique ID.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. Provide the specific slug associated with the team.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'readAccessGroupProject'."]: + """Retrieve details of a specific access group project. + + Use this tool to obtain information about a specific project within an access group by providing the access group identifier or name and the project ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}".format( # noqa: UP032 + accessGroupIdOrName=access_group_id_or_name, projectId=project_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_access_group_project( + context: ToolContext, + access_group_id_or_name: Annotated[ + str, "Specify the access group by its ID or name to target the update." + ], + project_id: Annotated[ + str, "The unique identifier for the project to update in the access group." + ], + project_role: Annotated[ + str, + "Specify the project role to add to the access group. Choose from 'ADMIN', 'PROJECT_VIEWER', or 'PROJECT_DEVELOPER'.", + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The unique identifier for the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateAccessGroupProject'."]: + """Update an access group project in Vercel. + + This tool allows updating the details of a specific access group project in Vercel. It should be called when modifications to an existing access group project are needed, such as changing roles or permissions.""" + request_data = remove_none_values({"role": project_role}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}".format( # noqa: UP032 + accessGroupIdOrName=access_group_id_or_name, projectId=project_id + ), + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_access_group_project( + context: ToolContext, + access_group_id_or_name: Annotated[ + str, + "Enter the access group ID or name to identify the specific group for project deletion.", + ], + project_id: Annotated[str, "The ID of the project you want to delete from the access group."], + team_identifier: Annotated[ + str | None, "The ID of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the deletion on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteAccessGroupProject'."]: + """Delete a specified access group project on Vercel. + + Use this tool to delete a specific access group project on Vercel by providing the access group ID or name and project ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}".format( # noqa: UP032 + accessGroupIdOrName=access_group_id_or_name, projectId=project_id + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def record_cache_events( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of. Used to specify which team's cache usage events are being recorded. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. It identifies the specific team within Vercel. Only used when mode is 'execute'.", + ] = None, + ci_environment: Annotated[ + str | None, + "The continuous integration or delivery environment where this artifact is downloaded. Only used when mode is 'execute'.", + ] = None, + is_interactive_shell: Annotated[ + int | None, + "Set to 1 if the client is an interactive shell, otherwise set to 0. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'recordEvents'."]: + """Record artifacts cache usage events for Vercel. + + Use this tool to log cache usage events, including types 'HIT' or 'MISS', and sources 'LOCAL' or 'REMOTE'. Useful for tracking cache performance and usage. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["RECORDCACHEEVENTS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["RECORDCACHEEVENTS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["RECORDCACHEEVENTS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v8/artifacts/events", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["RECORDCACHEEVENTS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "x-artifact-client-ci": ci_environment, + "x-artifact-client-interactive": is_interactive_shell, + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def check_remote_caching_status( + context: ToolContext, + team_identifier: Annotated[ + str | None, "The unique identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The unique slug identifier for the team on whose behalf the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'status'."]: + """Check the status of Remote Caching. + + This tool is used to determine if Remote Caching is currently enabled, disabled, or disabled due to usage limits. It provides a quick way to verify the status of caching in Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/artifacts/status", + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def download_cache_artifact( + context: ToolContext, + artifact_hash: Annotated[str, "The unique hash identifier for the cache artifact to download."], + ci_environment: Annotated[ + str | None, + "Specify the continuous integration or delivery environment from which the artifact is downloaded.", + ] = None, + interactive_shell_client: Annotated[ + int | None, "Set to 1 if the client is an interactive shell; otherwise set to 0." + ] = None, + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of, identifying which team's artifact to download.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'downloadArtifact'."]: + """Downloads a cache artifact using its hash identifier. + + Use this tool to retrieve a cache artifact from Vercel by specifying its hash. The artifact is returned as an octet-stream. Ensure to verify the content-length header and response body for correctness.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/artifacts/{hash}".format(hash=artifact_hash), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "x-artifact-client-ci": ci_environment, + "x-artifact-client-interactive": interactive_shell_client, + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def query_artifacts_info( + context: ToolContext, + artifact_hashes: Annotated[list[str], "An array of artifact hashes to query information for."], + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug identifying the team for which the request is performed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'artifactQuery'."]: + """Retrieve detailed information about multiple artifacts. + + This tool queries detailed information about an array of artifacts. It should be called when you need specifics or insights regarding multiple artifacts from the Vercel platform.""" + request_data = remove_none_values({"hashes": artifact_hashes}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/artifacts", + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_new_deployment_check( + context: ToolContext, + block_deployment_on_failure: Annotated[ + bool, "Indicates if the check should block a deployment from succeeding." + ], + check_name: Annotated[ + str, "The name of the check being created. This is required to identify the check purpose." + ], + deployment_id: Annotated[ + str, "The unique identifier of the deployment to create the check for." + ], + allow_rerun_request: Annotated[ + bool | None, "Allow users to request a rerun of the check if it fails. Use a boolean value." + ] = None, + details_url: Annotated[ + str | None, + "A URL that provides further details about the check. Expected format is a valid URL string.", + ] = None, + external_identifier: Annotated[ + str | None, "A unique identifier used as an external reference for the check." + ] = None, + page_path_to_check: Annotated[ + str | None, + "Specify the path of the page that is being checked. This should be a string value representing the specific page path for the deployment check.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier used to perform the request on behalf of a team." + ] = None, + team_slug: Annotated[ + str | None, "The slug (unique identifier) of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createCheck'."]: + """Create a new deployment check using Vercel API. + + Use this tool to initiate a new check for a specific deployment in Vercel. This requires providing a deployment ID and must be authorized with OAuth2 to avoid errors.""" + request_data = remove_none_values({ + "name": check_name, + "path": page_path_to_check, + "blocking": block_deployment_on_failure, + "detailsUrl": details_url, + "externalId": external_identifier, + "rerequestable": allow_rerun_request, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/deployments/{deploymentId}/checks".format( # noqa: UP032 + deploymentId=deployment_id + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_deployment_checks( + context: ToolContext, + deployment_id: Annotated[str, "The ID of the deployment to retrieve checks for."], + team_identifier: Annotated[ + str | None, + "The ID of the team to perform the request for. This identifies which team's context is used.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug used to perform the request. This identifies the team under which the deployment was made.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getAllChecks'."]: + """List all checks for a specific deployment. + + Fetches and lists all checks created for a given deployment using its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/deployments/{deploymentId}/checks".format( # noqa: UP032 + deploymentId=deployment_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_deployment_check_details( + context: ToolContext, + check_identifier: Annotated[str, "The unique identifier of the check to fetch details for."], + deployment_id: Annotated[ + str, "The ID of the deployment for which the check details are required." + ], + team_id: Annotated[ + str | None, "The identifier for the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifier for the team to perform the request on behalf of. It uniquely represents the team within the system.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getCheck'."]: + """Retrieve details for a specific deployment check. + + This tool is used to obtain detailed information about a single check within a specified deployment. Use it when you need insights or results from a specific deployment check.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/deployments/{deploymentId}/checks/{checkId}".format( # noqa: UP032 + deploymentId=deployment_id, checkId=check_identifier + ), + method="GET", + params=remove_none_values({"teamId": team_id, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_existing_check( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + deployment_id: Annotated[ + str | None, + "The identifier for the deployment to update the check for. Ensure it is a valid string. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + check_identifier: Annotated[ + str | None, + "The unique identifier of the check to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier of the Team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. This identifies the team within Vercel. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateCheck'."]: + """Updates an existing deployment check. + + Use this tool to update an existing check in a deployment on Vercel. Ensure that OAuth2 authentication is used to avoid errors. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEEXISTINGCHECK_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not deployment_id: + missing_params.append(("deployment_id", "path")) + if not check_identifier: + missing_params.append(("check_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXISTINGCHECK_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXISTINGCHECK_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/deployments/{deploymentId}/checks/{checkId}".format( # noqa: UP032 + deploymentId=deployment_id, checkId=check_identifier + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEEXISTINGCHECK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def rerequest_check( + context: ToolContext, + check_to_rerun_id: Annotated[ + str, + "The ID of the check you want to rerun. This identifies the specific failed check to retry.", + ], + deployment_id: Annotated[ + str, + "The ID of the deployment for which the check needs to be rerun. This specifies the which specific deployment's check is to be retried.", + ], + mark_check_as_running: Annotated[ + bool | None, "Mark the check as running if set to true when re-requested." + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of. It specifies which team's context the request should be executed in.", + ] = None, + team_slug: Annotated[ + str | None, + "The identifier for the team to perform the check rerequest on behalf of. Use the team's slug format.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'rerequestCheck'."]: + """Retries a failed deployment check. + + Use this tool to retry a specific deployment check that has failed. Ideal when you need to manually reinvoke a check due to a transient failure or updated conditions.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/deployments/{deploymentId}/checks/{checkId}/rerequest".format( # noqa: UP032 + deploymentId=deployment_id, checkId=check_to_rerun_id + ), + method="POST", + params=remove_none_values({ + "autoUpdate": mark_check_as_running, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_project_data_cache( + context: ToolContext, + project_id: Annotated[ + str, "The unique identifier for the Vercel project to update the data cache." + ], + disable_data_cache: Annotated[ + bool | None, + "Set to true to disable the project's data cache, or false to enable it. Default is false.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique Team ID to perform the request on behalf of. Required for targeted updates.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. Use this to specify which team's project to update.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateProjectDataCache'."]: + """Update the data cache for a Vercel project. + + This tool updates the data cache feature on a specified Vercel project. Use it when you need to refresh or modify the data cache to ensure the project is up-to-date with the latest changes.""" + request_data = remove_none_values({"disabled": disable_data_cache}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/data-cache/projects/{projectId}".format( # noqa: UP032 + projectId=project_id + ), + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def fetch_deployment_logs( + context: ToolContext, + deployment_identifier_or_hostname: Annotated[ + str, "The unique identifier or hostname of the deployment to fetch logs for." + ], + build_event_delimiter: Annotated[ + float | None, + "Specify the delimiter type for separating logged events. Use '0' for no delimiter and '1' for an alternative separation method.", + ] = None, + deployment_build_id: Annotated[ + str | None, + "The unique identifier for the deployment build for which logs are to be retrieved.", + ] = None, + enable_live_streaming: Annotated[ + float | None, + "Set to '1' to enable live streaming of events as they happen. Use '0' to disable live streaming.", + ] = None, + event_order: Annotated[ + str | None, + "Specifies the order of returned events by timestamp. Use 'forward' for chronological order or 'backward' for reverse order.", + ] = "forward", + fetch_until_timestamp: Annotated[ + float | None, "Timestamp up to which the build logs should be retrieved." + ] = None, + filter_by_status_code: Annotated[ + str | None, "Specify the HTTP status code range to filter deployment events." + ] = None, + include_builds: Annotated[ + float | None, "Specify whether to include build events (1) or not (0) in the response." + ] = None, + maximum_events_to_return: Annotated[ + float | None, "Specify the max number of events to return. Use `-1` for all available logs." + ] = None, + start_timestamp_for_logs: Annotated[ + float | None, + "Timestamp from which to start retrieving build logs. Provide in milliseconds.", + ] = None, + team_identifier: Annotated[ + str | None, "Identifies the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, + "The unique identifier (slug) of the Team for which the request is made. Used to specify the team context.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDeploymentEvents'."]: + """Retrieve build logs for a specific deployment by ID. + + Use this tool to access the build logs or events of a deployment using its deployment ID and build ID. It can stream logs continuously or return them in JSON format based on input parameters.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v3/deployments/{idOrUrl}/events".format( # noqa: UP032 + idOrUrl=deployment_identifier_or_hostname + ), + method="GET", + params=remove_none_values({ + "direction": event_order, + "follow": enable_live_streaming, + "limit": maximum_events_to_return, + "name": deployment_build_id, + "since": start_timestamp_for_logs, + "until": fetch_until_timestamp, + "statusCode": filter_by_status_code, + "delimiter": build_event_delimiter, + "builds": include_builds, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_integration_deployment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + deployment_id: Annotated[ + str | None, + "The unique identifier for the deployment to update. This is required to specify which deployment's integration action should be modified. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + integration_configuration_id: Annotated[ + str | None, + "The ID of the integration configuration to update. This is required to specify which integration setup the action applies to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_id: Annotated[ + str | None, + "The unique identifier for the resource to be updated in the deployment integration. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + deployment_action: Annotated[ + str | None, + "Specifies the action to be taken for the deployment integration. Expected as a descriptive string indicating the action type. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'update-integration-deployment-action'." +]: + """Update a deployment integration action. + + Use this tool to update the action of a deployment integration for a specific installation. It is ideal for modifying settings or actions related to deployment integrations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEINTEGRATIONDEPLOYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not deployment_id: + missing_params.append(("deployment_id", "path")) + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_id: + missing_params.append(("resource_id", "path")) + if not deployment_action: + missing_params.append(("deployment_action", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINTEGRATIONDEPLOYMENT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINTEGRATIONDEPLOYMENT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/deployments/{deploymentId}/integrations/{integrationConfigurationId}/resources/{resourceId}/actions/{action}".format( # noqa: UP032 + deploymentId=deployment_id, + integrationConfigurationId=integration_configuration_id, + resourceId=resource_id, + action=deployment_action, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINTEGRATIONDEPLOYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_deployment_info( + context: ToolContext, + deployment_id_or_url: Annotated[ + str, "The unique identifier or hostname of the deployment to retrieve details for." + ], + include_git_repo_information: Annotated[ + str | None, "Set to 'true' to include Git repository details or 'false' to exclude them." + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The Team slug for performing the request on behalf of that team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDeployment'."]: + """Retrieve deployment information by ID or URL. + + Use this tool to get details about a Vercel deployment using either its ID or URL. This is useful for obtaining deployment specifics, especially when the user or team owns the deployment.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v13/deployments/{idOrUrl}".format(idOrUrl=deployment_id_or_url), # noqa: UP032 + method="GET", + params=remove_none_values({ + "withGitRepoInfo": include_git_repo_information, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_vercel_deployment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + force_new_deployment: Annotated[ + str | None, + "Set to 'true' to force a new deployment even if a similar one exists. Only used when mode is 'execute'.", + ] = None, + skip_framework_detection_confirmation: Annotated[ + str | None, + "Set to 'true' to skip framework detection and avoid confirmation request failures. Only used when mode is 'execute'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of for creating a deployment on Vercel. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifying the team to perform the deployment on behalf of. This is essential for specifying the target team for the deployment request. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createDeployment'."]: + """Create a new deployment on Vercel. + + This tool helps create a new deployment on Vercel, ideal for deploying projects that aren't directly linked to a git repository. Use it to initiate a deployment by providing necessary files either as references or inlined content. It also allows redeployment of previous deployments by specifying a deployment ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEVERCELDEPLOYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEVERCELDEPLOYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEVERCELDEPLOYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v13/deployments", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEVERCELDEPLOYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "forceNew": force_new_deployment, + "skipAutoDetectionConfirmation": skip_framework_detection_confirmation, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def cancel_deployment( + context: ToolContext, + deployment_id: Annotated[str, "The unique identifier of the deployment to cancel."], + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of when canceling a deployment.", + ] = None, + team_slug: Annotated[ + str | None, "The Team slug for which the deployment cancellation should be performed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'cancelDeployment'."]: + """Cancel a currently building deployment. + + Use this tool to cancel a deployment that is currently in progress by providing its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v12/deployments/{id}/cancel".format(id=deployment_id), # noqa: UP032 + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def purchase_domain( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to perform the domain purchase request. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team to perform the purchase on behalf of. This identifies the team within Vercel. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'buyDomain'."]: + """Facilitates the purchase of a specified domain. + + Call this tool to purchase a domain through Vercel's new domain acquisition endpoints. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["PURCHASEDOMAIN_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["PURCHASEDOMAIN_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["PURCHASEDOMAIN_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v5/domains/buy", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["PURCHASEDOMAIN_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_domain_price( + context: ToolContext, + domain_name: Annotated[str, "The domain name to check the purchase price for."], + domain_status_for_pricing: Annotated[ + str | None, + "Specifies the domain status ('new', 'renewal', 'transfer', 'redemption') to check the price for.", + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier for executing the request on behalf of a specific team. This is usually a unique string assigned to the team.", + ] = None, + team_slug_for_request: Annotated[ + str | None, "The slug identifier of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'checkDomainPrice'."]: + """Retrieve domain price and purchase period details. + + Use this tool to obtain the cost of purchasing a specific domain and the duration of a single purchase period, replacing the deprecated endpoint for domain price checking.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v4/domains/price", + method="GET", + params=remove_none_values({ + "name": domain_name, + "type": domain_status_for_pricing, + "teamId": team_identifier, + "slug": team_slug_for_request, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def check_domain_availability( + context: ToolContext, + domain_name: Annotated[str, "The domain name you want to check for purchase availability."], + team_identifier: Annotated[ + str | None, "The identifier of the Team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, + "The slug for the team or organization on whose behalf the request is performed.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'checkDomainStatus'."]: + """Check if a domain name is available for purchase. + + This tool checks the availability of a domain name for purchase, using the deprecated 'checkDomainStatus' endpoint from Vercel. Note that this endpoint has been replaced with 'Get availability for a domain.'""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v4/domains/status", + method="GET", + params=remove_none_values({ + "name": domain_name, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_dns_records( + context: ToolContext, + domain_name: Annotated[ + str, "The domain name for which to retrieve DNS records. Must be a valid domain." + ], + maximum_records_to_list: Annotated[ + str | None, "Specify the maximum number of DNS records to retrieve in a single request." + ] = None, + records_created_after_timestamp: Annotated[ + str | None, + "Get records created after this specified JavaScript timestamp. It filters DNS records based on the creation date.", + ] = None, + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team on whose behalf the request is made." + ] = None, + until_timestamp: Annotated[ + str | None, "Retrieve records created before the specified JavaScript timestamp." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getRecords'."]: + """Retrieve DNS records for a specified domain name. + + This tool fetches DNS records for a given domain. It returns up to 20 records by default, with additional records available through pagination.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v4/domains/{domain}/records".format(domain=domain_name), # noqa: UP032 + method="GET", + params=remove_none_values({ + "limit": maximum_records_to_list, + "since": records_created_after_timestamp, + "until": until_timestamp, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_dns_record( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + domain_name_for_dns_record: Annotated[ + str | None, + "The domain for which the DNS record will be created. Must be a valid and registered domain name. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier for performing the request. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifier for the team performing the DNS record creation. It should be a string that represents the team's unique slug. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createRecord'."]: + """Creates a DNS record for a domain. + + Use this tool to create a DNS record for a specified domain. It helps manage DNS configurations by adding new records as needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEDNSRECORD_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not domain_name_for_dns_record: + missing_params.append(("domain_name_for_dns_record", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEDNSRECORD_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEDNSRECORD_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v2/domains/{domain}/records".format( # noqa: UP032 + domain=domain_name_for_dns_record + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEDNSRECORD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_dns_record( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + dns_record_id: Annotated[ + str | None, + "The unique identifier of the DNS record to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the team performing the request. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the Team to perform the DNS update on behalf of. It is used to specify the team context for the request. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateRecord'."]: + """Update an existing DNS record for a domain. + + This tool updates an existing DNS record for a specified domain name. It should be called when changes to a DNS record are needed, such as modifying the value or type. The tool returns details of the updated record after the operation is successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEDNSRECORD_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not dns_record_id: + missing_params.append(("dns_record_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEDNSRECORD_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEDNSRECORD_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/domains/records/{recordId}".format(recordId=dns_record_id), # noqa: UP032 + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEDNSRECORD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_dns_record( + context: ToolContext, + dns_record_id: Annotated[ + str, + "The unique identifier of the DNS record to be removed. Required for specifying which record to delete.", + ], + domain_name: Annotated[ + str, "The domain from which the DNS record will be removed. Provide the full domain name." + ], + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team on whose behalf the DNS record is removed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeRecord'."]: + """Removes an existing DNS record from a domain. + + Use this tool to remove a DNS record from a specified domain. Useful when you need to delete outdated or incorrect DNS entries.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/domains/{domain}/records/{recordId}".format( # noqa: UP032 + domain=domain_name, recordId=dns_record_id + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_supported_tlds( + context: ToolContext, + team_id: Annotated[ + str | None, "The ID of the team for which to retrieve supported TLDs." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getSupportedTlds'."]: + """Retrieve a list of TLDs supported by Vercel. + + This tool provides a list of Top-Level Domains (TLDs) that are supported by Vercel. Use this tool to find out which TLDs can be managed or registered through Vercel's platform.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/tlds/supported", + method="GET", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_tld_price( + context: ToolContext, + top_level_domain: Annotated[ + str, + "The top-level domain (TLD) for which to retrieve the base price. Examples include 'com', 'net', 'org'.", + ], + registration_years: Annotated[ + str | None, + "The number of years for which the TLD registration price should be calculated. Provide this as an integer representing the duration in years.", + ] = None, + team_id: Annotated[ + str | None, "The ID of the team for which the TLD price data is requested." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getTldPrice'."]: + """Retrieve base price for a specific TLD. + + Use this tool to get the base price for a top-level domain (TLD). It does not account for premium domain pricing. For specific domain prices, refer to a different endpoint.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/tlds/{tld}/price".format(tld=top_level_domain), # noqa: UP032 + method="GET", + params=remove_none_values({"years": registration_years, "teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def domain_availability_status( + context: ToolContext, + domain_name_to_check_availability: Annotated[ + str, + "The domain name to check for availability. Must be a valid and complete domain name string.", + ], + team_identifier: Annotated[ + str | None, + "A unique identifier for the team whose domain availability is being queried. This is a string value.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomainAvailability'."]: + """Check if a domain is available for purchase. + + This tool checks the availability of a specified domain. If the domain is available, it can be purchased using the appropriate Vercel endpoints.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/availability".format( # noqa: UP032 + domain=domain_name_to_check_availability + ), + method="GET", + params=remove_none_values({"teamId": team_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def fetch_domain_price( + context: ToolContext, + domain_name: Annotated[ + str, + "The domain name to check the pricing for. Provide a fully qualified domain like 'example.com'.", + ], + number_of_years: Annotated[ + str | None, + "Specify the number of years for which the domain pricing is needed. Typically set to 1 or more.", + ] = None, + team_identifier: Annotated[ + str | None, + "A string representing the unique identifier of the team associated with the domain. This is required for specifying which team's domain pricing information should be retrieved.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomainPrice'."]: + """Retrieve price data for a specific domain from Vercel. + + Use this tool to get pricing information for a particular domain. It should be called when you need to verify or compare the cost of registering or renewing a domain via Vercel's registrar service.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/price".format(domain=domain_name), # noqa: UP032 + method="GET", + params=remove_none_values({"years": number_of_years, "teamId": team_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def check_domain_availability_bulk( + context: ToolContext, + domain_names: Annotated[ + list[str], "A list of domain names to check, with a maximum of 50 domains." + ], + team_identifier: Annotated[ + str | None, + "Unique identifier for the team or organization associated with the request. It may be required to access specific domain availability data.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getBulkAvailability'."]: + """Check availability for multiple domains. + + Use this tool to check if multiple domains are available for purchase. This can help in planning before acquiring domains via the buying endpoints.""" + request_data = remove_none_values({"domains": domain_names}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/availability", + method="POST", + params=remove_none_values({"teamId": team_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_domain_auth_code( + context: ToolContext, + domain_name: Annotated[ + str, + "The domain name for which the auth code is being requested. It should be a valid domain registered with Vercel.", + ], + team_id: Annotated[ + str | None, + "The ID representing the Vercel team associated with the domain. Required for accessing team-specific domains.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomainAuthCode'."]: + """Retrieve the auth code for transferring a domain from Vercel. + + This tool is used to obtain the auth code needed to transfer a domain from Vercel to another registrar. It should be called when a domain transfer from Vercel is intended.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/auth-code".format( # noqa: UP032 + domain=domain_name + ), + method="GET", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def purchase_domain_vercel( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + domain_name: Annotated[ + str | None, + "The domain name that you wish to purchase using Vercel's API. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_id: Annotated[ + str | None, + "The unique identifier for the team under which the domain will be purchased. This is expected to be a string. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'buySingleDomain'."]: + """Purchase a domain with Vercel's API. + + This tool allows users to purchase a single domain using Vercel's API. It should be called when a user wants to buy a domain name. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["PURCHASEDOMAINVERCEL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not domain_name: + missing_params.append(("domain_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["PURCHASEDOMAINVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["PURCHASEDOMAINVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/registrar/domains/{domain}/buy".format(domain=domain_name), # noqa: UP032 + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["PURCHASEDOMAINVERCEL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def purchase_multiple_domains( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_id: Annotated[ + str | None, + "The unique identifier for the team under which the domains will be purchased. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'buyDomains'."]: + """Purchase multiple domains simultaneously. + + Use this tool to buy several domains at once through Vercel's service. It should be called when a user wants to acquire multiple domain names in a single request. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "PURCHASEMULTIPLEDOMAINS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["PURCHASEMULTIPLEDOMAINS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["PURCHASEMULTIPLEDOMAINS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/registrar/domains/buy", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["PURCHASEMULTIPLEDOMAINS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def transfer_domain_to_vercel( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + domain_name: Annotated[ + str | None, + "The domain name to be transferred to Vercel. It should be a valid domain currently registered elsewhere. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the Vercel team requesting the domain transfer. It helps associate the domain transfer with the correct Vercel team. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'transferInDomain'."]: + """Transfer a domain to Vercel from another registrar. + + Use this tool to initiate the transfer of a domain from its current registrar to Vercel. This is useful when consolidating domain management under Vercel's services. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "TRANSFERDOMAINTOVERCEL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not domain_name: + missing_params.append(("domain_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["TRANSFERDOMAINTOVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["TRANSFERDOMAINTOVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/registrar/domains/{domain}/transfer".format( # noqa: UP032 + domain=domain_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["TRANSFERDOMAINTOVERCEL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def check_domain_transfer_status( + context: ToolContext, + domain_name: Annotated[ + str, + "Specifies the domain name to check the transfer status for. It should be a valid domain string.", + ], + team_id: Annotated[ + str | None, "The unique identifier of the team requesting the domain transfer status." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomainTransferIn'."]: + """Retrieve the transfer status of a domain. + + Use this tool to check the current transfer status of a specific domain, providing insights into progress or any issues.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/transfer".format( # noqa: UP032 + domain=domain_name + ), + method="GET", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def renew_domain( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + domain_name: Annotated[ + str | None, + "The domain name to be renewed, in string format. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team that owns the domain. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'renewDomain'."]: + """Renews a domain registration through Vercel. + + + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["RENEWDOMAIN_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not domain_name: + missing_params.append(("domain_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["RENEWDOMAIN_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["RENEWDOMAIN_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/registrar/domains/{domain}/renew".format(domain=domain_name), # noqa: UP032 + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["RENEWDOMAIN_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_domain_auto_renew( + context: ToolContext, + domain_name: Annotated[ + str, + "The domain for which you want to update the auto-renew setting. It should be a valid domain name, such as 'example.com'.", + ], + enable_auto_renew: Annotated[ + bool, "Set to true to enable auto-renewal of the domain, or false to disable it." + ], + team_id: Annotated[ + str | None, "The unique identifier for the team associated with the domain." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateDomainAutoRenew'."]: + """Update the auto-renew setting for a domain. + + Use this tool to toggle the auto-renewal option for a specific domain. Useful for managing domain renewal preferences.""" + request_data = remove_none_values({"autoRenew": enable_auto_renew}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/auto-renew".format( # noqa: UP032 + domain=domain_name + ), + method="PATCH", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_domain_nameservers( + context: ToolContext, + domain_name: Annotated[ + str, + "The domain name to update the nameservers for. Provide the full domain, e.g., 'example.com'.", + ], + nameservers_list: Annotated[ + list[str], + "A list of nameservers to set for the domain. Pass an empty list to revert to Vercel's default nameservers.", + ], + team_id: Annotated[ + str | None, + "The unique identifier for the team to which the domain belongs. If not provided, the default team context is used.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateDomainNameservers'."]: + """Update the nameservers for a domain. + + Use this tool to change the nameservers of a domain via Vercel. An empty array can be provided to revert to Vercel's default nameservers.""" + request_data = remove_none_values({"nameservers": nameservers_list}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/nameservers".format( # noqa: UP032 + domain=domain_name + ), + method="PATCH", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_domain_contact_info_schema( + context: ToolContext, + domain_name: Annotated[ + str, "The domain name for which to retrieve the TLD-specific contact information schema." + ], + team_id: Annotated[ + str | None, + "A unique identifier for the team within Vercel. Required to retrieve domain-specific contact info.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getContactInfoSchema'."]: + """Retrieve the schema for TLD-specific contact information. + + Use this tool to get the necessary contact information schema required by specific TLDs for a domain. This is helpful when additional TLD-specific details are needed for domain registration or management.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/domains/{domain}/contact-info/schema".format( # noqa: UP032 + domain=domain_name + ), + method="GET", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_domain_order_info( + context: ToolContext, + order_id: Annotated[str, "The unique ID of the domain order to retrieve information about."], + team_id: Annotated[ + str | None, + "The ID of the team associated with the domain order. This identifies the specific team within Vercel that the domain order belongs to.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getOrder'."]: + """Retrieve information about a domain order by its ID. + + Use this tool to get detailed information about a specific domain order using its unique ID. It is useful for checking the status and details of a domain order processed through the registrar.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/registrar/orders/{orderId}".format(orderId=order_id), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def fetch_domain_transfer_availability( + context: ToolContext, + domain_name: Annotated[str, "The domain name to check for transfer status or availability."], + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of. It should be a string representing the team's unique ID.", + ] = None, + team_slug: Annotated[ + str | None, "The identifier slug of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomainTransfer'."]: + """Fetch a domain's transfer status or availability. + + Use this tool to check if a domain transfer is available or to obtain the transfer status if a transfer is in progress.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/domains/{domain}/registry".format(domain=domain_name), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_domain_configuration( + context: ToolContext, + domain_name: Annotated[str, "The name of the domain to retrieve configuration details for."], + include_only_assigned_nameservers: Annotated[ + str | None, + "When true, only nameservers assigned directly to the domain are included. When false, parent zone nameservers are included if no direct assignment exists.", + ] = None, + project_id_or_name: Annotated[ + str | None, + "The project ID or name associated with the domain, used if not yet linked to a project.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team to perform the request on behalf of. It specifies which team's context to use when fetching domain configurations.", + ] = None, + team_slug: Annotated[ + str | None, "The Team slug used to perform the request on behalf of a specific team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomainConfig'."]: + """Retrieve configuration details for a specific domain. + + This tool calls the Vercel API to get the configuration settings for a given domain. It should be used when you need insights into the current setup or settings of a domain on Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v6/domains/{domain}/config".format(domain=domain_name), # noqa: UP032 + method="GET", + params=remove_none_values({ + "projectIdOrName": project_id_or_name, + "strict": include_only_assigned_nameservers, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_domain_info( + context: ToolContext, + domain_name: Annotated[str, "The name of the domain to retrieve information for."], + team_identifier: Annotated[ + str | None, + "The identifier for the team to perform the request on behalf of. Typically a unique string.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifier for the team on behalf of whom the request is made. It uniquely identifies the team in Vercel.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomain'."]: + """Retrieve information on a single domain from Vercel. + + Use this tool to get detailed information about a specific domain associated with a Vercel account or team. This can be useful for managing domains or checking their configuration.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v5/domains/{domain}".format(domain=domain_name), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_registered_domains( + context: ToolContext, + domains_created_since_timestamp: Annotated[ + float | None, "Get domains created after the specified JavaScript timestamp." + ] = None, + maximum_domains_to_list: Annotated[ + float | None, + "The maximum number of domains to include in the list returned by the request.", + ] = None, + team_id: Annotated[ + str | None, + "The unique Team identifier to retrieve domains for a specific team instead of the authenticated user.", + ] = None, + team_slug: Annotated[ + str | None, "The team slug used to perform the request on behalf of a specific team." + ] = None, + until_timestamp: Annotated[ + float | None, "Fetch domains created before this JavaScript timestamp." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDomains'."]: + """Retrieve a list of registered domains for the user or team. + + This tool fetches a list of domains registered under the authenticated user or team from Vercel. It is useful for managing or reviewing domain configurations.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v5/domains", + method="GET", + params=remove_none_values({ + "limit": maximum_domains_to_list, + "since": domains_created_since_timestamp, + "until": until_timestamp, + "teamId": team_id, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def add_new_domain_vercel( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The identifier of the Team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The identifier for the team to execute the request on behalf of. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createOrTransferDomain'."]: + """Add a new apex domain with Vercel for the user. + + Use this tool to add a new apex domain name with Vercel for the authenticating user. This tool is not meant for transferring domains from external registrars to Vercel. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["ADDNEWDOMAINVERCEL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDNEWDOMAINVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDNEWDOMAINVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v7/domains", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDNEWDOMAINVERCEL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_apex_domain( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + apex_domain_name: Annotated[ + str | None, + "The apex domain to update or move. Accepts a string value representing the domain name (e.g., 'example.com'). Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to perform the domain update on behalf of. This allows the request to be associated with a specific team. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifying the Team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'patchDomain'."]: + """Update or move the apex domain configuration. + + This tool updates or moves the apex domain configuration. It is not used for updating auto-renew or nameservers, for which separate endpoints should be used. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEAPEXDOMAIN_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not apex_domain_name: + missing_params.append(("apex_domain_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEAPEXDOMAIN_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEAPEXDOMAIN_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v3/domains/{domain}".format(domain=apex_domain_name), # noqa: UP032 + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEAPEXDOMAIN_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_vercel_domain( + context: ToolContext, + domain_name: Annotated[ + str, + "The domain name to be deleted from Vercel. This action will also remove any associated aliases.", + ], + team_identifier: Annotated[ + str | None, + "The identifier of the team to perform the domain deletion request on behalf of.", + ] = None, + team_slug: Annotated[ + str | None, "The specific team slug to perform the deletion request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteDomain'."]: + """Delete a domain from Vercel and remove associated aliases. + + Use this tool to delete a previously registered domain from Vercel. This action also removes any aliases linked to the domain.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v6/domains/{domain}".format(domain=domain_name), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def invalidate_cache_by_tags( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "Specify the project ID or name for which the cache tags should be marked as stale. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_id: Annotated[ + str | None, + "The Team identifier to execute the request for. Provide the team's unique ID. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The identifier (slug) for the team to perform the request on their behalf. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'invalidateByTags'."]: + """Mark cache tags as stale for revalidation in the background. + + Use this tool to mark specific cache tags as stale, prompting them to be revalidated during the next request. This is useful when data associated with these tags has changed and needs refreshing. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "INVALIDATECACHEBYTAGS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "query")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["INVALIDATECACHEBYTAGS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["INVALIDATECACHEBYTAGS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/edge-cache/invalidate-by-tags", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["INVALIDATECACHEBYTAGS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "projectIdOrName": project_id_or_name, + "teamId": team_id, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_cache_by_tags( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "The ID or name of the project associated with the cache tags to delete. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team on whose behalf the cache deletion request is performed. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "Specify the team slug to perform the cache deletion on behalf of a team. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'dangerouslyDeleteByTags'."]: + """Marks cache tags as deleted to revalidate associated entries. + + Use this tool to delete cache entries marked by specific tags, causing associated entries to be revalidated. This should be employed cautiously due to potential cache stampede risks. It's useful when the origin returns status codes like 404 or 410. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["DELETECACHEBYTAGS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "query")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["DELETECACHEBYTAGS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["DELETECACHEBYTAGS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/edge-cache/dangerously-delete-by-tags", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["DELETECACHEBYTAGS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "projectIdOrName": project_id_or_name, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_configs( + context: ToolContext, + team_identifier: Annotated[ + str | None, "Specify the Team identifier for which the Edge Configs need to be fetched." + ] = None, + team_slug: Annotated[str | None, "The Team slug to perform the request on behalf of."] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigs'."]: + """Fetch all Edge Configs from Vercel's service. + + Use this tool to retrieve a comprehensive list of all Edge Configurations available in a Vercel account.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config", + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_edge_config( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The identifier of the team to perform the request for. This is required to specify on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug that specifies the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createEdgeConfig'."]: + """Create a new Edge Configuration. + + This tool is used to create a new Edge Config on Vercel. It should be called when there's a need to set up or initialize a configuration for edge functions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEEDGECONFIG_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEEDGECONFIG_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEEDGECONFIG_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/edge-config", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEEDGECONFIG_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config( + context: ToolContext, + edge_config_id: Annotated[ + str, "The unique identifier for the Edge Config to retrieve details from Vercel." + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to perform the request on behalf of in Vercel.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of in Vercel. This identifier is needed to specify which team's settings are being accessed.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfig'."]: + """Retrieve Edge Config details from Vercel. + + Use this tool to obtain configuration details for a specific Edge Config in Vercel. It should be called when you need to access or review settings for an Edge Config using its unique identifier.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_edge_config( + context: ToolContext, + edge_config_identifier: Annotated[ + str, + "The unique identifier of the Edge Config to be updated. This is required to specify which configuration should be modified.", + ], + edge_config_slug: Annotated[ + str, "The unique slug identifier for the Edge Config that needs updating." + ], + team_slug: Annotated[ + str, "The slug identifying the team on whose behalf the request is performed." + ], + team_identifier: Annotated[ + str | None, + "The unique identifier of the team to perform the request for. Required for updating the Edge Config on behalf of a specific team.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateEdgeConfig'."]: + """Update an existing Edge Config to apply changes. + + This tool updates an existing Edge Config with new settings. It should be called when there is a need to modify the settings of an Edge Config identified by its ID.""" + request_data = remove_none_values({"slug": edge_config_slug}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}".format( # noqa: UP032 + edgeConfigId=edge_config_identifier + ), + method="PUT", + params=remove_none_values({"teamId": team_identifier, "slug": edge_config_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_edge_config( + context: ToolContext, + edge_config_id: Annotated[str, "The unique identifier of the Edge Config to be deleted."], + team_identifier: Annotated[ + str | None, "The unique identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team on whose behalf the request is performed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteEdgeConfig'."]: + """Delete a Vercel Edge Config by ID. + + Use this tool to delete a specific Edge Config in Vercel by providing its unique ID. This will remove the configuration from the system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config_items( + context: ToolContext, + edge_config_id: Annotated[ + str, + "The ID of the Edge Config to retrieve items from. This is required to specify which Edge Config data to access.", + ], + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request for a specific Vercel team." + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team on whose behalf the request is made. Each team has a unique slug identifier.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigItems'."]: + """Retrieve all items from an Edge Config. + + Call this tool to obtain all items within a specified Edge Config by providing the Edge Config ID. Useful for accessing configuration details stored in Vercel's Edge Config.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/items".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_edge_config_items( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + edge_config_identifier: Annotated[ + str | None, + "The identifier for the specific Edge Config to update in the batch request. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the Team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The unique slug of the team to perform the request on behalf of. It identifies the team in a URL-friendly format. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'patchEdgeConfigItems'."]: + """Batch update Edge Config Items efficiently. + + Use this tool to update multiple Edge Config Items in a single request. Ideal for making bulk modifications to your Vercel Edge Configurations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEEDGECONFIGITEMS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not edge_config_identifier: + missing_params.append(("edge_config_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEDGECONFIGITEMS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEDGECONFIGITEMS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/items".format( # noqa: UP032 + edgeConfigId=edge_config_identifier + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEEDGECONFIGITEMS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config_schema( + context: ToolContext, + edge_config_id: Annotated[ + str, + "The identifier for the specific Edge Config to retrieve its schema. It is required to specify which configuration's schema you want to query.", + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the team to make requests on their behalf." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigSchema'."]: + """Retrieve the schema of an Edge Config. + + This tool is used to obtain the schema details of a specific Edge Config by its ID. It should be called when there's a need to understand the structure or configuration of a given Edge Config.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/schema".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_edge_config_schema( + context: ToolContext, + edge_config_identifier: Annotated[ + str, "The unique identifier for the Edge Config to update its schema." + ], + edge_config_schema_definition: Annotated[ + str, "JSON string defining the updated structure and settings of the Edge Config." + ], + enable_dry_run: Annotated[ + str | None, + "Set to true to simulate the update without applying changes. Useful for testing.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique ID of the team on whose behalf the request will be made." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. It identifies the specific team for the operation.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'patchEdgeConfigSchema'."]: + """Update an Edge Config's schema to modify its structure. + + Use this tool to update the schema of an Edge Config in Vercel. It is useful when changes to the structure or configuration settings of an Edge Config are needed.""" + request_data = remove_none_values({"definition": edge_config_schema_definition}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/schema".format( # noqa: UP032 + edgeConfigId=edge_config_identifier + ), + method="POST", + params=remove_none_values({ + "dryRun": enable_dry_run, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_edge_config_schema( + context: ToolContext, + edge_config_id: Annotated[ + str, "The unique identifier for the specific Edge Config schema to be deleted." + ], + team_identifier: Annotated[ + str | None, "The identifier of the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team on whose behalf the request is performed. It uniquely identifies the team within Vercel.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteEdgeConfigSchema'."]: + """Deletes an existing Edge Config schema. + + Use this tool to delete the schema of an existing Edge Config in a Vercel project. This can be useful for managing and updating Edge Configurations efficiently.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/schema".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config_item( + context: ToolContext, + edge_config_id: Annotated[str, "The ID of the Edge Config to retrieve a specific item from."], + edge_config_item_key: Annotated[str, "The key of the specific Edge Config Item to retrieve."], + team_identifier: Annotated[ + str | None, "The ID of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team for which the Edge Config Item is requested." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigItem'."]: + """Retrieve a specific Edge Config Item by its identifiers. + + Use this tool to get details of a specific Edge Config Item using its configuration ID and item key.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/item/{edgeConfigItemKey}".format( # noqa: UP032 + edgeConfigId=edge_config_id, edgeConfigItemKey=edge_config_item_key + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config_tokens( + context: ToolContext, + edge_config_id: Annotated[ + str, + "A string representing the unique identifier of the Edge Config to retrieve tokens for. This ID is necessary to specify which Edge Config's tokens are being accessed.", + ], + team_identifier: Annotated[ + str | None, + "The ID of the team to perform the request on behalf of. It identifies which team's Edge Config tokens to retrieve.", + ] = None, + team_slug: Annotated[ + str | None, "Slug of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigTokens'."]: + """Retrieve all tokens of a specific Edge Config. + + This tool retrieves all tokens related to a specified Edge Config. It should be called when you need to access or manage tokens for an Edge Config identified by its edgeConfigId.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/tokens".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_edge_config_tokens( + context: ToolContext, + edge_config_id: Annotated[ + str, + "The unique identifier for the Edge Config from which tokens will be deleted. Required for specifying the target Edge Config.", + ], + tokens_to_delete: Annotated[ + list[str], + "A list of token identifiers to be deleted from the Edge Config. Each token should be a string.", + ], + team_identifier: Annotated[ + str | None, "The unique identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The Team slug representing the team on whose behalf the request is performed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteEdgeConfigTokens'."]: + """Delete tokens from an existing Edge Config. + + Use this tool to delete one or more tokens associated with a specific Edge Config in Vercel. It is useful for managing and securing access by removing outdated or compromised tokens.""" + request_data = remove_none_values({"tokens": tokens_to_delete}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/tokens".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config_token_info( + context: ToolContext, + edge_config_id: Annotated[ + str, + "The identifier for the Edge Config to retrieve metadata for. This is required to specify which configuration token's information is needed.", + ], + edge_config_token: Annotated[ + str, "The token used to obtain metadata for a specific Edge Config." + ], + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The Team slug for performing the request on behalf of a specific team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigToken'."]: + """Retrieve metadata about an Edge Config token. + + Use this tool to obtain metadata for a specific Edge Config token by providing the edgeConfigId and token. Ideal for understanding token attributes and usage in Edge Config.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/token/{token}".format( # noqa: UP032 + edgeConfigId=edge_config_id, token=edge_config_token + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def add_edge_config_token( + context: ToolContext, + edge_config_id: Annotated[ + str, "The unique identifier for the Edge Config to which the token will be added." + ], + token_label: Annotated[ + str, "A descriptive label for the token being added to the Edge Config." + ], + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifying the Team on whose behalf the request is made. This is used for specifying the target team within Vercel.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createEdgeConfigToken'."]: + """Adds a token to an existing Edge Config. + + This tool is used to add a new token to an existing Edge Config in Vercel. It should be called when you need to update the configuration with additional access or permissions via token.""" + request_data = remove_none_values({"label": token_label}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/token".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_edge_config_backup( + context: ToolContext, + edge_config_backup_version_id: Annotated[ + str, "The unique identifier for the backup version of the Edge Config to retrieve." + ], + edge_config_id: Annotated[str, "The ID of the Edge Config to retrieve from backup storage."], + team_identifier: Annotated[ + str | None, "The unique identifier of the Team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The team's unique slug to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigBackup'."]: + """Retrieve a specific Edge Config version from backup storage. + + Use this tool to fetch a particular version of an Edge Config that is stored as a backup. This is helpful for accessing historical configurations or restoring previous settings.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId}".format( # noqa: UP032 + edgeConfigId=edge_config_id, edgeConfigBackupVersionId=edge_config_backup_version_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_edge_config_backups( + context: ToolContext, + edge_config_id: Annotated[ + str, "The unique identifier for the Edge Config whose backups you want to retrieve." + ], + backup_limit: Annotated[ + float | None, + "The maximum number of Edge Config backups to return. This is useful for paginating results.", + ] = None, + include_metadata: Annotated[ + str | None, + "Indicate if metadata should be included in the response. Use 'true' to include.", + ] = None, + next_page_token: Annotated[ + str | None, "A token for fetching the next page of results if pagination is needed." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, + "The team slug to perform the request on behalf of. It identifies the specific team in Vercel.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getEdgeConfigBackups'."]: + """Retrieve backups of an Edge Config. + + This tool retrieves and returns backups for a specified Edge Config. It should be called when there is a need to access or review past configurations of an Edge Config managed by Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/edge-config/{edgeConfigId}/backups".format( # noqa: UP032 + edgeConfigId=edge_config_id + ), + method="GET", + params=remove_none_values({ + "next": next_page_token, + "limit": backup_limit, + "metadata": include_metadata, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_user_events( + context: ToolContext, + deprecated_user_id: Annotated[ + str | None, + "Deprecated. Use 'principal_id' instead. If both 'principal_id' and 'deprecated_user_id' exist, 'principal_id' will be used.", + ] = None, + end_time_filter: Annotated[ + str | None, "Timestamp to filter events created until this time." + ] = None, + event_types_filter: Annotated[ + str | None, "Comma-delimited list of event types to filter the results by." + ] = None, + filter_by_principal_id: Annotated[ + str | None, + "Filter events generated by a specific principal when retrieving events for a Team.", + ] = None, + include_event_payload: Annotated[ + str | None, "Set to 'true' to include the 'payload' field in each event response." + ] = None, + include_items_since_timestamp: Annotated[ + str | None, "Timestamp to only include items created since then. Use ISO 8601 format." + ] = None, + maximum_items_to_return: Annotated[ + float | None, "Maximum number of items that can be returned from the request." + ] = None, + project_ids_filter: Annotated[ + str | None, "Comma-separated list of project IDs to filter the events by." + ] = None, + team_identifier: Annotated[ + str | None, "Specify the Team ID to retrieve events related to that team." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. Use this to specify which team's events to retrieve.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listUserEvents'."]: + """Fetches a list of user-generated events on Vercel. + + This tool retrieves events generated by user actions on Vercel, such as logging in, creating deployments, or joining teams. If a `teamId` is provided, events related to that specific team are returned.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v3/events", + method="GET", + params=remove_none_values({ + "limit": maximum_items_to_return, + "since": include_items_since_timestamp, + "until": end_time_filter, + "types": event_types_filter, + "userId": deprecated_user_id, + "principalId": filter_by_principal_id, + "projectIds": project_ids_filter, + "withPayload": include_event_payload, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_billing_plans( + context: ToolContext, + integration_identifier_or_slug: Annotated[ + str, + "The unique identifier or slug for the integration to retrieve billing plans for. Use the specific key related to the integration.", + ], + product_id_or_slug: Annotated[ + str, "The unique identifier or slug for the product to retrieve billing plans." + ], + additional_metadata: Annotated[ + str | None, "Optional metadata for the request, provided as a string." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The unique team slug used to identify which team's context the request should be performed in.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getBillingPlans'."]: + """Retrieve billing plans for a specific integration and product. + + Use this tool to obtain a list of billing plans associated with a specified integration and product. It retrieves the available plans using the integration and product identifiers.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/integration/{integrationIdOrSlug}/products/{productIdOrSlug}/plans".format( # noqa: UP032 + integrationIdOrSlug=integration_identifier_or_slug, productIdOrSlug=product_id_or_slug + ), + method="GET", + params=remove_none_values({ + "metadata": additional_metadata, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def connect_integration_resource_to_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The identifier for the integration configuration to be connected to the Vercel project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_id: Annotated[ + str | None, + "The ID of the integration resource to connect to the Vercel project. This is required to establish the link. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier of the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The unique team slug used to perform the request on behalf of a specific team in Vercel. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'connectIntegrationResourceToProject'." +]: + """Connect an integration resource to a Vercel project. + + This tool connects a provisioned integration resource to a specific Vercel project. It should be used when you need to establish a link between a resource and a project in Vercel. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CONNECTINTEGRATIONRESOURCETOPROJECT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_id: + missing_params.append(("resource_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CONNECTINTEGRATIONRESOURCETOPROJECT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CONNECTINTEGRATIONRESOURCETOPROJECT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/integrations/installations/{integrationConfigurationId}/resources/{resourceId}/connections".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, resourceId=resource_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CONNECTINTEGRATIONRESOURCETOPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_integration_installation( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The ID of the integration configuration to update. This should be a string identifying the specific installation. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update-installation'."]: + """Updates an integration installation configuration. + + Use this tool to update the configuration of an existing integration installation. Call it when changes to the integration setup are necessary. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEINTEGRATIONINSTALLATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINTEGRATIONINSTALLATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINTEGRATIONINSTALLATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINTEGRATIONINSTALLATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def fetch_account_info( + context: ToolContext, + integration_configuration_id: Annotated[ + str, + "The unique identifier for the integration configuration. Required to fetch the user's account info.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-account-info'."]: + """Fetch the best account or user's contact info. + + Use this tool to retrieve detailed contact information for a user's account, ideal for scenarios where you need user engagement or account verification.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/account".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_member_role_info( + context: ToolContext, + integration_configuration_id: Annotated[ + str, + "A unique identifier for the integration configuration. Required to specify which integration to retrieve member details from.", + ], + member_id: Annotated[ + str, + 'The ID of the member to retrieve role and details for. This corresponds to the "user_id" claim in the SSO OIDC token.', + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-member'."]: + """Retrieve member role and details for a specific member ID. + + Use this tool to get the role and additional information for a member using their member ID. It is useful for verifying membership details and roles within installations.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/member/{memberId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, memberId=member_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def notify_vercel_of_updates( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The ID of the integration configuration. It links the notification to the specific Vercel installation or resource. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'create-event'."]: + """Send update notifications to Vercel for installations or resources. + + Use this tool to notify Vercel of changes to installations or resources. Trigger 'resource.updated' events when a resource linked to Vercel is modified, such as renaming a database or suspending a resource. Trigger 'installation.updated' events when an installation's billing plan changes without Vercel's involvement. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "NOTIFYVERCELOFUPDATES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["NOTIFYVERCELOFUPDATES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["NOTIFYVERCELOFUPDATES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/events".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["NOTIFYVERCELOFUPDATES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_integration_resources( + context: ToolContext, + installation_id: Annotated[ + str, "The unique identifier of the integration installation to fetch resources for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-integration-resources'."]: + """Retrieve all resources for a given installation ID. + + Use this tool to get all resources associated with a specific integration installation. It requires the installation ID to fetch the relevant information.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources".format( # noqa: UP032 + integrationConfigurationId=installation_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def fetch_integration_resource( + context: ToolContext, + integration_configuration_id: Annotated[ + str, "The ID of the specific installation to which the resource belongs." + ], + third_party_resource_id: Annotated[ + str, "The ID provided by the third-party provider for the specific resource." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-integration-resource'."]: + """Fetch a resource using its partner ID. + + Use this tool to get detailed information about a specific resource by providing the integration configuration and resource IDs.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, + resourceId=third_party_resource_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_integration_resource( + context: ToolContext, + integration_installation_id: Annotated[ + str, "The ID of the installation to delete the resource from." + ], + resource_id: Annotated[ + str, + "The ID of the resource to be deleted. Required for identifying the specific resource within the integration.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete-integration-resource'."]: + """Delete a resource from an integration by ID. + + Use this tool to delete a resource associated with a specific integration installation. You need the installation and resource IDs to successfully execute this operation.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}".format( # noqa: UP032 + integrationConfigurationId=integration_installation_id, resourceId=resource_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def import_resource_to_vercel( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The unique identifier for the integration configuration in Vercel. Required to specify which configuration to use when importing the resource. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_identifier: Annotated[ + str | None, + "The unique identifier for the resource to be imported or synchronized with Vercel. This ID is used to match the resource between the partner's system and Vercel's system. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'import-resource'."]: + """Import or synchronize a resource to Vercel. + + This tool is used to import or update a resource in Vercel's installation. It should be called when resources created externally need to be synchronized with Vercel. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "IMPORTRESOURCETOVERCEL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_identifier: + missing_params.append(("resource_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["IMPORTRESOURCETOVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["IMPORTRESOURCETOVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, resourceId=resource_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["IMPORTRESOURCETOVERCEL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_resource( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The unique identifier for the integration configuration to update. Required for identifying which integration configuration is being modified. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_id: Annotated[ + str | None, + "The unique identifier of the resource to be updated. This is required to specify which resource you are targeting for updates. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update-resource'."]: + """Update an existing resource with new information. + + Use this tool to update details of a specific resource in an installation. Supports partial updates, allowing changes to be made without modifying the entire resource. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATERESOURCE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_id: + missing_params.append(("resource_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATERESOURCE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATERESOURCE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, resourceId=resource_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERESOURCE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def submit_billing_data( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "A string representing the unique identifier for the integration configuration. This is required to submit billing data. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit-billing-data'."]: + """Submit billing and usage data to the server. + + This tool should be used to send billing and usage data at least once a day, ideally once per hour, using the provided access token for authorization. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["SUBMITBILLINGDATA_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SUBMITBILLINGDATA_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SUBMITBILLINGDATA_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SUBMITBILLINGDATA_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def submit_invoice_to_vercel( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The unique ID for the Vercel integration configuration. This links the invoice submission to the correct integration setup in Vercel. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit-invoice'."]: + """Submit an invoice to Vercel's billing system. + + Use this tool to submit an invoice to Vercel, creating it in their billing system and sending it to the customer. Suitable for different billing plans at various stages of the billing period. Ensure compliance with billing limitations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "SUBMITINVOICETOVERCEL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SUBMITINVOICETOVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SUBMITINVOICETOVERCEL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/invoices".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SUBMITINVOICETOVERCEL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_invoice_details( + context: ToolContext, + integration_configuration_id: Annotated[ + str, + "The unique identifier for the integration configuration. Required to specify the configuration context for the invoice retrieval.", + ], + invoice_id: Annotated[ + str, "The unique identifier of the invoice to retrieve details and status for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get-invoice'."]: + """Retrieve invoice details and status by ID. + + This tool retrieves the details and status of an invoice using its ID. Use this when you need specific information about a particular invoice, such as its current status or other details.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, invoiceId=invoice_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def request_vercel_invoice_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + vercel_integration_configuration_id: Annotated[ + str | None, + "The unique identifier for the Vercel integration configuration related to the invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + invoice_id: Annotated[ + str | None, + "The unique identifier for the invoice for which the refund is requested. This ID is obtained from the invoice creation process. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update-invoice'."]: + """Request a refund for an invoice in Vercel. + + Use this tool to request a refund for an invoice created via the Submit Invoice API in Vercel. Call this when a refund is necessary. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "REQUESTVERCELINVOICEREFUND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not vercel_integration_configuration_id: + missing_params.append(("vercel_integration_configuration_id", "path")) + if not invoice_id: + missing_params.append(("invoice_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REQUESTVERCELINVOICEREFUND_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REQUESTVERCELINVOICEREFUND_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}/actions".format( # noqa: UP032 + integrationConfigurationId=vercel_integration_configuration_id, invoiceId=invoice_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REQUESTVERCELINVOICEREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def submit_prepayment_balances( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The unique identifier for the integration configuration. Use the ID provided during the integration setup. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit-prepayment-balances'."]: + """Submit prepayment balances to Vercel for billing. + + This tool sends prepayment balances to Vercel, which should be done at least daily, but ideally hourly. It requires the access token provided during the installation process for authorization. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "SUBMITPREPAYMENTBALANCES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SUBMITPREPAYMENTBALANCES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SUBMITPREPAYMENTBALANCES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/balance".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SUBMITPREPAYMENTBALANCES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_resource_secrets( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The unique identifier for the integration configuration associated with the resource. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + integration_product_id_or_slug: Annotated[ + str | None, + "Specify the product ID or slug to identify the integration product for the resource update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_id: Annotated[ + str | None, + "The unique identifier for the resource whose secrets are being updated. This is required to specify which resource's secrets need modification. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update-resource-secrets'."]: + """Updates the secrets of a specified resource. + + This tool updates the secrets of a specified resource and connected projects. Old secrets may still be used by existing projects until manually redeployed. Useful for resetting resource credentials. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATERESOURCESECRETS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not integration_product_id_or_slug: + missing_params.append(("integration_product_id_or_slug", "path")) + if not resource_id: + missing_params.append(("resource_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERESOURCESECRETS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERESOURCESECRETS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/products/{integrationProductIdOrSlug}/resources/{resourceId}/secrets".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, + integrationProductIdOrSlug=integration_product_id_or_slug, + resourceId=resource_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERESOURCESECRETS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_secrets_by_id( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The ID of the integration configuration. This identifies the specific configuration in Vercel to update secrets for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_id: Annotated[ + str | None, + "The unique identifier of the Vercel resource whose secrets are to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update-resource-secrets-by-id'."]: + """Update the secrets of a Vercel resource by ID. + + This tool updates the secrets for a given resource in Vercel, affecting connected projects with the new secrets. Note that existing projects using old secrets require manual redeployment to apply changes. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESECRETSBYID_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_id: + missing_params.append(("resource_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESECRETSBYID_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESECRETSBYID_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/secrets".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, resourceId=resource_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESECRETSBYID_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_integration_configurations( + context: ToolContext, + configuration_view_type: Annotated[ + str, + "Specify 'account' to view all configurations or 'project' to exclude configurations generated from the authorization flow.", + ], + installation_type: Annotated[ + str | None, "Specifies the installation type. Options are 'marketplace' or 'external'." + ] = None, + integration_id: Annotated[ + str | None, "The ID or slug of the integration to retrieve configurations for." + ] = None, + team_identifier: Annotated[ + str | None, "Specifies the Team ID to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of when retrieving configurations.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getConfigurations'."]: + """Retrieve all configurations for an authenticated integration. + + Use this tool to access configurations associated with an authenticated integration on Vercel, excluding those from the authorization flow when using the `project` view.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/configurations", + method="GET", + params=remove_none_values({ + "view": configuration_view_type, + "installationType": installation_type, + "integrationIdOrSlug": integration_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_integration_configuration( + context: ToolContext, + configuration_id: Annotated[ + str, "ID of the configuration to retrieve. The user or team must own this configuration." + ], + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The unique team slug to perform the request on behalf of a specific team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getConfiguration'."]: + """Retrieve configuration details by ID. + + Use this tool to fetch the configuration details using a specific ID. The authenticated user or team must own the configuration to access it.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/configuration/{id}".format(id=configuration_id), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_vercel_configuration( + context: ToolContext, + configuration_id: Annotated[ + str, "The unique identifier of the Vercel configuration to be deleted." + ], + team_identifier: Annotated[ + str | None, "The identifier for the team on behalf of which the configuration is removed." + ] = None, + team_slug: Annotated[ + str | None, "The team slug representing the Vercel team to perform the action on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteConfiguration'."]: + """Delete a Vercel configuration by ID. + + Use this tool to remove a specific Vercel configuration and its associated resources by providing the configuration ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/configuration/{id}".format(id=configuration_id), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_integration_configuration_products( + context: ToolContext, + integration_configuration_id: Annotated[ + str, "ID of the specific integration configuration to list available products for." + ], + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of. It specifies which team's configuration products to list.", + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getConfigurationProducts'."]: + """Retrieve products for a specific integration configuration. + + Use this tool to list all available products for a given integration configuration. It helps discover resources that can be provisioned for integrations. The response includes product IDs, slugs, names, supported protocols, and metadata requirements.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/configuration/{id}/products".format( # noqa: UP032 + id=integration_configuration_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def exchange_sso_token( + context: ToolContext, + authorization_code: Annotated[ + str, + "The sensitive OAuth authorization code received from Vercel for the SSO token exchange process.", + ], + integration_client_id: Annotated[ + str, "The unique client ID for the integration, required for authentication." + ], + integration_client_secret: Annotated[ + str, "The secret key for the integration client, used for authentication." + ], + authorization_state: Annotated[ + str | None, "The state received from the initialization request for security validation." + ] = None, + integration_redirect_uri: Annotated[ + str | None, "The URL where the user will be redirected after authentication." + ] = None, + sso_grant_type: Annotated[ + str | None, "Specifies the grant type as 'authorization_code' for OAuth process." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'exchange-sso-token'."]: + """Exchange OAuth code for an OIDC token to authenticate users. + + Call this tool to exchange an OAuth authorization code for an OIDC token during the SSO process. This helps authenticate users in Vercel without persisting the token. Refer to the Vercel SSO documentation for more details.""" + request_data = remove_none_values({ + "code": authorization_code, + "state": authorization_state, + "client_id": integration_client_id, + "client_secret": integration_client_secret, + "redirect_uri": integration_redirect_uri, + "grant_type": sso_grant_type, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/sso/token", + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_integration_log_drains( + context: ToolContext, + team_identifier: Annotated[ + str | None, "The identifier for the Team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. Used to specify which team's log drains to retrieve.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getIntegrationLogDrains'."]: + """Retrieve all integration log drains for the user or team. + + This tool retrieves a list of all integration log drains defined for the authenticated user or team. It is especially useful when using an OAuth2 token, as the list is limited to log drains created by the authenticated integration.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/integrations/log-drains", + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_integration_log_drain( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The Team identifier for performing the request on behalf of a specific team in Vercel. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createLogDrain'."]: + """Sets up an Integration log drain for Vercel. + + This tool creates an Integration log drain in Vercel, accessible via an OAuth2 client. It should be used when you need to tie log drains to specific integrations within Vercel. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEINTEGRATIONLOGDRAIN_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINTEGRATIONLOGDRAIN_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINTEGRATIONLOGDRAIN_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v2/integrations/log-drains", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINTEGRATIONLOGDRAIN_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_integration_log_drain( + context: ToolContext, + log_drain_id: Annotated[ + str, + "The ID of the log drain to be deleted. This identifies the specific log drain for removal.", + ], + team_identifier: Annotated[ + str | None, "The identifier of the Team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team on whose behalf the request is performed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteIntegrationLogDrain'."]: + """Delete an Integration log drain by ID. + + Use this tool to delete a specific Integration log drain by its ID. Applicable when you need to remove log drains associated with an integration, especially under OAuth2 constraints.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/integrations/log-drains/{id}".format(id=log_drain_id), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_deployment_runtime_logs( + context: ToolContext, + deployment_id: Annotated[ + str, "The unique identifier for the deployment whose runtime logs are to be retrieved." + ], + project_id: Annotated[ + str, + "The unique identifier for the project related to the deployment. This is necessary to retrieve the correct runtime logs.", + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the team to make the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The unique slug representing the team on whose behalf the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getRuntimeLogs'."]: + """Get logs for a specific deployment's runtime. + + Use this tool to retrieve a stream of runtime logs for a given deployment in a project. This is useful for monitoring and debugging deployment processes.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{projectId}/deployments/{deploymentId}/runtime-logs".format( # noqa: UP032 + projectId=project_id, deploymentId=deployment_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_experimentation_items( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The ID of the integration configuration for which to create experimentation items. This ties the items to a specific setup or environment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_identifier: Annotated[ + str | None, + "The unique identifier of the resource to associate with the experimentation items. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Create one or multiple experimentation items. + + This tool is used to create one or multiple experimentation items for a specific installation. It should be called when you need to add experimentation data to a resource tied to an integration configuration. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEEXPERIMENTATIONITEMS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_identifier: + missing_params.append(("resource_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEEXPERIMENTATIONITEMS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEEXPERIMENTATIONITEMS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, resourceId=resource_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEEXPERIMENTATIONITEMS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_experimentation_item( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The ID of the integration configuration to be updated. This identifies which configuration is being patched. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_identifier: Annotated[ + str | None, + "The unique identifier of the experimentation resource to update. Provides context for which item needs modification. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + experiment_item_id: Annotated[ + str | None, + "The unique identifier for the experimentation item to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Update an existing experimentation item. + + Use this tool to modify the details of an existing experimentation item in a Vercel installation. It's called when you need to update specific experimentation parameters or configurations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEEXPERIMENTATIONITEM_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_identifier: + missing_params.append(("resource_identifier", "path")) + if not experiment_item_id: + missing_params.append(("experiment_item_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXPERIMENTATIONITEM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXPERIMENTATIONITEM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items/{itemId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, + resourceId=resource_identifier, + itemId=experiment_item_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEEXPERIMENTATIONITEM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_experimentation_item( + context: ToolContext, + experiment_item_id: Annotated[ + str, "The unique identifier for the experimentation item to be deleted." + ], + integration_configuration_id: Annotated[ + str, "The ID of the integration configuration to identify the correct setup." + ], + resource_id: Annotated[ + str, + "The unique identifier for the resource containing the item to be deleted. This is required to specify which resource the item belongs to.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Delete an existing experimentation item. + + This tool deletes a specific experimentation item identified by its itemId within the given integration configuration and resource.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items/{itemId}".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, + resourceId=resource_id, + itemId=experiment_item_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def push_edge_config( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + integration_configuration_id: Annotated[ + str | None, + "The unique identifier for the integration configuration. Use this to specify which configuration to push to Edge Config. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + resource_identifier: Annotated[ + str | None, + "The ID of the resource for the configuration data to be pushed. Required for identifying the target Edge Config. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Push configuration data to Edge Config for syncing. + + Use this tool to push configuration data into the Edge Config when Edge Config syncing is enabled. It is used to update the relevant configurations for experimentation through Vercel. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["PUSHEDGECONFIG_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not integration_configuration_id: + missing_params.append(("integration_configuration_id", "path")) + if not resource_identifier: + missing_params.append(("resource_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["PUSHEDGECONFIG_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["PUSHEDGECONFIG_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/edge-config".format( # noqa: UP032 + integrationConfigurationId=integration_configuration_id, resourceId=resource_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["PUSHEDGECONFIG_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_project_members( + context: ToolContext, + project_id_or_name: Annotated[str, "The ID or name of the project to list members for."], + added_since_timestamp: Annotated[ + int | None, "Timestamp in milliseconds to include members added since this time." + ] = None, + end_time_timestamp: Annotated[ + int | None, + "The timestamp in milliseconds to include project members added until this time.", + ] = None, + member_limit: Annotated[ + int | None, + "Specify the maximum number of project members to return. Provide an integer value.", + ] = None, + search_project_members: Annotated[ + str | None, "Search for project members by name, username, or email." + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the team to perform the request on behalf of. This should be a string.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of, identifying the specific team associated with the project.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getProjectMembers'."]: + """Retrieve all members of a specified project on Vercel. + + Use this tool to get a list of all team members associated with a particular project in Vercel. Call it when you need to know who is involved in a given project.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/members".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="GET", + params=remove_none_values({ + "limit": member_limit, + "since": added_since_timestamp, + "until": end_time_timestamp, + "search": search_project_members, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def add_project_member( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "The ID or name of the Vercel project to which a new member will be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the Team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifying the team for performing the request. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'addProjectMember'."]: + """Add a new member to a Vercel project. + + Use this tool to add a new member to a Vercel project using the project's ID or name. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["ADDPROJECTMEMBER_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["ADDPROJECTMEMBER_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["ADDPROJECTMEMBER_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/members".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDPROJECTMEMBER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_project_member( + context: ToolContext, + project_id_or_name: Annotated[ + str, "The ID or name of the project from which the member will be removed." + ], + user_id: Annotated[str, "The unique user ID of the member to be removed from the project."], + team_identifier: Annotated[ + str | None, + "The identifier for the team on whose behalf the request is made. This should be a string.", + ] = None, + team_slug: Annotated[ + str | None, "The slug used to identify the Team for which the request is being made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeProjectMember'."]: + """Removes a member from a specific project. + + This tool removes a specified member from a project. It should be used when you need to revoke a member's access to a project.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/members/{uid}".format( # noqa: UP032 + idOrName=project_id_or_name, uid=user_id + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_projects_list( + context: ToolContext, + exclude_repositories: Annotated[ + str | None, "Comma-separated list of repository names to exclude from the results." + ] = None, + filter_by_edge_config_id: Annotated[ + str | None, + "Filter results by connected Edge Config ID. Provide the ID as a string to retrieve projects linked to this specific config.", + ] = None, + filter_by_edge_config_token_id: Annotated[ + str | None, + "Filter results by the connected Edge Config Token ID. Provide the specific token ID to refine project search.", + ] = None, + filter_by_elastic_concurrency: Annotated[ + str | None, + "Filter projects by elastic concurrency status. Use '1' for enabled or '0' for disabled.", + ] = None, + filter_by_repo: Annotated[ + str | None, + "Filter the project results by the specified repository name, also used for project count.", + ] = None, + filter_by_repository_id: Annotated[ + str | None, "Filter the project results by specifying the Repository ID." + ] = None, + filter_by_static_ips_enabled: Annotated[ + str | None, "Set to '1' to filter projects with Static IPs enabled, '0' otherwise." + ] = None, + include_deprecated_projects: Annotated[ + bool | None, "Include deprecated projects in the results when set to True." + ] = None, + max_projects_returned: Annotated[ + str | None, "Specifies the maximum number of projects to return in the list." + ] = None, + repository_url_filter: Annotated[ + str | None, "URL to filter projects associated with a specific repository." + ] = None, + require_git_fork_authorization: Annotated[ + str | None, + "Set to '1' to require authorization for Git fork PRs before deployment, or '0' to disable.", + ] = None, + search_by_project_name: Annotated[ + str | None, "Search for projects using a keyword or term in the name field." + ] = None, + team_identifier: Annotated[ + str | None, "The ID of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The team slug to perform the request on behalf of, representing a specific team within Vercel.", + ] = None, + updated_after: Annotated[ + str | None, + "Filter projects updated after the specified timestamp or using a continuation token.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getProjects'."]: + """Retrieve the list of user's or team's projects. + + This tool fetches the list of projects associated with the authenticated user or team. It supports pagination and allows filtering through query parameters.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v10/projects", + method="GET", + params=remove_none_values({ + "from": updated_after, + "gitForkProtection": require_git_fork_authorization, + "limit": max_projects_returned, + "search": search_by_project_name, + "repo": filter_by_repo, + "repoId": filter_by_repository_id, + "repoUrl": repository_url_filter, + "excludeRepos": exclude_repositories, + "edgeConfigId": filter_by_edge_config_id, + "edgeConfigTokenId": filter_by_edge_config_token_id, + "deprecated": include_deprecated_projects, + "elasticConcurrencyEnabled": filter_by_elastic_concurrency, + "staticIpsEnabled": filter_by_static_ips_enabled, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_new_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The identifier of the team on whose behalf the project will be created. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the Team to perform the request on behalf of. It should be a string identifier. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createProject'."]: + """Create a new project with specified configurations. + + This tool creates a new project using the provided configurations. You can specify only the project name or add additional configurations to customize the project further. Call this tool when you need to initialize a new project. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATENEWPROJECT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATENEWPROJECT_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATENEWPROJECT_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v11/projects", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATENEWPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_project_info( + context: ToolContext, + project_identifier_or_name: Annotated[ + str, "The unique project identifier or the project name to retrieve details." + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The unique slug representing the team on whose behalf the request is performed.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getProject'."]: + """Retrieve specific project details using project ID or name. + + This tool retrieves information about a specific project by using the project ID or name. It's useful for accessing project details from Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}".format( # noqa: UP032 + idOrName=project_identifier_or_name + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_project_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "The unique identifier or name of the Vercel project to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateProject'."]: + """Update a project's fields using its name or ID. + + Use this tool to modify specific details of a Vercel project by providing its name or ID. Ideal for updating project configurations or metadata. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v9/projects/{idOrName}".format(idOrName=project_id_or_name), # noqa: UP032 + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_project( + context: ToolContext, + project_identifier_or_name: Annotated[ + str, "The unique project identifier or the project name to specify which project to delete." + ], + team_identifier: Annotated[ + str | None, "The unique identifier of the team to perform the project deletion." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team to execute the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteProject'."]: + """Delete a Vercel project by ID or name. + + Use this tool to delete a specific Vercel project by providing either the project's ID or name. Ideal for cleaning up unused projects or managing active projects through automation.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}".format( # noqa: UP032 + idOrName=project_identifier_or_name + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_project_network_links( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_identifier_or_name: Annotated[ + str | None, + "Specify the unique project identifier or project name for the network connection update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team on whose behalf the request is made. This is required to specify the context of the update. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The unique slug of the team that this request should be performed on behalf of. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateSharedConnectLinks'."]: + """Update project connections to shared Secure Compute networks. + + Use this tool to update a project's connections to shared Secure Compute networks on Vercel. It should be called when there's a need to modify existing network connection settings for a particular project. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEPROJECTNETWORKLINKS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_identifier_or_name: + missing_params.append(("project_identifier_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTNETWORKLINKS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTNETWORKLINKS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/shared-connect-links".format( # noqa: UP032 + idOrName=project_identifier_or_name + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPROJECTNETWORKLINKS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_custom_environment( + context: ToolContext, + project_unique_identifier_or_name: Annotated[ + str, + "The unique project identifier or project name for which the custom environment is being created.", + ], + branch_matcher_type: Annotated[ + str | None, "Specifies the type of branch matcher: 'equals', 'startsWith', or 'endsWith'." + ] = None, + copy_environment_variables_from: Annotated[ + str | None, "Specify the source environment to copy variables from. This is optional." + ] = None, + custom_environment_slug: Annotated[ + str | None, + "Specify the slug for the new custom environment. It cannot be 'Production' or 'Preview'.", + ] = None, + environment_description: Annotated[ + str | None, "Optional description for the custom environment being created." + ] = None, + git_branch_name_pattern: Annotated[ + str | None, "Git branch name or part of it to match with the custom environment." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. It is required to specify the unique team for the custom environment.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createCustomEnvironment'."]: + """Create a custom environment for your Vercel project. + + This tool creates a custom environment in a specified Vercel project, excluding 'Production' or 'Preview' as names. Use it to set up tailored project environments.""" + request_data = remove_none_values({ + "slug": custom_environment_slug, + "description": environment_description, + "branchMatcher": {"type": branch_matcher_type, "pattern": git_branch_name_pattern}, + "copyEnvVarsFrom": copy_environment_variables_from, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/custom-environments".format( # noqa: UP032 + idOrName=project_unique_identifier_or_name + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": custom_environment_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_custom_project_environments( + context: ToolContext, + project_id_or_name: Annotated[ + str, "The unique identifier or name of the project to retrieve custom environments." + ], + git_branch_name: Annotated[ + str | None, + "Specify the git branch to fetch custom environments from. This identifies the branch to retrieve environments for.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the Team to perform the request on behalf of. Expected as a string.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. This identifies the specific team related to the project.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Retrieve custom environments for a specified project. + + Use this tool to get custom environments of a project on Vercel. These environments cannot be named 'Production' or 'Preview'.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/custom-environments".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="GET", + params=remove_none_values({ + "gitBranch": git_branch_name, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_custom_environment( + context: ToolContext, + custom_environment_identifier: Annotated[ + str, + "The unique identifier for a custom environment within the project, excluding 'Production' or 'Preview'.", + ], + project_identifier_or_name: Annotated[ + str, "The unique project identifier or the project's name to retrieve details for." + ], + team_identifier: Annotated[ + str | None, + "The unique Team identifier used to perform the request on behalf of a specified team.", + ] = None, + team_slug: Annotated[str | None, "The Team slug used to perform the request."] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getCustomEnvironment'."]: + """Retrieve custom environment details for a project. + + Use this tool to obtain information about a custom environment in a project, excluding 'Production' or 'Preview' environments.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}".format( # noqa: UP032 + idOrName=project_identifier_or_name, environmentSlugOrId=custom_environment_identifier + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_custom_environment( + context: ToolContext, + custom_environment_id: Annotated[ + str, "The unique identifier for the custom environment within the project." + ], + project_identifier_or_name: Annotated[ + str, "The unique project identifier or project name for the custom environment." + ], + branch_matcher_type: Annotated[ + str | None, "Specifies the branch matcher type: 'equals', 'startsWith', or 'endsWith'." + ] = None, + branch_name_pattern: Annotated[ + str | None, + "Specify a portion or full Git branch name for matching. Used to identify branches in custom environments.", + ] = None, + custom_environment_description: Annotated[ + str | None, "Optional description of the custom environment to be updated." + ] = None, + custom_environment_slug: Annotated[ + str | None, + "Slug of the custom environment to update. Must not be 'Production' or 'Preview'.", + ] = None, + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the update on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateCustomEnvironment'."]: + """Update a custom environment for a Vercel project. + + Use this tool to update a custom environment in a Vercel project. The environment should not be named 'Production' or 'Preview'. Useful for managing project-specific settings.""" + request_data = remove_none_values({ + "slug": custom_environment_slug, + "description": custom_environment_description, + "branchMatcher": {"type": branch_matcher_type, "pattern": branch_name_pattern}, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}".format( # noqa: UP032 + idOrName=project_identifier_or_name, environmentSlugOrId=custom_environment_id + ), + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": custom_environment_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_custom_environment( + context: ToolContext, + custom_environment_identifier: Annotated[ + str, "The unique identifier for the custom environment within the project to be removed." + ], + project_identifier_or_name: Annotated[ + str, "The unique project identifier or the project name to target the environment removal." + ], + delete_unassigned_environment_variables: Annotated[ + bool | None, + "Delete environment variables that are not assigned to any environments when set to true.", + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team to make the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team on whose behalf to perform the request." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeCustomEnvironment'."]: + """Remove a specified custom environment from a project. + + This tool removes a custom environment from a project, excluding 'Production' or 'Preview'. Use it when you need to delete a specific environment from a Vercel project.""" + request_data = remove_none_values({ + "deleteUnassignedEnvironmentVariables": delete_unassigned_environment_variables + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}".format( # noqa: UP032 + idOrName=project_identifier_or_name, environmentSlugOrId=custom_environment_identifier + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_project_domains( + context: ToolContext, + project_id_or_name: Annotated[ + str, "Specify the unique project identifier or the project name." + ], + created_before_timestamp: Annotated[ + float | None, "Get domains created before this JavaScript timestamp for filtering results." + ] = None, + custom_environment_id: Annotated[ + str | None, "The unique custom environment identifier within the project." + ] = None, + domains_created_since_timestamp: Annotated[ + float | None, "Get domains created after this JavaScript timestamp." + ] = None, + domains_sort_order: Annotated[ + str | None, "Sort order for domains based on creation date." + ] = "DESC", + filter_by_git_branch: Annotated[ + str | None, "Specify the branch to filter domains associated with that branch." + ] = None, + filter_by_redirect_target: Annotated[ + str | None, + "Specify the redirect target to filter domains. Useful for targeting specific redirections.", + ] = None, + filter_by_verification_status: Annotated[ + str | None, "Filter domains by their verification status (e.g., verified, unverified)." + ] = None, + filter_production_domains: Annotated[ + str | None, "Set to 'true' to filter only production domains; otherwise, returns all." + ] = "false", + filter_target_domain: Annotated[ + str | None, + "Specify 'production' or 'preview' to filter domains based on their target environment.", + ] = None, + include_redirect_domains: Annotated[ + str | None, + 'Specify whether to include redirect project domains. Use "true" to include (default), "false" to exclude.', + ] = "true", + max_domains_to_list: Annotated[ + float | None, + "The maximum number of domains to list in the response, with a maximum value of 100.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team on whose behalf the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getProjectDomains'."]: + """Retrieve domains linked to a specific project. + + Use this tool to get the domains associated with a project by providing the project's ID or name. This can help manage and review project-related domains efficiently.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/domains".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="GET", + params=remove_none_values({ + "production": filter_production_domains, + "target": filter_target_domain, + "customEnvironmentId": custom_environment_id, + "gitBranch": filter_by_git_branch, + "redirects": include_redirect_domains, + "redirect": filter_by_redirect_target, + "verified": filter_by_verification_status, + "limit": max_domains_to_list, + "since": domains_created_since_timestamp, + "until": created_before_timestamp, + "order": domains_sort_order, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def fetch_project_domain( + context: ToolContext, + project_domain_name: Annotated[str, "The name of the project's domain to fetch details for."], + project_id_or_name: Annotated[ + str, "The unique project identifier or the project name for fetching domain details." + ], + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team on whose behalf the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getProjectDomain'."]: + """Fetch domain details for a specific project. + + Use this tool to obtain detailed information about a project's domain using the project's ID or name and the domain name.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}".format( # noqa: UP032 + idOrName=project_id_or_name, domain=project_domain_name + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_project_domain_config( + context: ToolContext, + project_domain_name: Annotated[ + str, "The project domain name to be updated. Example: 'example.com'." + ], + project_identifier_or_name: Annotated[ + str, + "The unique project identifier or the project name used to update domain configuration.", + ], + linked_git_branch: Annotated[ + str | None, "The Git branch to associate with the project domain." + ] = None, + redirect_status_code: Annotated[ + int | None, + "HTTP status code for the domain redirect. Acceptable values are 301, 302, 307, 308, or None if no redirect is required.", + ] = None, + redirect_target_domain: Annotated[ + str | None, "Specify the target destination domain for the redirect of a project domain." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug identifier for the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateProjectDomain'."]: + """Update a project's domain configuration. + + Use this tool to update a project's domain settings, including the domain name, associated git branch, and redirect options.""" + request_data = remove_none_values({ + "gitBranch": linked_git_branch, + "redirect": redirect_target_domain, + "redirectStatusCode": redirect_status_code, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}".format( # noqa: UP032 + idOrName=project_identifier_or_name, domain=project_domain_name + ), + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_project_domain( + context: ToolContext, + project_domain_name: Annotated[str, "The domain name of the project to be removed."], + project_id_or_name: Annotated[ + str, + "The unique project identifier or name to specify which project's domain is to be removed.", + ], + remove_redirects: Annotated[ + bool | None, + "Set to true to remove all domains from the project that redirect to the domain being removed.", + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifier of the team to perform the request on behalf of. Used to specify which team's project domain should be removed.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeProjectDomain'."]: + """Removes a domain from a specified project. + + Use this tool to remove a domain from a Vercel project by specifying the project's ID or name along with the domain name.""" + request_data = remove_none_values({"removeRedirects": remove_redirects}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}".format( # noqa: UP032 + idOrName=project_id_or_name, domain=project_domain_name + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def add_project_domain( + context: ToolContext, + project_domain_name: Annotated[ + str, "The domain name to be added to the specified Vercel project." + ], + project_identifier_or_name: Annotated[ + str, "The unique identifier or name of the project to which the domain will be added." + ], + custom_environment_id: Annotated[ + str | None, "The unique custom environment identifier within the project." + ] = None, + git_branch_to_link_domain: Annotated[ + str | None, + "The Git branch to associate with the project domain when adding it to a Vercel project. This allows the domain to be tied to a specific branch in the repository.", + ] = None, + redirect_status_code: Annotated[ + int | None, + "HTTP status code for redirecting the domain. Options are: 301, 302, 307, 308, or None.", + ] = None, + redirect_target_domain: Annotated[ + str | None, "Specify the target destination domain to redirect to." + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier of the team for which the request is made. This ensures the request is executed on behalf of the specified team.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. This identifies the team context for the domain addition.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'addProjectDomain'."]: + """Add a domain to a specified Vercel project. + + This tool adds a domain to a Vercel project by specifying the domain name and project identifier (id or name). If the domain is unverified, the response will indicate it needs verification. If the domain already exists, a 400 error will occur.""" + request_data = remove_none_values({ + "name": project_domain_name, + "gitBranch": git_branch_to_link_domain, + "customEnvironmentId": custom_environment_id, + "redirect": redirect_target_domain, + "redirectStatusCode": redirect_status_code, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v10/projects/{idOrName}/domains".format( # noqa: UP032 + idOrName=project_identifier_or_name + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def move_project_domain( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "Provide the unique project identifier or the project name for the domain transfer. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + project_domain_name: Annotated[ + str | None, + "The domain name of the project to be moved to another project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug for the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'moveProjectDomain'."]: + """Transfer a domain from one project to another. + + Use this tool to move a project's domain to a different project, and optionally transfer redirects associated with that domain. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["MOVEPROJECTDOMAIN_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "path")) + if not project_domain_name: + missing_params.append(("project_domain_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MOVEPROJECTDOMAIN_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MOVEPROJECTDOMAIN_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/domains/{domain}/move".format( # noqa: UP032 + idOrName=project_id_or_name, domain=project_domain_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MOVEPROJECTDOMAIN_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def verify_project_domain( + context: ToolContext, + project_id_or_name: Annotated[ + str, "The unique project identifier or the project name to verify the domain for." + ], + verify_domain_name: Annotated[str, "The domain name you want to verify for the project."], + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request on behalf of. Provide as a string." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug used to perform the verification request on behalf of a specific team.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'verifyProjectDomain'."]: + """Verify the status of a project domain's verification challenge. + + This tool attempts to verify a project domain marked as `verified = false` by checking the correctness of its verification challenge. Use this to confirm domain ownership for a project.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}/verify".format( # noqa: UP032 + idOrName=project_id_or_name, domain=verify_domain_name + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_project_environment_variables( + context: ToolContext, + project_id_or_name: Annotated[ + str, "The unique identifier or name of the project to retrieve environment variables for." + ], + caller_source: Annotated[str | None, "Specify the source making the API call."] = None, + custom_environment_id: Annotated[ + str | None, + "The unique custom environment identifier within the project. Use this to specify a specific custom environment.", + ] = None, + custom_environment_slug: Annotated[ + str | None, + "The custom environment slug (name) within the project to filter specific settings.", + ] = None, + decrypt_values: Annotated[ + str | None, + "Set to 'true' to decrypt environment variable values. Use 'false' to keep them encrypted.", + ] = None, + filter_by_git_branch: Annotated[ + str | None, + "Specify the git branch to filter the environment variable results. Must have target set to 'preview'.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. Use this to specify the team context for the request.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'filterProjectEnvs'."]: + """Retrieve environment variables for a specified project. + + Use this tool to get the environment variables associated with a project by providing its `id` or `name`. Useful for managing and configuring project settings.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v10/projects/{idOrName}/env".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="GET", + params=remove_none_values({ + "gitBranch": filter_by_git_branch, + "decrypt": decrypt_values, + "source": caller_source, + "customEnvironmentId": custom_environment_id, + "customEnvironmentSlug": custom_environment_slug, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_project_environment_variables( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_identifier_or_name: Annotated[ + str | None, + "The unique identifier or name of the Vercel project to create or update environment variables for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + allow_override_existing_variable: Annotated[ + str | None, + "Allows updating the value of an existing environment variable if set to true. Only used when mode is 'execute'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of, specified as a string. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug for the project. Used to perform the request on behalf of a specific team. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createProjectEnv'."]: + """Create or update environment variables for a Vercel project. + + This tool creates or updates one or more environment variables for a specified Vercel project. The project can be identified by its `id` or `name`. The tool allows specifying the `key`, `value`, `type`, and `target` of the environment variables. If `upsert=true` is included, existing variables will be updated instead of creating new ones. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEPROJECTENVIRONMENTVARIABLES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_identifier_or_name: + missing_params.append(("project_identifier_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEPROJECTENVIRONMENTVARIABLES_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEPROJECTENVIRONMENTVARIABLES_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v10/projects/{idOrName}/env".format( # noqa: UP032 + idOrName=project_identifier_or_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEPROJECTENVIRONMENTVARIABLES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "upsert": allow_override_existing_variable, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_project_environment_variable( + context: ToolContext, + environment_variable_id: Annotated[ + str, "The unique ID for the environment variable to retrieve its decrypted value." + ], + project_identifier_or_name: Annotated[ + str, "The unique identifier or name of the project to retrieve its environment variable." + ], + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug for the team to perform the request on behalf of. This identifies the team in a user-friendly way.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getProjectEnv'."]: + """Retrieve the environment variable for a given project. + + Call this tool to access the environment variable details for a specific project using its ID or name.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/env/{id}".format( # noqa: UP032 + idOrName=project_identifier_or_name, id=environment_variable_id + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_project_env_variable( + context: ToolContext, + environment_variable_identifier: Annotated[ + str, "The unique identifier of the environment variable to be deleted." + ], + project_identifier_or_name: Annotated[ + str, + "The unique project identifier or name to identify the target project for which the environment variable should be deleted.", + ], + custom_environment_identifier: Annotated[ + str | None, "The unique custom environment identifier within the project." + ] = None, + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The Team slug used to perform the request on behalf of a team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeProjectEnv'."]: + """Delete a project's specific environment variable. + + This tool deletes a specified environment variable from a project by using the environment variable's identifier. You can specify the project using its ID or name.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v9/projects/{idOrName}/env/{id}".format( # noqa: UP032 + idOrName=project_identifier_or_name, id=environment_variable_identifier + ), + method="DELETE", + params=remove_none_values({ + "customEnvironmentId": custom_environment_identifier, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def edit_project_environment_variable( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "Specify the unique project identifier or the project name. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + environment_variable_id: Annotated[ + str | None, + "The unique environment variable identifier for the Vercel project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The identifier for the team on whose behalf the request is made. This is usually a URL-friendly name for the team. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'editProjectEnv'."]: + """Edit a specific environment variable for a project. + + Use this tool to modify an environment variable of a Vercel project by providing the variable's ID and the project's ID or name. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "EDITPROJECTENVIRONMENTVARIABLE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "path")) + if not environment_variable_id: + missing_params.append(("environment_variable_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EDITPROJECTENVIRONMENTVARIABLE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EDITPROJECTENVIRONMENTVARIABLE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v9/projects/{idOrName}/env/{id}".format( # noqa: UP032 + idOrName=project_id_or_name, id=environment_variable_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EDITPROJECTENVIRONMENTVARIABLE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_project_env_variables( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "The unique project identifier or the project name to specify which project to delete variables from. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier to perform the request on behalf of when deleting environment variables. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team on whose behalf the request is performed. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'batchRemoveProjectEnv'."]: + """Delete multiple environment variables from a Vercel project. + + Use this tool to delete several environment variables for a specific Vercel project at once. It's useful when managing project configurations and needing to remove obsolete or sensitive data efficiently. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "DELETEPROJECTENVVARIABLES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["DELETEPROJECTENVVARIABLES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["DELETEPROJECTENVVARIABLES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/env".format(idOrName=project_id_or_name), # noqa: UP032 + method="DELETE", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["DELETEPROJECTENVVARIABLES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def upload_client_cert_to_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id_or_name: Annotated[ + str | None, + "The unique identifier or name of the Vercel project to upload the client certificate to. This is required to specify which project the mTLS certificate should be associated with. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The string identifier of the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'uploadProjectClientCert'."]: + """Upload a client certificate for mTLS authentication. + + Use this tool to upload a client certificate to a Vercel project for mutual TLS (mTLS) authentication with external origins. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPLOADCLIENTCERTTOPROJECT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id_or_name: + missing_params.append(("project_id_or_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPLOADCLIENTCERTTOPROJECT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPLOADCLIENTCERTTOPROJECT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/client-cert".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPLOADCLIENTCERTTOPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_rolling_release_billing_status( + context: ToolContext, + project_id_or_name: Annotated[ + str, + "Project ID or name, URL-encoded, to identify the project for which to retrieve billing status.", + ], + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug representation of the team to perform the request for. Used to specify which team's billing status is being queried.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getRollingReleaseBillingStatus'."]: + """Get the billing status for a project's rolling releases. + + This tool retrieves the billing status for a specific project's rolling releases from Vercel. It determines if the project is eligible for configuration under rolling releases based on the team's billing status.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release/billing".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_rolling_release_config( + context: ToolContext, + project_identifier: Annotated[ + str, + "The project ID or name, URL-encoded, to identify the project for the configuration request.", + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the Team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getRollingReleaseConfig'."]: + """Fetch the rolling releases configuration for a project. + + Use this tool to obtain the template configuration for future rolling releases in a given project on Vercel. It does not provide settings for already active releases.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release/config".format( # noqa: UP032 + idOrName=project_identifier + ), + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def disable_rolling_releases( + context: ToolContext, + project_id_or_name: Annotated[ + str, "Project ID or URL-encoded name to specify the Vercel project." + ], + team_identifier: Annotated[ + str | None, "The identifier of the team to execute the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifying the team to perform the request on behalf of. This should be a string value.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteRollingReleaseConfig'."]: + """Disable rolling releases for a Vercel project. + + Use this tool to disable future rolling releases for a specified Vercel project. Note that this will not affect any current rollouts in progress. For ongoing rollouts, additional actions like completing or aborting may be required.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release/config".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_rolling_release_config( + context: ToolContext, + project_id_or_name: Annotated[ + str, "Project ID or name (URL-encoded) for updating rolling release settings." + ], + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug identifying the team for which the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateRollingReleaseConfig'."]: + """Update or disable rolling releases for a Vercel project. + + Use this tool to update or disable rolling releases for a specific Vercel project. It changes the configuration for future deployments without affecting in-progress rollouts. Disabling the feature requires additional API calls to complete or abort current rollouts.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release/config".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_rolling_release( + context: ToolContext, + project_id_or_name: Annotated[ + str, "The project ID or URL-encoded project name to identify the specific project." + ], + filter_by_release_state: Annotated[ + str | None, "Filter the rolling release by its state: ACTIVE, COMPLETE, or ABORTED." + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier of the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, + "The slug that identifies the team on whose behalf the request is made. This is required for team-specific data access.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getRollingRelease'."]: + """Retrieve the rolling release for a specific project. + + Use this tool to get details about a project's rolling release, including its current status (active, aborted, or completed). Useful when monitoring or managing project deployments.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="GET", + params=remove_none_values({ + "state": filter_by_release_state, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def advance_rollout_stage( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_identifier: Annotated[ + str | None, + "Project ID or URL-encoded project name to identify the project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The Team identifier used for performing the request on behalf of the specified team. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team for which the rollout action will be performed. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approveRollingReleaseStage'."]: + """Advance a rollout to the next stage when manual approval is required. + + Use this tool to advance a release rollout to the next stage when manual approval is enabled in Vercel's rolling releases configuration. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["ADVANCEROLLOUTSTAGE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_identifier: + missing_params.append(("project_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADVANCEROLLOUTSTAGE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADVANCEROLLOUTSTAGE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release/approve-stage".format( # noqa: UP032 + idOrName=project_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADVANCEROLLOUTSTAGE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def force_complete_rolling_release( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_identifier: Annotated[ + str | None, + "The project ID or URL-encoded project name in Vercel. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team on whose behalf the request is performed. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team for which the request is performed. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'completeRollingRelease'."]: + """Complete a rolling release to serve 100% traffic from canary. + + This tool should be used to force-complete a rolling release in Vercel projects, ensuring that the canary deployment is now serving 100% of the traffic. Call this tool when you need to finalize a rolling release deployment. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "FORCECOMPLETEROLLINGRELEASE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_identifier: + missing_params.append(("project_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["FORCECOMPLETEROLLINGRELEASE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["FORCECOMPLETEROLLINGRELEASE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/projects/{idOrName}/rolling-release/complete".format( # noqa: UP032 + idOrName=project_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["FORCECOMPLETEROLLINGRELEASE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def initiate_project_transfer( + context: ToolContext, + project_id_or_name: Annotated[str, "The ID or name of the project to transfer between teams."], + team_identifier: Annotated[ + str | None, "The unique identifier of the team initiating the project transfer." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the project transfer request on behalf of. This is a unique identifier for the team on Vercel.", + ] = None, + webhook_callback_url: Annotated[ + str | None, "The URL to send a webhook to when the project transfer is accepted." + ] = None, + webhook_signing_secret: Annotated[ + str | None, + "The secret key used to sign the webhook payload with HMAC-SHA256 for security verification.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createProjectTransferRequest'."]: + """Initiate a project transfer request between teams. + + This tool initiates a project transfer request from one team to another on Vercel. It returns a code valid for 24 hours, which can be used to accept the transfer via a specified endpoint or claim URL.""" + request_data = remove_none_values({ + "callbackUrl": webhook_callback_url, + "callbackSecret": webhook_signing_secret, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/projects/{idOrName}/transfer-request".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def accept_project_transfer( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_transfer_code: Annotated[ + str | None, + "The unique code of the project transfer request, required to accept the transfer. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The team slug used to perform the project transfer request on behalf of a specific team. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'acceptProjectTransferRequest'."]: + """Accept a project transfer request on Vercel. + + Use this tool to accept a project transfer request that has been initiated by another team on Vercel. This process requires a transfer code, which is generated by the initiating team. Call this tool when you need to finalize the transfer of a project to your team. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "ACCEPTPROJECTTRANSFER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_transfer_code: + missing_params.append(("project_transfer_code", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ACCEPTPROJECTTRANSFER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ACCEPTPROJECTTRANSFER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/projects/transfer-request/{code}".format( # noqa: UP032 + code=project_transfer_code + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ACCEPTPROJECTTRANSFER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_project_protection_bypass( + context: ToolContext, + project_id_or_name: Annotated[ + str, + "The unique Vercel project identifier or project name to update the protection bypass for.", + ], + create_new_automation_bypass: Annotated[ + bool | None, "Create a new automation bypass after revoking the current secret." + ] = None, + optional_secret_value: Annotated[ + str | None, "Optional value of the secret to generate; omit for OAuth2 tokens." + ] = None, + revoke_automation_bypass: Annotated[ + str | None, "Secret value of the automation bypass to be revoked for a Vercel project." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateProjectProtectionBypass'."]: + """Update the deployment protection bypass for a Vercel project. + + Use this tool to modify the deployment protection automation bypass settings for a specific Vercel project.""" + request_data = remove_none_values({ + "revoke": {"secret": revoke_automation_bypass, "regenerate": create_new_automation_bypass}, + "generate": {"secret": optional_secret_value}, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{idOrName}/protection-bypass".format( # noqa: UP032 + idOrName=project_id_or_name + ), + method="PATCH", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def promote_deployment_to_production( + context: ToolContext, + deployment_identifier: Annotated[ + str, + "The ID of the deployment to be promoted to production. It should be a valid string representing the deployment ID.", + ], + project_id: Annotated[ + str, "The unique identifier of the project associated with the deployment to promote." + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team on whose behalf the request is made. It should be a string value.", + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the promotion request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'requestPromote'."]: + """Promotes a deployment to production without rebuilding it. + + Use this tool to promote an existing deployment to production on Vercel. This action does not rebuild the deployment. To rebuild, use the create-deployments endpoint instead.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v10/projects/{projectId}/promote/{deploymentId}".format( # noqa: UP032 + projectId=project_id, deploymentId=deployment_identifier + ), + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_last_promote_aliases_status( + context: ToolContext, + project_id: Annotated[ + str, + "Specify the Project ID to filter the promote aliases related to that specific project.", + ], + aliases_created_before_timestamp: Annotated[ + float | None, "Get aliases created before this epoch timestamp." + ] = None, + filter_failed_aliases: Annotated[ + bool | None, + "Set to true to filter results to only include aliases that failed to map to the requested deployment.", + ] = None, + get_aliases_created_after_epoch: Annotated[ + float | None, "Get aliases created after the specified epoch timestamp." + ] = None, + max_aliases_to_list: Annotated[ + float | None, + "Specify the maximum number of aliases to list from the request. The maximum allowed is 100.", + ] = None, + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request on behalf of. Must be a string." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listPromoteAliases'."]: + """Retrieve aliases and their mapping status from last promote request. + + Call this tool to obtain a list of aliases related to the most recent promote request, along with their current mapping status for a specified project.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{projectId}/promote/aliases".format( # noqa: UP032 + projectId=project_id + ), + method="GET", + params=remove_none_values({ + "limit": max_aliases_to_list, + "since": get_aliases_created_after_epoch, + "until": aliases_created_before_timestamp, + "failedOnly": filter_failed_aliases, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def pause_project( + context: ToolContext, + project_id: Annotated[str, "The unique identifier for the Vercel project you wish to pause."], + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[str | None, "The Team slug to perform the request on behalf of."] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'pauseProject'."]: + """Pause a Vercel project by its ID. + + Use this tool to pause a Vercel project by providing its project ID. This will disable auto-assigning custom production domains and block active Production Deployments if applicable.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{projectId}/pause".format(projectId=project_id), # noqa: UP032 + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def unpause_project( + context: ToolContext, + project_id: Annotated[str, "The unique identifier for the Vercel project to be unpaused."], + team_identifier: Annotated[ + str | None, + "The identifier for the team on behalf of which the request is performed. Used to specify the target team in Vercel.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifying the team to perform the request on behalf of. Required for targeting the correct team's project.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'unpauseProject'."]: + """Unpause a Vercel project using its project ID. + + Use this tool to unpause a Vercel project by providing its project ID. The tool confirms successful unpausing or indicates failure if the project ID is invalid.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/projects/{projectId}/unpause".format(projectId=project_id), # noqa: UP032 + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_attack_challenge_mode( + context: ToolContext, + enable_attack_challenge_mode: Annotated[ + bool, "Set to true to enable Attack Challenge mode; false to disable it." + ], + project_id: Annotated[ + str, "The unique identifier of the project to update the Attack Challenge mode for." + ], + attack_mode_active_until: Annotated[ + float | None, + "The UNIX timestamp indicating when the Attack Challenge mode should be active until. Specify this to control the duration of the mode being enabled.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier for the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, "The unique slug of the team on behalf of which the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateAttackChallengeMode'."]: + """Updates Attack Challenge mode setting for a project. + + This tool updates the Attack Challenge mode setting for a project in Vercel's security settings. Use it when you need to enable or disable the Attack Challenge mode.""" + request_data = remove_none_values({ + "projectId": project_id, + "attackModeEnabled": enable_attack_challenge_mode, + "attackModeActiveUntil": attack_mode_active_until, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/security/attack-mode", + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def set_firewall_configuration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id: Annotated[ + str | None, + "The unique identifier for the project to configure the firewall settings. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the team for which the firewall configuration will be updated. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'putFirewallConfig'."]: + """Update firewall configuration with specified rules. + + This tool sets or overwrites the firewall configuration with the provided rules and settings on Vercel. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "SETFIREWALLCONFIGURATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id: + missing_params.append(("project_id", "query")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SETFIREWALLCONFIGURATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SETFIREWALLCONFIGURATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/security/firewall/config", + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SETFIREWALLCONFIGURATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "projectId": project_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_firewall_config( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_identifier: Annotated[ + str | None, + "The unique identifier for the project to modify the firewall config. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug used to identify the team for the request. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateFirewallConfig'."]: + """Modify the existing firewall config for a project. + + + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEFIREWALLCONFIG_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_identifier: + missing_params.append(("project_identifier", "query")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEFIREWALLCONFIG_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEFIREWALLCONFIG_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/security/firewall/config", + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEFIREWALLCONFIG_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "projectId": project_identifier, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_firewall_config( + context: ToolContext, + firewall_configuration_version: Annotated[ + str, "The deployed version of the firewall configuration to retrieve." + ], + project_id: Annotated[ + str, + "The unique identifier for the project whose firewall configuration is being retrieved.", + ], + team_identifier: Annotated[ + str | None, "The identifier for the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The team slug to perform the request on behalf of. It identifies the specific team by its slug name.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getFirewallConfig'."]: + """Retrieve the active firewall configuration for a project. + + This tool is used to obtain the active firewall configuration for a specific project by retrieving the specified version of the configuration.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/security/firewall/config/{configVersion}".format( # noqa: UP032 + configVersion=firewall_configuration_version + ), + method="GET", + params=remove_none_values({ + "projectId": project_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_active_attack_status( + context: ToolContext, + project_id: Annotated[str, "The unique identifier of the project to retrieve attack data for."], + active_days_since: Annotated[ + float | None, + "Number of days in the past to look for active attack data. Defaults to 1 day if not specified.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. This identifies which team to target for the retrieval of attack data within Vercel's system.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getActiveAttackStatus'."]: + """Retrieve active attack data from the Vercel firewall. + + Use this tool to obtain information about any active attacks detected by Vercel's firewall within the specified number of days.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/security/firewall/attack-status", + method="GET", + params=remove_none_values({ + "projectId": project_id, + "since": active_days_since, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_project_bypass_rules( + context: ToolContext, + project_id: Annotated[ + str, "The unique identifier of the project for which to retrieve bypass rules." + ], + filter_by_domain: Annotated[ + str | None, + "Specify the domain to filter bypass rules. This filters rules related to the given domain.", + ] = None, + filter_by_project_scope: Annotated[ + bool | None, "Set to true to filter results by project-scoped rules." + ] = None, + filter_by_source_ip: Annotated[ + str | None, "Specify a source IP to filter the system bypass rules for a project." + ] = None, + pagination_offset: Annotated[ + str | None, "Pagination offset, retrieving results after the specified ID." + ] = None, + result_limit: Annotated[ + float | None, + "The maximum number of rules to retrieve. Specify as a number. This is useful for controlling the volume of data returned.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier of the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team to make the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getBypassIp'."]: + """Retrieve the bypass rules for a specified project. + + Use this tool to access the system bypass rules configured for a specific project on Vercel. It is useful for security management and monitoring of firewall settings.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/security/firewall/bypass", + method="GET", + params=remove_none_values({ + "projectId": project_id, + "limit": result_limit, + "sourceIp": filter_by_source_ip, + "domain": filter_by_domain, + "projectScope": filter_by_project_scope, + "offset": pagination_offset, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_firewall_bypass_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id: Annotated[ + str | None, + "The identifier for the project to create a bypass rule for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifier of the team for which the bypass rule is created. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'addBypassIp'."]: + """Create a new firewall bypass rule. + + This tool should be called to create new system bypass rules in the firewall. Useful for configuring security exceptions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEFIREWALLBYPASSRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id: + missing_params.append(("project_id", "query")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEFIREWALLBYPASSRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEFIREWALLBYPASSRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/security/firewall/bypass", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEFIREWALLBYPASSRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "projectId": project_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_bypass_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + project_id: Annotated[ + str | None, + "The unique identifier for the project from which to remove the bypass rule. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier for the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug indicating which team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeBypassIp'."]: + """Removes a bypass rule from the firewall. + + Use this tool to remove a system bypass rule from the Vercel firewall, ensuring that specific IPs can no longer bypass the security restrictions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["REMOVEBYPASSRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not project_id: + missing_params.append(("project_id", "query")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["REMOVEBYPASSRULE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["REMOVEBYPASSRULE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/security/firewall/bypass", + method="DELETE", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REMOVEBYPASSRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "projectId": project_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_integration_store( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier of the team on whose behalf the request is being made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The unique slug of the team for which the integration store is being created. This identifies the team on behalf of which the request is made. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createIntegrationStoreDirect'."]: + """Create integration stores for FREE and PAID billing plans. + + This tool creates integration stores on Vercel for both free and paid plans, handling billing automatically. It validates configurations, discovers free plans, and creates billing authorizations for paid resources. It should be called when you need to provision integration storage resources while managing billing. Requires admin access and, for paid plans, a valid payment method. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEINTEGRATIONSTORE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINTEGRATIONSTORE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINTEGRATIONSTORE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/storage/stores/integration/direct", + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINTEGRATIONSTORE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_team_members( + context: ToolContext, + added_since_timestamp: Annotated[ + float | None, "Include team members added since this timestamp in milliseconds." + ] = None, + exclude_project_id: Annotated[ + str | None, "Exclude members belonging to the specified project using the project ID." + ] = None, + filter_by_team_role: Annotated[ + str | None, + "Return members with the specified team role. Valid roles include OWNER, MEMBER, DEVELOPER, SECURITY, BILLING, VIEWER, VIEWER_FOR_PLUS, and CONTRIBUTOR.", + ] = None, + include_members_until: Annotated[ + float | None, "Timestamp in milliseconds to include members added until this time." + ] = None, + member_limit: Annotated[ + float | None, "Specify the maximum number of team members to return in a single request." + ] = None, + project_id_for_eligible_members: Annotated[ + str | None, + "Include team members eligible for the specified project by providing the project ID.", + ] = None, + search_team_members: Annotated[ + str | None, "Search for team members by their name, username, or email." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getTeamMembers'."]: + """Retrieve a list of team members for a specified team. + + Use this tool to get a paginated list of members belonging to a specific team by providing the team ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v3/teams/{teamId}/members", + method="GET", + params=remove_none_values({ + "limit": member_limit, + "since": added_since_timestamp, + "until": include_members_until, + "search": search_team_members, + "role": filter_by_team_role, + "excludeProject": exclude_project_id, + "eligibleMembersForProjectId": project_id_for_eligible_members, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def invite_user_to_team( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_id: Annotated[ + str | None, + "The unique identifier for the Vercel team to which the user is being invited. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'inviteUserToTeam'."]: + """Invite a user to join a Vercel team. + + This tool invites a user to join a specified Vercel team. The user issuing the command must be an OWNER of the team. Specify the user with an email or ID; ID takes precedence if both are provided. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["INVITEUSERTOTEAM_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not team_id: + missing_params.append(("team_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["INVITEUSERTOTEAM_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["INVITEUSERTOTEAM_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/teams/{teamId}/members".format(teamId=team_id), # noqa: UP032 + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["INVITEUSERTOTEAM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def request_team_access( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_id: Annotated[ + str | None, + "The unique identifier of the Vercel team you want to join. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'requestAccessToTeam'."]: + """Request to join a team on Vercel. + + This tool allows users to request access to a specific team on Vercel as a member. The request needs to be approved by a team owner, and only 10 users can have pending requests for a team at the same time. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["REQUESTTEAMACCESS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not team_id: + missing_params.append(("team_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REQUESTTEAMACCESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REQUESTTEAMACCESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/teams/{teamId}/request".format(teamId=team_id), # noqa: UP032 + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REQUESTTEAMACCESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def check_team_access_status( + context: ToolContext, + team_id: Annotated[ + str, "The unique identifier for the team whose access request status is being checked." + ], + user_id: Annotated[ + str, + "The ID of the user whose team access request status is being checked. Leave empty to use the authenticated user.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getTeamAccessRequest'."]: + """Check the status of a team access request. + + Use this tool to check the status of a user's request to join a team on Vercel. The tool will return the status of the request or a 404 error if the request was declined. If no user ID is provided, it returns the status for the authenticated user.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/teams/{teamId}/request/{userId}".format( # noqa: UP032 + userId=user_id, teamId=team_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def join_vercel_team( + context: ToolContext, + team_id: Annotated[ + str, + "The unique ID of the Vercel team to join. Use this if you have the team ID instead of an invite code.", + ], + team_invite_code: Annotated[ + str | None, + "The invite code used to join a specific Vercel team. This is a string value provided to new members for team access.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'joinTeam'."]: + """Join a Vercel team using invite code or team ID. + + This tool allows a user to join a Vercel team by providing an invite code or team ID. It should be called when a user wants to become a member of a specified team on Vercel.""" + request_data = remove_none_values({"inviteCode": team_invite_code}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/teams/{teamId}/members/teams/join".format(teamId=team_id), # noqa: UP032 + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_team_member( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + member_id: Annotated[ + str | None, + "The unique identifier for the team member to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_id: Annotated[ + str | None, + "The unique ID of the team where the member's role or membership status will be updated. It is required to identify the specific team. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'updateTeamMember'."]: + """Update a team member's role or confirm membership. + + This tool updates a team member's details within a specified team, such as modifying their role or confirming an unconfirmed member's request to join. It requires the authenticated user to have 'OWNER' privileges in the team. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATETEAMMEMBER_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not member_id: + missing_params.append(("member_id", "path")) + if not team_id: + missing_params.append(("team_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETEAMMEMBER_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETEAMMEMBER_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/teams/{teamId}/members/{uid}".format( # noqa: UP032 + uid=member_id, teamId=team_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETEAMMEMBER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_team_member( + context: ToolContext, + team_id: Annotated[ + str, "The ID of the team from which to remove or dismiss a member, or leave." + ], + user_id: Annotated[ + str, "The unique identifier of the user to be removed or dismissed from the team." + ], + new_default_team_id: Annotated[ + str | None, + "The ID of the team to set as the new default team for the Northstar user when removing another team member.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeTeamMember'."]: + """Remove or dismiss a team member or leave a team. + + This tool removes a team member from a team, dismisses a user who requested access, or allows a user to leave a team on Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/teams/{teamId}/members/{uid}".format( # noqa: UP032 + uid=user_id, teamId=team_id + ), + method="DELETE", + params=remove_none_values({"newDefaultTeamId": new_default_team_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_team_info( + context: ToolContext, + team_identifier: Annotated[ + str, "The unique identifier for the team to retrieve information about." + ], + team_slug: Annotated[ + str | None, + "A string representing the unique slug of the team. Used to specify which team's data to retrieve.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getTeam'."]: + """Retrieve information for a specified team using teamId. + + Use this tool to get detailed information about a team by specifying the teamId. It retrieves the data related to the team, which can include various details pertinent to the team specified.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/teams/{teamId}".format(teamId=team_identifier), # noqa: UP032 + method="GET", + params=remove_none_values({"slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_team_info( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team whose information you want to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_slug: Annotated[ + str | None, + "The unique slug for the team used to perform the request. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'patchTeam'."]: + """Update information of a specified team. + + Use this tool to modify details of an existing team by providing the team ID and the updated information. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not team_identifier: + missing_params.append(("team_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v2/teams/{teamId}".format(teamId=team_identifier), # noqa: UP032 + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_user_teams( + context: ToolContext, + max_number_of_teams: Annotated[ + float | None, "Maximum number of teams to return in the response." + ] = None, + teams_created_since_timestamp: Annotated[ + float | None, "Timestamp in milliseconds to include only teams created since this time." + ] = None, + teams_created_until: Annotated[ + float | None, "Timestamp in milliseconds to filter Teams created until the specified time." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getTeams'."]: + """Retrieve all teams for the authenticated user. + + Call this tool to get a list of all teams the authenticated user is a member of, with pagination support.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/teams", + method="GET", + params=remove_none_values({ + "limit": max_number_of_teams, + "since": teams_created_since_timestamp, + "until": teams_created_until, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_vercel_team( + context: ToolContext, + team_slug: Annotated[str, "The desired slug for the new team, used as a team identifier."], + session_landing_page: Annotated[ + str | None, + "The URL of the landing page where the session started. This is used for session attribution on Vercel.", + ] = None, + session_referrer: Annotated[ + str | None, "Referrer URL for the session initiating the team creation process." + ] = None, + signup_referrer_page: Annotated[ + str | None, + "The referrer URL of the page before the signup page, used for tracking attribution.", + ] = None, + team_name: Annotated[ + str | None, + "The desired name for the Team. If not provided, it will be generated from the slug.", + ] = None, + utm_campaign_name: Annotated[ + str | None, "Specifies the UTM campaign name for tracking purposes when creating a team." + ] = None, + utm_medium: Annotated[ + str | None, "The medium through which the user arrived, such as email, social, or cpc." + ] = None, + utm_source: Annotated[ + str | None, + "The UTM source identifier, indicating where the traffic originates from, such as a search engine or newsletter.", + ] = None, + utm_term: Annotated[ + str | None, "The UTM term used for tracking specific keywords in marketing campaigns." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createTeam'."]: + """Create a new team in your Vercel account. + + Use this tool to create a new team under your Vercel account by specifying a team slug, and optionally a team name. This is useful for organizing projects and members under a unified group.""" + request_data = remove_none_values({ + "slug": team_slug, + "name": team_name, + "attribution": { + "sessionReferrer": session_referrer, + "landingPage": session_landing_page, + "pageBeforeConversionPage": signup_referrer_page, + "utm": { + "utmSource": utm_source, + "utmMedium": utm_medium, + "utmCampaign": utm_campaign_name, + "utmTerm": utm_term, + }, + }, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/teams", + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_team( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier of the team to be deleted in your Vercel account. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + new_default_team_id: Annotated[ + str | None, + "Specify the team ID to set as the new default after deletion. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team you want to delete. Used to identify the team for the delete operation. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteTeam'."]: + """Delete a team from your Vercel account. + + Use this tool to send a request to delete a specific team under your Vercel account by providing the team ID. Optional reasons for deletion can be included. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["DELETETEAM_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not team_identifier: + missing_params.append(("team_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["DELETETEAM_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["DELETETEAM_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/teams/{teamId}".format(teamId=team_identifier), # noqa: UP032 + method="DELETE", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["DELETETEAM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"newDefaultTeamId": new_default_team_id, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_team_invite_code( + context: ToolContext, + team_identifier: Annotated[ + str, "The unique identifier of the team to perform the operation for in Vercel." + ], + team_invite_code_id: Annotated[str, "The ID of the team invite code to be deleted in Vercel."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteTeamInviteCode'."]: + """Delete an active team invite code in Vercel. + + Use this tool to remove an active team invite code for a specified team on Vercel. Call this tool when you need to cancel or invalidate an existing invite.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/teams/{teamId}/invites/{inviteId}".format( # noqa: UP032 + inviteId=team_invite_code_id, teamId=team_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_auth_tokens( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listAuthTokens'."]: + """Retrieve a list of the current user's authentication tokens. + + Use this tool to get a list of authentication tokens for the current user. It is useful for managing and reviewing user access tokens.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v5/user/tokens", + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_auth_token( + context: ToolContext, + token_name: Annotated[ + str, + "A descriptive name for the authentication token. This helps in identifying the token's purpose or context.", + ], + expiration_timestamp: Annotated[ + float | None, + "The expiration time for the token, specified as a Unix timestamp. This defines when the token will no longer be valid.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier for the Team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the Team to perform the request on behalf of. This identifies the specific team within your Vercel account.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createAuthToken'."]: + """Create a new authentication token for the user. + + Use this tool to generate and retrieve a new authentication token for the currently authenticated user. Ensure to save the token for subsequent API requests, as it is only provided once.""" + request_data = remove_none_values({"name": token_name, "expiresAt": expiration_timestamp}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v3/user/tokens", + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_auth_token_metadata( + context: ToolContext, + authentication_token_identifier: Annotated[ + str, + 'The ID of the token to retrieve metadata for. Use "current" for the token that the current request is authenticated with.', + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getAuthToken'."]: + """Retrieve metadata about an authentication token. + + This tool retrieves metadata about an authentication token for the currently authenticated user. It should be called when details about a specific token are needed, such as checking token permissions or validity.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v5/user/tokens/{tokenId}".format( # noqa: UP032 + tokenId=authentication_token_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def invalidate_auth_token( + context: ToolContext, + token_id: Annotated[ + str, + "The ID of the token to invalidate. Use 'current' to invalidate the token used for this request.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteAuthToken'."]: + """Invalidate an authentication token to revoke access. + + This tool is used to invalidate an authentication token, ensuring it is no longer valid for any future HTTP requests. Call this tool when you need to revoke access granted by a specific token.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v3/user/tokens/{tokenId}".format(tokenId=token_id), # noqa: UP032 + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_authenticated_user_info( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getAuthUser'."]: + """Retrieve current authenticated user's information. + + Use this tool to obtain details about the currently authenticated user from Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/user", + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def initiate_user_deletion( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'requestDelete'."]: + """Initiates user deletion and sends a confirmation email. + + Use this tool to start the deletion process for a user by emailing a confirmation link. The user has to follow the link to complete the deletion. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["INITIATEUSERDELETION_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["INITIATEUSERDELETION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["INITIATEUSERDELETION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v1/user", + method="DELETE", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["INITIATEUSERDELETION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def create_vercel_webhook( + context: ToolContext, + events_list: Annotated[ + list[str], + "A list of event types that trigger the webhook. Must be an array of strings, each representing an event.", + ], + webhook_url: Annotated[ + str, + "The target URL where the webhook will send POST requests. It should be a valid and publicly accessible URL.", + ], + project_ids: Annotated[ + list[str] | None, + "List of project IDs for which the webhook is being created. Each ID should be a string.", + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the request is performed." + ] = None, + team_slug: Annotated[ + str | None, + "The slug representing the Vercel team to target the request for. It identifies the team on whose behalf the webhook is created.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'createWebhook'."]: + """Create a new webhook in Vercel projects. + + This tool is used to create a new webhook in Vercel. It should be called when you need to set up automated notifications or integrations by creating a webhook within your Vercel projects.""" + request_data = remove_none_values({ + "url": webhook_url, + "events": events_list, + "projectIds": project_ids, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/webhooks", + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_vercel_webhooks( + context: ToolContext, + project_id: Annotated[ + str | None, "The unique identifier for the project to retrieve webhooks from." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier for the Vercel team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug identifier for the team to perform the request on behalf of. This is used to specify which team's webhooks you want to retrieve.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getWebhooks'."]: + """Retrieve a list of webhooks from Vercel. + + This tool is used to get all the webhooks associated with a Vercel account. Use this to monitor or manage integrations and callbacks configured in a Vercel environment.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/webhooks", + method="GET", + params=remove_none_values({ + "projectId": project_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_webhook( + context: ToolContext, + webhook_id: Annotated[str, "The unique identifier of the webhook to retrieve details for."], + team_identifier: Annotated[ + str | None, + "The identifier of the team on whose behalf the request is made. Required to specify the team context.", + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getWebhook'."]: + """Retrieve details of a specific webhook using its ID. + + Use this tool to obtain information about a specific webhook by providing its ID. It should be called when details are needed for a webhook managed by Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/webhooks/{id}".format(id=webhook_id), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_vercel_webhook( + context: ToolContext, + webhook_id: Annotated[str, "The unique identifier of the webhook to be deleted."], + team_identifier: Annotated[ + str | None, + "The Team identifier used to perform the request on behalf of the specified team.", + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the Vercel team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteWebhook'."]: + """Delete a specific webhook from Vercel. + + This tool deletes a specified webhook from a Vercel project using its unique ID. It should be called when you need to remove an existing webhook integration.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v1/webhooks/{id}".format(id=webhook_id), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_deployment_aliases( + context: ToolContext, + deployment_id: Annotated[str, "The ID of the deployment for which to list the aliases."], + team_identifier: Annotated[ + str | None, + "The identifier of the team to perform the request on behalf of. It is required to retrieve deployment aliases.", + ] = None, + team_slug: Annotated[ + str | None, "The slug representing the team on whose behalf the request is made." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listDeploymentAliases'."]: + """Fetch aliases for a specific deployment by ID. + + Retrieves all aliases associated with a given deployment ID. Use this to find or verify domain aliases linked to a specific Vercel deployment.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/deployments/{id}/aliases".format(id=deployment_id), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def set_deployment_alias( + context: ToolContext, + deployment_id: Annotated[ + str, + "The ID of the deployment to assign the alias to. This identifier is crucial for specifying which deployment will receive the new alias.", + ], + deployment_alias: Annotated[ + str | None, "The alias to assign to the specified Vercel deployment." + ] = None, + redirect_hostname: Annotated[ + str | None, + "Hostname to redirect the alias to, using status code 307. This will override the deployment ID from the URL.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier of the team to perform the alias assignment on behalf of. Required for team-based operations.", + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. This identifies the team for the deployment operation.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'assignAlias'."]: + """Assigns a new alias to a Vercel deployment. + + Use this tool to create or update an alias for a specific Vercel deployment. If the alias is currently linked to another deployment, it will be reassigned to the specified deployment.""" + request_data = remove_none_values({"alias": deployment_alias, "redirect": redirect_hostname}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/deployments/{id}/aliases".format(id=deployment_id), # noqa: UP032 + method="POST", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_aliases( + context: ToolContext, + aliases_created_after_timestamp: Annotated[ + float | None, + "Get aliases created after this JavaScript timestamp. Use a timestamp in milliseconds since the epoch.", + ] = None, + created_after_timestamp: Annotated[ + float | None, "Return aliases created after this UNIX timestamp." + ] = None, + filter_by_domain: Annotated[ + str | None, "Return only aliases associated with the specified domain name." + ] = None, + get_aliases_before_timestamp: Annotated[ + float | None, "Retrieve aliases created before the specified JavaScript timestamp." + ] = None, + maximum_aliases_to_list: Annotated[ + float | None, "Specifies the maximum number of aliases to retrieve in the request." + ] = None, + project_id_filter: Annotated[ + str | None, "Filter to list aliases associated with the specified project ID." + ] = None, + rollback_deployment_id: Annotated[ + str | None, + "Specify the deployment ID to get aliases that would be rolled back for that deployment.", + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team to perform the request on behalf of. Use this to specify the team whose aliases should be listed.", + ] = None, + team_slug: Annotated[ + str | None, "The slug identifier for the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listAliases'."]: + """Retrieve a list of Vercel aliases for a user or team. + + This tool retrieves a list of aliases for the authenticated Vercel user or team. Optionally, it can filter aliases by a specific domain or project.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v4/aliases", + method="GET", + params=remove_none_values({ + "domain": filter_by_domain, + "from": created_after_timestamp, + "limit": maximum_aliases_to_list, + "projectId": project_id_filter, + "since": aliases_created_after_timestamp, + "until": get_aliases_before_timestamp, + "rollbackDeploymentId": rollback_deployment_id, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_vercel_alias( + context: ToolContext, + alias_identifier: Annotated[str, "The alias or alias ID of the Vercel entity to retrieve."], + after_timestamp: Annotated[ + float | None, + "Get the alias only if it was created after this JavaScript timestamp (milliseconds since epoch).", + ] = None, + created_after_timestamp: Annotated[ + float | None, + "Retrieve the alias only if it was created after the specified timestamp (in milliseconds).", + ] = None, + created_before_timestamp: Annotated[ + float | None, "Retrieve the alias only if it was created before this JavaScript timestamp." + ] = None, + project_id: Annotated[ + str | None, "Fetch the alias only if it is associated with this project ID in Vercel." + ] = None, + team_identifier: Annotated[ + str | None, "The Team identifier to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the request on behalf of. This specifies the team context for the alias retrieval.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getAlias'."]: + """Retrieve Vercel alias information for a host name or alias ID. + + Use this tool to fetch alias details for a specified host name or alias ID on Vercel.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v4/aliases/{idOrAlias}".format(idOrAlias=alias_identifier), # noqa: UP032 + method="GET", + params=remove_none_values({ + "from": created_after_timestamp, + "projectId": project_id, + "since": after_timestamp, + "until": created_before_timestamp, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_alias_by_id( + context: ToolContext, + alias_id_to_remove: Annotated[ + str, "The unique ID or alias of the item to be removed from Vercel." + ], + team_identifier: Annotated[ + str | None, "The unique identifier for the team to execute the request." + ] = None, + team_slug: Annotated[ + str | None, "The unique slug of the team for which the alias will be deleted." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteAlias'."]: + """Delete a specific alias by its ID. + + Use this tool to delete an alias from Vercel using its unique ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v2/aliases/{aliasId}".format(aliasId=alias_id_to_remove), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def update_url_protection_bypass( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + alias_or_deployment_id: Annotated[ + str | None, + "The ID of the alias or deployment for which to update the protection bypass. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", + ] = None, + team_identifier: Annotated[ + str | None, + "The unique identifier of the team on whose behalf the request is made. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "The team slug representing which team the request should be performed for in Vercel. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'patchUrlProtectionBypass'."]: + """Update the protection bypass for a Vercel URL. + + Use this tool to update the protection bypass for an alias or deployment URL in Vercel, enabling user or comment access on preview deployments. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEURLPROTECTIONBYPASS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not alias_or_deployment_id: + missing_params.append(("alias_or_deployment_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEURLPROTECTIONBYPASS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEURLPROTECTIONBYPASS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/aliases/{id}/protection-bypass".format( # noqa: UP032 + id=alias_or_deployment_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEURLPROTECTIONBYPASS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_certificate_by_id( + context: ToolContext, + certificate_id: Annotated[ + str, "The unique identifier of the certificate to be retrieved from Vercel." + ], + team_identifier: Annotated[ + str | None, "The identifier of the team to perform the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, "The slug identifying the team to perform the request on behalf of." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getCertById'."]: + """Retrieve a Vercel certificate using its ID. + + Use this tool to get information about a specific Vercel certificate by providing its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/certs/{id}".format(id=certificate_id), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def remove_certificate( + context: ToolContext, + certificate_id: Annotated[str, "The unique identifier of the certificate to remove."], + team_identifier: Annotated[ + str | None, "The identifier for the team on whose behalf the removal request is made." + ] = None, + team_slug: Annotated[ + str | None, "The slug of the team to perform the request on behalf of in Vercel." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'removeCert'."]: + """Remove a certificate from Vercel using its ID. + + This tool removes a specific certificate from a Vercel account identified by its ID. It should be called when you need to delete an existing certificate to manage SSL/TLS configurations.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/certs/{id}".format(id=certificate_id), # noqa: UP032 + method="DELETE", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def issue_vercel_certificate( + context: ToolContext, + common_names_for_certificate: Annotated[ + list[str] | None, + "List of common names (domains) that the SSL certificate should be issued for.", + ] = None, + team_id: Annotated[ + str | None, + "The identifier for the Vercel team on whose behalf the certificate request is made.", + ] = None, + team_slug: Annotated[ + str | None, "The team slug identifier for cert request on behalf of a specific team." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'issueCert'."]: + """Request a new SSL certificate from Vercel. + + This tool is used to issue a new SSL certificate through Vercel's API. It's called when you need to obtain a certificate for secure communication with your Vercel-hosted applications.""" + request_data = remove_none_values({"cns": common_names_for_certificate}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/certs", + method="POST", + params=remove_none_values({"teamId": team_id, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def upload_certificate( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to perform the request on behalf of. Only used when mode is 'execute'.", + ] = None, + team_slug: Annotated[ + str | None, + "Specify the team slug to perform the request on behalf of in Vercel. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'uploadCert'."]: + """Uploads a certificate to Vercel. + + Use this tool to upload a new certificate to the Vercel platform. This is needed when adding or updating SSL certificates for your domains. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPLOADCERTIFICATE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPLOADCERTIFICATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPLOADCERTIFICATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://api.vercel.com/v8/certs", + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPLOADCERTIFICATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def get_vercel_deployment_files( + context: ToolContext, + deployment_identifier: Annotated[ + str, "The unique identifier for the deployment to retrieve its file structure." + ], + team_identifier: Annotated[ + str | None, "The identifier of the team on whose behalf the request is made." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team performing the request. It is required for team-scoped requests.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'listDeploymentFiles'."]: + """Retrieve the file structure of a Vercel deployment. + + Use this tool to get the file structure of a Vercel deployment by providing the unique deployment identifier. Useful for analyzing the contents and structure of deployed source code.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v6/deployments/{id}/files".format(id=deployment_identifier), # noqa: UP032 + method="GET", + params=remove_none_values({"teamId": team_identifier, "slug": team_slug}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def retrieve_deployment_file_contents( + context: ToolContext, + deployment_unique_identifier: Annotated[ + str, "The unique identifier for the deployment from which to retrieve the file." + ], + file_identifier: Annotated[ + str, "The unique identifier for the file you want to retrieve from the deployment." + ], + file_path: Annotated[ + str | None, "Path to the file to fetch, applicable only for Git-based deployments." + ] = None, + team_identifier: Annotated[ + str | None, "The identifier of the team to make the request on behalf of." + ] = None, + team_slug: Annotated[ + str | None, + "The slug of the team to perform the request on behalf of. Specify which team's context to use.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDeploymentFileContents'."]: + """Retrieve the contents of a file from a Vercel deployment. + + Use this tool to get the content of a specific file from a Vercel deployment by providing the deployment and file identifiers. The response provides the file contents encoded in base64.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v8/deployments/{id}/files/{fileId}".format( # noqa: UP032 + id=deployment_unique_identifier, fileId=file_identifier + ), + method="GET", + params=remove_none_values({ + "path": file_path, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def list_vercel_deployments( + context: ToolContext, + branch_name_filter: Annotated[ + str | None, "Specify the branch name to filter deployments." + ] = None, + created_after_timestamp: Annotated[ + float | None, + "Retrieve deployments created after this Date timestamp. Defaults to current time if not specified.", + ] = None, + deployment_name: Annotated[str | None, "The name of the deployment to filter results."] = None, + deployment_since_timestamp: Annotated[ + float | None, "Retrieve deployments created after this JavaScript timestamp." + ] = None, + deployment_state_filter: Annotated[ + str | None, + "Filter deployments by their state, such as `BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, or `CANCELED`.", + ] = None, + fetch_deployments_before_timestamp: Annotated[ + float | None, + "Specify a JavaScript timestamp to retrieve deployments created before this time.", + ] = None, + filter_by_environment: Annotated[ + str | None, "Specify the environment to filter deployments (e.g., 'production', 'staging')." + ] = None, + filter_by_project_id: Annotated[ + str | None, "Filter deployments using a specific project ID or name." + ] = None, + filter_by_project_ids: Annotated[ + list[str] | None, + "Filter deployments from specified project IDs. Cannot be used with the 'filter_by_project_id' argument.", + ] = None, + filter_by_rollback_candidacy: Annotated[ + bool | None, "Set to true to filter and include only rollback candidate deployments." + ] = None, + filter_by_sha: Annotated[ + str | None, "Filter deployments based on the specific SHA value." + ] = None, + get_deployments_before_timestamp: Annotated[ + float | None, + "A timestamp to get deployments created before a specific date. Useful for filtering older deployments. Defaults to the current time if not specified.", + ] = None, + maximum_deployments_to_list: Annotated[ + float | None, "Sets the maximum number of deployments to retrieve in one request." + ] = None, + team_identifier: Annotated[ + str | None, + "The identifier for the team to perform the request on behalf of. Use when filtering deployments by team.", + ] = None, + team_slug: Annotated[ + str | None, + "The team slug to perform the request on behalf of. Specify which team's deployments to retrieve.", + ] = None, + user_filter: Annotated[ + str | None, + "Filter deployments by the user who created them. Provide a username or user ID.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'getDeployments'."]: + """Retrieve deployments from Vercel for a user or team. + + This tool fetches the list of deployments for the authenticated user or team from Vercel. It should be called when users need to view their recent deployment history. If a deployment is incomplete, the URL will be null.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v6/deployments", + method="GET", + params=remove_none_values({ + "app": deployment_name, + "from": created_after_timestamp, + "limit": maximum_deployments_to_list, + "projectId": filter_by_project_id, + "projectIds": filter_by_project_ids, + "target": filter_by_environment, + "to": get_deployments_before_timestamp, + "users": user_filter, + "since": deployment_since_timestamp, + "until": fetch_deployments_before_timestamp, + "state": deployment_state_filter, + "rollbackCandidate": filter_by_rollback_candidacy, + "branch": branch_name_filter, + "sha": filter_by_sha, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["VERCEL_ACCESS_TOKEN"]) +async def delete_deployment( + context: ToolContext, + deployment_id: Annotated[ + str, "The ID of the deployment to be deleted. Use this if not providing a URL." + ], + deployment_url: Annotated[ + str | None, + "A Deployment or Alias URL for identifying the deployment to delete. The ID will be ignored if this is provided.", + ] = None, + team_identifier: Annotated[ + str | None, "The unique identifier for the team on whose behalf the request is executed." + ] = None, + team_slug: Annotated[ + str | None, + "The Team slug to perform the deletion on behalf of. Specify which team's deployment to delete.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'deleteDeployment'."]: + """Delete a Vercel deployment using its ID or URL. + + Use this tool to delete a Vercel deployment by providing the deployment's `id` or `url`. Useful for managing and cleaning up deployments.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://api.vercel.com/v13/deployments/{id}".format(id=deployment_id), # noqa: UP032 + method="DELETE", + params=remove_none_values({ + "url": deployment_url, + "teamId": team_identifier, + "slug": team_slug, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( + authorization=context.get_secret("VERCEL_ACCESS_TOKEN") + ), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} diff --git a/toolkits/vercel_api/arcade_vercel_api/tools/request_body_schemas.py b/toolkits/vercel_api/arcade_vercel_api/tools/request_body_schemas.py new file mode 100644 index 00000000..1f17912f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/tools/request_body_schemas.py @@ -0,0 +1,6764 @@ +"""Request Body Schemas for API Tools + +DO NOT EDIT THIS MODULE DIRECTLY. + +THIS MODULE WAS AUTO-GENERATED AND CONTAINS OpenAPI REQUEST BODY SCHEMAS +FOR TOOLS WITH COMPLEX REQUEST BODIES. ANY CHANGES TO THIS MODULE WILL +BE OVERWRITTEN BY THE TRANSPILER. +""" + +from typing import Any + +REQUEST_BODY_SCHEMAS: dict[str, Any] = { + "UPDATEACCESSGROUP_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "membersToAdd": { + "description": "List of members to add to the access group.", + "example": ["usr_1a2b3c4d5e6f7g8h9i0j", "usr_2b3c4d5e6f7g8h9i0j1k"], + "items": {"type": "string"}, + "type": "array", + }, + "membersToRemove": { + "description": "List of members to remove from the access group.", + "example": ["usr_1a2b3c4d5e6f7g8h9i0j", "usr_2b3c4d5e6f7g8h9i0j1k"], + "items": {"type": "string"}, + "type": "array", + }, + "name": { + "description": "The name of the access group", + "example": "My access group", + "maxLength": 50, + "pattern": "^[A-z0-9_ -]+$", + "type": "string", + }, + "projects": { + "items": { + "additionalProperties": False, + "properties": { + "projectId": { + "description": "The ID of the project.", + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "maxLength": 256, + "type": "string", + }, + "role": { + "description": "The " + "project " + "role " + "that " + "will be " + "added " + "to this " + "Access " + "Group. " + '\\"null\\" ' + "will " + "remove " + "this " + "project " + "level " + "role.", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", None], + "example": "ADMIN", + "nullable": True, + "type": "string", + }, + }, + "required": ["role", "projectId"], + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "CREATEACCESSGROUP_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "membersToAdd": { + "description": "List of members to add to the access group.", + "example": ["usr_1a2b3c4d5e6f7g8h9i0j", "usr_2b3c4d5e6f7g8h9i0j1k"], + "items": {"type": "string"}, + "type": "array", + }, + "name": { + "description": "The name of the access group", + "example": "My access group", + "maxLength": 50, + "pattern": "^[A-z0-9_ -]+$", + "type": "string", + }, + "projects": { + "items": { + "additionalProperties": False, + "properties": { + "projectId": { + "description": "The ID of the project.", + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "maxLength": 256, + "type": "string", + }, + "role": { + "description": "The " + "project " + "role " + "that " + "will be " + "added " + "to this " + "Access " + "Group. " + '\\"null\\" ' + "will " + "remove " + "this " + "project " + "level " + "role.", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER"], + "example": "ADMIN", + "nullable": True, + "type": "string", + }, + }, + "required": ["role", "projectId"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["name"], + "type": "object", + }, + "RECORDCACHEEVENTS_REQUEST_BODY_SCHEMA": { + "items": { + "additionalProperties": False, + "properties": { + "duration": { + "description": "The time taken to generate the " + "artifact. This should be sent " + "as a body parameter on `HIT` " + "events.", + "example": 400, + "type": "number", + }, + "event": { + "description": "One of `HIT` or `MISS`. `HIT` " + "specifies that a cached artifact " + "for `hash` was found in the cache. " + "`MISS` specifies that a cached " + "artifact with `hash` was not " + "found.", + "enum": ["HIT", "MISS"], + "type": "string", + }, + "hash": { + "description": "The artifact hash", + "example": "12HKQaOmR5t5Uy6vdcQsNIiZgHGB", + "type": "string", + }, + "sessionId": { + "description": "A UUID (universally unique " + "identifer) for the session " + "that generated this event.", + "type": "string", + }, + "source": { + "description": "One of `LOCAL` or `REMOTE`. " + "`LOCAL` specifies that the cache " + "event was from the user's " + "filesystem cache. `REMOTE` " + "specifies that the cache event is " + "from a remote cache.", + "enum": ["LOCAL", "REMOTE"], + "type": "string", + }, + }, + "required": ["sessionId", "source", "hash", "event"], + "type": "object", + }, + "type": "array", + }, + "UPDATEEXISTINGCHECK_REQUEST_BODY_SCHEMA": { + "properties": { + "conclusion": { + "description": "The result of the check being run", + "enum": ["canceled", "failed", "neutral", "succeeded", "skipped"], + }, + "detailsUrl": { + "description": "A URL a user may visit to see more information about the check", + "example": "https://example.com/check/run/1234abc", + "type": "string", + }, + "externalId": { + "description": "An identifier that can be used as an external reference", + "example": "1234abc", + "type": "string", + }, + "name": { + "description": "The name of the check being created", + "example": "Performance Check", + "maxLength": 100, + "type": "string", + }, + "output": { + "description": "The results of the check Run", + "properties": { + "metrics": { + "additionalProperties": False, + "description": "Metrics about the page", + "properties": { + "CLS": { + "properties": { + "previousValue": { + "description": "Previous " + "Cumulative " + "Layout " + "Shift " + "value " + "to " + "display " + "a " + "delta", + "example": 2, + "type": "number", + }, + "source": {"enum": ["web-vitals"], "type": "string"}, + "value": { + "description": "Cumulative Layout Shift value", + "example": 4, + "nullable": True, + "type": "number", + }, + }, + "required": ["value", "source"], + "type": "object", + }, + "FCP": { + "properties": { + "previousValue": { + "description": "Previous " + "First " + "Contentful " + "Paint " + "value " + "to " + "display " + "a " + "delta", + "example": 900, + "type": "number", + }, + "source": {"enum": ["web-vitals"], "type": "string"}, + "value": { + "description": "First Contentful Paint value", + "example": 1200, + "nullable": True, + "type": "number", + }, + }, + "required": ["value", "source"], + "type": "object", + }, + "LCP": { + "properties": { + "previousValue": { + "description": "Previous " + "Largest " + "Contentful " + "Paint " + "value " + "to " + "display " + "a " + "delta", + "example": 1000, + "type": "number", + }, + "source": {"enum": ["web-vitals"], "type": "string"}, + "value": { + "description": "Largest Contentful Paint value", + "example": 1200, + "nullable": True, + "type": "number", + }, + }, + "required": ["value", "source"], + "type": "object", + }, + "TBT": { + "properties": { + "previousValue": { + "description": "Previous " + "Total " + "Blocking " + "Time " + "value " + "to " + "display " + "a " + "delta", + "example": 3500, + "type": "number", + }, + "source": {"enum": ["web-vitals"]}, + "value": { + "description": "Total Blocking Time value", + "example": 3000, + "nullable": True, + "type": "number", + }, + }, + "required": ["value", "source"], + "type": "object", + }, + "virtualExperienceScore": { + "properties": { + "previousValue": { + "description": "A " + "previous " + "Virtual " + "Experience " + "Score " + "value " + "to " + "display " + "a " + "delta, " + "between " + "0 " + "and " + "100", + "example": 35, + "maximum": 100, + "minimum": 0, + "type": "integer", + }, + "source": {"enum": ["web-vitals"]}, + "value": { + "description": "The " + "calculated " + "Virtual " + "Experience " + "Score " + "value, " + "between " + "0 " + "and " + "100", + "example": 30, + "maximum": 100, + "minimum": 0, + "nullable": True, + "type": "integer", + }, + }, + "required": ["value", "source"], + "type": "object", + }, + }, + "required": ["FCP", "LCP", "CLS", "TBT"], + "type": "object", + } + }, + "type": "object", + }, + "path": { + "description": "Path of the page that is being checked", + "example": "/", + "maxLength": 255, + "type": "string", + }, + "status": { + "description": "The current status of the check", + "enum": ["running", "completed"], + }, + }, + "type": "object", + }, + "UPDATEINTEGRATIONDEPLOYMENT_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "outcomes": { + "items": { + "oneOf": [ + { + "additionalProperties": False, + "properties": { + "kind": {"type": "string"}, + "secrets": { + "items": { + "additionalProperties": False, + "properties": { + "name": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["kind", "secrets"], + "type": "object", + } + ] + }, + "type": "array", + }, + "status": {"enum": ["running", "succeeded", "failed"], "type": "string"}, + "statusText": {"type": "string"}, + "statusUrl": {"format": "uri", "pattern": "^https?://|^sso:", "type": "string"}, + }, + "type": "object", + }, + "CREATEVERCELDEPLOYMENT_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "customEnvironmentSlugOrId": { + "description": "Deploy to a custom " + "environment, which will " + "override the default " + "environment", + "type": "string", + }, + "deploymentId": { + "description": "An deployment id for an existing deployment to redeploy", + "example": "dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6", + "type": "string", + }, + "files": { + "description": "A list of objects with the files to be deployed", + "items": { + "oneOf": [ + { + "additionalProperties": False, + "description": "Used in the case you " + "want to inline a file " + "inside the request", + "properties": { + "data": { + "description": "The " + "file " + "content, " + "it " + "could " + "be " + "either " + "a " + "`base64` " + "(useful " + "for " + "images, " + "etc.) " + "of " + "the " + "files " + "or " + "the " + "plain " + "content " + "for " + "source " + "code", + "type": "string", + }, + "encoding": { + "description": "The " + "file " + "content " + "encoding, " + "it " + "could " + "be " + "either " + "a " + "base64 " + "(useful " + "for " + "images, " + "etc.) " + "of " + "the " + "files " + "or " + "the " + "plain " + "text " + "for " + "source " + "code.", + "enum": ["base64", "utf-8"], + }, + "file": { + "description": "The file name including the whole path", + "example": "folder/file.js", + "type": "string", + }, + }, + "required": ["file", "data"], + "title": "InlinedFile", + "type": "object", + }, + { + "additionalProperties": False, + "description": "Used in the case you " + "want to reference a " + "file that was already " + "uploaded", + "properties": { + "file": { + "description": "The file path relative to the project root", + "example": "folder/file.js", + "type": "string", + }, + "sha": { + "description": "The " + "file " + "contents " + "hashed " + "with " + "SHA1, " + "used " + "to " + "check " + "the " + "integrity", + "type": "string", + }, + "size": { + "description": "The file size in bytes", + "type": "integer", + }, + }, + "required": ["file"], + "title": "UploadedFile", + "type": "object", + }, + ] + }, + "type": "array", + }, + "gitMetadata": { + "additionalProperties": False, + "description": "Populates initial git metadata for different git providers.", + "properties": { + "ci": { + "description": "True if process.env.CI was set when deploying", + "example": True, + "type": "boolean", + }, + "ciGitProviderUsername": { + "description": "The " + "username " + "used " + "for " + "the " + "Git " + "Provider " + "(e.g. " + "GitHub) " + "if " + "their " + "CI " + "(e.g. " + "GitHub " + "Actions) " + "was " + "used, " + "if " + "available", + "example": "rauchg", + "type": "string", + }, + "ciGitRepoVisibility": { + "description": "The " + "visibility " + "of " + "the " + "Git " + "repository " + "if " + "their " + "CI " + "(e.g. " + "GitHub " + "Actions) " + "was " + "used, " + "if " + "available", + "example": "private", + "type": "string", + }, + "ciType": { + "description": "The type of CI system used", + "example": "github-actions", + "type": "string", + }, + "commitAuthorEmail": { + "description": "The email of the author of the commit", + "example": "kyliau@example.com", + "type": "string", + }, + "commitAuthorName": { + "description": "The name of the author of the commit", + "example": "kyliau", + "type": "string", + }, + "commitMessage": { + "description": "The commit message", + "example": "add method to measure Interaction to Next Paint (INP) (#36490)", + "type": "string", + }, + "commitRef": { + "description": "The branch on which the commit was made", + "example": "main", + "type": "string", + }, + "commitSha": { + "description": "The hash of the commit", + "example": "dc36199b2234c6586ebe05ec94078a895c707e29", + "type": "string", + }, + "dirty": { + "description": "Whether or " + "not there " + "have been " + "modifications " + "to the " + "working tree " + "since the " + "latest commit", + "example": True, + "type": "boolean", + }, + "remoteUrl": { + "description": "The git repository's remote origin url", + "example": "https://github.com/vercel/next.js", + "type": "string", + }, + }, + "type": "object", + }, + "gitSource": { + "anyOf": [ + { + "properties": { + "ref": {"example": "main", "type": "string"}, + "repoId": { + "example": 123456789, + "oneOf": [{"type": "number"}, {"type": "string"}], + }, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "type": {"enum": ["github"], "type": "string"}, + }, + "required": ["type", "ref", "repoId"], + "type": "object", + }, + { + "properties": { + "org": {"example": "vercel", "type": "string"}, + "ref": {"example": "main", "type": "string"}, + "repo": {"example": "next.js", "type": "string"}, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "type": {"enum": ["github"], "type": "string"}, + }, + "required": ["type", "ref", "org", "repo"], + "type": "object", + }, + { + "properties": { + "ref": {"example": "main", "type": "string"}, + "repoId": { + "example": 123456789, + "oneOf": [{"type": "number"}, {"type": "string"}], + }, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "type": {"enum": ["github-limited"], "type": "string"}, + }, + "required": ["type", "ref", "repoId"], + "type": "object", + }, + { + "properties": { + "org": {"example": "vercel", "type": "string"}, + "ref": {"example": "main", "type": "string"}, + "repo": {"example": "next.js", "type": "string"}, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "type": {"enum": ["github-limited"], "type": "string"}, + }, + "required": ["type", "ref", "org", "repo"], + "type": "object", + }, + { + "properties": { + "projectId": { + "example": 987654321, + "oneOf": [{"type": "number"}, {"type": "string"}], + }, + "ref": {"example": "main", "type": "string"}, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "type": {"enum": ["gitlab"], "type": "string"}, + }, + "required": ["type", "ref", "projectId"], + "type": "object", + }, + { + "properties": { + "ref": {"example": "main", "type": "string"}, + "repoUuid": { + "example": "123e4567-e89b-12d3-a456-426614174000", + "type": "string", + }, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "type": {"enum": ["bitbucket"], "type": "string"}, + "workspaceUuid": { + "example": "987e6543-e21b-12d3-a456-426614174000", + "type": "string", + }, + }, + "required": ["type", "ref", "repoUuid"], + "type": "object", + }, + { + "properties": { + "owner": {"example": "bitbucket_user", "type": "string"}, + "ref": {"example": "main", "type": "string"}, + "sha": { + "example": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", + "type": "string", + }, + "slug": {"example": "my-awesome-project", "type": "string"}, + "type": {"enum": ["bitbucket"], "type": "string"}, + }, + "required": ["type", "ref", "owner", "slug"], + "type": "object", + }, + ], + "description": "Defines the Git Repository source to be " + "deployed. This property can not be used " + "in combination with `files`.", + }, + "meta": { + "additionalProperties": {"maxLength": 65536, "type": "string"}, + "description": "An object containing the deployment's " + "metadata. Multiple key-value pairs can be " + "attached to a deployment", + "example": {"foo": "bar"}, + "maxProperties": 100, + "type": "object", + }, + "monorepoManager": { + "description": "The monorepo manager that is being " + "used for this deployment. When " + "`null` is used no monorepo manager " + "is selected", + "nullable": True, + "type": "string", + }, + "name": { + "description": "A string with the project name used in the deployment URL", + "example": "my-instant-deployment", + "type": "string", + }, + "project": { + "description": "The target project identifier in which the " + "deployment will be created. When defined, " + "this parameter overrides name", + "example": "my-deployment-project", + "type": "string", + }, + "projectSettings": { + "additionalProperties": False, + "description": "Project settings that will be " + "applied to the deployment. It is " + "required for the first deployment " + "of a project and will be saved for " + "any following deployments", + "properties": { + "buildCommand": { + "description": "The " + "build " + "command " + "for " + "this " + "project. " + "When " + "`null` " + "is " + "used " + "this " + "value " + "will " + "be " + "automatically " + "detected", + "example": "next build", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "commandForIgnoringBuildStep": { + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "devCommand": { + "description": "The " + "dev " + "command " + "for " + "this " + "project. " + "When " + "`null` " + "is " + "used " + "this " + "value " + "will " + "be " + "automatically " + "detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "framework": { + "description": "The " + "framework " + "that " + "is " + "being " + "used " + "for " + "this " + "project. " + "When " + "`null` " + "is " + "used " + "no " + "framework " + "is " + "selected", + "enum": [ + None, + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp", + ], + "nullable": True, + "type": "string", + }, + "installCommand": { + "description": "The " + "install " + "command " + "for " + "this " + "project. " + "When " + "`null` " + "is " + "used " + "this " + "value " + "will " + "be " + "automatically " + "detected", + "example": "pnpm install", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "nodeVersion": { + "description": "Override " + "the " + "Node.js " + "version " + "that " + "should " + "be " + "used " + "for " + "this " + "deployment", + "enum": ["22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x", "8.10.x"], + "type": "string", + }, + "outputDirectory": { + "description": "The " + "output " + "directory " + "of " + "the " + "project. " + "When " + "`null` " + "is " + "used " + "this " + "value " + "will " + "be " + "automatically " + "detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "rootDirectory": { + "description": "The " + "name " + "of " + "a " + "directory " + "or " + "relative " + "path " + "to " + "the " + "source " + "code " + "of " + "your " + "project. " + "When " + "`null` " + "is " + "used " + "it " + "will " + "default " + "to " + "the " + "project " + "root", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "serverlessFunctionRegion": { + "description": "The region to deploy Serverless Functions in this project", + "maxLength": 4, + "nullable": True, + "type": "string", + }, + "skipGitConnectDuringLink": { + "deprecated": True, + "description": "Opts-out " + "of " + "the " + "message " + "prompting " + "a " + "CLI " + "user " + "to " + "connect " + "a " + "Git " + "repository " + "in " + "`vercel " + "link`.", + "type": "boolean", + }, + "sourceFilesOutsideRootDirectory": { + "description": "Indicates " + "if " + "there " + "are " + "source " + "files " + "outside " + "of " + "the " + "root " + "directory, " + "typically " + "used " + "for " + "monorepos", + "type": "boolean", + }, + }, + "type": "object", + }, + "target": { + "description": "Either not defined, `staging`, " + "`production`, or a custom environment " + "identifier. If `staging`, a staging alias " + "in the format `-.vercel.app` " + "will be assigned. If `production`, any " + "aliases defined in `alias` will be " + "assigned. If omitted, the target will be " + "`preview`.", + "example": "production", + "type": "string", + }, + "withLatestCommit": { + "description": "When `true` and `deploymentId` is " + "passed in, the sha from the " + "previous deployment's `gitSource` " + "is removed forcing the latest " + "commit to be used.", + "type": "boolean", + }, + }, + "required": ["name"], + "type": "object", + }, + "PURCHASEDOMAIN_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "address1": { + "description": "The street address of the domain registrant", + "example": "340 S Lemon Ave Suite 4133", + "type": "string", + }, + "city": { + "description": "The city of the domain registrant", + "example": "San Francisco", + "type": "string", + }, + "country": { + "description": "The country of the domain registrant", + "example": "US", + "type": "string", + }, + "email": { + "description": "The email of the domain registrant", + "example": "jane.doe@someplace.com", + "type": "string", + }, + "expectedPrice": { + "description": "The price you expect to be charged for the purchase.", + "example": 10, + "type": "number", + }, + "firstName": { + "description": "The first name of the domain registrant", + "example": "Jane", + "type": "string", + }, + "lastName": { + "description": "The last name of the domain registrant", + "example": "Doe", + "type": "string", + }, + "name": { + "description": "The domain name to purchase.", + "example": "example.com", + "type": "string", + }, + "orgName": { + "description": "The company name of the domain registrant", + "example": "Acme Inc.", + "type": "string", + }, + "phone": { + "description": "The phone number of the domain registrant", + "example": "+1.4158551452", + "type": "string", + }, + "postalCode": { + "description": "The postal code of the domain registrant", + "example": "91789", + "type": "string", + }, + "renew": { + "description": "Indicates whether the domain should be automatically renewed.", + "example": True, + "type": "boolean", + }, + "state": { + "description": "The state of the domain registrant", + "example": "CA", + "type": "string", + }, + }, + "required": [ + "name", + "country", + "firstName", + "lastName", + "address1", + "city", + "state", + "postalCode", + "phone", + "email", + ], + "type": "object", + }, + "CREATEDNSRECORD_REQUEST_BODY_SCHEMA": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `A`.", + "enum": ["A"], + "type": "string", + }, + "value": { + "description": "The record value must be a valid IPv4 address.", + "example": "192.0.2.42", + "format": "ipv4", + "type": "string", + }, + }, + "required": ["type", "value", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `AAAA`.", + "enum": ["AAAA"], + "type": "string", + }, + "value": { + "description": "An AAAA record pointing to an IPv6 address.", + "example": "2001:DB8::42", + "format": "ipv6", + "type": "string", + }, + }, + "required": ["type", "value", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `ALIAS`.", + "enum": ["ALIAS"], + "type": "string", + }, + "value": { + "description": "An ALIAS virtual record pointing " + "to a hostname resolved to an A " + "record on server side.", + "example": "cname.vercel-dns.com", + "type": "string", + }, + }, + "required": ["type", "value", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `CAA`.", + "enum": ["CAA"], + "type": "string", + }, + "value": { + "description": "A CAA record to specify which " + "Certificate Authorities (CAs) are " + "allowed to issue certificates for " + "the domain.", + "example": '0 issue \\"letsencrypt.org\\"', + "type": "string", + }, + }, + "required": ["type", "value", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `CNAME`.", + "enum": ["CNAME"], + "type": "string", + }, + "value": { + "description": "A CNAME record mapping to another domain name.", + "example": "cname.vercel-dns.com", + "type": "string", + }, + }, + "required": ["type", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "mxPriority": {"example": 10, "maximum": 65535, "minimum": 0, "type": "number"}, + "name": { + "description": "A subdomain name or an empty string for the root domain.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `MX`.", + "enum": ["MX"], + "type": "string", + }, + "value": { + "description": "An MX record specifying the mail " + "server responsible for accepting " + "messages on behalf of the domain " + "name.", + "example": "10 mail.example.com.", + "type": "string", + }, + }, + "required": ["type", "value", "name", "mxPriority"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "srv": { + "additionalProperties": False, + "properties": { + "port": { + "anyOf": [ + { + "example": 5000, + "maximum": 65535, + "minimum": 0, + "type": "number", + } + ], + "nullable": True, + }, + "priority": { + "anyOf": [ + { + "example": 10, + "maximum": 65535, + "minimum": 0, + "type": "number", + } + ], + "nullable": True, + }, + "target": {"example": "host.example.com", "type": "string"}, + "weight": { + "anyOf": [ + { + "example": 10, + "maximum": 65535, + "minimum": 0, + "type": "number", + } + ], + "nullable": True, + }, + }, + "required": ["weight", "port", "priority", "target"], + "type": "object", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `SRV`.", + "enum": ["SRV"], + "type": "string", + }, + }, + "required": ["type", "name", "srv"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `TXT`.", + "enum": ["TXT"], + "type": "string", + }, + "value": { + "description": "A TXT record containing arbitrary text.", + "example": "hello", + "type": "string", + }, + }, + "required": ["type", "value", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "name": { + "description": "A subdomain name.", + "example": "subdomain", + "type": "string", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `NS`.", + "enum": ["NS"], + "type": "string", + }, + "value": { + "description": "An NS domain value.", + "example": "ns1.example.com", + "type": "string", + }, + }, + "required": ["type", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "https": { + "additionalProperties": False, + "properties": { + "params": {"example": "alpn=h2,h3", "type": "string"}, + "priority": { + "anyOf": [ + { + "example": 10, + "maximum": 65535, + "minimum": 0, + "type": "number", + } + ], + "nullable": True, + }, + "target": {"example": "host.example.com", "type": "string"}, + }, + "required": ["priority", "target"], + "type": "object", + }, + "ttl": { + "description": "The TTL value. Must be a number " + "between 60 and 2147483647. Default " + "value is 60.", + "example": 60, + "maximum": 2147483647, + "minimum": 60, + "type": "number", + }, + "type": { + "description": "Must be of type `HTTPS`.", + "enum": ["HTTPS"], + "type": "string", + }, + }, + "required": ["type", "name", "https"], + "type": "object", + }, + ], + "properties": { + "type": { + "description": "The type of record, it could be one of the valid DNS records.", + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"], + "type": "string", + } + }, + "required": ["type"], + }, + "UPDATEDNSRECORD_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this DNS record is for", + "example": "used to verify ownership of domain", + "maxLength": 500, + "type": "string", + }, + "https": { + "additionalProperties": False, + "nullable": True, + "properties": { + "params": {"description": "", "nullable": True, "type": "string"}, + "priority": {"description": "", "nullable": True, "type": "integer"}, + "target": { + "description": "", + "example": "example2.com.", + "maxLength": 255, + "nullable": True, + "type": "string", + }, + }, + "required": ["priority", "target"], + "type": "object", + }, + "mxPriority": { + "description": "The MX priority value of the DNS record", + "nullable": True, + "type": "integer", + }, + "name": { + "description": "The name of the DNS record", + "example": "example-1", + "nullable": True, + "type": "string", + }, + "srv": { + "additionalProperties": False, + "nullable": True, + "properties": { + "port": {"description": "", "nullable": True, "type": "integer"}, + "priority": {"description": "", "nullable": True, "type": "integer"}, + "target": { + "description": "", + "example": "example2.com.", + "maxLength": 255, + "nullable": True, + "type": "string", + }, + "weight": {"description": "", "nullable": True, "type": "integer"}, + }, + "required": ["target", "weight", "port", "priority"], + "type": "object", + }, + "ttl": { + "description": "The Time to live (TTL) value of the DNS record", + "example": "60", + "maximum": 2147483647, + "minimum": 60, + "nullable": True, + "type": "integer", + }, + "type": { + "description": "The type of the DNS record", + "enum": ["A", "AAAA", "ALIAS", "CAA", "CNAME", "HTTPS", "MX", "SRV", "TXT", "NS"], + "example": "A", + "maxLength": 255, + "nullable": True, + "type": "string", + }, + "value": { + "description": "The value of the DNS record", + "example": "google.com", + "nullable": True, + "type": "string", + }, + }, + "type": "object", + }, + "PURCHASEDOMAINVERCEL_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "autoRenew": { + "description": "Whether the domain should be " + "auto-renewed before it expires. This can " + "be configured later through the Vercel " + "Dashboard or the [Update auto-renew for " + "a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) " + "endpoint.", + "type": "boolean", + }, + "contactInformation": { + "additionalProperties": False, + "description": "The contact information for the " + "domain. Some TLDs require " + "additional contact information. " + "Use the [Get contact info " + "schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) " + "endpoint to retrieve the " + "required fields.", + "properties": { + "additional": {"properties": {}, "type": "object"}, + "address1": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "address2": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "city": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "companyName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "country": { + "description": "A valid ISO 3166-1 alpha-2 country code", + "minLength": 1, + "pattern": "^[A-Z]{2}$", + "title": "nonEmptyString", + "type": "string", + }, + "email": { + "description": "a non empty string", + "minLength": 1, + "title": "nonEmptyString", + "type": "string", + }, + "fax": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "firstName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "lastName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "phone": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "state": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "zip": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + }, + "required": [ + "firstName", + "lastName", + "email", + "phone", + "address1", + "city", + "state", + "zip", + "country", + ], + "type": "object", + }, + "expectedPrice": { + "description": "The expected price for the domain. " + "Use the [Get price data for a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) " + "endpoint to retrieve the price data " + "for a domain.", + "minimum": 0.01, + "type": "number", + }, + "years": { + "description": "The number of years to purchase the domain for.", + "type": "number", + }, + }, + "required": ["autoRenew", "years", "expectedPrice", "contactInformation"], + "type": "object", + }, + "PURCHASEMULTIPLEDOMAINS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "contactInformation": { + "additionalProperties": False, + "description": "The contact information for the " + "domain. Some TLDs require " + "additional contact information. " + "Use the [Get contact info " + "schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) " + "endpoint to retrieve the " + "required fields.", + "properties": { + "additional": {"properties": {}, "type": "object"}, + "address1": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "address2": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "city": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "companyName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "country": { + "description": "A valid ISO 3166-1 alpha-2 country code", + "minLength": 1, + "pattern": "^[A-Z]{2}$", + "title": "nonEmptyString", + "type": "string", + }, + "email": { + "description": "a non empty string", + "minLength": 1, + "title": "nonEmptyString", + "type": "string", + }, + "fax": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "firstName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "lastName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "phone": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "state": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "zip": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + }, + "required": [ + "firstName", + "lastName", + "email", + "phone", + "address1", + "city", + "state", + "zip", + "country", + ], + "type": "object", + }, + "domains": { + "items": { + "additionalProperties": False, + "properties": { + "autoRenew": { + "description": "Whether " + "the " + "domain " + "should " + "be " + "auto-renewed " + "before " + "it " + "expires. " + "This " + "can " + "be " + "configured " + "later " + "through " + "the " + "Vercel " + "Dashboard " + "or " + "the " + "[Update " + "auto-renew " + "for " + "a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) " + "endpoint.", + "type": "boolean", + }, + "domainName": {"type": "string"}, + "expectedPrice": { + "description": "The " + "expected " + "price " + "for " + "the " + "domain. " + "Use " + "the " + "[Get " + "price " + "data " + "for " + "a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) " + "endpoint " + "to " + "retrieve " + "the " + "price " + "data " + "for " + "a " + "domain.", + "minimum": 0.01, + "type": "number", + }, + "years": { + "description": "The number of years to purchase the domain for.", + "type": "number", + }, + }, + "required": ["domainName", "autoRenew", "years", "expectedPrice"], + "type": "object", + }, + "minItems": 1, + "type": "array", + }, + }, + "required": ["domains", "contactInformation"], + "type": "object", + }, + "TRANSFERDOMAINTOVERCEL_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "authCode": {"type": "string"}, + "autoRenew": { + "description": "Whether the domain should be " + "auto-renewed before it expires. This can " + "be configured later through the Vercel " + "Dashboard or the [Update auto-renew for " + "a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) " + "endpoint.", + "type": "boolean", + }, + "contactInformation": { + "additionalProperties": False, + "properties": { + "address1": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "address2": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "city": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "companyName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "country": { + "description": "A valid ISO 3166-1 alpha-2 country code", + "minLength": 1, + "pattern": "^[A-Z]{2}$", + "title": "nonEmptyString", + "type": "string", + }, + "email": { + "description": "a non empty string", + "minLength": 1, + "title": "nonEmptyString", + "type": "string", + }, + "fax": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "firstName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "lastName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "phone": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "state": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "zip": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + }, + "required": [ + "firstName", + "lastName", + "email", + "phone", + "address1", + "city", + "state", + "zip", + "country", + ], + "type": "object", + }, + "expectedPrice": { + "description": "The expected price for the domain. " + "Use the [Get price data for a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) " + "endpoint to retrieve the price data " + "for a domain.", + "minimum": 0.01, + "type": "number", + }, + "years": { + "description": "The number of years to renew the domain for " + "once it is transferred in. This must be a " + "valid number of transfer years for the TLD.", + "type": "number", + }, + }, + "required": ["authCode", "autoRenew", "years", "expectedPrice", "contactInformation"], + "type": "object", + }, + "RENEWDOMAIN_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "contactInformation": { + "additionalProperties": False, + "properties": { + "address1": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "address2": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "city": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "companyName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "country": { + "description": "A valid ISO 3166-1 alpha-2 country code", + "minLength": 1, + "pattern": "^[A-Z]{2}$", + "title": "nonEmptyString", + "type": "string", + }, + "email": { + "description": "a non empty string", + "minLength": 1, + "title": "nonEmptyString", + "type": "string", + }, + "fax": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "firstName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "lastName": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "phone": { + "description": "A valid E.164 phone number", + "minLength": 1, + "pattern": "^(?=(?:\\D*\\d){7,15}$)\\+[1-9]\\d{0,2}\\.?\\d+$", + "title": "nonEmptyString", + "type": "string", + }, + "state": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + "zip": { + "description": "a non empty string", + "minLength": 1, + "pattern": "^\\S[\\s\\S]*\\S$|^\\S$|^$", + "title": "nonEmptyString", + "type": "string", + }, + }, + "required": [ + "firstName", + "lastName", + "email", + "phone", + "address1", + "city", + "state", + "zip", + "country", + ], + "type": "object", + }, + "expectedPrice": { + "description": "The expected price for the domain. " + "Use the [Get price data for a " + "domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) " + "endpoint to retrieve the price data " + "for a domain.", + "minimum": 0.01, + "type": "number", + }, + "years": { + "description": "The number of years to renew the domain for.", + "type": "number", + }, + }, + "required": ["years", "expectedPrice"], + "type": "object", + }, + "ADDNEWDOMAINVERCEL_REQUEST_BODY_SCHEMA": { + "oneOf": [ + { + "additionalProperties": False, + "description": "add", + "properties": { + "cdnEnabled": { + "description": "Whether the domain has the " + "Vercel Edge Network enabled " + "or not.", + "example": True, + "type": "boolean", + }, + "method": { + "description": "The domain operation to perform.", + "example": "add", + "type": "string", + }, + "name": { + "description": "The domain name you want to add.", + "example": "example.com", + "type": "string", + }, + "zone": {"type": "boolean"}, + }, + "required": ["name"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "move-in", + "properties": { + "method": { + "description": "The domain operation to perform.", + "example": "move-in", + "type": "string", + }, + "name": { + "description": "The domain name you want to add.", + "example": "example.com", + "type": "string", + }, + "token": { + "description": "The move-in token from Move Requested email.", + "example": "fdhfr820ad#@FAdlj$$", + "type": "string", + }, + }, + "required": ["method", "name"], + "type": "object", + }, + { + "additionalProperties": False, + "deprecated": True, + "description": "transfer-in", + "properties": { + "authCode": { + "description": "The authorization code assigned to the domain.", + "example": "fdhfr820ad#@FAdlj$$", + "type": "string", + }, + "expectedPrice": { + "description": "The price you expect to " + "be charged for the " + "required 1 year renewal.", + "example": 8, + "type": "number", + }, + "method": { + "description": "The domain operation to perform.", + "example": "transfer-in", + "type": "string", + }, + "name": { + "description": "The domain name you want to add.", + "example": "example.com", + "type": "string", + }, + }, + "required": ["method", "name"], + "type": "object", + }, + ], + "properties": { + "method": { + "description": "The domain operation to perform. It can be " + "either `add` or `move-in`.", + "example": "add", + "type": "string", + } + }, + }, + "UPDATEAPEXDOMAIN_REQUEST_BODY_SCHEMA": { + "oneOf": [ + { + "additionalProperties": False, + "description": "update", + "properties": { + "customNameservers": { + "deprecated": True, + "description": "This field is " + "deprecated. Please " + "use PATCH " + "/v1/registrar/domains/{domainName}/nameservers " + "instead.", + "items": {"type": "string"}, + "maxItems": 4, + "minItems": 0, + "type": "array", + "uniqueItems": True, + }, + "op": {"example": "update", "type": "string"}, + "renew": { + "deprecated": True, + "description": "This field is deprecated. Please " + "use PATCH " + "/v1/registrar/domains/{domainName}/auto-renew " + "instead.", + "type": "boolean", + }, + "zone": { + "description": "Specifies whether this is a DNS " + "zone that intends to use Vercel's " + "nameservers.", + "type": "boolean", + }, + }, + "type": "object", + }, + { + "additionalProperties": False, + "description": "move-out", + "properties": { + "destination": { + "description": "User or team to move domain to", + "type": "string", + }, + "op": {"example": "move-out", "type": "string"}, + }, + "type": "object", + }, + ] + }, + "INVALIDATECACHEBYTAGS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "tags": { + "oneOf": [ + { + "items": {"maxLength": 256, "type": "string"}, + "maxItems": 16, + "minItems": 1, + "type": "array", + }, + {"maxLength": 8196, "type": "string"}, + ] + }, + "target": {"enum": ["production", "preview"], "type": "string"}, + }, + "required": ["tags"], + "type": "object", + }, + "DELETECACHEBYTAGS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "revalidationDeadlineSeconds": {"minimum": 0, "type": "number"}, + "tags": { + "oneOf": [ + { + "items": {"maxLength": 256, "type": "string"}, + "maxItems": 16, + "minItems": 1, + "type": "array", + }, + {"maxLength": 8196, "type": "string"}, + ] + }, + "target": {"enum": ["production", "preview"], "type": "string"}, + }, + "required": ["tags"], + "type": "object", + }, + "CREATEEDGECONFIG_REQUEST_BODY_SCHEMA": { + "properties": { + "items": {"additionalProperties": {}, "type": "object"}, + "slug": {"maxLength": 64, "pattern": "^[\\\\w-]+$", "type": "string"}, + }, + "required": ["slug"], + "type": "object", + }, + "UPDATEEDGECONFIGITEMS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "items": { + "items": { + "oneOf": [ + { + "anyOf": [ + { + "properties": { + "operation": {"enum": ["create"], "type": "string"} + }, + "required": ["operation", "key", "value"], + }, + { + "properties": {"operation": {"enum": ["update", "upsert"]}}, + "required": ["operation", "key", "value"], + }, + { + "properties": {"operation": {"enum": ["update", "upsert"]}}, + "required": ["operation", "key", "description"], + }, + ], + "properties": { + "description": { + "nullable": True, + "oneOf": [{"maxLength": 512, "type": "string"}, {}], + }, + "key": { + "maxLength": 256, + "pattern": "^[\\\\w-]+$", + "type": "string", + }, + "operation": {"enum": ["create", "update", "upsert", "delete"]}, + "value": {"nullable": True}, + }, + "type": "object", + } + ] + }, + "type": "array", + } + }, + "required": ["items"], + "type": "object", + }, + "CONNECTINTEGRATIONRESOURCETOPROJECT_REQUEST_BODY_SCHEMA": { + "properties": {"projectId": {"type": "string"}}, + "required": ["projectId"], + "type": "object", + }, + "UPDATEINTEGRATIONINSTALLATION_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "billingPlan": { + "additionalProperties": True, + "properties": { + "cost": {"type": "string"}, + "description": {"type": "string"}, + "details": { + "items": { + "additionalProperties": False, + "properties": { + "label": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["label"], + "type": "object", + }, + "type": "array", + }, + "effectiveDate": {"type": "string"}, + "highlightedDetails": { + "items": { + "additionalProperties": False, + "properties": { + "label": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["label"], + "type": "object", + }, + "type": "array", + }, + "id": {"type": "string"}, + "name": {"type": "string"}, + "paymentMethodRequired": {"type": "boolean"}, + "type": {"enum": ["prepayment", "subscription"], "type": "string"}, + }, + "required": ["id", "type", "name"], + "type": "object", + }, + "notification": { + "properties": { + "href": {"format": "uri", "type": "string"}, + "level": {"enum": ["info", "warn", "error"], "type": "string"}, + "message": {"type": "string"}, + "title": {"type": "string"}, + }, + "required": ["level", "title"], + "type": "object", + }, + }, + "type": "object", + }, + "NOTIFYVERCELOFUPDATES_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "event": { + "oneOf": [ + { + "additionalProperties": False, + "properties": { + "billingPlanId": { + "description": "The installation-level billing plan ID", + "type": "string", + }, + "type": {"enum": ["installation.updated"], "type": "string"}, + }, + "required": ["type"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "productId": { + "description": "Partner-provided product slug or id", + "type": "string", + }, + "resourceId": { + "description": "Partner provided resource ID", + "type": "string", + }, + "type": {"enum": ["resource.updated"], "type": "string"}, + }, + "required": ["type", "productId", "resourceId"], + "type": "object", + }, + ] + } + }, + "required": ["event"], + "type": "object", + }, + "IMPORTRESOURCETOVERCEL_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "billingPlan": { + "additionalProperties": True, + "properties": { + "cost": {"type": "string"}, + "description": {"type": "string"}, + "details": { + "items": { + "additionalProperties": False, + "properties": { + "label": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["label"], + "type": "object", + }, + "type": "array", + }, + "effectiveDate": {"type": "string"}, + "highlightedDetails": { + "items": { + "additionalProperties": False, + "properties": { + "label": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["label"], + "type": "object", + }, + "type": "array", + }, + "id": {"type": "string"}, + "name": {"type": "string"}, + "paymentMethodRequired": {"type": "boolean"}, + "type": {"enum": ["prepayment", "subscription"], "type": "string"}, + }, + "required": ["id", "type", "name"], + "type": "object", + }, + "extras": {"additionalProperties": True, "type": "object"}, + "metadata": {"additionalProperties": True, "type": "object"}, + "name": {"type": "string"}, + "notification": { + "properties": { + "href": {"format": "uri", "type": "string"}, + "level": {"enum": ["info", "warn", "error"], "type": "string"}, + "message": {"type": "string"}, + "title": {"type": "string"}, + }, + "required": ["level", "title"], + "type": "object", + }, + "ownership": {"enum": ["owned", "linked", "sandbox"], "type": "string"}, + "productId": {"type": "string"}, + "secrets": { + "items": { + "additionalProperties": False, + "properties": { + "environmentOverrides": { + "description": "A " + "map " + "of " + "environments " + "to " + "override " + "values " + "for " + "the " + "secret, " + "used " + "for " + "setting " + "different " + "values " + "across " + "deployments " + "in " + "production, " + "preview, " + "and " + "development " + "environments. " + "Note: " + "the " + "same " + "value " + "will " + "be " + "used " + "for " + "all " + "deployments " + "in " + "the " + "given " + "environment.", + "properties": { + "development": { + "description": "Value used for development environment.", + "type": "string", + }, + "preview": { + "description": "Value used for preview environment.", + "type": "string", + }, + "production": { + "description": "Value used for production environment.", + "type": "string", + }, + }, + "type": "object", + }, + "name": {"type": "string"}, + "prefix": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "status": { + "enum": [ + "ready", + "pending", + "onboarding", + "suspended", + "resumed", + "uninstalled", + "error", + ], + "type": "string", + }, + }, + "required": ["productId", "name", "status"], + "type": "object", + }, + "UPDATERESOURCE_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "billingPlan": { + "additionalProperties": True, + "properties": { + "cost": {"type": "string"}, + "description": {"type": "string"}, + "details": { + "items": { + "additionalProperties": False, + "properties": { + "label": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["label"], + "type": "object", + }, + "type": "array", + }, + "effectiveDate": {"type": "string"}, + "highlightedDetails": { + "items": { + "additionalProperties": False, + "properties": { + "label": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["label"], + "type": "object", + }, + "type": "array", + }, + "id": {"type": "string"}, + "name": {"type": "string"}, + "paymentMethodRequired": {"type": "boolean"}, + "type": {"enum": ["prepayment", "subscription"], "type": "string"}, + }, + "required": ["id", "type", "name"], + "type": "object", + }, + "extras": {"additionalProperties": True, "type": "object"}, + "metadata": {"additionalProperties": True, "type": "object"}, + "name": {"type": "string"}, + "notification": { + "properties": { + "href": {"format": "uri", "type": "string"}, + "level": {"enum": ["info", "warn", "error"], "type": "string"}, + "message": {"type": "string"}, + "title": {"type": "string"}, + }, + "required": ["level", "title"], + "type": "object", + }, + "ownership": {"enum": ["owned", "linked", "sandbox"], "type": "string"}, + "secrets": { + "items": { + "additionalProperties": False, + "properties": { + "environmentOverrides": { + "description": "A " + "map " + "of " + "environments " + "to " + "override " + "values " + "for " + "the " + "secret, " + "used " + "for " + "setting " + "different " + "values " + "across " + "deployments " + "in " + "production, " + "preview, " + "and " + "development " + "environments. " + "Note: " + "the " + "same " + "value " + "will " + "be " + "used " + "for " + "all " + "deployments " + "in " + "the " + "given " + "environment.", + "properties": { + "development": { + "description": "Value used for development environment.", + "type": "string", + }, + "preview": { + "description": "Value used for preview environment.", + "type": "string", + }, + "production": { + "description": "Value used for production environment.", + "type": "string", + }, + }, + "type": "object", + }, + "name": {"type": "string"}, + "prefix": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "status": { + "enum": [ + "ready", + "pending", + "onboarding", + "suspended", + "resumed", + "uninstalled", + "error", + ], + "type": "string", + }, + }, + "type": "object", + }, + "SUBMITBILLINGDATA_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "billing": { + "description": "Billing data (interim invoicing data).", + "oneOf": [ + { + "items": { + "additionalProperties": False, + "properties": { + "billingPlanId": { + "description": "Partner's billing plan ID.", + "type": "string", + }, + "details": {"description": "Line item details.", "type": "string"}, + "end": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "name": {"description": "Line item name.", "type": "string"}, + "price": { + "description": "Price per unit.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "quantity": {"description": "Quantity of units.", "type": "number"}, + "resourceId": { + "description": "Partner's resource ID.", + "type": "string", + }, + "start": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "total": { + "description": "Total amount.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "units": { + "description": "Units of the quantity.", + "type": "string", + }, + }, + "required": [ + "billingPlanId", + "name", + "price", + "quantity", + "units", + "total", + ], + "type": "object", + }, + "type": "array", + }, + { + "properties": { + "discounts": { + "items": { + "additionalProperties": False, + "properties": { + "amount": { + "description": "Discount amount.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "billingPlanId": { + "description": "Partner's billing plan ID.", + "type": "string", + }, + "details": { + "description": "Discount details.", + "type": "string", + }, + "end": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "name": {"description": "Discount name.", "type": "string"}, + "resourceId": { + "description": "Partner's resource ID.", + "type": "string", + }, + "start": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + }, + "required": ["billingPlanId", "name", "amount"], + "type": "object", + }, + "type": "array", + }, + "items": { + "items": { + "additionalProperties": False, + "properties": { + "billingPlanId": { + "description": "Partner's billing plan ID.", + "type": "string", + }, + "details": { + "description": "Line item details.", + "type": "string", + }, + "end": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "name": { + "description": "Line item name.", + "type": "string", + }, + "price": { + "description": "Price per unit.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "quantity": { + "description": "Quantity of units.", + "type": "number", + }, + "resourceId": { + "description": "Partner's resource ID.", + "type": "string", + }, + "start": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "total": { + "description": "Total amount.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "units": { + "description": "Units of the quantity.", + "type": "string", + }, + }, + "required": [ + "billingPlanId", + "name", + "price", + "quantity", + "units", + "total", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["items"], + "type": "object", + }, + ], + }, + "eod": { + "description": "End of Day, the UTC datetime for when the end " + "of the billing/usage day is in UTC time. This " + "tells us which day the usage data is for, and " + 'also allows for your \\"end of day\\" to be ' + "different from UTC 00:00:00. eod must be " + "within the period dates, and cannot be older " + "than 24h earlier from our server's current " + "time.", + "format": "date-time", + "type": "string", + }, + "period": { + "additionalProperties": False, + "description": "Period for the billing cycle. The period " + "end date cannot be older than 24 hours " + "earlier than our current server's time.", + "properties": { + "end": {"format": "date-time", "type": "string"}, + "start": {"format": "date-time", "type": "string"}, + }, + "required": ["start", "end"], + "type": "object", + }, + "timestamp": { + "description": "Server time of your integration, used to " + "determine the most recent data for race " + "conditions & updates. Only the latest " + "usage data for a given day, week, and " + "month will be kept.", + "format": "date-time", + "type": "string", + }, + "usage": { + "items": { + "additionalProperties": False, + "properties": { + "dayValue": { + "description": "Metric " + "value " + "for " + "the " + "day. " + "Could " + "be a " + "final " + "or an " + "interim " + "value " + "for " + "the " + "day.", + "type": "number", + }, + "name": {"description": "Metric name.", "type": "string"}, + "periodValue": { + "description": "Metric " + "value " + "for " + "the " + "billing " + "period. " + "Could " + "be " + "a " + "final " + "or " + "an " + "interim " + "value " + "for " + "the " + "period.", + "type": "number", + }, + "planValue": { + "description": "The " + "limit " + "value " + "of " + "the " + "metric " + "for a " + "billing " + "period, " + "if a " + "limit " + "is " + "defined " + "by " + "the " + "plan.", + "type": "number", + }, + "resourceId": {"description": "Partner's resource ID.", "type": "string"}, + "type": { + "description": "\\n " + "Type of " + "the " + "metric.\\n " + "- total: " + "measured " + "total " + "value, " + "such as " + "Database " + "size\\n " + "- " + "interval: " + "usage " + "during the " + "period, " + "such as " + "i/o or " + "number of " + "queries.\\n " + "- rate: " + "rate of " + "usage, " + "such as " + "queries " + "per " + "second.\\n ", + "enum": ["total", "interval", "rate"], + "type": "string", + }, + "units": { + "description": 'Metric units. Example: \\"GB\\"', + "type": "string", + }, + }, + "required": ["name", "type", "units", "dayValue", "periodValue"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["timestamp", "eod", "period", "billing", "usage"], + "type": "object", + }, + "SUBMITINVOICETOVERCEL_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "discounts": { + "items": { + "additionalProperties": False, + "properties": { + "amount": { + "description": "Currency amount as a decimal string.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "billingPlanId": { + "description": "Partner's billing plan ID.", + "type": "string", + }, + "details": {"type": "string"}, + "end": { + "description": "Start " + "and end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "name": {"type": "string"}, + "resourceId": {"description": "Partner's resource ID.", "type": "string"}, + "start": { + "description": "Start " + "and " + "end " + "are " + "only " + "needed " + "if " + "different " + "from " + "the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + }, + "required": ["billingPlanId", "name", "amount"], + "type": "object", + }, + "type": "array", + }, + "externalId": {"type": "string"}, + "invoiceDate": { + "description": "Invoice date. Must be within the period's start and end.", + "format": "date-time", + "type": "string", + }, + "items": { + "items": { + "additionalProperties": False, + "properties": { + "billingPlanId": { + "description": "Partner's billing plan ID.", + "type": "string", + }, + "details": {"type": "string"}, + "end": { + "description": "Start and " + "end are " + "only needed " + "if " + "different " + "from the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "name": {"type": "string"}, + "price": { + "description": "Currency amount as a decimal string.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "quantity": {"type": "number"}, + "resourceId": {"description": "Partner's resource ID.", "type": "string"}, + "start": { + "description": "Start and " + "end are " + "only " + "needed if " + "different " + "from the " + "period's " + "start/end.", + "format": "date-time", + "type": "string", + }, + "total": { + "description": "Currency amount as a decimal string.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + "units": {"type": "string"}, + }, + "required": ["billingPlanId", "name", "price", "quantity", "units", "total"], + "type": "object", + }, + "type": "array", + }, + "memo": {"description": "Additional memo for the invoice.", "type": "string"}, + "period": { + "additionalProperties": False, + "description": "Subscription period for this billing cycle.", + "properties": { + "end": {"format": "date-time", "type": "string"}, + "start": {"format": "date-time", "type": "string"}, + }, + "required": ["start", "end"], + "type": "object", + }, + "test": { + "additionalProperties": False, + "description": "Test mode", + "properties": { + "result": {"enum": ["paid", "notpaid"], "type": "string"}, + "validate": {"type": "boolean"}, + }, + "type": "object", + }, + }, + "required": ["invoiceDate", "period", "items"], + "type": "object", + }, + "REQUESTVERCELINVOICEREFUND_REQUEST_BODY_SCHEMA": { + "oneOf": [ + { + "additionalProperties": False, + "properties": { + "action": {"enum": ["refund"], "type": "string"}, + "reason": {"description": "Refund reason.", "type": "string"}, + "total": { + "description": "The total amount to be refunded. " + "Must be less than or equal to the " + "total amount of the invoice.", + "pattern": "^[0-9]+(\\\\.[0-9]+)?$", + "type": "string", + }, + }, + "required": ["action", "reason", "total"], + "type": "object", + } + ] + }, + "SUBMITPREPAYMENTBALANCES_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "balances": { + "items": { + "additionalProperties": False, + "description": "A credit balance for a particular token type", + "properties": { + "credit": { + "description": "A " + "human-readable " + "description " + "of " + "the " + "credits " + "the " + "user " + "currently " + "has, " + "e.g. " + '\\"2,000 ' + 'Tokens\\"', + "type": "string", + }, + "currencyValueInCents": { + "description": "The " + "dollar " + "value " + "of " + "the " + "credit " + "balance, " + "in " + "USD " + "and " + "provided " + "in " + "cents, " + "which " + "is " + "used " + "to " + "trigger " + "automatic " + "purchase " + "thresholds.", + "type": "number", + }, + "nameLabel": { + "description": "The " + "name " + "of " + "the " + "credits, " + "for " + "display " + "purposes, " + "e.g. " + '\\"Tokens\\"', + "type": "string", + }, + "resourceId": { + "description": "Partner's " + "resource " + "ID, " + "exclude " + "if " + "credits " + "are " + "tied " + "to " + "the " + "installation " + "and " + "not " + "an " + "individual " + "resource.", + "type": "string", + }, + }, + "required": ["currencyValueInCents"], + "type": "object", + }, + "type": "array", + }, + "timestamp": { + "description": "Server time of your integration, used to " + "determine the most recent data for race " + "conditions & updates. Only the latest " + "usage data for a given day, week, and " + "month will be kept.", + "format": "date-time", + "type": "string", + }, + }, + "required": ["timestamp", "balances"], + "type": "object", + }, + "UPDATERESOURCESECRETS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "partial": { + "description": "If true, will only update the provided secrets", + "type": "boolean", + }, + "secrets": { + "items": { + "additionalProperties": False, + "properties": { + "environmentOverrides": { + "description": "A " + "map " + "of " + "environments " + "to " + "override " + "values " + "for " + "the " + "secret, " + "used " + "for " + "setting " + "different " + "values " + "across " + "deployments " + "in " + "production, " + "preview, " + "and " + "development " + "environments. " + "Note: " + "the " + "same " + "value " + "will " + "be " + "used " + "for " + "all " + "deployments " + "in " + "the " + "given " + "environment.", + "properties": { + "development": { + "description": "Value used for development environment.", + "type": "string", + }, + "preview": { + "description": "Value used for preview environment.", + "type": "string", + }, + "production": { + "description": "Value used for production environment.", + "type": "string", + }, + }, + "type": "object", + }, + "name": {"type": "string"}, + "prefix": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["secrets"], + "type": "object", + }, + "UPDATESECRETSBYID_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "partial": { + "description": "If true, will only overwrite the provided " + "secrets instead of replacing all secrets.", + "type": "boolean", + }, + "secrets": { + "items": { + "additionalProperties": False, + "properties": { + "environmentOverrides": { + "description": "A " + "map " + "of " + "environments " + "to " + "override " + "values " + "for " + "the " + "secret, " + "used " + "for " + "setting " + "different " + "values " + "across " + "deployments " + "in " + "production, " + "preview, " + "and " + "development " + "environments. " + "Note: " + "the " + "same " + "value " + "will " + "be " + "used " + "for " + "all " + "deployments " + "in " + "the " + "given " + "environment.", + "properties": { + "development": { + "description": "Value used for development environment.", + "type": "string", + }, + "preview": { + "description": "Value used for preview environment.", + "type": "string", + }, + "production": { + "description": "Value used for production environment.", + "type": "string", + }, + }, + "type": "object", + }, + "name": {"type": "string"}, + "prefix": {"type": "string"}, + "value": {"type": "string"}, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["secrets"], + "type": "object", + }, + "CREATEINTEGRATIONLOGDRAIN_REQUEST_BODY_SCHEMA": { + "properties": { + "deliveryFormat": { + "description": "The delivery log format", + "enum": ["json", "ndjson"], + "example": "json", + }, + "environments": { + "items": {"enum": ["preview", "production"], "type": "string"}, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + "headers": { + "additionalProperties": {"type": "string"}, + "description": "Headers to be sent together with the request", + "type": "object", + }, + "name": { + "description": "The name of the log drain", + "example": "My first log drain", + "maxLength": 100, + "pattern": "^[A-z0-9_ -]+$", + "type": "string", + }, + "projectIds": { + "items": {"pattern": "^[a-zA-z0-9_]+$", "type": "string"}, + "maxItems": 50, + "minItems": 1, + "type": "array", + }, + "secret": { + "description": "A secret to sign log drain notification " + "headers so a consumer can verify their " + "authenticity", + "example": "a1Xsfd325fXcs", + "maxLength": 100, + "pattern": "^[A-z0-9_ -]+$", + "type": "string", + }, + "sources": { + "items": { + "enum": ["static", "lambda", "build", "edge", "external", "firewall"], + "type": "string", + }, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + "url": { + "description": "The url where you will receive logs. The " + "protocol must be `https://` or `http://` when " + "type is `json` and `ndjson`.", + "example": "https://example.com/log-drain", + "format": "uri", + "pattern": "^https?://", + "type": "string", + }, + }, + "required": ["name", "url"], + "type": "object", + }, + "CREATEEXPERIMENTATIONITEMS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "items": { + "items": { + "additionalProperties": False, + "properties": { + "category": {"enum": ["experiment", "flag"], "type": "string"}, + "createdAt": {"type": "number"}, + "description": {"maxLength": 1024, "type": "string"}, + "id": {"maxLength": 1024, "type": "string"}, + "isArchived": {"type": "boolean"}, + "name": {"maxLength": 1024, "type": "string"}, + "origin": {"maxLength": 2048, "type": "string"}, + "slug": {"maxLength": 1024, "type": "string"}, + "updatedAt": {"type": "number"}, + }, + "required": ["id", "slug", "origin"], + "type": "object", + }, + "maxItems": 50, + "type": "array", + } + }, + "required": ["items"], + "type": "object", + }, + "UPDATEEXPERIMENTATIONITEM_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "category": {"enum": ["experiment", "flag"], "type": "string"}, + "createdAt": {"type": "number"}, + "description": {"maxLength": 1024, "type": "string"}, + "isArchived": {"type": "boolean"}, + "name": {"maxLength": 1024, "type": "string"}, + "origin": {"maxLength": 2048, "type": "string"}, + "slug": {"maxLength": 1024, "type": "string"}, + "updatedAt": {"type": "number"}, + }, + "required": ["slug", "origin"], + "type": "object", + }, + "PUSHEDGECONFIG_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": {"data": {"additionalProperties": {}, "type": "object"}}, + "required": ["data"], + "type": "object", + }, + "ADDPROJECTMEMBER_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "oneOf": [{"required": ["uid"]}, {"required": ["username"]}, {"required": ["email"]}], + "properties": { + "email": { + "description": "The email of the team member that should be added to this project.", + "example": "entity@example.com", + "format": "email", + "type": "string", + }, + "role": { + "description": "The project role of the member that will be added.", + "enum": ["ADMIN", "PROJECT_DEVELOPER", "PROJECT_VIEWER"], + "example": "ADMIN", + "type": "string", + }, + "uid": { + "description": "The ID of the team member that should be added to this project.", + "example": "ndlgr43fadlPyCtREAqxxdyFK", + "maxLength": 256, + "type": "string", + }, + "username": { + "description": "The username of the team member that " + "should be added to this project.", + "example": "example", + "maxLength": 256, + "type": "string", + }, + }, + "required": ["role"], + "type": "object", + }, + "CREATENEWPROJECT_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "buildCommand": { + "description": "The build command for this project. " + "When `null` is used this value will " + "be automatically detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "commandForIgnoringBuildStep": {"maxLength": 256, "nullable": True, "type": "string"}, + "devCommand": { + "description": "The dev command for this project. When " + "`null` is used this value will be " + "automatically detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "enableAffectedProjectsDeployments": { + "description": "Opt-in to skip " + "deployments when " + "there are no " + "changes to the " + "root directory " + "and its " + "dependencies", + "type": "boolean", + }, + "enablePreviewFeedback": { + "description": "Opt-in to preview toolbar on the project level", + "nullable": True, + "type": "boolean", + }, + "enableProductionFeedback": { + "description": "Opt-in to production toolbar on the project level", + "nullable": True, + "type": "boolean", + }, + "environmentVariables": { + "description": "Collection of ENV Variables the Project will use", + "items": { + "properties": { + "gitBranch": { + "description": "If " + "defined, " + "the " + "git " + "branch " + "of " + "the " + "environment " + "variable " + "(must " + "have " + "target=preview)", + "maxLength": 250, + "type": "string", + }, + "key": {"description": "Name of the ENV variable", "type": "string"}, + "target": { + "description": "Deployment " + "Target " + "or " + "Targets " + "in " + "which " + "the " + "ENV " + "variable " + "will " + "be " + "used", + "oneOf": [ + {"enum": ["production", "preview", "development"]}, + { + "items": {"enum": ["production", "preview", "development"]}, + "type": "array", + }, + ], + }, + "type": { + "description": "Type of the ENV variable", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "type": "string", + }, + "value": {"description": "Value for the ENV variable", "type": "string"}, + }, + "required": ["key", "value", "target"], + "type": "object", + }, + "type": "array", + }, + "framework": { + "description": "The framework that is being used for " + "this project. When `null` is used no " + "framework is selected", + "enum": [ + None, + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp", + ], + }, + "gitRepository": { + "description": "The Git Repository that will be " + "connected to the project. When this " + "is defined, any pushes to the " + "specified connected Git Repository " + "will be automatically deployed", + "properties": { + "repo": { + "description": "The name of " + "the git " + "repository. " + "For example: " + '\\"vercel/next.js\\"', + "type": "string", + }, + "type": { + "description": "The Git Provider of the repository", + "enum": ["github", "github-limited", "gitlab", "bitbucket"], + }, + }, + "required": ["type", "repo"], + "type": "object", + }, + "installCommand": { + "description": "The install command for this " + "project. When `null` is used this " + "value will be automatically " + "detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "name": { + "description": "The desired name for the project", + "example": "a-project-name", + "maxLength": 100, + "type": "string", + }, + "oidcTokenConfig": { + "additionalProperties": False, + "description": "OpenID Connect JSON Web Token generation configuration.", + "properties": { + "enabled": { + "default": True, + "deprecated": True, + "description": "Whether or not to generate OpenID Connect JSON Web Tokens.", + "type": "boolean", + }, + "issuerMode": { + "default": "team", + "description": "team: " + "`https://oidc.vercel.com/[team_slug]` " + "global: " + "`https://oidc.vercel.com`", + "enum": ["team", "global"], + "type": "string", + }, + }, + "type": "object", + }, + "outputDirectory": { + "description": "The output directory of the " + "project. When `null` is used this " + "value will be automatically " + "detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "previewDeploymentsDisabled": { + "description": "Specifies whether " + "preview deployments are " + "disabled for this " + "project.", + "nullable": True, + "type": "boolean", + }, + "publicSource": { + "description": "Specifies whether the source code and " + "logs of the deployments for this " + "project should be public or not", + "nullable": True, + "type": "boolean", + }, + "resourceConfig": { + "additionalProperties": False, + "description": "Specifies resource override configuration for the project", + "properties": { + "buildMachineType": {"enum": ["enhanced", "turbo"]}, + "elasticConcurrencyEnabled": {"type": "boolean"}, + "fluid": {"type": "boolean"}, + "functionDefaultMemoryType": { + "enum": ["standard_legacy", "standard", "performance"] + }, + "functionDefaultRegions": { + "description": "The regions to deploy Vercel Functions to for this project", + "items": {"maxLength": 4, "type": "string"}, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + "functionDefaultTimeout": {"maximum": 900, "minimum": 1, "type": "number"}, + "functionZeroConfigFailover": { + "description": "Specifies " + "whether " + "Zero " + "Config " + "Failover " + "is " + "enabled " + "for " + "this " + "project.", + "oneOf": [{"type": "boolean"}], + }, + "isNSNBDisabled": {"type": "boolean"}, + }, + "type": "object", + }, + "rootDirectory": { + "description": "The name of a directory or relative " + "path to the source code of your " + "project. When `null` is used it will " + "default to the project root", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "serverlessFunctionRegion": { + "description": "The region to deploy Serverless Functions in this project", + "maxLength": 4, + "nullable": True, + "type": "string", + }, + "serverlessFunctionZeroConfigFailover": { + "description": "Specifies " + "whether Zero " + "Config " + "Failover is " + "enabled for " + "this project.", + "oneOf": [{"type": "boolean"}], + }, + "skipGitConnectDuringLink": { + "deprecated": True, + "description": "Opts-out of the message " + "prompting a CLI user to " + "connect a Git repository " + "in `vercel link`.", + "type": "boolean", + }, + "ssoProtection": { + "description": "The Vercel Auth setting for the " + 'project (historically named \\"SSO ' + 'Protection\\")', + "nullable": True, + "properties": { + "deploymentType": { + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains", + ], + "type": "string", + } + }, + "required": ["deploymentType"], + "type": "object", + }, + }, + "required": ["name"], + "type": "object", + }, + "UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "autoAssignCustomDomains": {"type": "boolean"}, + "autoAssignCustomDomainsUpdatedBy": {"type": "string"}, + "autoExposeSystemEnvs": {"type": "boolean"}, + "buildCommand": { + "description": "The build command for this project. " + "When `null` is used this value will " + "be automatically detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "commandForIgnoringBuildStep": {"maxLength": 256, "nullable": True, "type": "string"}, + "connectConfigurations": { + "description": "The list of connections from " + "project environment to " + "Secure Compute network", + "items": { + "additionalProperties": False, + "oneOf": [{"type": "object"}], + "properties": { + "buildsEnabled": { + "description": "Flag " + "saying " + "if " + "project " + "builds " + "should " + "use " + "Secure " + "Compute", + "type": "boolean", + }, + "connectConfigurationId": { + "description": "The ID of the Secure Compute network", + "type": "string", + }, + "envId": {"description": "The ID of the environment", "type": "string"}, + "passive": { + "description": "Whether " + "the " + "configuration " + "should " + "be " + "passive, " + "meaning " + "builds " + "will " + "not " + "run " + "there " + "and " + "only " + "passive " + "Serverless " + "Functions " + "will " + "be " + "deployed", + "type": "boolean", + }, + }, + "required": ["envId", "connectConfigurationId", "passive", "buildsEnabled"], + }, + "minItems": 1, + "nullable": True, + "type": "array", + }, + "customerSupportCodeVisibility": { + "description": "Specifies whether " + "customer support can " + "see git source for a " + "deployment", + "type": "boolean", + }, + "devCommand": { + "description": "The dev command for this project. When " + "`null` is used this value will be " + "automatically detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "directoryListing": {"type": "boolean"}, + "enableAffectedProjectsDeployments": { + "description": "Opt-in to skip " + "deployments when " + "there are no " + "changes to the " + "root directory " + "and its " + "dependencies", + "type": "boolean", + }, + "enablePreviewFeedback": { + "description": "Opt-in to preview toolbar on the project level", + "nullable": True, + "type": "boolean", + }, + "enableProductionFeedback": { + "description": "Opt-in to production toolbar on the project level", + "nullable": True, + "type": "boolean", + }, + "framework": { + "description": "The framework that is being used for " + "this project. When `null` is used no " + "framework is selected", + "enum": [ + None, + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp", + ], + "nullable": True, + "type": "string", + }, + "gitForkProtection": { + "description": "Specifies whether PRs from Git " + "forks should require a team " + "member's authorization before it " + "can be deployed", + "type": "boolean", + }, + "gitLFS": { + "description": "Specifies whether Git LFS is enabled for this project.", + "type": "boolean", + }, + "installCommand": { + "description": "The install command for this " + "project. When `null` is used this " + "value will be automatically " + "detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "name": { + "description": "The desired name for the project", + "example": "a-project-name", + "maxLength": 100, + "type": "string", + }, + "nodeVersion": { + "enum": ["22.x", "20.x", "18.x", "16.x", "14.x", "12.x", "10.x"], + "type": "string", + }, + "oidcTokenConfig": { + "additionalProperties": False, + "description": "OpenID Connect JSON Web Token generation configuration.", + "properties": { + "enabled": { + "default": True, + "deprecated": True, + "description": "Whether or not to generate OpenID Connect JSON Web Tokens.", + "type": "boolean", + }, + "issuerMode": { + "default": "team", + "description": "team: " + "`https://oidc.vercel.com/[team_slug]` " + "global: " + "`https://oidc.vercel.com`", + "enum": ["team", "global"], + "type": "string", + }, + }, + "type": "object", + }, + "optionsAllowlist": { + "additionalProperties": False, + "description": "Specify a list of paths that " + "should not be protected by " + "Deployment Protection to enable " + "Cors preflight requests", + "nullable": True, + "properties": { + "paths": { + "items": { + "additionalProperties": False, + "properties": { + "value": { + "description": "The " + "regex " + "path " + "that " + "should " + "not " + "be " + "protected " + "by " + "Deployment " + "Protection", + "pattern": "^/.*", + "type": "string", + } + }, + "required": ["value"], + "type": "object", + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + } + }, + "required": ["paths"], + "type": "object", + }, + "outputDirectory": { + "description": "The output directory of the " + "project. When `null` is used this " + "value will be automatically " + "detected", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "passwordProtection": { + "additionalProperties": False, + "description": "Allows to protect project deployments with a password", + "nullable": True, + "properties": { + "deploymentType": { + "description": "Specify " + "if " + "the " + "password " + "will " + "apply " + "to " + "every " + "Deployment " + "Target " + "or " + "just " + "Preview", + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains", + ], + "type": "string", + }, + "password": { + "description": "The " + "password " + "that " + "will " + "be " + "used " + "to " + "protect " + "Project " + "Deployments", + "maxLength": 72, + "nullable": True, + "type": "string", + }, + }, + "required": ["deploymentType"], + "type": "object", + }, + "previewDeploymentsDisabled": { + "description": "Specifies whether " + "preview deployments are " + "disabled for this " + "project.", + "nullable": True, + "type": "boolean", + }, + "publicSource": { + "description": "Specifies whether the source code and " + "logs of the deployments for this " + "project should be public or not", + "nullable": True, + "type": "boolean", + }, + "resourceConfig": { + "additionalProperties": False, + "description": "Specifies resource override configuration for the project", + "properties": { + "buildMachineType": {"enum": [None, "enhanced", "turbo"]}, + "elasticConcurrencyEnabled": {"type": "boolean"}, + "fluid": {"type": "boolean"}, + "functionDefaultMemoryType": { + "enum": ["standard_legacy", "standard", "performance"] + }, + "functionDefaultRegions": { + "description": "The regions to deploy Vercel Functions to for this project", + "items": {"maxLength": 4, "type": "string"}, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + "functionDefaultTimeout": {"maximum": 900, "minimum": 1, "type": "number"}, + "functionZeroConfigFailover": { + "description": "Specifies " + "whether " + "Zero " + "Config " + "Failover " + "is " + "enabled " + "for " + "this " + "project.", + "oneOf": [{"type": "boolean"}], + }, + "isNSNBDisabled": {"type": "boolean"}, + }, + "type": "object", + }, + "rootDirectory": { + "description": "The name of a directory or relative " + "path to the source code of your " + "project. When `null` is used it will " + "default to the project root", + "maxLength": 256, + "nullable": True, + "type": "string", + }, + "serverlessFunctionRegion": { + "description": "The region to deploy Serverless Functions in this project", + "maxLength": 4, + "nullable": True, + "type": "string", + }, + "serverlessFunctionZeroConfigFailover": { + "description": "Specifies " + "whether Zero " + "Config " + "Failover is " + "enabled for " + "this project.", + "oneOf": [{"type": "boolean"}], + }, + "skewProtectionBoundaryAt": { + "description": "Deployments created " + "before this absolute " + "datetime have Skew " + "Protection disabled. " + "Value is in milliseconds " + "since epoch to match " + '\\"createdAt\\" fields.', + "minimum": 0, + "type": "integer", + }, + "skewProtectionMaxAge": { + "description": "Deployments created before " + "this rolling window have Skew " + "Protection disabled. Value is " + "in seconds to match " + '\\"revalidate\\" fields.', + "minimum": 0, + "type": "integer", + }, + "skipGitConnectDuringLink": { + "deprecated": True, + "description": "Opts-out of the message " + "prompting a CLI user to " + "connect a Git repository " + "in `vercel link`.", + "type": "boolean", + }, + "sourceFilesOutsideRootDirectory": { + "description": "Indicates if there are source files outside of the root directory", + "type": "boolean", + }, + "ssoProtection": { + "additionalProperties": False, + "description": "Ensures visitors to your Preview " + "Deployments are logged into Vercel " + "and have a minimum of Viewer access " + "on your team", + "nullable": True, + "properties": { + "deploymentType": { + "default": "preview", + "description": "Specify " + "if " + "the " + "Vercel " + "Authentication " + "(SSO " + "Protection) " + "will " + "apply " + "to " + "every " + "Deployment " + "Target " + "or " + "just " + "Preview", + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains", + ], + "type": "string", + } + }, + "required": ["deploymentType"], + "type": "object", + }, + "staticIps": { + "additionalProperties": False, + "description": "Manage Static IPs for this project", + "properties": { + "enabled": { + "description": "Opt-in to Static IPs for this project", + "type": "boolean", + } + }, + "required": ["enabled"], + "type": "object", + }, + "trustedIps": { + "additionalProperties": False, + "description": "Restricts access to deployments based " + "on the incoming request IP address", + "nullable": True, + "properties": { + "addresses": { + "items": { + "additionalProperties": False, + "properties": { + "note": { + "description": "An " + "optional " + "note " + "explaining " + "what " + "the " + "IP " + "address " + "or " + "subnet " + "is " + "used " + "for", + "maxLength": 20, + "type": "string", + }, + "value": { + "description": "The " + "IP " + "addresses " + "that " + "are " + "allowlisted. " + "Supports " + "IPv4 " + "addresses " + "and " + "CIDR " + "notations. " + "IPv6 " + "is " + "not " + "supported", + "type": "string", + }, + }, + "required": ["value"], + "type": "object", + }, + "minItems": 1, + "type": "array", + }, + "deploymentType": { + "description": "Specify " + "if " + "the " + "Trusted " + "IPs " + "will " + "apply " + "to " + "every " + "Deployment " + "Target " + "or " + "just " + "Preview", + "enum": [ + "all", + "preview", + "production", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains", + ], + "type": "string", + }, + "protectionMode": { + "description": "exclusive: " + "ip " + "match " + "is " + "enough " + "to " + "bypass " + "deployment " + "protection " + "(regardless " + "of " + "other " + "settings). " + "additional: " + "ip " + "must " + "match " + "+ any " + "other " + "protection " + "should " + "be " + "also " + "provided " + "(password, " + "vercel " + "auth, " + "shareable " + "link, " + "automation " + "bypass " + "header, " + "automation " + "bypass " + "query " + "param)", + "enum": ["exclusive", "additional"], + "type": "string", + }, + }, + "required": ["deploymentType", "addresses", "protectionMode"], + "type": "object", + }, + }, + "type": "object", + }, + "UPDATEPROJECTNETWORKLINKS_REQUEST_BODY_SCHEMA": { + "properties": { + "regions": { + "items": { + "description": "The region of shared Secure Compute network to connect to.", + "example": "iad1", + "maxLength": 4, + "type": "string", + }, + "maxItems": 3, + "minItems": 0, + "type": "array", + "uniqueItems": True, + } + }, + "required": ["regions"], + "type": "object", + }, + "MOVEPROJECTDOMAIN_REQUEST_BODY_SCHEMA": { + "properties": { + "projectId": { + "description": "The unique target project identifier", + "example": "prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA", + "oneOf": [{"type": "string"}], + } + }, + "required": ["projectId"], + "type": "object", + }, + "CREATEPROJECTENVIRONMENTVARIABLES_REQUEST_BODY_SCHEMA": { + "oneOf": [ + { + "anyOf": [{"required": ["target"]}, {"required": ["customEnvironmentIds"]}], + "properties": { + "comment": { + "description": "A comment to add context on " + "what this environment variable " + "is for", + "example": "database connection string for production", + "maxLength": 500, + "type": "string", + }, + "customEnvironmentIds": { + "description": "The custom " + "environment IDs " + "associated with " + "the environment " + "variable", + "items": {"example": "env_1234567890", "type": "string"}, + "type": "array", + }, + "gitBranch": { + "description": "If defined, the git branch of " + "the environment variable " + "(must have target=preview)", + "example": "feature-1", + "maxLength": 250, + "nullable": True, + "type": "string", + }, + "key": { + "description": "The name of the environment variable", + "example": "API_URL", + "type": "string", + }, + "target": { + "description": "The target environment of the environment variable", + "example": ["preview"], + "items": {"enum": ["production", "preview", "development"]}, + "type": "array", + }, + "type": { + "description": "The type of environment variable", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "example": "plain", + "type": "string", + }, + "value": { + "description": "The value of the environment variable", + "example": "https://api.vercel.com", + "type": "string", + }, + }, + "required": ["key", "value", "type"], + "type": "object", + }, + { + "items": { + "anyOf": [{"required": ["target"]}, {"required": ["customEnvironmentIds"]}], + "properties": { + "comment": { + "description": "A comment to add " + "context on what this " + "environment variable " + "is for", + "example": "database connection string for production", + "maxLength": 500, + "type": "string", + }, + "customEnvironmentIds": { + "description": "The " + "custom " + "environment " + "IDs " + "associated " + "with the " + "environment " + "variable", + "items": {"example": "env_1234567890", "type": "string"}, + "type": "array", + }, + "gitBranch": { + "description": "If defined, the git " + "branch of the " + "environment " + "variable (must have " + "target=preview)", + "example": "feature-1", + "maxLength": 250, + "nullable": True, + "type": "string", + }, + "key": { + "description": "The name of the environment variable", + "example": "API_URL", + "type": "string", + }, + "target": { + "description": "The target environment of the environment variable", + "example": ["preview"], + "items": {"enum": ["production", "preview", "development"]}, + "type": "array", + }, + "type": { + "description": "The type of environment variable", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "example": "plain", + "type": "string", + }, + "value": { + "description": "The value of the environment variable", + "example": "https://api.vercel.com", + "type": "string", + }, + }, + "required": ["key", "value", "type"], + "type": "object", + }, + "type": "array", + }, + ] + }, + "EDITPROJECTENVIRONMENTVARIABLE_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "comment": { + "description": "A comment to add context on what this env var is for", + "example": "database connection string for production", + "maxLength": 500, + "type": "string", + }, + "customEnvironmentIds": { + "description": "The custom environments that " + "the environment variable " + "should be synced to", + "items": {"example": "env_1234567890", "type": "string"}, + "type": "array", + }, + "gitBranch": { + "description": "If defined, the git branch of the " + "environment variable (must have " + "target=preview)", + "example": "feature-1", + "maxLength": 250, + "nullable": True, + "type": "string", + }, + "key": { + "description": "The name of the environment variable", + "example": "GITHUB_APP_ID", + "type": "string", + }, + "target": { + "description": "The target environment of the environment variable", + "example": ["preview"], + "items": {"enum": ["production", "preview", "development"]}, + "type": "array", + }, + "type": { + "description": "The type of environment variable", + "enum": ["system", "secret", "encrypted", "plain", "sensitive"], + "example": "plain", + "type": "string", + }, + "value": { + "description": "The value of the environment variable", + "example": "bkWIjbnxcvo78", + "type": "string", + }, + }, + "type": "object", + }, + "DELETEPROJECTENVVARIABLES_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "ids": { + "description": "Array of environment variable IDs to delete", + "items": {"type": "string"}, + "maxItems": 1000, + "minItems": 1, + "type": "array", + } + }, + "required": ["ids"], + "type": "object", + }, + "UPLOADCLIENTCERTTOPROJECT_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "ca": { + "description": "The certificate authority in PEM format", + "example": "-----BEGIN CERTIFICATE-----\\\\n...\\\\n-----END CERTIFICATE-----", + "type": "string", + }, + "cert": { + "description": "The client certificate in PEM format", + "example": "-----BEGIN CERTIFICATE-----\\\\n...\\\\n-----END CERTIFICATE-----", + "type": "string", + }, + "key": { + "description": "The private key in PEM format", + "example": "-----BEGIN PRIVATE KEY-----\\\\n...\\\\n-----END PRIVATE KEY-----", + "type": "string", + }, + "origin": { + "description": "The origin this certificate should be used " + "for. If not specified, the certificate will " + "be project-wide.", + "example": "https://api.example.com", + "type": "string", + }, + "skipValidation": { + "description": "Skip validation of the certificate", + "type": "boolean", + }, + }, + "required": ["cert", "key"], + "type": "object", + }, + "ADVANCEROLLOUTSTAGE_REQUEST_BODY_SCHEMA": { + "properties": { + "canaryDeploymentId": { + "description": "The id of the canary deployment to approve for the next stage", + "type": "string", + }, + "nextStageIndex": { + "description": "The index of the stage to transition to", + "type": "number", + }, + }, + "required": ["nextStageIndex", "canaryDeploymentId"], + "type": "object", + }, + "FORCECOMPLETEROLLINGRELEASE_REQUEST_BODY_SCHEMA": { + "properties": { + "canaryDeploymentId": { + "description": "The ID of the canary deployment to complete", + "type": "string", + } + }, + "required": ["canaryDeploymentId"], + "type": "object", + }, + "ACCEPTPROJECTTRANSFER_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "acceptedPolicies": { + "additionalProperties": { + "additionalProperties": {"format": "date-time", "type": "string"}, + "properties": { + "eula": {"format": "date-time", "type": "string"}, + "privacy": {"format": "date-time", "type": "string"}, + }, + "required": ["eula", "privacy"], + "type": "object", + }, + "type": "object", + }, + "newProjectName": { + "description": "The desired name for the project", + "example": "a-project-name", + "maxLength": 100, + "type": "string", + }, + "paidFeatures": { + "additionalProperties": False, + "properties": { + "concurrentBuilds": {"nullable": True, "type": "integer"}, + "passwordProtection": {"nullable": True, "type": "boolean"}, + "previewDeploymentSuffix": {"nullable": True, "type": "boolean"}, + }, + "type": "object", + }, + }, + "type": "object", + }, + "SETFIREWALLCONFIGURATION_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "botIdEnabled": {"type": "boolean"}, + "crs": { + "additionalProperties": False, + "description": "Custom Ruleset", + "properties": { + "gen": { + "additionalProperties": False, + "description": "Generic Attack - " + "Provide broad " + "protection from various " + "undefined or novel " + "attack vectors.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "java": { + "additionalProperties": False, + "description": "Java Attack - Mitigate " + "risks of exploitation " + "targeting Java-based " + "applications or " + "components.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "lfi": { + "additionalProperties": False, + "description": "Local File Inclusion " + "Attack - Prevent " + "unauthorized access to " + "local files through web " + "applications.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "ma": { + "additionalProperties": False, + "description": "Multipart Attack - Block " + "attempts to bypass " + "security controls using " + "multipart/form-data " + "encoding.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "php": { + "additionalProperties": False, + "description": "PHP Attack - Safeguard " + "against vulnerability " + "exploits in PHP-based " + "applications.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "rce": { + "additionalProperties": False, + "description": "Remote Execution Attack " + "- Prevent unauthorized " + "execution of remote " + "scripts or commands.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "rfi": { + "additionalProperties": False, + "description": "Remote File Inclusion " + "Attack - Prohibit " + "unauthorized upload or " + "execution of remote " + "files.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "sd": { + "additionalProperties": False, + "description": "Scanner Detection - " + "Detect and prevent " + "reconnaissance " + "activities from network " + "scanning tools.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "sf": { + "additionalProperties": False, + "description": "Session Fixation Attack " + "- Prevent unauthorized " + "takeover of user " + "sessions by enforcing " + "unique session IDs.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "sqli": { + "additionalProperties": False, + "description": "SQL Injection Attack - " + "Prohibit unauthorized " + "use of SQL commands to " + "manipulate databases.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + "xss": { + "additionalProperties": False, + "description": "XSS Attack - Prevent " + "injection of malicious " + "scripts into trusted " + "webpages.", + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + }, + "type": "object", + }, + "firewallEnabled": {"type": "boolean"}, + "ips": { + "items": { + "additionalProperties": False, + "properties": { + "action": { + "enum": ["deny", "challenge", "log", "bypass"], + "type": "string", + }, + "hostname": {"type": "string"}, + "id": {"type": "string"}, + "ip": {"type": "string"}, + "notes": {"type": "string"}, + }, + "required": ["hostname", "ip", "action"], + "type": "object", + }, + "type": "array", + }, + "managedRules": {"additionalProperties": {"anyOf": []}, "type": "object"}, + "rules": { + "items": { + "additionalProperties": False, + "properties": { + "action": { + "additionalProperties": False, + "properties": { + "mitigate": { + "additionalProperties": False, + "properties": { + "action": { + "enum": [ + "log", + "challenge", + "deny", + "bypass", + "rate_limit", + "redirect", + ], + "type": "string", + }, + "actionDuration": {"nullable": True, "type": "string"}, + "bypassSystem": {"nullable": True, "type": "boolean"}, + "rateLimit": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "action": { + "anyOf": [ + { + "enum": [ + "log", + "challenge", + "deny", + "rate_limit", + ], + "type": "string", + }, + {}, + ], + "nullable": True, + }, + "algo": { + "enum": [ + "fixed_window", + "token_bucket", + ], + "type": "string", + }, + "keys": { + "items": {"type": "string"}, + "type": "array", + }, + "limit": {"type": "number"}, + "window": {"type": "number"}, + }, + "required": ["algo", "window", "limit", "keys"], + "type": "object", + }, + {}, + ], + "nullable": True, + }, + "redirect": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "location": {"type": "string"}, + "permanent": {"type": "boolean"}, + }, + "required": ["location", "permanent"], + "type": "object", + }, + {}, + ], + "nullable": True, + }, + }, + "required": ["action"], + "type": "object", + } + }, + "type": "object", + }, + "active": {"type": "boolean"}, + "conditionGroup": { + "items": { + "additionalProperties": False, + "properties": { + "conditions": { + "items": { + "additionalProperties": False, + "properties": { + "key": {"type": "string"}, + "neg": {"type": "boolean"}, + "op": { + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte", + ], + "type": "string", + }, + "type": { + "description": "[Parameter](https://vercel.com/docs/security/vercel-waf/rule-configuration#parameters) " + "from " + "the " + "incoming " + "traffic.", + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "route", + "raw_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id", + ], + "type": "string", + }, + "value": { + "anyOf": [ + {"type": "string"}, + { + "items": {"type": "string"}, + "maxItems": 75, + "type": "array", + }, + {"type": "number"}, + ] + }, + }, + "required": ["type", "op"], + "type": "object", + }, + "maxItems": 65, + "type": "array", + } + }, + "required": ["conditions"], + "type": "object", + }, + "maxItems": 25, + "type": "array", + }, + "description": {"maxLength": 256, "type": "string"}, + "id": {"type": "string"}, + "name": {"maxLength": 160, "type": "string"}, + }, + "required": ["name", "active", "conditionGroup", "action"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["firewallEnabled"], + "type": "object", + }, + "UPDATEFIREWALLCONFIG_REQUEST_BODY_SCHEMA": { + "oneOf": [ + { + "additionalProperties": False, + "description": "Enable Firewall", + "properties": { + "action": {"enum": ["firewallEnabled"], "type": "string"}, + "id": {"nullable": True}, + "value": {"type": "boolean"}, + }, + "required": ["action", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Add a custom rule", + "properties": { + "action": {"enum": ["rules.insert"], "type": "string"}, + "id": {"nullable": True}, + "value": { + "additionalProperties": False, + "properties": { + "action": { + "additionalProperties": False, + "properties": { + "mitigate": { + "additionalProperties": False, + "properties": { + "action": { + "enum": [ + "log", + "challenge", + "deny", + "bypass", + "rate_limit", + "redirect", + ], + "type": "string", + }, + "actionDuration": {"nullable": True, "type": "string"}, + "bypassSystem": {"nullable": True, "type": "boolean"}, + "rateLimit": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "action": { + "anyOf": [ + { + "enum": [ + "log", + "challenge", + "deny", + "rate_limit", + ], + "type": "string", + }, + {}, + ], + "nullable": True, + }, + "algo": { + "enum": [ + "fixed_window", + "token_bucket", + ], + "type": "string", + }, + "keys": { + "items": {"type": "string"}, + "type": "array", + }, + "limit": {"type": "number"}, + "window": {"type": "number"}, + }, + "required": [ + "algo", + "window", + "limit", + "keys", + ], + "type": "object", + }, + {}, + ], + "nullable": True, + }, + "redirect": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "location": {"type": "string"}, + "permanent": {"type": "boolean"}, + }, + "required": ["location", "permanent"], + "type": "object", + }, + {}, + ], + "nullable": True, + }, + }, + "required": ["action"], + "type": "object", + } + }, + "type": "object", + }, + "active": {"type": "boolean"}, + "conditionGroup": { + "items": { + "additionalProperties": False, + "properties": { + "conditions": { + "items": { + "additionalProperties": False, + "properties": { + "key": {"type": "string"}, + "neg": {"type": "boolean"}, + "op": { + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte", + ], + "type": "string", + }, + "type": { + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "route", + "raw_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id", + "server_action", + ], + "type": "string", + }, + "value": { + "oneOf": [ + {"type": "string"}, + { + "items": {"type": "string"}, + "maxItems": 75, + "type": "array", + }, + {"type": "number"}, + ] + }, + }, + "required": ["type", "op"], + "type": "object", + }, + "maxItems": 65, + "type": "array", + } + }, + "required": ["conditions"], + "type": "object", + }, + "maxItems": 25, + "type": "array", + }, + "description": {"maxLength": 256, "type": "string"}, + "name": {"maxLength": 160, "type": "string"}, + }, + "required": ["name", "active", "conditionGroup", "action"], + "type": "object", + }, + }, + "required": ["action", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Update a custom rule", + "properties": { + "action": {"enum": ["rules.update"], "type": "string"}, + "id": {"type": "string"}, + "value": { + "additionalProperties": False, + "properties": { + "action": { + "additionalProperties": False, + "properties": { + "mitigate": { + "additionalProperties": False, + "properties": { + "action": { + "enum": [ + "log", + "challenge", + "deny", + "bypass", + "rate_limit", + "redirect", + ], + "type": "string", + }, + "actionDuration": {"nullable": True, "type": "string"}, + "bypassSystem": {"nullable": True, "type": "boolean"}, + "rateLimit": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "action": { + "anyOf": [ + { + "enum": [ + "log", + "challenge", + "deny", + "rate_limit", + ], + "type": "string", + }, + {}, + ], + "nullable": True, + }, + "algo": { + "enum": [ + "fixed_window", + "token_bucket", + ], + "type": "string", + }, + "keys": { + "items": {"type": "string"}, + "type": "array", + }, + "limit": {"type": "number"}, + "window": {"type": "number"}, + }, + "required": [ + "algo", + "window", + "limit", + "keys", + ], + "type": "object", + }, + {}, + ], + "nullable": True, + }, + "redirect": { + "anyOf": [ + { + "additionalProperties": False, + "properties": { + "location": {"type": "string"}, + "permanent": {"type": "boolean"}, + }, + "required": ["location", "permanent"], + "type": "object", + }, + {}, + ], + "nullable": True, + }, + }, + "required": ["action"], + "type": "object", + } + }, + "type": "object", + }, + "active": {"type": "boolean"}, + "conditionGroup": { + "items": { + "additionalProperties": False, + "properties": { + "conditions": { + "items": { + "additionalProperties": False, + "properties": { + "key": {"type": "string"}, + "neg": {"type": "boolean"}, + "op": { + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte", + ], + "type": "string", + }, + "type": { + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "route", + "raw_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id", + "server_action", + ], + "type": "string", + }, + "value": { + "anyOf": [ + {"type": "string"}, + { + "items": {"type": "string"}, + "maxItems": 75, + "type": "array", + }, + {"type": "number"}, + ] + }, + }, + "required": ["type", "op"], + "type": "object", + }, + "maxItems": 65, + "type": "array", + } + }, + "required": ["conditions"], + "type": "object", + }, + "maxItems": 25, + "type": "array", + }, + "description": {"maxLength": 256, "type": "string"}, + "name": {"maxLength": 160, "type": "string"}, + }, + "required": ["name", "active", "conditionGroup", "action"], + "type": "object", + }, + }, + "required": ["action", "id", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Remove a custom rule", + "properties": { + "action": {"enum": ["rules.remove"], "type": "string"}, + "id": {"type": "string"}, + "value": {"nullable": True}, + }, + "required": ["action", "id"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Reorder a custom rule", + "properties": { + "action": {"enum": ["rules.priority"], "type": "string"}, + "id": {"type": "string"}, + "value": {"type": "number"}, + }, + "required": ["action", "id", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Enable a managed rule", + "properties": { + "action": {"enum": ["crs.update"], "type": "string"}, + "id": { + "enum": [ + "sd", + "ma", + "lfi", + "rfi", + "rce", + "php", + "gen", + "xss", + "sqli", + "sf", + "java", + ], + "type": "string", + }, + "value": { + "additionalProperties": False, + "properties": { + "action": {"enum": ["deny", "log"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active", "action"], + "type": "object", + }, + }, + "required": ["action", "id", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Disable a managed rule", + "properties": { + "action": {"enum": ["crs.disable"], "type": "string"}, + "id": {"nullable": True}, + "value": {"nullable": True}, + }, + "required": ["action"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Add an IP Blocking rule", + "properties": { + "action": {"enum": ["ip.insert"], "type": "string"}, + "id": {"nullable": True}, + "value": { + "additionalProperties": False, + "properties": { + "action": { + "enum": ["deny", "challenge", "log", "bypass"], + "type": "string", + }, + "hostname": {"type": "string"}, + "ip": {"type": "string"}, + "notes": {"type": "string"}, + }, + "required": ["hostname", "ip", "action"], + "type": "object", + }, + }, + "required": ["action", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Update an IP Blocking rule", + "properties": { + "action": {"enum": ["ip.update"], "type": "string"}, + "id": {"type": "string"}, + "value": { + "additionalProperties": False, + "properties": { + "action": { + "enum": ["deny", "challenge", "log", "bypass"], + "type": "string", + }, + "hostname": {"type": "string"}, + "ip": {"type": "string"}, + "notes": {"type": "string"}, + }, + "required": ["hostname", "ip", "action"], + "type": "object", + }, + }, + "required": ["action", "id", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Remove an IP Blocking rule", + "properties": { + "action": {"enum": ["ip.remove"], "type": "string"}, + "id": {"type": "string"}, + "value": {"nullable": True}, + }, + "required": ["action", "id"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Update a managed ruleset", + "properties": { + "action": {"enum": ["managedRules.update"], "type": "string"}, + "id": { + "enum": ["ai_bots", "bot_filter", "bot_protection", "owasp"], + "type": "string", + }, + "value": { + "additionalProperties": False, + "properties": { + "action": {"enum": ["log", "challenge", "deny"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active"], + "type": "object", + }, + }, + "required": ["action", "id", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Update a managed rule group", + "properties": { + "action": {"type": "string"}, + "id": { + "enum": ["ai_bots", "bot_filter", "bot_protection", "owasp"], + "type": "string", + }, + "value": { + "additionalProperties": { + "additionalProperties": False, + "properties": { + "action": {"enum": ["log", "challenge", "deny"], "type": "string"}, + "active": {"type": "boolean"}, + }, + "required": ["active"], + "type": "object", + }, + "type": "object", + }, + }, + "required": ["action", "id", "value"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Toggle bot ID", + "properties": { + "action": {"type": "string"}, + "id": {"type": "string"}, + "value": {"type": "boolean"}, + }, + "required": ["action", "value"], + "type": "object", + }, + ] + }, + "CREATEFIREWALLBYPASSRULE_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "oneOf": [{"required": ["domain"]}, {"required": ["projectScope"]}], + "properties": { + "allSources": {"type": "boolean"}, + "domain": {"maxLength": 2544, "pattern": "([a-z]+[a-z.]+)$", "type": "string"}, + "note": {"maxLength": 500, "type": "string"}, + "projectScope": { + "description": "If the specified bypass will apply to all domains for a project.", + "type": "boolean", + }, + "sourceIp": {"type": "string"}, + "ttl": {"description": "Time to live in milliseconds", "type": "number"}, + }, + "type": "object", + }, + "REMOVEBYPASSRULE_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "oneOf": [{"required": ["domain"]}, {"required": ["projectScope"]}], + "properties": { + "allSources": {"type": "boolean"}, + "domain": {"maxLength": 2544, "pattern": "([a-z]+[a-z.]+)$", "type": "string"}, + "note": {"maxLength": 500, "type": "string"}, + "projectScope": {"type": "boolean"}, + "sourceIp": {"type": "string"}, + }, + "type": "object", + }, + "CREATEINTEGRATIONSTORE_REQUEST_BODY_SCHEMA": { + "properties": { + "billingPlanId": { + "description": "ID of the billing plan for paid " + "resources. Get available plans from " + "GET " + "/integrations/integration/{id}/products/{productId}/plans. " + "If not provided, automatically " + "discovers free billing plans.", + "example": "bp_abc123def456", + "type": "string", + }, + "externalId": { + "description": "Optional external identifier for tracking purposes", + "example": "dev-db-001", + "type": "string", + }, + "integrationConfigurationId": { + "description": "ID of your integration " + "configuration. Get this " + "from GET " + "/v1/integrations/configurations", + "example": "icfg_cuwj0AdCdH3BwWT4LPijCC7t", + "pattern": "^icfg_[a-zA-Z0-9]+$", + "type": "string", + }, + "integrationProductIdOrSlug": { + "description": "ID or slug of the " + "integration product. " + "Get available products " + "from GET " + "/v1/integrations/configuration/{id}/products", + "example": "iap_postgres_db", + "oneOf": [ + {"description": "Product ID format", "pattern": "^iap_[a-zA-Z0-9_]+$"}, + {"description": "Product slug format", "pattern": "^[a-z0-9-]+$"}, + ], + "type": "string", + }, + "metadata": { + "additionalProperties": { + "oneOf": [ + {"type": "string"}, + {"type": "number"}, + {"type": "boolean"}, + {"items": {"type": "string"}, "type": "array"}, + {"items": {"type": "number"}, "type": "array"}, + ] + }, + "description": "Optional key-value pairs for resource metadata", + "example": { + "environment": "development", + "project": "my-app", + "tags": ["database", "postgres"], + }, + "type": "object", + }, + "name": { + "description": "Human-readable name for the storage resource", + "example": "my-dev-database", + "maxLength": 128, + "type": "string", + }, + "paymentMethodId": { + "description": "Payment method ID for paid " + "resources. Optional - uses default " + "payment method if not provided.", + "example": "pm_1AbcDefGhiJklMno", + "type": "string", + }, + "prepaymentAmountCents": { + "description": "Amount in cents for " + "prepayment billing plans. " + "Required only for prepayment " + "plans with variable amounts.", + "example": 5000, + "minimum": 50, + "type": "number", + }, + "protocolSettings": { + "additionalProperties": True, + "description": "Protocol-specific configuration settings", + "example": {"experimentation": {"edgeConfigSyncingEnabled": True}}, + "type": "object", + }, + "source": { + "default": "marketplace", + "description": "Source of the store creation request", + "example": "api", + "type": "string", + }, + }, + "required": ["name", "integrationConfigurationId", "integrationProductIdOrSlug"], + "type": "object", + }, + "INVITEUSERTOTEAM_REQUEST_BODY_SCHEMA": { + "properties": { + "email": { + "description": "The email address of the user to invite", + "example": "john@example.com", + "format": "email", + "type": "string", + }, + "projects": { + "items": { + "additionalProperties": False, + "properties": { + "projectId": { + "description": "The ID of the project.", + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "maxLength": 64, + "type": "string", + }, + "role": { + "description": "Sets the project roles for the invited user", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER"], + "example": "ADMIN", + "type": "string", + }, + }, + "required": ["role", "projectId"], + "type": "object", + }, + "type": "array", + }, + "role": { + "default": "MEMBER", + "description": "The role of the user to invite", + "enum": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR", + ], + "example": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR", + ], + "type": "string", + }, + }, + "required": ["email"], + "type": "object", + }, + "REQUESTTEAMACCESS_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "joinedFrom": { + "additionalProperties": False, + "properties": { + "commitId": { + "description": "The commit sha if the origin is a git provider.", + "example": "f498d25d8bd654b578716203be73084b31130cd7", + "type": "string", + }, + "gitUserId": { + "description": "The ID of the Git account of the user who requests access.", + "example": 103053343, + "oneOf": [{"type": "string"}, {"type": "number"}], + }, + "gitUserLogin": { + "description": "The " + "login " + "name " + "for the " + "Git " + "account " + "of the " + "user " + "who " + "requests " + "access.", + "example": "jane-doe", + "type": "string", + }, + "origin": { + "description": "The origin of the request.", + "enum": [ + "import", + "teams", + "github", + "gitlab", + "bitbucket", + "feedback", + "organization-teams", + ], + "example": "github", + "type": "string", + }, + "repoId": { + "description": "The ID of the repository for the given Git provider.", + "example": "67753070", + "type": "string", + }, + "repoPath": { + "description": "The path to the repository for the given Git provider.", + "example": "jane-doe/example", + "type": "string", + }, + }, + "required": ["origin"], + "type": "object", + } + }, + "required": ["joinedFrom"], + "type": "object", + }, + "UPDATETEAMMEMBER_REQUEST_BODY_SCHEMA": { + "properties": { + "confirmed": { + "description": "Accept a user who requested access to the team.", + "enum": [True], + "example": True, + "type": "boolean", + }, + "joinedFrom": { + "additionalProperties": False, + "properties": {"ssoUserId": {"nullable": True}}, + "type": "object", + }, + "projects": { + "items": { + "additionalProperties": False, + "properties": { + "projectId": { + "description": "The ID of the project.", + "example": "prj_ndlgr43fadlPyCtREAqxxdyFK", + "maxLength": 256, + "type": "string", + }, + "role": { + "description": "The " + "project " + "role of " + "the " + "member " + "that " + "will be " + "added. " + '\\"null\\" ' + "will " + "remove " + "this " + "project " + "level " + "role.", + "enum": ["ADMIN", "PROJECT_VIEWER", "PROJECT_DEVELOPER", None], + "example": "ADMIN", + "nullable": True, + "type": "string", + }, + }, + "required": ["role", "projectId"], + "type": "object", + }, + "type": "array", + }, + "role": { + "default": "MEMBER", + "description": "The role in the team of the member.", + "example": ["MEMBER", "VIEWER"], + "type": "string", + }, + }, + "type": "object", + }, + "UPDATETEAMINFO_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "avatar": { + "description": "The hash value of an uploaded image.", + "format": "regex", + "type": "string", + }, + "defaultDeploymentProtection": { + "additionalProperties": False, + "description": "Default deployment protection settings for new projects.", + "properties": { + "passwordProtection": { + "additionalProperties": False, + "description": "Allows to protect project deployments with a password", + "nullable": True, + "properties": { + "deploymentType": { + "description": "Specify " + "if " + "the " + "password " + "will " + "apply " + "to " + "every " + "Deployment " + "Target " + "or " + "just " + "Preview", + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains", + ], + "type": "string", + }, + "password": { + "description": "The " + "password " + "that " + "will " + "be " + "used " + "to " + "protect " + "Project " + "Deployments", + "maxLength": 72, + "nullable": True, + "type": "string", + }, + }, + "required": ["deploymentType"], + "type": "object", + }, + "ssoProtection": { + "additionalProperties": False, + "description": "Ensures " + "visitors " + "to " + "your " + "Preview " + "Deployments " + "are " + "logged " + "into " + "Vercel " + "and " + "have " + "a " + "minimum " + "of " + "Viewer " + "access " + "on " + "your " + "team", + "nullable": True, + "properties": { + "deploymentType": { + "default": "preview", + "description": "Specify " + "if " + "the " + "Vercel " + "Authentication " + "(SSO " + "Protection) " + "will " + "apply " + "to " + "every " + "Deployment " + "Target " + "or " + "just " + "Preview", + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains", + ], + "type": "string", + } + }, + "required": ["deploymentType"], + "type": "object", + }, + }, + "type": "object", + }, + "defaultExpirationSettings": { + "additionalProperties": False, + "properties": { + "expiration": { + "description": "The time period to keep non-production deployments for", + "enum": [ + "3y", + "2y", + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited", + ], + "example": "1y", + "type": "string", + }, + "expirationCanceled": { + "description": "The time period to keep canceled deployments for", + "enum": ["1y", "6m", "3m", "2m", "1m", "2w", "1w", "1d", "unlimited"], + "example": "1y", + "type": "string", + }, + "expirationErrored": { + "description": "The time period to keep errored deployments for", + "enum": ["1y", "6m", "3m", "2m", "1m", "2w", "1w", "1d", "unlimited"], + "example": "1y", + "type": "string", + }, + "expirationProduction": { + "description": "The time period to keep production deployments for", + "enum": [ + "3y", + "2y", + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited", + ], + "example": "1y", + "type": "string", + }, + }, + "type": "object", + }, + "description": { + "description": "A short text that describes the team.", + "example": "Our mission is to make cloud computing accessible to everyone", + "maxLength": 140, + "type": "string", + }, + "emailDomain": { + "example": "example.com", + "format": "regex", + "nullable": True, + "type": "string", + }, + "enablePreviewFeedback": { + "description": "Enable preview toolbar: one of on, off or default.", + "example": "on", + "type": "string", + }, + "enableProductionFeedback": { + "description": "Enable production toolbar: one of on, off or default.", + "example": "on", + "type": "string", + }, + "hideIpAddresses": { + "description": "Display or hide IP addresses in Monitoring queries.", + "example": False, + "type": "boolean", + }, + "hideIpAddressesInLogDrains": { + "description": "Display or hide IP addresses in Log Drains.", + "example": False, + "type": "boolean", + }, + "name": { + "description": "The name of the team.", + "example": "My Team", + "maxLength": 256, + "type": "string", + }, + "previewDeploymentSuffix": { + "description": "Suffix that will be used for all preview deployments.", + "example": "example.dev", + "format": "hostname", + "nullable": True, + "type": "string", + }, + "regenerateInviteCode": { + "description": "Create a new invite code and replace the current one.", + "example": True, + "type": "boolean", + }, + "remoteCaching": { + "additionalProperties": False, + "description": "Whether or not remote caching is enabled for the team", + "properties": { + "enabled": { + "description": "Enable or disable remote caching for the team.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "saml": { + "additionalProperties": False, + "properties": { + "enforced": { + "description": "Require that members of the team use SAML Single Sign-On.", + "example": True, + "type": "boolean", + }, + "roles": { + "additionalProperties": { + "anyOf": [ + { + "enum": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR", + ], + "type": "string", + }, + { + "additionalProperties": False, + "properties": { + "accessGroupId": { + "pattern": "^ag_[A-z0-9_ -]+$", + "type": "string", + } + }, + "required": ["accessGroupId"], + "type": "object", + }, + ] + }, + "description": "Directory groups to role or access group mappings.", + "type": "object", + }, + }, + "type": "object", + }, + "sensitiveEnvironmentVariablePolicy": { + "description": "Sensitive environment variable policy: one of on, off or default.", + "example": "on", + "type": "string", + }, + "slug": { + "description": "A new slug for the team.", + "example": "my-team", + "type": "string", + }, + }, + "type": "object", + }, + "DELETETEAM_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "reasons": { + "description": "Optional array of objects that describe " + "the reason why the team is being deleted.", + "items": { + "additionalProperties": False, + "description": "An object describing the reason why the team is being deleted.", + "properties": { + "description": { + "description": "Description " + "of " + "the " + "reason " + "why " + "the " + "team " + "is " + "being " + "deleted.", + "type": "string", + }, + "slug": { + "description": "Idenitifier " + "slug of " + "the " + "reason " + "why the " + "team is " + "being " + "deleted.", + "type": "string", + }, + }, + "required": ["slug", "description"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "INITIATEUSERDELETION_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "reasons": { + "description": "Optional array of objects that describe " + "the reason why the User account is being " + "deleted.", + "items": { + "additionalProperties": False, + "description": "An object describing the reason " + "why the User account is being " + "deleted.", + "properties": { + "description": { + "description": "Description " + "of " + "the " + "reason " + "why " + "the " + "User " + "account " + "is " + "being " + "deleted.", + "type": "string", + }, + "slug": { + "description": "Idenitifier " + "slug of " + "the " + "reason " + "why the " + "User " + "account " + "is being " + "deleted.", + "type": "string", + }, + }, + "required": ["slug", "description"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "UPDATEURLPROTECTIONBYPASS_REQUEST_BODY_SCHEMA": { + "oneOf": [ + { + "additionalProperties": False, + "properties": { + "revoke": { + "description": "Optional instructions for " + "revoking and regenerating a " + "shareable link", + "properties": { + "regenerate": { + "description": "Whether " + "or " + "not " + "a " + "new " + "shareable " + "link " + "should " + "be " + "created " + "after " + "the " + "provided " + "secret " + "is " + "revoked", + "type": "boolean", + }, + "secret": { + "description": "Sharebale link to revoked", + "type": "string", + }, + }, + "required": ["secret", "regenerate"], + "type": "object", + }, + "ttl": { + "description": "Optional time the shareable link is " + "valid for in seconds. If not " + "provided, the shareable link will " + "never expire.", + "maximum": 63072000, + "type": "number", + }, + }, + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "scope": { + "allOf": [ + {"anyOf": [{"required": ["userId"]}, {"required": ["email"]}]}, + {"required": ["access"]}, + ], + "description": "Instructions for creating a user scoped protection bypass", + "properties": { + "access": { + "description": "Invitation status for the user scoped bypass.", + "enum": ["denied", "granted"], + }, + "email": { + "description": "Specified email for the scoped bypass.", + "format": "email", + "type": "string", + }, + "userId": { + "description": "Specified user id for the scoped bypass.", + "type": "string", + }, + }, + "type": "object", + } + }, + "required": ["scope"], + "type": "object", + }, + { + "additionalProperties": False, + "properties": { + "override": { + "properties": { + "action": {"enum": ["create", "revoke"]}, + "scope": {"enum": ["alias-protection-override"]}, + }, + "required": ["scope", "action"], + "type": "object", + } + }, + "required": ["override"], + "type": "object", + }, + ] + }, + "UPLOADCERTIFICATE_REQUEST_BODY_SCHEMA": { + "additionalProperties": False, + "properties": { + "ca": {"description": "The certificate authority", "type": "string"}, + "cert": {"description": "The certificate", "type": "string"}, + "key": {"description": "The certificate key", "type": "string"}, + "skipValidation": { + "description": "Skip validation of the certificate", + "type": "boolean", + }, + }, + "required": ["ca", "key", "cert"], + "type": "object", + }, +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AcceptProjectTransfer.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AcceptProjectTransfer.json new file mode 100644 index 00000000..d6d4576d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AcceptProjectTransfer.json @@ -0,0 +1,305 @@ +{ + "name": "AcceptProjectTransfer", + "fully_qualified_name": "VercelApi.AcceptProjectTransfer@0.1.0", + "description": "Accept a project transfer request on Vercel.\n\nUse this tool to accept a project transfer request that has been initiated by another team on Vercel. This process requires a transfer code, which is generated by the initiating team. Call this tool when you need to finalize the transfer of a project to your team.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_transfer_code", + "required": true, + "description": "The unique code of the project transfer request, required to accept the transfer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The code of the project transfer request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "code" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug used to perform the project transfer request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "project_transfer_settings", + "required": false, + "description": "JSON containing the new project name, paid features, and accepted policies for the transfer.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "newProjectName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the project" + }, + "paidFeatures": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "concurrentBuilds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "passwordProtection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "previewDeploymentSuffix": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "acceptedPolicies": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'acceptProjectTransferRequest'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/projects/transfer-request/{code}", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "code", + "tool_parameter_name": "project_transfer_code", + "description": "The code of the project transfer request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The code of the project transfer request." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_transfer_settings", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "newProjectName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the project" + }, + "paidFeatures": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "concurrentBuilds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "passwordProtection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "previewDeploymentSuffix": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "acceptedPolicies": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"newProjectName\": {\n \"description\": \"The desired name for the project\",\n \"example\": \"a-project-name\",\n \"type\": \"string\",\n \"maxLength\": 100\n },\n \"paidFeatures\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"concurrentBuilds\": {\n \"type\": \"integer\",\n \"nullable\": true\n },\n \"passwordProtection\": {\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"previewDeploymentSuffix\": {\n \"type\": \"boolean\",\n \"nullable\": true\n }\n }\n },\n \"acceptedPolicies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"required\": [\n \"eula\",\n \"privacy\"\n ],\n \"properties\": {\n \"eula\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"privacy\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddEdgeConfigToken.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddEdgeConfigToken.json new file mode 100644 index 00000000..7b234931 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddEdgeConfigToken.json @@ -0,0 +1,205 @@ +{ + "name": "AddEdgeConfigToken", + "fully_qualified_name": "VercelApi.AddEdgeConfigToken@0.1.0", + "description": "Adds a token to an existing Edge Config.\n\nThis tool is used to add a new token to an existing Edge Config in Vercel. It should be called when you need to update the configuration with additional access or permissions via token.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The unique identifier for the Edge Config to which the token will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "token_label", + "required": true, + "description": "A descriptive label for the token being added to the Edge Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "label" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the Team on whose behalf the request is made. This is used for specifying the target team within Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createEdgeConfigToken'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/token", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "label", + "tool_parameter_name": "token_label", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"label\"\n ],\n \"properties\": {\n \"label\": {\n \"maxLength\": 52,\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddNewDomainVercel.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddNewDomainVercel.json new file mode 100644 index 00000000..25034328 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddNewDomainVercel.json @@ -0,0 +1,190 @@ +{ + "name": "AddNewDomainVercel", + "fully_qualified_name": "VercelApi.AddNewDomainVercel@0.1.0", + "description": "Add a new apex domain with Vercel for the user.\n\nUse this tool to add a new apex domain name with Vercel for the authenticating user. This tool is not meant for transferring domains from external registrars to Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the Team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The identifier for the team to execute the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "domain_operation", + "required": false, + "description": "JSON object specifying the domain operation, including 'method' with values 'add' or 'move-in'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain operation to perform. It can be either `add` or `move-in`." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createOrTransferDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v7/domains", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_operation", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain operation to perform. It can be either `add` or `move-in`." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"method\": {\n \"description\": \"The domain operation to perform. It can be either `add` or `move-in`.\",\n \"type\": \"string\",\n \"example\": \"add\"\n }\n },\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"description\": \"add\",\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The domain name you want to add.\",\n \"type\": \"string\",\n \"example\": \"example.com\"\n },\n \"cdnEnabled\": {\n \"description\": \"Whether the domain has the Vercel Edge Network enabled or not.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"zone\": {\n \"type\": \"boolean\"\n },\n \"method\": {\n \"description\": \"The domain operation to perform.\",\n \"type\": \"string\",\n \"example\": \"add\"\n }\n }\n },\n {\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"description\": \"move-in\",\n \"required\": [\n \"method\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The domain name you want to add.\",\n \"type\": \"string\",\n \"example\": \"example.com\"\n },\n \"method\": {\n \"description\": \"The domain operation to perform.\",\n \"type\": \"string\",\n \"example\": \"move-in\"\n },\n \"token\": {\n \"description\": \"The move-in token from Move Requested email.\",\n \"type\": \"string\",\n \"example\": \"fdhfr820ad#@FAdlj$$\"\n }\n }\n },\n {\n \"deprecated\": true,\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"description\": \"transfer-in\",\n \"required\": [\n \"method\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The domain name you want to add.\",\n \"type\": \"string\",\n \"example\": \"example.com\"\n },\n \"method\": {\n \"description\": \"The domain operation to perform.\",\n \"type\": \"string\",\n \"example\": \"transfer-in\"\n },\n \"authCode\": {\n \"description\": \"The authorization code assigned to the domain.\",\n \"type\": \"string\",\n \"example\": \"fdhfr820ad#@FAdlj$$\"\n },\n \"expectedPrice\": {\n \"description\": \"The price you expect to be charged for the required 1 year renewal.\",\n \"type\": \"number\",\n \"example\": 8\n }\n }\n }\n ]\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddProjectDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddProjectDomain.json new file mode 100644 index 00000000..c10f2265 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddProjectDomain.json @@ -0,0 +1,349 @@ +{ + "name": "AddProjectDomain", + "fully_qualified_name": "VercelApi.AddProjectDomain@0.1.0", + "description": "Add a domain to a specified Vercel project.\n\nThis tool adds a domain to a Vercel project by specifying the domain name and project identifier (id or name). If the domain is unverified, the response will indicate it needs verification. If the domain already exists, a 400 error will occur.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique identifier or name of the project to which the domain will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "project_domain_name", + "required": true, + "description": "The domain name to be added to the specified Vercel project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team for which the request is made. This ensures the request is executed on behalf of the specified team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. This identifies the team context for the domain addition.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "git_branch_to_link_domain", + "required": false, + "description": "The Git branch to associate with the project domain when adding it to a Vercel project. This allows the domain to be tied to a specific branch in the repository.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch to link the project domain" + }, + "inferrable": true, + "http_endpoint_parameter_name": "gitBranch" + }, + { + "name": "custom_environment_id", + "required": false, + "description": "The unique custom environment identifier within the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customEnvironmentId" + }, + { + "name": "redirect_target_domain", + "required": false, + "description": "Specify the target destination domain to redirect to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target destination domain for redirect" + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirect" + }, + { + "name": "redirect_status_code", + "required": false, + "description": "HTTP status code for redirecting the domain. Options are: 301, 302, 307, 308, or None.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "None", + "301", + "302", + "307", + "308" + ], + "properties": null, + "inner_properties": null, + "description": "Status code for domain redirect" + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirectStatusCode" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'addProjectDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v10/projects/{idOrName}/domains", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "project_domain_name", + "description": "The project domain name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "gitBranch", + "tool_parameter_name": "git_branch_to_link_domain", + "description": "Git branch to link the project domain", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch to link the project domain" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customEnvironmentId", + "tool_parameter_name": "custom_environment_id", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirect", + "tool_parameter_name": "redirect_target_domain", + "description": "Target destination domain for redirect", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target destination domain for redirect" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirectStatusCode", + "tool_parameter_name": "redirect_status_code", + "description": "Status code for domain redirect", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "None", + "301", + "302", + "307", + "308" + ], + "properties": null, + "inner_properties": null, + "description": "Status code for domain redirect" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The project domain name\",\n \"example\": \"www.example.com\",\n \"type\": \"string\"\n },\n \"gitBranch\": {\n \"description\": \"Git branch to link the project domain\",\n \"example\": null,\n \"maxLength\": 250,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"customEnvironmentId\": {\n \"description\": \"The unique custom environment identifier within the project\",\n \"type\": \"string\"\n },\n \"redirect\": {\n \"description\": \"Target destination domain for redirect\",\n \"example\": \"foobar.com\",\n \"type\": \"string\",\n \"nullable\": true\n },\n \"redirectStatusCode\": {\n \"description\": \"Status code for domain redirect\",\n \"example\": 307,\n \"type\": \"integer\",\n \"enum\": [\n null,\n 301,\n 302,\n 307,\n 308\n ],\n \"nullable\": true\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddProjectMember.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddProjectMember.json new file mode 100644 index 00000000..9d9b1505 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AddProjectMember.json @@ -0,0 +1,279 @@ +{ + "name": "AddProjectMember", + "fully_qualified_name": "VercelApi.AddProjectMember@0.1.0", + "description": "Add a new member to a Vercel project.\n\nUse this tool to add a new member to a Vercel project using the project's ID or name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The ID or name of the Vercel project to which a new member will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "member_details", + "required": true, + "description": "Provide the member's UID, username, email, and role for the project. Role options: ADMIN, PROJECT_DEVELOPER, PROJECT_VIEWER.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "uid": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the team member that should be added to this project." + }, + "username": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The username of the team member that should be added to this project." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the team member that should be added to this project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_DEVELOPER", + "PROJECT_VIEWER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role of the member that will be added." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the Team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team for performing the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'addProjectMember'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/members", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The ID or name of the Project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "member_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "uid": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the team member that should be added to this project." + }, + "username": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The username of the team member that should be added to this project." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the team member that should be added to this project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_DEVELOPER", + "PROJECT_VIEWER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role of the member that will be added." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\"\n ],\n \"oneOf\": [\n {\n \"required\": [\n \"uid\"\n ]\n },\n {\n \"required\": [\n \"username\"\n ]\n },\n {\n \"required\": [\n \"email\"\n ]\n }\n ],\n \"properties\": {\n \"uid\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"ndlgr43fadlPyCtREAqxxdyFK\",\n \"description\": \"The ID of the team member that should be added to this project.\"\n },\n \"username\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"example\",\n \"description\": \"The username of the team member that should be added to this project.\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"example\": \"entity@example.com\",\n \"description\": \"The email of the team member that should be added to this project.\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_DEVELOPER\",\n \"PROJECT_VIEWER\"\n ],\n \"example\": \"ADMIN\",\n \"description\": \"The project role of the member that will be added.\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AdvanceRolloutStage.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AdvanceRolloutStage.json new file mode 100644 index 00000000..606df985 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/AdvanceRolloutStage.json @@ -0,0 +1,239 @@ +{ + "name": "AdvanceRolloutStage", + "fully_qualified_name": "VercelApi.AdvanceRolloutStage@0.1.0", + "description": "Advance a rollout to the next stage when manual approval is required.\n\nUse this tool to advance a release rollout to the next stage when manual approval is enabled in Vercel's rolling releases configuration.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier", + "required": true, + "description": "Project ID or URL-encoded project name to identify the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier used for performing the request on behalf of the specified team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team for which the rollout action will be performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "next_stage_request_details", + "required": false, + "description": "JSON object detailing the next stage index and canary deployment ID for advancing the rollout.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "nextStageIndex": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The index of the stage to transition to" + }, + "canaryDeploymentId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the canary deployment to approve for the next stage" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approveRollingReleaseStage'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release/approve-stage", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "next_stage_request_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "nextStageIndex": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The index of the stage to transition to" + }, + "canaryDeploymentId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the canary deployment to approve for the next stage" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"nextStageIndex\",\n \"canaryDeploymentId\"\n ],\n \"properties\": {\n \"nextStageIndex\": {\n \"description\": \"The index of the stage to transition to\",\n \"type\": \"number\"\n },\n \"canaryDeploymentId\": {\n \"description\": \"The id of the canary deployment to approve for the next stage\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CancelDeployment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CancelDeployment.json new file mode 100644 index 00000000..0de05503 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CancelDeployment.json @@ -0,0 +1,172 @@ +{ + "name": "CancelDeployment", + "fully_qualified_name": "VercelApi.CancelDeployment@0.1.0", + "description": "Cancel a currently building deployment.\n\nUse this tool to cancel a deployment that is currently in progress by providing its ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The unique identifier of the deployment to cancel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the deployment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of when canceling a deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug for which the deployment cancellation should be performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'cancelDeployment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v12/deployments/{id}/cancel", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "deployment_id", + "description": "The unique identifier of the deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the deployment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainAvailability.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainAvailability.json new file mode 100644 index 00000000..66ca51d6 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainAvailability.json @@ -0,0 +1,172 @@ +{ + "name": "CheckDomainAvailability", + "fully_qualified_name": "VercelApi.CheckDomainAvailability@0.1.0", + "description": "Check if a domain name is available for purchase.\n\nThis tool checks the availability of a domain name for purchase, using the deprecated 'checkDomainStatus' endpoint from Vercel. Note that this endpoint has been replaced with 'Get availability for a domain.'", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name you want to check for purchase availability.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain for which we would like to check the status." + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the Team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug for the team or organization on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'checkDomainStatus'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v4/domains/status", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "name", + "tool_parameter_name": "domain_name", + "description": "The name of the domain for which we would like to check the status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain for which we would like to check the status." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainAvailabilityBulk.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainAvailabilityBulk.json new file mode 100644 index 00000000..fb11fd7c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainAvailabilityBulk.json @@ -0,0 +1,139 @@ +{ + "name": "CheckDomainAvailabilityBulk", + "fully_qualified_name": "VercelApi.CheckDomainAvailabilityBulk@0.1.0", + "description": "Check availability for multiple domains.\n\nUse this tool to check if multiple domains are available for purchase. This can help in planning before acquiring domains via the buying endpoints.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_names", + "required": true, + "description": "A list of domain names to check, with a maximum of 50 domains.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "an array of at most 50 item(s)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domains" + }, + { + "name": "team_identifier", + "required": false, + "description": "Unique identifier for the team or organization associated with the request. It may be required to access specific domain availability data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getBulkAvailability'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/availability", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domains", + "tool_parameter_name": "domain_names", + "description": "an array of at most 50 item(s)", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "an array of at most 50 item(s)" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"domains\"\n ],\n \"properties\": {\n \"domains\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"an array of at most 50 item(s)\",\n \"title\": \"maxItems(50)\",\n \"maxItems\": 50\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainTransferStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainTransferStatus.json new file mode 100644 index 00000000..5a7ff0f3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckDomainTransferStatus.json @@ -0,0 +1,139 @@ +{ + "name": "CheckDomainTransferStatus", + "fully_qualified_name": "VercelApi.CheckDomainTransferStatus@0.1.0", + "description": "Retrieve the transfer status of a domain.\n\nUse this tool to check the current transfer status of a specific domain, providing insights into progress or any issues.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "Specifies the domain name to check the transfer status for. It should be a valid domain string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_id", + "required": false, + "description": "The unique identifier of the team requesting the domain transfer status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomainTransferIn'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/transfer", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckRemoteCachingStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckRemoteCachingStatus.json new file mode 100644 index 00000000..0ad68c73 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckRemoteCachingStatus.json @@ -0,0 +1,139 @@ +{ + "name": "CheckRemoteCachingStatus", + "fully_qualified_name": "VercelApi.CheckRemoteCachingStatus@0.1.0", + "description": "Check the status of Remote Caching.\n\nThis tool is used to determine if Remote Caching is currently enabled, disabled, or disabled due to usage limits. It provides a quick way to verify the status of caching in Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'status'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/artifacts/status", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckTeamAccessStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckTeamAccessStatus.json new file mode 100644 index 00000000..f9e29dc2 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CheckTeamAccessStatus.json @@ -0,0 +1,139 @@ +{ + "name": "CheckTeamAccessStatus", + "fully_qualified_name": "VercelApi.CheckTeamAccessStatus@0.1.0", + "description": "Check the status of a team access request.\n\nUse this tool to check the status of a user's request to join a team on Vercel. The tool will return the status of the request or a 404 error if the request was declined. If no user ID is provided, it returns the status for the authenticated user.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_id", + "required": true, + "description": "The ID of the user whose team access request status is being checked. Leave empty to use the authenticated user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "userId" + }, + { + "name": "team_id", + "required": true, + "description": "The unique identifier for the team whose access request status is being checked.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getTeamAccessRequest'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/request/{userId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "userId", + "tool_parameter_name": "user_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ConnectIntegrationResourceToProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ConnectIntegrationResourceToProject.json new file mode 100644 index 00000000..7ef1a49a --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ConnectIntegrationResourceToProject.json @@ -0,0 +1,256 @@ +{ + "name": "ConnectIntegrationResourceToProject", + "fully_qualified_name": "VercelApi.ConnectIntegrationResourceToProject@0.1.0", + "description": "Connect an integration resource to a Vercel project.\n\nThis tool connects a provisioned integration resource to a specific Vercel project. It should be used when you need to establish a link between a resource and a project in Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The identifier for the integration configuration to be connected to the Vercel project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_id", + "required": true, + "description": "The ID of the integration resource to connect to the Vercel project. This is required to establish the link.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique team slug used to perform the request on behalf of a specific team in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "integration_resource_request_body", + "required": false, + "description": "A JSON object containing the 'projectId' to connect the resource to a specific Vercel project.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'connectIntegrationResourceToProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/installations/{integrationConfigurationId}/resources/{resourceId}/connections", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "integration_resource_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAccessGroup.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAccessGroup.json new file mode 100644 index 00000000..b44a64c4 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAccessGroup.json @@ -0,0 +1,264 @@ +{ + "name": "CreateAccessGroup", + "fully_qualified_name": "VercelApi.CreateAccessGroup@0.1.0", + "description": "Create a new access group on Vercel.\n\nThis tool should be called when there is a need to create a new access group in Vercel. It facilitates setting up user permissions and organization in projects.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_details", + "required": true, + "description": "JSON object with 'name', 'projects' (list of project roles and IDs), and 'membersToAdd' (list of member IDs) for the access group.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the access group" + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group. \\\"null\\\" will remove this project level role." + } + }, + "description": null + }, + "membersToAdd": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of members to add to the access group." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team on whose behalf the access group is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug identifier for the team to create the access group for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createAccessGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "access_group_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the access group" + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group. \\\"null\\\" will remove this project level role." + } + }, + "description": null + }, + "membersToAdd": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of members to add to the access group." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the access group\",\n \"maxLength\": 50,\n \"pattern\": \"^[A-z0-9_ -]+$\",\n \"example\": \"My access group\"\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\",\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n \"description\": \"The ID of the project.\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_VIEWER\",\n \"PROJECT_DEVELOPER\"\n ],\n \"example\": \"ADMIN\",\n \"description\": \"The project role that will be added to this Access Group. \\\\\\\"null\\\\\\\" will remove this project level role.\",\n \"nullable\": true\n }\n }\n }\n },\n \"membersToAdd\": {\n \"description\": \"List of members to add to the access group.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"usr_1a2b3c4d5e6f7g8h9i0j\",\n \"usr_2b3c4d5e6f7g8h9i0j1k\"\n ]\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAccessGroupProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAccessGroupProject.json new file mode 100644 index 00000000..22b34967 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAccessGroupProject.json @@ -0,0 +1,246 @@ +{ + "name": "CreateAccessGroupProject", + "fully_qualified_name": "VercelApi.CreateAccessGroupProject@0.1.0", + "description": "Create a project within a specific access group.\n\n", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "Identifier or name of the access group to associate with the project. It helps specify which access group the new project will be part of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accessGroupIdOrName" + }, + { + "name": "project_id", + "required": true, + "description": "The unique ID of the project to be added to the access group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "project_role", + "required": true, + "description": "The role to be assigned to the project within the access group. Options: 'ADMIN', 'PROJECT_VIEWER', 'PROJECT_DEVELOPER'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique identifier slug for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createAccessGroupProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accessGroupIdOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "The ID of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "role", + "tool_parameter_name": "project_role", + "description": "The project role that will be added to this Access Group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\",\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n \"description\": \"The ID of the project.\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_VIEWER\",\n \"PROJECT_DEVELOPER\"\n ],\n \"example\": \"ADMIN\",\n \"description\": \"The project role that will be added to this Access Group.\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAuthToken.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAuthToken.json new file mode 100644 index 00000000..869aa18c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateAuthToken.json @@ -0,0 +1,205 @@ +{ + "name": "CreateAuthToken", + "fully_qualified_name": "VercelApi.CreateAuthToken@0.1.0", + "description": "Create a new authentication token for the user.\n\nUse this tool to generate and retrieve a new authentication token for the currently authenticated user. Ensure to save the token for subsequent API requests, as it is only provided once.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "token_name", + "required": true, + "description": "A descriptive name for the authentication token. This helps in identifying the token's purpose or context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the Team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the Team to perform the request on behalf of. This identifies the specific team within your Vercel account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "expiration_timestamp", + "required": false, + "description": "The expiration time for the token, specified as a Unix timestamp. This defines when the token will no longer be valid.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "expiresAt" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createAuthToken'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v3/user/tokens", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "token_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expiresAt", + "tool_parameter_name": "expiration_timestamp", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"expiresAt\": {\n \"type\": \"number\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateCustomEnvironment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateCustomEnvironment.json new file mode 100644 index 00000000..1bec141c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateCustomEnvironment.json @@ -0,0 +1,337 @@ +{ + "name": "CreateCustomEnvironment", + "fully_qualified_name": "VercelApi.CreateCustomEnvironment@0.1.0", + "description": "Create a custom environment for your Vercel project.\n\nThis tool creates a custom environment in a specified Vercel project, excluding 'Production' or 'Preview' as names. Use it to set up tailored project environments.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_unique_identifier_or_name", + "required": true, + "description": "The unique project identifier or project name for which the custom environment is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. It is required to specify the unique team for the custom environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The slug of the custom environment to create." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "custom_environment_slug", + "required": false, + "description": "Specify the slug for the new custom environment. It cannot be 'Production' or 'Preview'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The slug of the custom environment to create." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "environment_description", + "required": false, + "description": "Optional description for the custom environment being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the custom environment. This is optional." + }, + "inferrable": true, + "http_endpoint_parameter_name": "description" + }, + { + "name": "branch_matcher_type", + "required": false, + "description": "Specifies the type of branch matcher: 'equals', 'startsWith', or 'endsWith'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of matcher. One of \\\"equals\\\", \\\"startsWith\\\", or \\\"endsWith\\\"." + }, + "inferrable": true, + "http_endpoint_parameter_name": "branchMatcher.type" + }, + { + "name": "git_branch_name_pattern", + "required": false, + "description": "Git branch name or part of it to match with the custom environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch name or portion thereof." + }, + "inferrable": true, + "http_endpoint_parameter_name": "branchMatcher.pattern" + }, + { + "name": "copy_environment_variables_from", + "required": false, + "description": "Specify the source environment to copy variables from. This is optional.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Where to copy environment variables from. This is optional." + }, + "inferrable": true, + "http_endpoint_parameter_name": "copyEnvVarsFrom" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createCustomEnvironment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/custom-environments", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "custom_environment_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_unique_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "custom_environment_slug", + "description": "The slug of the custom environment to create.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The slug of the custom environment to create." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "description", + "tool_parameter_name": "environment_description", + "description": "Description of the custom environment. This is optional.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the custom environment. This is optional." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "branchMatcher.type", + "tool_parameter_name": "branch_matcher_type", + "description": "Type of matcher. One of \\\"equals\\\", \\\"startsWith\\\", or \\\"endsWith\\\".", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of matcher. One of \\\"equals\\\", \\\"startsWith\\\", or \\\"endsWith\\\"." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "branchMatcher.pattern", + "tool_parameter_name": "git_branch_name_pattern", + "description": "Git branch name or portion thereof.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch name or portion thereof." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "copyEnvVarsFrom", + "tool_parameter_name": "copy_environment_variables_from", + "description": "Where to copy environment variables from. This is optional.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Where to copy environment variables from. This is optional." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"slug\": {\n \"description\": \"The slug of the custom environment to create.\",\n \"type\": \"string\",\n \"maxLength\": 32\n },\n \"description\": {\n \"description\": \"Description of the custom environment. This is optional.\",\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"branchMatcher\": {\n \"required\": [\n \"type\",\n \"pattern\"\n ],\n \"description\": \"How we want to determine a matching branch. This is optional.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"description\": \"Type of matcher. One of \\\\\\\"equals\\\\\\\", \\\\\\\"startsWith\\\\\\\", or \\\\\\\"endsWith\\\\\\\".\",\n \"enum\": [\n \"equals\",\n \"startsWith\",\n \"endsWith\"\n ]\n },\n \"pattern\": {\n \"description\": \"Git branch name or portion thereof.\",\n \"type\": \"string\",\n \"maxLength\": 100\n }\n }\n },\n \"copyEnvVarsFrom\": {\n \"description\": \"Where to copy environment variables from. This is optional.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateDnsRecord.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateDnsRecord.json new file mode 100644 index 00000000..fdf47c5f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateDnsRecord.json @@ -0,0 +1,245 @@ +{ + "name": "CreateDnsRecord", + "fully_qualified_name": "VercelApi.CreateDnsRecord@0.1.0", + "description": "Creates a DNS record for a domain.\n\nUse this tool to create a DNS record for a specified domain. It helps manage DNS configurations by adding new records as needed.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name_for_dns_record", + "required": true, + "description": "The domain for which the DNS record will be created. Must be a valid and registered domain name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain used to create the DNS record." + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "dns_record_details", + "required": true, + "description": "JSON object containing details of the DNS record to create, including type, name, value, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "A", + "AAAA", + "ALIAS", + "CAA", + "CNAME", + "HTTPS", + "MX", + "SRV", + "TXT", + "NS" + ], + "properties": null, + "inner_properties": null, + "description": "The type of record, it could be one of the valid DNS records." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier for performing the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier for the team performing the DNS record creation. It should be a string that represents the team's unique slug.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createRecord'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/domains/{domain}/records", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name_for_dns_record", + "description": "The domain used to create the DNS record.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain used to create the DNS record." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "dns_record_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "A", + "AAAA", + "ALIAS", + "CAA", + "CNAME", + "HTTPS", + "MX", + "SRV", + "TXT", + "NS" + ], + "properties": null, + "inner_properties": null, + "description": "The type of record, it could be one of the valid DNS records." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"required\": [\n \"type\"\n ],\n \"properties\": {\n \"type\": {\n \"description\": \"The type of record, it could be one of the valid DNS records.\",\n \"type\": \"string\",\n \"enum\": [\n \"A\",\n \"AAAA\",\n \"ALIAS\",\n \"CAA\",\n \"CNAME\",\n \"HTTPS\",\n \"MX\",\n \"SRV\",\n \"TXT\",\n \"NS\"\n ]\n }\n },\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"value\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name or an empty string for the root domain.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `A`.\",\n \"type\": \"string\",\n \"enum\": [\n \"A\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"The record value must be a valid IPv4 address.\",\n \"type\": \"string\",\n \"format\": \"ipv4\",\n \"example\": \"192.0.2.42\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"value\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name or an empty string for the root domain.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `AAAA`.\",\n \"type\": \"string\",\n \"enum\": [\n \"AAAA\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"An AAAA record pointing to an IPv6 address.\",\n \"type\": \"string\",\n \"format\": \"ipv6\",\n \"example\": \"2001:DB8::42\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"value\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name or an empty string for the root domain.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `ALIAS`.\",\n \"type\": \"string\",\n \"enum\": [\n \"ALIAS\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"An ALIAS virtual record pointing to a hostname resolved to an A record on server side.\",\n \"type\": \"string\",\n \"example\": \"cname.vercel-dns.com\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"value\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name or an empty string for the root domain.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `CAA`.\",\n \"type\": \"string\",\n \"enum\": [\n \"CAA\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"A CAA record to specify which Certificate Authorities (CAs) are allowed to issue certificates for the domain.\",\n \"type\": \"string\",\n \"example\": \"0 issue \\\\\\\"letsencrypt.org\\\\\\\"\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name or an empty string for the root domain.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `CNAME`.\",\n \"type\": \"string\",\n \"enum\": [\n \"CNAME\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"A CNAME record mapping to another domain name.\",\n \"type\": \"string\",\n \"example\": \"cname.vercel-dns.com\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"value\",\n \"name\",\n \"mxPriority\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name or an empty string for the root domain.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `MX`.\",\n \"type\": \"string\",\n \"enum\": [\n \"MX\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"An MX record specifying the mail server responsible for accepting messages on behalf of the domain name.\",\n \"type\": \"string\",\n \"example\": \"10 mail.example.com.\"\n },\n \"mxPriority\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 65535,\n \"example\": 10\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"name\",\n \"srv\"\n ],\n \"properties\": {\n \"type\": {\n \"description\": \"Must be of type `SRV`.\",\n \"type\": \"string\",\n \"enum\": [\n \"SRV\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"srv\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"weight\",\n \"port\",\n \"priority\",\n \"target\"\n ],\n \"properties\": {\n \"priority\": {\n \"anyOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 65535,\n \"example\": 10\n }\n ],\n \"nullable\": true\n },\n \"weight\": {\n \"anyOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 65535,\n \"example\": 10\n }\n ],\n \"nullable\": true\n },\n \"port\": {\n \"anyOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 65535,\n \"example\": 5000\n }\n ],\n \"nullable\": true\n },\n \"target\": {\n \"type\": \"string\",\n \"example\": \"host.example.com\"\n }\n }\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"value\",\n \"name\"\n ],\n \"properties\": {\n \"type\": {\n \"description\": \"Must be of type `TXT`.\",\n \"type\": \"string\",\n \"enum\": [\n \"TXT\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"A TXT record containing arbitrary text.\",\n \"type\": \"string\",\n \"example\": \"hello\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"A subdomain name.\",\n \"type\": \"string\",\n \"example\": \"subdomain\"\n },\n \"type\": {\n \"description\": \"Must be of type `NS`.\",\n \"type\": \"string\",\n \"enum\": [\n \"NS\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"value\": {\n \"description\": \"An NS domain value.\",\n \"type\": \"string\",\n \"example\": \"ns1.example.com\"\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"type\",\n \"name\",\n \"https\"\n ],\n \"properties\": {\n \"type\": {\n \"description\": \"Must be of type `HTTPS`.\",\n \"type\": \"string\",\n \"enum\": [\n \"HTTPS\"\n ]\n },\n \"ttl\": {\n \"description\": \"The TTL value. Must be a number between 60 and 2147483647. Default value is 60.\",\n \"type\": \"number\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"example\": 60\n },\n \"https\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"priority\",\n \"target\"\n ],\n \"properties\": {\n \"priority\": {\n \"anyOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 65535,\n \"example\": 10\n }\n ],\n \"nullable\": true\n },\n \"target\": {\n \"type\": \"string\",\n \"example\": \"host.example.com\"\n },\n \"params\": {\n \"type\": \"string\",\n \"example\": \"alpn=h2,h3\"\n }\n }\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n }\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateEdgeConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateEdgeConfig.json new file mode 100644 index 00000000..fb129f8c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateEdgeConfig.json @@ -0,0 +1,206 @@ +{ + "name": "CreateEdgeConfig", + "fully_qualified_name": "VercelApi.CreateEdgeConfig@0.1.0", + "description": "Create a new Edge Configuration.\n\nThis tool is used to create a new Edge Config on Vercel. It should be called when there's a need to set up or initialize a configuration for edge functions.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_request_body", + "required": true, + "description": "JSON object containing details for Edge Config, including 'slug' and 'items'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "items": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request for. This is required to specify on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug that specifies the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createEdgeConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "edge_config_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "items": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"slug\"\n ],\n \"properties\": {\n \"slug\": {\n \"maxLength\": 64,\n \"pattern\": \"^[\\\\\\\\w-]+$\",\n \"type\": \"string\"\n },\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateExperimentationItems.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateExperimentationItems.json new file mode 100644 index 00000000..7c9271b9 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateExperimentationItems.json @@ -0,0 +1,342 @@ +{ + "name": "CreateExperimentationItems", + "fully_qualified_name": "VercelApi.CreateExperimentationItems@0.1.0", + "description": "Create one or multiple experimentation items.\n\nThis tool is used to create one or multiple experimentation items for a specific installation. It should be called when you need to add experimentation data to a resource tied to an integration configuration.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration for which to create experimentation items. This ties the items to a specific setup or environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_identifier", + "required": true, + "description": "The unique identifier of the resource to associate with the experimentation items.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "experimentation_items", + "required": false, + "description": "A JSON array of experimentation items to be created. Each item includes properties like id, slug, origin, category (\"experiment\" or \"flag\"), name, description, isArchived, createdAt, and updatedAt.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "experiment", + "flag" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isArchived": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "createdAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "updatedAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint ''.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "experimentation_items", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "experiment", + "flag" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isArchived": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "createdAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "updatedAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"items\"\n ],\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"maxItems\": 50,\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"id\",\n \"slug\",\n \"origin\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"slug\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"origin\": {\n \"type\": \"string\",\n \"maxLength\": 2048\n },\n \"category\": {\n \"type\": \"string\",\n \"enum\": [\n \"experiment\",\n \"flag\"\n ]\n },\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"isArchived\": {\n \"type\": \"boolean\"\n },\n \"createdAt\": {\n \"type\": \"number\"\n },\n \"updatedAt\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateFirewallBypassRule.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateFirewallBypassRule.json new file mode 100644 index 00000000..dad98c15 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateFirewallBypassRule.json @@ -0,0 +1,303 @@ +{ + "name": "CreateFirewallBypassRule", + "fully_qualified_name": "VercelApi.CreateFirewallBypassRule@0.1.0", + "description": "Create a new firewall bypass rule.\n\nThis tool should be called to create new system bypass rules in the firewall. Useful for configuring security exceptions.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The identifier for the project to create a bypass rule for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier of the team for which the bypass rule is created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "bypass_rule_details", + "required": false, + "description": "JSON object containing the domain, projectScope, sourceIp, allSources, ttl, and note for the bypass rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "domain": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "projectScope": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the specified bypass will apply to all domains for a project." + }, + "sourceIp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "allSources": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "ttl": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time to live in milliseconds" + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'addBypassIp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/bypass", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bypass_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "domain": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "projectScope": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the specified bypass will apply to all domains for a project." + }, + "sourceIp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "allSources": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "ttl": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time to live in milliseconds" + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"oneOf\": [\n {\n \"required\": [\n \"domain\"\n ]\n },\n {\n \"required\": [\n \"projectScope\"\n ]\n }\n ],\n \"properties\": {\n \"domain\": {\n \"type\": \"string\",\n \"pattern\": \"([a-z]+[a-z.]+)$\",\n \"maxLength\": 2544\n },\n \"projectScope\": {\n \"type\": \"boolean\",\n \"description\": \"If the specified bypass will apply to all domains for a project.\"\n },\n \"sourceIp\": {\n \"type\": \"string\"\n },\n \"allSources\": {\n \"type\": \"boolean\"\n },\n \"ttl\": {\n \"type\": \"number\",\n \"description\": \"Time to live in milliseconds\"\n },\n \"note\": {\n \"type\": \"string\",\n \"maxLength\": 500\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateIntegrationLogDrain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateIntegrationLogDrain.json new file mode 100644 index 00000000..7459d181 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateIntegrationLogDrain.json @@ -0,0 +1,302 @@ +{ + "name": "CreateIntegrationLogDrain", + "fully_qualified_name": "VercelApi.CreateIntegrationLogDrain@0.1.0", + "description": "Sets up an Integration log drain for Vercel.\n\nThis tool creates an Integration log drain in Vercel, accessible via an OAuth2 client. It should be used when you need to tie log drains to specific integrations within Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_drain_configuration", + "required": true, + "description": "Configuration for the integration log drain, including name, project IDs, secret, delivery format, URL, sources, headers, and environments. This should be a JSON object detailing each parameter of the log drain.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log drain" + }, + "projectIds": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "secret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A secret to sign log drain notification headers so a consumer can verify their authenticity" + }, + "deliveryFormat": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The delivery log format" + }, + "url": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The url where you will receive logs. The protocol must be `https://` or `http://` when type is `json` and `ndjson`." + }, + "sources": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "headers": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Headers to be sent together with the request" + }, + "environments": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier for performing the request on behalf of a specific team in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createLogDrain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/integrations/log-drains", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "log_drain_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log drain" + }, + "projectIds": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "secret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A secret to sign log drain notification headers so a consumer can verify their authenticity" + }, + "deliveryFormat": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The delivery log format" + }, + "url": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The url where you will receive logs. The protocol must be `https://` or `http://` when type is `json` and `ndjson`." + }, + "sources": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "headers": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Headers to be sent together with the request" + }, + "environments": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the log drain\",\n \"example\": \"My first log drain\",\n \"maxLength\": 100,\n \"pattern\": \"^[A-z0-9_ -]+$\",\n \"type\": \"string\"\n },\n \"projectIds\": {\n \"minItems\": 1,\n \"maxItems\": 50,\n \"type\": \"array\",\n \"items\": {\n \"pattern\": \"^[a-zA-z0-9_]+$\",\n \"type\": \"string\"\n }\n },\n \"secret\": {\n \"description\": \"A secret to sign log drain notification headers so a consumer can verify their authenticity\",\n \"example\": \"a1Xsfd325fXcs\",\n \"maxLength\": 100,\n \"pattern\": \"^[A-z0-9_ -]+$\",\n \"type\": \"string\"\n },\n \"deliveryFormat\": {\n \"description\": \"The delivery log format\",\n \"example\": \"json\",\n \"enum\": [\n \"json\",\n \"ndjson\"\n ]\n },\n \"url\": {\n \"description\": \"The url where you will receive logs. The protocol must be `https://` or `http://` when type is `json` and `ndjson`.\",\n \"example\": \"https://example.com/log-drain\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"type\": \"string\"\n },\n \"sources\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"static\",\n \"lambda\",\n \"build\",\n \"edge\",\n \"external\",\n \"firewall\"\n ]\n },\n \"minItems\": 1\n },\n \"headers\": {\n \"description\": \"Headers to be sent together with the request\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n },\n \"environments\": {\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"preview\",\n \"production\"\n ]\n },\n \"minItems\": 1\n }\n },\n \"required\": [\n \"name\",\n \"url\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateIntegrationStore.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateIntegrationStore.json new file mode 100644 index 00000000..fbb37492 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateIntegrationStore.json @@ -0,0 +1,334 @@ +{ + "name": "CreateIntegrationStore", + "fully_qualified_name": "VercelApi.CreateIntegrationStore@0.1.0", + "description": "Create integration stores for FREE and PAID billing plans.\n\nThis tool creates integration stores on Vercel for both free and paid plans, handling billing automatically. It validates configurations, discovers free plans, and creates billing authorizations for paid resources. It should be called when you need to provision integration storage resources while managing billing. Requires admin access and, for paid plans, a valid payment method.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team on whose behalf the request is being made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug of the team for which the integration store is being created. This identifies the team on behalf of which the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "integration_store_details", + "required": false, + "description": "JSON object with details for store creation: includes name, integration configuration ID, product ID or slug, metadata, external ID, protocol settings, source, billing plan ID, payment method ID, and prepayment amount in cents for specific plans.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable name for the storage resource" + }, + "integrationConfigurationId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of your integration configuration. Get this from GET /v1/integrations/configurations" + }, + "integrationProductIdOrSlug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID or slug of the integration product. Get available products from GET /v1/integrations/configuration/{id}/products" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional key-value pairs for resource metadata" + }, + "externalId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier for tracking purposes" + }, + "protocolSettings": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Protocol-specific configuration settings" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Source of the store creation request" + }, + "billingPlanId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the billing plan for paid resources. Get available plans from GET /integrations/integration/{id}/products/{productId}/plans. If not provided, automatically discovers free billing plans." + }, + "paymentMethodId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment method ID for paid resources. Optional - uses default payment method if not provided." + }, + "prepaymentAmountCents": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount in cents for prepayment billing plans. Required only for prepayment plans with variable amounts." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createIntegrationStoreDirect'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/storage/stores/integration/direct", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "integration_store_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable name for the storage resource" + }, + "integrationConfigurationId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of your integration configuration. Get this from GET /v1/integrations/configurations" + }, + "integrationProductIdOrSlug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID or slug of the integration product. Get available products from GET /v1/integrations/configuration/{id}/products" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional key-value pairs for resource metadata" + }, + "externalId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier for tracking purposes" + }, + "protocolSettings": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Protocol-specific configuration settings" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Source of the store creation request" + }, + "billingPlanId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the billing plan for paid resources. Get available plans from GET /integrations/integration/{id}/products/{productId}/plans. If not provided, automatically discovers free billing plans." + }, + "paymentMethodId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment method ID for paid resources. Optional - uses default payment method if not provided." + }, + "prepaymentAmountCents": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount in cents for prepayment billing plans. Required only for prepayment plans with variable amounts." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"integrationConfigurationId\",\n \"integrationProductIdOrSlug\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 128,\n \"description\": \"Human-readable name for the storage resource\",\n \"example\": \"my-dev-database\"\n },\n \"integrationConfigurationId\": {\n \"type\": \"string\",\n \"description\": \"ID of your integration configuration. Get this from GET /v1/integrations/configurations\",\n \"example\": \"icfg_cuwj0AdCdH3BwWT4LPijCC7t\",\n \"pattern\": \"^icfg_[a-zA-Z0-9]+$\"\n },\n \"integrationProductIdOrSlug\": {\n \"type\": \"string\",\n \"description\": \"ID or slug of the integration product. Get available products from GET /v1/integrations/configuration/{id}/products\",\n \"example\": \"iap_postgres_db\",\n \"oneOf\": [\n {\n \"pattern\": \"^iap_[a-zA-Z0-9_]+$\",\n \"description\": \"Product ID format\"\n },\n {\n \"pattern\": \"^[a-z0-9-]+$\",\n \"description\": \"Product slug format\"\n }\n ]\n },\n \"metadata\": {\n \"type\": \"object\",\n \"description\": \"Optional key-value pairs for resource metadata\",\n \"additionalProperties\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"number\"\n }\n }\n ]\n },\n \"example\": {\n \"environment\": \"development\",\n \"project\": \"my-app\",\n \"tags\": [\n \"database\",\n \"postgres\"\n ]\n }\n },\n \"externalId\": {\n \"type\": \"string\",\n \"description\": \"Optional external identifier for tracking purposes\",\n \"example\": \"dev-db-001\"\n },\n \"protocolSettings\": {\n \"type\": \"object\",\n \"description\": \"Protocol-specific configuration settings\",\n \"additionalProperties\": true,\n \"example\": {\n \"experimentation\": {\n \"edgeConfigSyncingEnabled\": true\n }\n }\n },\n \"source\": {\n \"type\": \"string\",\n \"description\": \"Source of the store creation request\",\n \"example\": \"api\",\n \"default\": \"marketplace\"\n },\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"ID of the billing plan for paid resources. Get available plans from GET /integrations/integration/{id}/products/{productId}/plans. If not provided, automatically discovers free billing plans.\",\n \"example\": \"bp_abc123def456\"\n },\n \"paymentMethodId\": {\n \"type\": \"string\",\n \"description\": \"Payment method ID for paid resources. Optional - uses default payment method if not provided.\",\n \"example\": \"pm_1AbcDefGhiJklMno\"\n },\n \"prepaymentAmountCents\": {\n \"type\": \"number\",\n \"minimum\": 50,\n \"description\": \"Amount in cents for prepayment billing plans. Required only for prepayment plans with variable amounts.\",\n \"example\": 5000\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateNewDeploymentCheck.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateNewDeploymentCheck.json new file mode 100644 index 00000000..1ca19987 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateNewDeploymentCheck.json @@ -0,0 +1,370 @@ +{ + "name": "CreateNewDeploymentCheck", + "fully_qualified_name": "VercelApi.CreateNewDeploymentCheck@0.1.0", + "description": "Create a new deployment check using Vercel API.\n\nUse this tool to initiate a new check for a specific deployment in Vercel. This requires providing a deployment ID and must be authorized with OAuth2 to avoid errors.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The unique identifier of the deployment to create the check for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to create the check for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "check_name", + "required": true, + "description": "The name of the check being created. This is required to identify the check purpose.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the check being created" + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "block_deployment_on_failure", + "required": true, + "description": "Indicates if the check should block a deployment from succeeding.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the check should block a deployment from succeeding" + }, + "inferrable": true, + "http_endpoint_parameter_name": "blocking" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier used to perform the request on behalf of a team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug (unique identifier) of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "page_path_to_check", + "required": false, + "description": "Specify the path of the page that is being checked. This should be a string value representing the specific page path for the deployment check.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Path of the page that is being checked" + }, + "inferrable": true, + "http_endpoint_parameter_name": "path" + }, + { + "name": "details_url", + "required": false, + "description": "A URL that provides further details about the check. Expected format is a valid URL string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "URL to display for further details" + }, + "inferrable": true, + "http_endpoint_parameter_name": "detailsUrl" + }, + { + "name": "external_identifier", + "required": false, + "description": "A unique identifier used as an external reference for the check.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An identifier that can be used as an external reference" + }, + "inferrable": true, + "http_endpoint_parameter_name": "externalId" + }, + { + "name": "allow_rerun_request", + "required": false, + "description": "Allow users to request a rerun of the check if it fails. Use a boolean value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether a user should be able to request for the check to be rerun if it fails" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rerequestable" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createCheck'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/deployments/{deploymentId}/checks", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "The deployment to create the check for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to create the check for." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "check_name", + "description": "The name of the check being created", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the check being created" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "path", + "tool_parameter_name": "page_path_to_check", + "description": "Path of the page that is being checked", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Path of the page that is being checked" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "blocking", + "tool_parameter_name": "block_deployment_on_failure", + "description": "Whether the check should block a deployment from succeeding", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the check should block a deployment from succeeding" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "detailsUrl", + "tool_parameter_name": "details_url", + "description": "URL to display for further details", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "URL to display for further details" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "externalId", + "tool_parameter_name": "external_identifier", + "description": "An identifier that can be used as an external reference", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An identifier that can be used as an external reference" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rerequestable", + "tool_parameter_name": "allow_rerun_request", + "description": "Whether a user should be able to request for the check to be rerun if it fails", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether a user should be able to request for the check to be rerun if it fails" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the check being created\",\n \"maxLength\": 100,\n \"example\": \"Performance Check\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the page that is being checked\",\n \"type\": \"string\",\n \"maxLength\": 255,\n \"example\": \"/\"\n },\n \"blocking\": {\n \"description\": \"Whether the check should block a deployment from succeeding\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"detailsUrl\": {\n \"description\": \"URL to display for further details\",\n \"type\": \"string\",\n \"example\": \"http://example.com\"\n },\n \"externalId\": {\n \"description\": \"An identifier that can be used as an external reference\",\n \"type\": \"string\",\n \"example\": \"1234abc\"\n },\n \"rerequestable\": {\n \"description\": \"Whether a user should be able to request for the check to be rerun if it fails\",\n \"type\": \"boolean\",\n \"example\": true\n }\n },\n \"required\": [\n \"name\",\n \"blocking\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateNewProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateNewProject.json new file mode 100644 index 00000000..3b88d188 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateNewProject.json @@ -0,0 +1,836 @@ +{ + "name": "CreateNewProject", + "fully_qualified_name": "VercelApi.CreateNewProject@0.1.0", + "description": "Create a new project with specified configurations.\n\nThis tool creates a new project using the provided configurations. You can specify only the project name or add additional configurations to customize the project further. Call this tool when you need to initialize a new project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team on whose behalf the project will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the Team to perform the request on behalf of. It should be a string identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "project_configuration", + "required": false, + "description": "JSON with detailed settings for the new project, such as name, commands, environment variables, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enablePreviewFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to preview toolbar on the project level" + }, + "enableProductionFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to production toolbar on the project level" + }, + "previewDeploymentsDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether preview deployments are disabled for this project." + }, + "buildCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The build command for this project. When `null` is used this value will be automatically detected" + }, + "commandForIgnoringBuildStep": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "devCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dev command for this project. When `null` is used this value will be automatically detected" + }, + "environmentVariables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the ENV variable" + }, + "target": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployment Target or Targets in which the ENV variable will be used" + }, + "gitBranch": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If defined, the git branch of the environment variable (must have target=preview)" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "system", + "secret", + "encrypted", + "plain", + "sensitive" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the ENV variable" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the ENV variable" + } + }, + "description": "Collection of ENV Variables the Project will use" + }, + "framework": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework that is being used for this project. When `null` is used no framework is selected" + }, + "gitRepository": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "repo": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the git repository. For example: \\\"vercel/next.js\\\"" + }, + "type": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Git Provider of the repository" + } + }, + "inner_properties": null, + "description": "The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed" + }, + "installCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The install command for this project. When `null` is used this value will be automatically detected" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the project" + }, + "skipGitConnectDuringLink": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`." + }, + "ssoProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "The Vercel Auth setting for the project (historically named \\\"SSO Protection\\\")" + }, + "outputDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The output directory of the project. When `null` is used this value will be automatically detected" + }, + "publicSource": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether the source code and logs of the deployments for this project should be public or not" + }, + "rootDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root" + }, + "serverlessFunctionRegion": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region to deploy Serverless Functions in this project" + }, + "serverlessFunctionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "oidcTokenConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to generate OpenID Connect JSON Web Tokens." + }, + "issuerMode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team", + "global" + ], + "properties": null, + "inner_properties": null, + "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`" + } + }, + "inner_properties": null, + "description": "OpenID Connect JSON Web Token generation configuration." + }, + "enableAffectedProjectsDeployments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies" + }, + "resourceConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fluid": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultRegions": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The regions to deploy Vercel Functions to for this project" + }, + "functionDefaultTimeout": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultMemoryType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "elasticConcurrencyEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "buildMachineType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isNSNBDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Specifies resource override configuration for the project" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v11/projects", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enablePreviewFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to preview toolbar on the project level" + }, + "enableProductionFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to production toolbar on the project level" + }, + "previewDeploymentsDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether preview deployments are disabled for this project." + }, + "buildCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The build command for this project. When `null` is used this value will be automatically detected" + }, + "commandForIgnoringBuildStep": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "devCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dev command for this project. When `null` is used this value will be automatically detected" + }, + "environmentVariables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the ENV variable" + }, + "target": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployment Target or Targets in which the ENV variable will be used" + }, + "gitBranch": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If defined, the git branch of the environment variable (must have target=preview)" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "system", + "secret", + "encrypted", + "plain", + "sensitive" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the ENV variable" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the ENV variable" + } + }, + "description": "Collection of ENV Variables the Project will use" + }, + "framework": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework that is being used for this project. When `null` is used no framework is selected" + }, + "gitRepository": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "repo": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the git repository. For example: \\\"vercel/next.js\\\"" + }, + "type": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Git Provider of the repository" + } + }, + "inner_properties": null, + "description": "The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed" + }, + "installCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The install command for this project. When `null` is used this value will be automatically detected" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the project" + }, + "skipGitConnectDuringLink": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`." + }, + "ssoProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "The Vercel Auth setting for the project (historically named \\\"SSO Protection\\\")" + }, + "outputDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The output directory of the project. When `null` is used this value will be automatically detected" + }, + "publicSource": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether the source code and logs of the deployments for this project should be public or not" + }, + "rootDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root" + }, + "serverlessFunctionRegion": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region to deploy Serverless Functions in this project" + }, + "serverlessFunctionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "oidcTokenConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to generate OpenID Connect JSON Web Tokens." + }, + "issuerMode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team", + "global" + ], + "properties": null, + "inner_properties": null, + "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`" + } + }, + "inner_properties": null, + "description": "OpenID Connect JSON Web Token generation configuration." + }, + "enableAffectedProjectsDeployments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies" + }, + "resourceConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fluid": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultRegions": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The regions to deploy Vercel Functions to for this project" + }, + "functionDefaultTimeout": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultMemoryType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "elasticConcurrencyEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "buildMachineType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isNSNBDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Specifies resource override configuration for the project" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"enablePreviewFeedback\": {\n \"description\": \"Opt-in to preview toolbar on the project level\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"enableProductionFeedback\": {\n \"description\": \"Opt-in to production toolbar on the project level\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"previewDeploymentsDisabled\": {\n \"description\": \"Specifies whether preview deployments are disabled for this project.\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"buildCommand\": {\n \"description\": \"The build command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"commandForIgnoringBuildStep\": {\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"devCommand\": {\n \"description\": \"The dev command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"environmentVariables\": {\n \"description\": \"Collection of ENV Variables the Project will use\",\n \"items\": {\n \"properties\": {\n \"key\": {\n \"description\": \"Name of the ENV variable\",\n \"type\": \"string\"\n },\n \"target\": {\n \"description\": \"Deployment Target or Targets in which the ENV variable will be used\",\n \"oneOf\": [\n {\n \"enum\": [\n \"production\",\n \"preview\",\n \"development\"\n ]\n },\n {\n \"items\": {\n \"enum\": [\n \"production\",\n \"preview\",\n \"development\"\n ]\n },\n \"type\": \"array\"\n }\n ]\n },\n \"gitBranch\": {\n \"description\": \"If defined, the git branch of the environment variable (must have target=preview)\",\n \"type\": \"string\",\n \"maxLength\": 250\n },\n \"type\": {\n \"description\": \"Type of the ENV variable\",\n \"enum\": [\n \"system\",\n \"secret\",\n \"encrypted\",\n \"plain\",\n \"sensitive\"\n ],\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value for the ENV variable\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\",\n \"target\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"framework\": {\n \"description\": \"The framework that is being used for this project. When `null` is used no framework is selected\",\n \"enum\": [\n null,\n \"blitzjs\",\n \"nextjs\",\n \"gatsby\",\n \"remix\",\n \"react-router\",\n \"astro\",\n \"hexo\",\n \"eleventy\",\n \"docusaurus-2\",\n \"docusaurus\",\n \"preact\",\n \"solidstart-1\",\n \"solidstart\",\n \"dojo\",\n \"ember\",\n \"vue\",\n \"scully\",\n \"ionic-angular\",\n \"angular\",\n \"polymer\",\n \"svelte\",\n \"sveltekit\",\n \"sveltekit-1\",\n \"ionic-react\",\n \"create-react-app\",\n \"gridsome\",\n \"umijs\",\n \"sapper\",\n \"saber\",\n \"stencil\",\n \"nuxtjs\",\n \"redwoodjs\",\n \"hugo\",\n \"jekyll\",\n \"brunch\",\n \"middleman\",\n \"zola\",\n \"hydrogen\",\n \"vite\",\n \"vitepress\",\n \"vuepress\",\n \"parcel\",\n \"fastapi\",\n \"flask\",\n \"fasthtml\",\n \"sanity-v3\",\n \"sanity\",\n \"storybook\",\n \"nitro\",\n \"hono\",\n \"express\",\n \"h3\",\n \"nestjs\",\n \"xmcp\"\n ]\n },\n \"gitRepository\": {\n \"description\": \"The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed\",\n \"properties\": {\n \"repo\": {\n \"description\": \"The name of the git repository. For example: \\\\\\\"vercel/next.js\\\\\\\"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The Git Provider of the repository\",\n \"enum\": [\n \"github\",\n \"github-limited\",\n \"gitlab\",\n \"bitbucket\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"repo\"\n ],\n \"type\": \"object\"\n },\n \"installCommand\": {\n \"description\": \"The install command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"name\": {\n \"description\": \"The desired name for the project\",\n \"example\": \"a-project-name\",\n \"type\": \"string\",\n \"maxLength\": 100\n },\n \"skipGitConnectDuringLink\": {\n \"description\": \"Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.\",\n \"type\": \"boolean\",\n \"deprecated\": true\n },\n \"ssoProtection\": {\n \"description\": \"The Vercel Auth setting for the project (historically named \\\\\\\"SSO Protection\\\\\\\")\",\n \"type\": \"object\",\n \"properties\": {\n \"deploymentType\": {\n \"type\": \"string\",\n \"enum\": [\n \"all\",\n \"preview\",\n \"prod_deployment_urls_and_all_previews\",\n \"all_except_custom_domains\"\n ]\n }\n },\n \"required\": [\n \"deploymentType\"\n ],\n \"nullable\": true\n },\n \"outputDirectory\": {\n \"description\": \"The output directory of the project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"publicSource\": {\n \"description\": \"Specifies whether the source code and logs of the deployments for this project should be public or not\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"rootDirectory\": {\n \"description\": \"The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"serverlessFunctionRegion\": {\n \"description\": \"The region to deploy Serverless Functions in this project\",\n \"maxLength\": 4,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"serverlessFunctionZeroConfigFailover\": {\n \"description\": \"Specifies whether Zero Config Failover is enabled for this project.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n }\n ]\n },\n \"oidcTokenConfig\": {\n \"description\": \"OpenID Connect JSON Web Token generation configuration.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether or not to generate OpenID Connect JSON Web Tokens.\",\n \"deprecated\": true,\n \"type\": \"boolean\",\n \"default\": true\n },\n \"issuerMode\": {\n \"description\": \"team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`\",\n \"type\": \"string\",\n \"enum\": [\n \"team\",\n \"global\"\n ],\n \"default\": \"team\"\n }\n }\n },\n \"enableAffectedProjectsDeployments\": {\n \"description\": \"Opt-in to skip deployments when there are no changes to the root directory and its dependencies\",\n \"type\": \"boolean\"\n },\n \"resourceConfig\": {\n \"type\": \"object\",\n \"description\": \"Specifies resource override configuration for the project\",\n \"properties\": {\n \"fluid\": {\n \"type\": \"boolean\"\n },\n \"functionDefaultRegions\": {\n \"description\": \"The regions to deploy Vercel Functions to for this project\",\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"maxLength\": 4\n }\n },\n \"functionDefaultTimeout\": {\n \"type\": \"number\",\n \"maximum\": 900,\n \"minimum\": 1\n },\n \"functionDefaultMemoryType\": {\n \"enum\": [\n \"standard_legacy\",\n \"standard\",\n \"performance\"\n ]\n },\n \"functionZeroConfigFailover\": {\n \"description\": \"Specifies whether Zero Config Failover is enabled for this project.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n }\n ]\n },\n \"elasticConcurrencyEnabled\": {\n \"type\": \"boolean\"\n },\n \"buildMachineType\": {\n \"enum\": [\n \"enhanced\",\n \"turbo\"\n ]\n },\n \"isNSNBDisabled\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateProjectEnvironmentVariables.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateProjectEnvironmentVariables.json new file mode 100644 index 00000000..643766e9 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateProjectEnvironmentVariables.json @@ -0,0 +1,238 @@ +{ + "name": "CreateProjectEnvironmentVariables", + "fully_qualified_name": "VercelApi.CreateProjectEnvironmentVariables@0.1.0", + "description": "Create or update environment variables for a Vercel project.\n\nThis tool creates or updates one or more environment variables for a specified Vercel project. The project can be identified by its `id` or `name`. The tool allows specifying the `key`, `value`, `type`, and `target` of the environment variables. If `upsert=true` is included, existing variables will be updated instead of creating new ones.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique identifier or name of the Vercel project to create or update environment variables for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "environment_variables", + "required": true, + "description": "A JSON object detailing the environment variables to create or update, including their `key`, `value`, `type`, and `target`.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "allow_override_existing_variable", + "required": false, + "description": "Allows updating the value of an existing environment variable if set to true.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allow override of environment variable if it already exists" + }, + "inferrable": true, + "http_endpoint_parameter_name": "upsert" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of, specified as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug for the project. Used to perform the request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createProjectEnv'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v10/projects/{idOrName}/env", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "upsert", + "tool_parameter_name": "allow_override_existing_variable", + "description": "Allow override of environment variable if it already exists", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allow override of environment variable if it already exists" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "environment_variables", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"required\": [\n \"key\",\n \"value\",\n \"type\"\n ],\n \"anyOf\": [\n {\n \"required\": [\n \"target\"\n ]\n },\n {\n \"required\": [\n \"customEnvironmentIds\"\n ]\n }\n ],\n \"properties\": {\n \"key\": {\n \"description\": \"The name of the environment variable\",\n \"type\": \"string\",\n \"example\": \"API_URL\"\n },\n \"value\": {\n \"description\": \"The value of the environment variable\",\n \"type\": \"string\",\n \"example\": \"https://api.vercel.com\"\n },\n \"type\": {\n \"description\": \"The type of environment variable\",\n \"type\": \"string\",\n \"enum\": [\n \"system\",\n \"secret\",\n \"encrypted\",\n \"plain\",\n \"sensitive\"\n ],\n \"example\": \"plain\"\n },\n \"target\": {\n \"description\": \"The target environment of the environment variable\",\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"production\",\n \"preview\",\n \"development\"\n ]\n },\n \"example\": [\n \"preview\"\n ]\n },\n \"gitBranch\": {\n \"description\": \"If defined, the git branch of the environment variable (must have target=preview)\",\n \"type\": \"string\",\n \"maxLength\": 250,\n \"example\": \"feature-1\",\n \"nullable\": true\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this environment variable is for\",\n \"example\": \"database connection string for production\",\n \"maxLength\": 500\n },\n \"customEnvironmentIds\": {\n \"type\": \"array\",\n \"description\": \"The custom environment IDs associated with the environment variable\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"env_1234567890\"\n }\n }\n }\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"key\",\n \"value\",\n \"type\"\n ],\n \"anyOf\": [\n {\n \"required\": [\n \"target\"\n ]\n },\n {\n \"required\": [\n \"customEnvironmentIds\"\n ]\n }\n ],\n \"properties\": {\n \"key\": {\n \"description\": \"The name of the environment variable\",\n \"type\": \"string\",\n \"example\": \"API_URL\"\n },\n \"value\": {\n \"description\": \"The value of the environment variable\",\n \"type\": \"string\",\n \"example\": \"https://api.vercel.com\"\n },\n \"type\": {\n \"description\": \"The type of environment variable\",\n \"type\": \"string\",\n \"enum\": [\n \"system\",\n \"secret\",\n \"encrypted\",\n \"plain\",\n \"sensitive\"\n ],\n \"example\": \"plain\"\n },\n \"target\": {\n \"description\": \"The target environment of the environment variable\",\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"production\",\n \"preview\",\n \"development\"\n ]\n },\n \"example\": [\n \"preview\"\n ]\n },\n \"gitBranch\": {\n \"description\": \"If defined, the git branch of the environment variable (must have target=preview)\",\n \"type\": \"string\",\n \"maxLength\": 250,\n \"example\": \"feature-1\",\n \"nullable\": true\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this environment variable is for\",\n \"example\": \"database connection string for production\",\n \"maxLength\": 500\n },\n \"customEnvironmentIds\": {\n \"type\": \"array\",\n \"description\": \"The custom environment IDs associated with the environment variable\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"env_1234567890\"\n }\n }\n }\n }\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelDeployment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelDeployment.json new file mode 100644 index 00000000..efc31a53 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelDeployment.json @@ -0,0 +1,918 @@ +{ + "name": "CreateVercelDeployment", + "fully_qualified_name": "VercelApi.CreateVercelDeployment@0.1.0", + "description": "Create a new deployment on Vercel.\n\nThis tool helps create a new deployment on Vercel, ideal for deploying projects that aren't directly linked to a git repository. Use it to initiate a deployment by providing necessary files either as references or inlined content. It also allows redeployment of previous deployments by specifying a deployment ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_request_body", + "required": true, + "description": "JSON object containing all deployment details including files, metadata, and settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customEnvironmentSlugOrId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy to a custom environment, which will override the default environment" + }, + "deploymentId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An deployment id for an existing deployment to redeploy" + }, + "files": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of objects with the files to be deployed" + }, + "gitMetadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "remoteUrl": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The git repository's remote origin url" + }, + "commitAuthorName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the author of the commit" + }, + "commitAuthorEmail": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the author of the commit" + }, + "commitMessage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The commit message" + }, + "commitRef": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The branch on which the commit was made" + }, + "commitSha": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The hash of the commit" + }, + "dirty": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not there have been modifications to the working tree since the latest commit" + }, + "ci": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "True if process.env.CI was set when deploying" + }, + "ciType": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of CI system used" + }, + "ciGitProviderUsername": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The username used for the Git Provider (e.g. GitHub) if their CI (e.g. GitHub Actions) was used, if available" + }, + "ciGitRepoVisibility": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The visibility of the Git repository if their CI (e.g. GitHub Actions) was used, if available" + } + }, + "inner_properties": null, + "description": "Populates initial git metadata for different git providers." + }, + "gitSource": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the Git Repository source to be deployed. This property can not be used in combination with `files`." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An object containing the deployment's metadata. Multiple key-value pairs can be attached to a deployment" + }, + "monorepoManager": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monorepo manager that is being used for this deployment. When `null` is used no monorepo manager is selected" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A string with the project name used in the deployment URL" + }, + "project": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The target project identifier in which the deployment will be created. When defined, this parameter overrides name" + }, + "projectSettings": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "buildCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The build command for this project. When `null` is used this value will be automatically detected" + }, + "commandForIgnoringBuildStep": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "devCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dev command for this project. When `null` is used this value will be automatically detected" + }, + "framework": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "None", + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp" + ], + "properties": null, + "inner_properties": null, + "description": "The framework that is being used for this project. When `null` is used no framework is selected" + }, + "installCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The install command for this project. When `null` is used this value will be automatically detected" + }, + "nodeVersion": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "22.x", + "20.x", + "18.x", + "16.x", + "14.x", + "12.x", + "10.x", + "8.10.x" + ], + "properties": null, + "inner_properties": null, + "description": "Override the Node.js version that should be used for this deployment" + }, + "outputDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The output directory of the project. When `null` is used this value will be automatically detected" + }, + "rootDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root" + }, + "serverlessFunctionRegion": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region to deploy Serverless Functions in this project" + }, + "skipGitConnectDuringLink": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`." + }, + "sourceFilesOutsideRootDirectory": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if there are source files outside of the root directory, typically used for monorepos" + } + }, + "inner_properties": null, + "description": "Project settings that will be applied to the deployment. It is required for the first deployment of a project and will be saved for any following deployments" + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Either not defined, `staging`, `production`, or a custom environment identifier. If `staging`, a staging alias in the format `-.vercel.app` will be assigned. If `production`, any aliases defined in `alias` will be assigned. If omitted, the target will be `preview`." + }, + "withLatestCommit": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When `true` and `deploymentId` is passed in, the sha from the previous deployment's `gitSource` is removed forcing the latest commit to be used." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "force_new_deployment", + "required": false, + "description": "Set to 'true' to force a new deployment even if a similar one exists.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Forces a new deployment even if there is a previous similar deployment" + }, + "inferrable": true, + "http_endpoint_parameter_name": "forceNew" + }, + { + "name": "skip_framework_detection_confirmation", + "required": false, + "description": "Set to 'true' to skip framework detection and avoid confirmation request failures.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allows to skip framework detection so the API would not fail to ask for confirmation" + }, + "inferrable": true, + "http_endpoint_parameter_name": "skipAutoDetectionConfirmation" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of for creating a deployment on Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team to perform the deployment on behalf of. This is essential for specifying the target team for the deployment request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createDeployment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v13/deployments", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "forceNew", + "tool_parameter_name": "force_new_deployment", + "description": "Forces a new deployment even if there is a previous similar deployment", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Forces a new deployment even if there is a previous similar deployment" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "skipAutoDetectionConfirmation", + "tool_parameter_name": "skip_framework_detection_confirmation", + "description": "Allows to skip framework detection so the API would not fail to ask for confirmation", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allows to skip framework detection so the API would not fail to ask for confirmation" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "deployment_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customEnvironmentSlugOrId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy to a custom environment, which will override the default environment" + }, + "deploymentId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An deployment id for an existing deployment to redeploy" + }, + "files": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of objects with the files to be deployed" + }, + "gitMetadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "remoteUrl": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The git repository's remote origin url" + }, + "commitAuthorName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the author of the commit" + }, + "commitAuthorEmail": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the author of the commit" + }, + "commitMessage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The commit message" + }, + "commitRef": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The branch on which the commit was made" + }, + "commitSha": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The hash of the commit" + }, + "dirty": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not there have been modifications to the working tree since the latest commit" + }, + "ci": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "True if process.env.CI was set when deploying" + }, + "ciType": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of CI system used" + }, + "ciGitProviderUsername": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The username used for the Git Provider (e.g. GitHub) if their CI (e.g. GitHub Actions) was used, if available" + }, + "ciGitRepoVisibility": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The visibility of the Git repository if their CI (e.g. GitHub Actions) was used, if available" + } + }, + "inner_properties": null, + "description": "Populates initial git metadata for different git providers." + }, + "gitSource": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the Git Repository source to be deployed. This property can not be used in combination with `files`." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An object containing the deployment's metadata. Multiple key-value pairs can be attached to a deployment" + }, + "monorepoManager": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monorepo manager that is being used for this deployment. When `null` is used no monorepo manager is selected" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A string with the project name used in the deployment URL" + }, + "project": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The target project identifier in which the deployment will be created. When defined, this parameter overrides name" + }, + "projectSettings": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "buildCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The build command for this project. When `null` is used this value will be automatically detected" + }, + "commandForIgnoringBuildStep": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "devCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dev command for this project. When `null` is used this value will be automatically detected" + }, + "framework": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "None", + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp" + ], + "properties": null, + "inner_properties": null, + "description": "The framework that is being used for this project. When `null` is used no framework is selected" + }, + "installCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The install command for this project. When `null` is used this value will be automatically detected" + }, + "nodeVersion": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "22.x", + "20.x", + "18.x", + "16.x", + "14.x", + "12.x", + "10.x", + "8.10.x" + ], + "properties": null, + "inner_properties": null, + "description": "Override the Node.js version that should be used for this deployment" + }, + "outputDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The output directory of the project. When `null` is used this value will be automatically detected" + }, + "rootDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root" + }, + "serverlessFunctionRegion": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region to deploy Serverless Functions in this project" + }, + "skipGitConnectDuringLink": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`." + }, + "sourceFilesOutsideRootDirectory": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if there are source files outside of the root directory, typically used for monorepos" + } + }, + "inner_properties": null, + "description": "Project settings that will be applied to the deployment. It is required for the first deployment of a project and will be saved for any following deployments" + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Either not defined, `staging`, `production`, or a custom environment identifier. If `staging`, a staging alias in the format `-.vercel.app` will be assigned. If `production`, any aliases defined in `alias` will be assigned. If omitted, the target will be `preview`." + }, + "withLatestCommit": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When `true` and `deploymentId` is passed in, the sha from the previous deployment's `gitSource` is removed forcing the latest commit to be used." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"customEnvironmentSlugOrId\": {\n \"description\": \"Deploy to a custom environment, which will override the default environment\",\n \"type\": \"string\"\n },\n \"deploymentId\": {\n \"description\": \"An deployment id for an existing deployment to redeploy\",\n \"type\": \"string\",\n \"example\": \"dpl_2qn7PZrx89yxY34vEZPD31Y9XVj6\"\n },\n \"files\": {\n \"description\": \"A list of objects with the files to be deployed\",\n \"items\": {\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"Used in the case you want to inline a file inside the request\",\n \"properties\": {\n \"data\": {\n \"description\": \"The file content, it could be either a `base64` (useful for images, etc.) of the files or the plain content for source code\",\n \"type\": \"string\"\n },\n \"encoding\": {\n \"description\": \"The file content encoding, it could be either a base64 (useful for images, etc.) of the files or the plain text for source code.\",\n \"enum\": [\n \"base64\",\n \"utf-8\"\n ]\n },\n \"file\": {\n \"description\": \"The file name including the whole path\",\n \"example\": \"folder/file.js\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"file\",\n \"data\"\n ],\n \"title\": \"InlinedFile\",\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Used in the case you want to reference a file that was already uploaded\",\n \"properties\": {\n \"file\": {\n \"description\": \"The file path relative to the project root\",\n \"example\": \"folder/file.js\",\n \"type\": \"string\"\n },\n \"sha\": {\n \"description\": \"The file contents hashed with SHA1, used to check the integrity\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"The file size in bytes\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"file\"\n ],\n \"title\": \"UploadedFile\",\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"gitMetadata\": {\n \"description\": \"Populates initial git metadata for different git providers.\",\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"properties\": {\n \"remoteUrl\": {\n \"type\": \"string\",\n \"description\": \"The git repository's remote origin url\",\n \"example\": \"https://github.com/vercel/next.js\"\n },\n \"commitAuthorName\": {\n \"type\": \"string\",\n \"description\": \"The name of the author of the commit\",\n \"example\": \"kyliau\"\n },\n \"commitAuthorEmail\": {\n \"type\": \"string\",\n \"description\": \"The email of the author of the commit\",\n \"example\": \"kyliau@example.com\"\n },\n \"commitMessage\": {\n \"type\": \"string\",\n \"description\": \"The commit message\",\n \"example\": \"add method to measure Interaction to Next Paint (INP) (#36490)\"\n },\n \"commitRef\": {\n \"type\": \"string\",\n \"description\": \"The branch on which the commit was made\",\n \"example\": \"main\"\n },\n \"commitSha\": {\n \"type\": \"string\",\n \"description\": \"The hash of the commit\",\n \"example\": \"dc36199b2234c6586ebe05ec94078a895c707e29\"\n },\n \"dirty\": {\n \"type\": \"boolean\",\n \"description\": \"Whether or not there have been modifications to the working tree since the latest commit\",\n \"example\": true\n },\n \"ci\": {\n \"type\": \"boolean\",\n \"description\": \"True if process.env.CI was set when deploying\",\n \"example\": true\n },\n \"ciType\": {\n \"type\": \"string\",\n \"description\": \"The type of CI system used\",\n \"example\": \"github-actions\"\n },\n \"ciGitProviderUsername\": {\n \"type\": \"string\",\n \"description\": \"The username used for the Git Provider (e.g. GitHub) if their CI (e.g. GitHub Actions) was used, if available\",\n \"example\": \"rauchg\"\n },\n \"ciGitRepoVisibility\": {\n \"type\": \"string\",\n \"description\": \"The visibility of the Git repository if their CI (e.g. GitHub Actions) was used, if available\",\n \"example\": \"private\"\n }\n }\n },\n \"gitSource\": {\n \"description\": \"Defines the Git Repository source to be deployed. This property can not be used in combination with `files`.\",\n \"anyOf\": [\n {\n \"properties\": {\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"repoId\": {\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"example\": 123456789\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"type\": {\n \"enum\": [\n \"github\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"repoId\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"org\": {\n \"type\": \"string\",\n \"example\": \"vercel\"\n },\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"repo\": {\n \"type\": \"string\",\n \"example\": \"next.js\"\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"type\": {\n \"enum\": [\n \"github\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"org\",\n \"repo\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"repoId\": {\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"example\": 123456789\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"type\": {\n \"enum\": [\n \"github-limited\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"repoId\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"org\": {\n \"type\": \"string\",\n \"example\": \"vercel\"\n },\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"repo\": {\n \"type\": \"string\",\n \"example\": \"next.js\"\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"type\": {\n \"enum\": [\n \"github-limited\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"org\",\n \"repo\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"projectId\": {\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"example\": 987654321\n },\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"type\": {\n \"enum\": [\n \"gitlab\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"projectId\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"repoUuid\": {\n \"type\": \"string\",\n \"example\": \"123e4567-e89b-12d3-a456-426614174000\"\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"type\": {\n \"enum\": [\n \"bitbucket\"\n ],\n \"type\": \"string\"\n },\n \"workspaceUuid\": {\n \"type\": \"string\",\n \"example\": \"987e6543-e21b-12d3-a456-426614174000\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"repoUuid\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"owner\": {\n \"type\": \"string\",\n \"example\": \"bitbucket_user\"\n },\n \"ref\": {\n \"type\": \"string\",\n \"example\": \"main\"\n },\n \"sha\": {\n \"type\": \"string\",\n \"example\": \"a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\"\n },\n \"slug\": {\n \"type\": \"string\",\n \"example\": \"my-awesome-project\"\n },\n \"type\": {\n \"enum\": [\n \"bitbucket\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"ref\",\n \"owner\",\n \"slug\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"meta\": {\n \"additionalProperties\": {\n \"maxLength\": 65536,\n \"type\": \"string\"\n },\n \"description\": \"An object containing the deployment's metadata. Multiple key-value pairs can be attached to a deployment\",\n \"example\": {\n \"foo\": \"bar\"\n },\n \"maxProperties\": 100,\n \"type\": \"object\"\n },\n \"monorepoManager\": {\n \"description\": \"The monorepo manager that is being used for this deployment. When `null` is used no monorepo manager is selected\",\n \"type\": \"string\",\n \"nullable\": true\n },\n \"name\": {\n \"description\": \"A string with the project name used in the deployment URL\",\n \"example\": \"my-instant-deployment\",\n \"type\": \"string\"\n },\n \"project\": {\n \"description\": \"The target project identifier in which the deployment will be created. When defined, this parameter overrides name\",\n \"example\": \"my-deployment-project\",\n \"type\": \"string\"\n },\n \"projectSettings\": {\n \"additionalProperties\": false,\n \"description\": \"Project settings that will be applied to the deployment. It is required for the first deployment of a project and will be saved for any following deployments\",\n \"properties\": {\n \"buildCommand\": {\n \"description\": \"The build command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"next build\"\n },\n \"commandForIgnoringBuildStep\": {\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"devCommand\": {\n \"description\": \"The dev command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"framework\": {\n \"description\": \"The framework that is being used for this project. When `null` is used no framework is selected\",\n \"type\": \"string\",\n \"enum\": [\n null,\n \"blitzjs\",\n \"nextjs\",\n \"gatsby\",\n \"remix\",\n \"react-router\",\n \"astro\",\n \"hexo\",\n \"eleventy\",\n \"docusaurus-2\",\n \"docusaurus\",\n \"preact\",\n \"solidstart-1\",\n \"solidstart\",\n \"dojo\",\n \"ember\",\n \"vue\",\n \"scully\",\n \"ionic-angular\",\n \"angular\",\n \"polymer\",\n \"svelte\",\n \"sveltekit\",\n \"sveltekit-1\",\n \"ionic-react\",\n \"create-react-app\",\n \"gridsome\",\n \"umijs\",\n \"sapper\",\n \"saber\",\n \"stencil\",\n \"nuxtjs\",\n \"redwoodjs\",\n \"hugo\",\n \"jekyll\",\n \"brunch\",\n \"middleman\",\n \"zola\",\n \"hydrogen\",\n \"vite\",\n \"vitepress\",\n \"vuepress\",\n \"parcel\",\n \"fastapi\",\n \"flask\",\n \"fasthtml\",\n \"sanity-v3\",\n \"sanity\",\n \"storybook\",\n \"nitro\",\n \"hono\",\n \"express\",\n \"h3\",\n \"nestjs\",\n \"xmcp\"\n ],\n \"nullable\": true\n },\n \"installCommand\": {\n \"description\": \"The install command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"pnpm install\"\n },\n \"nodeVersion\": {\n \"description\": \"Override the Node.js version that should be used for this deployment\",\n \"enum\": [\n \"22.x\",\n \"20.x\",\n \"18.x\",\n \"16.x\",\n \"14.x\",\n \"12.x\",\n \"10.x\",\n \"8.10.x\"\n ],\n \"type\": \"string\"\n },\n \"outputDirectory\": {\n \"description\": \"The output directory of the project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"rootDirectory\": {\n \"description\": \"The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"serverlessFunctionRegion\": {\n \"description\": \"The region to deploy Serverless Functions in this project\",\n \"maxLength\": 4,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"skipGitConnectDuringLink\": {\n \"description\": \"Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.\",\n \"type\": \"boolean\",\n \"deprecated\": true\n },\n \"sourceFilesOutsideRootDirectory\": {\n \"description\": \"Indicates if there are source files outside of the root directory, typically used for monorepos\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Either not defined, `staging`, `production`, or a custom environment identifier. If `staging`, a staging alias in the format `-.vercel.app` will be assigned. If `production`, any aliases defined in `alias` will be assigned. If omitted, the target will be `preview`.\",\n \"type\": \"string\",\n \"example\": \"production\"\n },\n \"withLatestCommit\": {\n \"description\": \"When `true` and `deploymentId` is passed in, the sha from the previous deployment's `gitSource` is removed forcing the latest commit to be used.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelTeam.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelTeam.json new file mode 100644 index 00000000..1f03d794 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelTeam.json @@ -0,0 +1,370 @@ +{ + "name": "CreateVercelTeam", + "fully_qualified_name": "VercelApi.CreateVercelTeam@0.1.0", + "description": "Create a new team in your Vercel account.\n\nUse this tool to create a new team under your Vercel account by specifying a team slug, and optionally a team name. This is useful for organizing projects and members under a unified group.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_slug", + "required": true, + "description": "The desired slug for the new team, used as a team identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired slug for the Team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "team_name", + "required": false, + "description": "The desired name for the Team. If not provided, it will be generated from the slug.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the Team. It will be generated from the provided slug if nothing is provided" + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "session_referrer", + "required": false, + "description": "Referrer URL for the session initiating the team creation process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Session referrer" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.sessionReferrer" + }, + { + "name": "session_landing_page", + "required": false, + "description": "The URL of the landing page where the session started. This is used for session attribution on Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Session landing page" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.landingPage" + }, + { + "name": "signup_referrer_page", + "required": false, + "description": "The referrer URL of the page before the signup page, used for tracking attribution.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Referrer to the signup page" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.pageBeforeConversionPage" + }, + { + "name": "utm_source", + "required": false, + "description": "The UTM source identifier, indicating where the traffic originates from, such as a search engine or newsletter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM source" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.utm.utmSource" + }, + { + "name": "utm_medium", + "required": false, + "description": "The medium through which the user arrived, such as email, social, or cpc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM medium" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.utm.utmMedium" + }, + { + "name": "utm_campaign_name", + "required": false, + "description": "Specifies the UTM campaign name for tracking purposes when creating a team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM campaign" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.utm.utmCampaign" + }, + { + "name": "utm_term", + "required": false, + "description": "The UTM term used for tracking specific keywords in marketing campaigns.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM term" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attribution.utm.utmTerm" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The desired slug for the Team", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired slug for the Team" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "team_name", + "description": "The desired name for the Team. It will be generated from the provided slug if nothing is provided", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the Team. It will be generated from the provided slug if nothing is provided" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.sessionReferrer", + "tool_parameter_name": "session_referrer", + "description": "Session referrer", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Session referrer" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.landingPage", + "tool_parameter_name": "session_landing_page", + "description": "Session landing page", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Session landing page" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.pageBeforeConversionPage", + "tool_parameter_name": "signup_referrer_page", + "description": "Referrer to the signup page", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Referrer to the signup page" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.utm.utmSource", + "tool_parameter_name": "utm_source", + "description": "UTM source", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM source" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.utm.utmMedium", + "tool_parameter_name": "utm_medium", + "description": "UTM medium", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM medium" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.utm.utmCampaign", + "tool_parameter_name": "utm_campaign_name", + "description": "UTM campaign", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM campaign" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attribution.utm.utmTerm", + "tool_parameter_name": "utm_term", + "description": "UTM term", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UTM term" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"slug\"\n ],\n \"properties\": {\n \"slug\": {\n \"example\": \"a-random-team\",\n \"description\": \"The desired slug for the Team\",\n \"type\": \"string\",\n \"maxLength\": 48\n },\n \"name\": {\n \"example\": \"A Random Team\",\n \"description\": \"The desired name for the Team. It will be generated from the provided slug if nothing is provided\",\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"attribution\": {\n \"type\": \"object\",\n \"description\": \"Attribution information for the session or current page\",\n \"properties\": {\n \"sessionReferrer\": {\n \"type\": \"string\",\n \"description\": \"Session referrer\"\n },\n \"landingPage\": {\n \"type\": \"string\",\n \"description\": \"Session landing page\"\n },\n \"pageBeforeConversionPage\": {\n \"type\": \"string\",\n \"description\": \"Referrer to the signup page\"\n },\n \"utm\": {\n \"type\": \"object\",\n \"properties\": {\n \"utmSource\": {\n \"type\": \"string\",\n \"description\": \"UTM source\"\n },\n \"utmMedium\": {\n \"type\": \"string\",\n \"description\": \"UTM medium\"\n },\n \"utmCampaign\": {\n \"type\": \"string\",\n \"description\": \"UTM campaign\"\n },\n \"utmTerm\": {\n \"type\": \"string\",\n \"description\": \"UTM term\"\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelWebhook.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelWebhook.json new file mode 100644 index 00000000..36c94544 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/CreateVercelWebhook.json @@ -0,0 +1,238 @@ +{ + "name": "CreateVercelWebhook", + "fully_qualified_name": "VercelApi.CreateVercelWebhook@0.1.0", + "description": "Create a new webhook in Vercel projects.\n\nThis tool is used to create a new webhook in Vercel. It should be called when you need to set up automated notifications or integrations by creating a webhook within your Vercel projects.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_url", + "required": true, + "description": "The target URL where the webhook will send POST requests. It should be a valid and publicly accessible URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "url" + }, + { + "name": "events_list", + "required": true, + "description": "A list of event types that trigger the webhook. Must be an array of strings, each representing an event.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "events" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the Vercel team to target the request for. It identifies the team on whose behalf the webhook is created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "project_ids", + "required": false, + "description": "List of project IDs for which the webhook is being created. Each ID should be a string.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectIds" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createWebhook'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/webhooks", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "url", + "tool_parameter_name": "webhook_url", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "events", + "tool_parameter_name": "events_list", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectIds", + "tool_parameter_name": "project_ids", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"url\",\n \"events\"\n ],\n \"properties\": {\n \"url\": {\n \"format\": \"uri\",\n \"pattern\": \"^https?://\",\n \"type\": \"string\"\n },\n \"events\": {\n \"minItems\": 1,\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"enum\": [\n \"budget.reached\",\n \"budget.reset\",\n \"domain.created\",\n \"domain.dns.records.changed\",\n \"domain.transfer-in.started\",\n \"domain.transfer-in.completed\",\n \"domain.transfer-in.failed\",\n \"domain.certificate.add\",\n \"domain.certificate.add.failed\",\n \"domain.certificate.renew\",\n \"domain.certificate.renew.failed\",\n \"domain.certificate.deleted\",\n \"domain.renewal\",\n \"domain.renewal.failed\",\n \"domain.auto-renew.changed\",\n \"deployment.created\",\n \"deployment.cleanup\",\n \"deployment.error\",\n \"deployment.canceled\",\n \"deployment.succeeded\",\n \"deployment.ready\",\n \"deployment.check-rerequested\",\n \"deployment.promoted\",\n \"deployment.integration.action.start\",\n \"deployment.integration.action.cancel\",\n \"deployment.integration.action.cleanup\",\n \"deployment.checkrun.start\",\n \"deployment.checkrun.cancel\",\n \"edge-config.created\",\n \"edge-config.deleted\",\n \"edge-config.items.updated\",\n \"firewall.attack\",\n \"integration-configuration.permission-upgraded\",\n \"integration-configuration.removed\",\n \"integration-configuration.scope-change-confirmed\",\n \"integration-resource.project-connected\",\n \"integration-resource.project-disconnected\",\n \"project.created\",\n \"project.removed\",\n \"project.domain.created\",\n \"project.domain.updated\",\n \"project.domain.deleted\",\n \"project.domain.verified\",\n \"project.domain.unverified\",\n \"project.domain.moved\",\n \"project.rolling-release.started\",\n \"project.rolling-release.aborted\",\n \"project.rolling-release.completed\",\n \"project.rolling-release.approved\",\n \"deployment.checks.failed\",\n \"deployment.checks.succeeded\",\n \"deployment-checks-completed\",\n \"deployment-ready\",\n \"deployment-prepared\",\n \"deployment-error\",\n \"deployment-check-rerequested\",\n \"deployment-canceled\",\n \"project-created\",\n \"project-removed\",\n \"domain-created\",\n \"deployment\",\n \"integration-configuration-permission-updated\",\n \"integration-configuration-removed\",\n \"integration-configuration-scope-change-confirmed\",\n \"marketplace.member.changed\",\n \"marketplace.invoice.created\",\n \"marketplace.invoice.paid\",\n \"marketplace.invoice.notpaid\",\n \"marketplace.invoice.refunded\",\n \"observability.anomaly\",\n \"observability.anomaly-error\",\n \"observability.anomaly-botId\",\n \"test-webhook\"\n ],\n \"x-speakeasy-enums\": {\n \"budget.reached\": \"BudgetReached\",\n \"budget.reset\": \"BudgetReset\",\n \"domain.created\": \"DomainCreated\",\n \"domain.dns.records.changed\": \"DomainDnsRecordsChanged\",\n \"domain.transfer-in.started\": \"DomainTransferInStarted\",\n \"domain.transfer-in.completed\": \"DomainTransferInCompleted\",\n \"domain.transfer-in.failed\": \"DomainTransferInFailed\",\n \"domain.certificate.add\": \"DomainCertificateAdd\",\n \"domain.certificate.add.failed\": \"DomainCertificateAddFailed\",\n \"domain.certificate.renew\": \"DomainCertificateRenew\",\n \"domain.certificate.renew.failed\": \"DomainCertificateRenewFailed\",\n \"domain.certificate.deleted\": \"DomainCertificateDeleted\",\n \"domain.renewal\": \"DomainRenewal\",\n \"domain.renewal.failed\": \"DomainRenewalFailed\",\n \"domain.auto-renew.changed\": \"DomainAutoRenewChanged\",\n \"deployment.created\": \"DeploymentCreated\",\n \"deployment.cleanup\": \"DeploymentCleanup\",\n \"deployment.error\": \"DeploymentError\",\n \"deployment.canceled\": \"DeploymentCanceled\",\n \"deployment.succeeded\": \"DeploymentSucceeded\",\n \"deployment.ready\": \"DeploymentReady\",\n \"deployment.check-rerequested\": \"DeploymentCheckRerequested\",\n \"deployment.promoted\": \"DeploymentPromoted\",\n \"deployment.integration.action.start\": \"DeploymentIntegrationActionStart\",\n \"deployment.integration.action.cancel\": \"DeploymentIntegrationActionCancel\",\n \"deployment.integration.action.cleanup\": \"DeploymentIntegrationActionCleanup\",\n \"deployment.checkrun.start\": \"DeploymentCheckrunStart\",\n \"deployment.checkrun.cancel\": \"DeploymentCheckrunCancel\",\n \"edge-config.created\": \"EdgeConfigCreated\",\n \"edge-config.deleted\": \"EdgeConfigDeleted\",\n \"edge-config.items.updated\": \"EdgeConfigItemsUpdated\",\n \"firewall.attack\": \"FirewallAttack\",\n \"integration-configuration.permission-upgraded\": \"IntegrationConfigurationPermissionUpgraded\",\n \"integration-configuration.removed\": \"IntegrationConfigurationRemoved\",\n \"integration-configuration.scope-change-confirmed\": \"IntegrationConfigurationScopeChangeConfirmed\",\n \"integration-resource.project-connected\": \"IntegrationResourceProjectConnected\",\n \"integration-resource.project-disconnected\": \"IntegrationResourceProjectDisconnected\",\n \"project.created\": \"ProjectCreated\",\n \"project.removed\": \"ProjectRemoved\",\n \"project.domain.created\": \"ProjectDomainCreated\",\n \"project.domain.updated\": \"ProjectDomainUpdated\",\n \"project.domain.deleted\": \"ProjectDomainDeleted\",\n \"project.domain.verified\": \"ProjectDomainVerified\",\n \"project.domain.unverified\": \"ProjectDomainUnverified\",\n \"project.domain.moved\": \"ProjectDomainMoved\",\n \"project.rolling-release.started\": \"ProjectRollingReleaseStarted\",\n \"project.rolling-release.aborted\": \"ProjectRollingReleaseAborted\",\n \"project.rolling-release.completed\": \"ProjectRollingReleaseCompleted\",\n \"project.rolling-release.approved\": \"ProjectRollingReleaseApproved\",\n \"deployment.checks.failed\": \"DeploymentChecksFailed\",\n \"deployment.checks.succeeded\": \"DeploymentChecksSucceeded\",\n \"deployment-checks-completed\": \"DeploymentChecksCompleted\",\n \"deployment-ready\": \"DeploymentReadyHyphen\",\n \"deployment-prepared\": \"DeploymentPreparedHyphen\",\n \"deployment-error\": \"DeploymentErrorHyphen\",\n \"deployment-check-rerequested\": \"DeploymentCheckRerequestedHyphen\",\n \"deployment-canceled\": \"DeploymentCanceledHyphen\",\n \"project-created\": \"ProjectCreatedHyphen\",\n \"project-removed\": \"ProjectRemovedHyphen\",\n \"domain-created\": \"DomainCreatedHyphen\",\n \"deployment\": \"Deployment\",\n \"integration-configuration-permission-updated\": \"IntegrationConfigurationPermissionUpdatedHyphen\",\n \"integration-configuration-removed\": \"IntegrationConfigurationRemovedHyphen\",\n \"integration-configuration-scope-change-confirmed\": \"IntegrationConfigurationScopeChangeConfirmedHyphen\",\n \"marketplace.invoice.created\": \"MarketplaceInvoiceCreated\",\n \"marketplace.invoice.paid\": \"MarketplaceInvoicePaid\",\n \"marketplace.invoice.notpaid\": \"MarketplaceInvoiceNotpaid\",\n \"marketplace.invoice.refunded\": \"MarketplaceInvoiceRefunded\",\n \"observability.anomaly\": \"ObservabilityAnomaly\",\n \"observability.anomaly-error\": \"ObservabilityAnomalyError\",\n \"test-webhook\": \"TestWebhook\"\n }\n }\n },\n \"projectIds\": {\n \"minItems\": 1,\n \"maxItems\": 50,\n \"type\": \"array\",\n \"items\": {\n \"pattern\": \"^[a-zA-z0-9_]+$\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAccessGroup.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAccessGroup.json new file mode 100644 index 00000000..f8bccdd6 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAccessGroup.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteAccessGroup", + "fully_qualified_name": "VercelApi.DeleteAccessGroup@0.1.0", + "description": "Deletes an access group by ID or name.\n\nUse this tool to delete an access group on Vercel by specifying the group's ID or name. It is useful for managing and updating your access control configurations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "group_id_or_name", + "required": true, + "description": "The ID or name of the access group to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug for the team on whose behalf the request will be made. This identifies the team uniquely.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteAccessGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{idOrName}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAccessGroupProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAccessGroupProject.json new file mode 100644 index 00000000..52d14b51 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAccessGroupProject.json @@ -0,0 +1,205 @@ +{ + "name": "DeleteAccessGroupProject", + "fully_qualified_name": "VercelApi.DeleteAccessGroupProject@0.1.0", + "description": "Delete a specified access group project on Vercel.\n\nUse this tool to delete a specific access group project on Vercel by providing the access group ID or name and project ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "Enter the access group ID or name to identify the specific group for project deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accessGroupIdOrName" + }, + { + "name": "project_id", + "required": true, + "description": "The ID of the project you want to delete from the access group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The ID of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the deletion on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteAccessGroupProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accessGroupIdOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAliasById.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAliasById.json new file mode 100644 index 00000000..4d437077 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteAliasById.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteAliasById", + "fully_qualified_name": "VercelApi.DeleteAliasById@0.1.0", + "description": "Delete a specific alias by its ID.\n\nUse this tool to delete an alias from Vercel using its unique ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "alias_id_to_remove", + "required": true, + "description": "The unique ID or alias of the item to be removed from Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or alias that will be removed" + }, + "inferrable": true, + "http_endpoint_parameter_name": "aliasId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to execute the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug of the team for which the alias will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteAlias'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/aliases/{aliasId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "aliasId", + "tool_parameter_name": "alias_id_to_remove", + "description": "The ID or alias that will be removed", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or alias that will be removed" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteCacheByTags.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteCacheByTags.json new file mode 100644 index 00000000..d96ef875 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteCacheByTags.json @@ -0,0 +1,261 @@ +{ + "name": "DeleteCacheByTags", + "fully_qualified_name": "VercelApi.DeleteCacheByTags@0.1.0", + "description": "Marks cache tags as deleted to revalidate associated entries.\n\nUse this tool to delete cache entries marked by specific tags, causing associated entries to be revalidated. This should be employed cautiously due to potential cache stampede risks. It's useful when the origin returns status codes like 404 or 410.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The ID or name of the project associated with the cache tags to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectIdOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the cache deletion request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "Specify the team slug to perform the cache deletion on behalf of a team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "cache_deletion_request", + "required": false, + "description": "A JSON object containing 'tags' to delete, 'revalidationDeadlineSeconds' for cache revalidation timing, and a 'target' environment ('production' or 'preview').", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "revalidationDeadlineSeconds": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "production", + "preview" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'dangerouslyDeleteByTags'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-cache/dangerously-delete-by-tags", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectIdOrName", + "tool_parameter_name": "project_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "cache_deletion_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "revalidationDeadlineSeconds": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "production", + "preview" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"required\": [\n \"tags\"\n ],\n \"properties\": {\n \"revalidationDeadlineSeconds\": {\n \"minimum\": 0,\n \"type\": \"number\"\n },\n \"tags\": {\n \"oneOf\": [\n {\n \"items\": {\n \"maxLength\": 256,\n \"type\": \"string\"\n },\n \"maxItems\": 16,\n \"minItems\": 1,\n \"type\": \"array\"\n },\n {\n \"maxLength\": 8196,\n \"type\": \"string\"\n }\n ]\n },\n \"target\": {\n \"enum\": [\n \"production\",\n \"preview\"\n ],\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteDeployment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteDeployment.json new file mode 100644 index 00000000..3723ba6a --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteDeployment.json @@ -0,0 +1,205 @@ +{ + "name": "DeleteDeployment", + "fully_qualified_name": "VercelApi.DeleteDeployment@0.1.0", + "description": "Delete a Vercel deployment using its ID or URL.\n\nUse this tool to delete a Vercel deployment by providing the deployment's `id` or `url`. Useful for managing and cleaning up deployments.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The ID of the deployment to be deleted. Use this if not providing a URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the deployment to be deleted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "deployment_url", + "required": false, + "description": "A Deployment or Alias URL for identifying the deployment to delete. The ID will be ignored if this is provided.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Deployment or Alias URL. In case it is passed, the ID will be ignored" + }, + "inferrable": true, + "http_endpoint_parameter_name": "url" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is executed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the deletion on behalf of. Specify which team's deployment to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteDeployment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v13/deployments/{id}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "url", + "tool_parameter_name": "deployment_url", + "description": "A Deployment or Alias URL. In case it is passed, the ID will be ignored", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Deployment or Alias URL. In case it is passed, the ID will be ignored" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "deployment_id", + "description": "The ID of the deployment to be deleted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the deployment to be deleted" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfig.json new file mode 100644 index 00000000..f85614f5 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfig.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteEdgeConfig", + "fully_qualified_name": "VercelApi.DeleteEdgeConfig@0.1.0", + "description": "Delete a Vercel Edge Config by ID.\n\nUse this tool to delete a specific Edge Config in Vercel by providing its unique ID. This will remove the configuration from the system.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The unique identifier of the Edge Config to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteEdgeConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfigSchema.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfigSchema.json new file mode 100644 index 00000000..a168a8e3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfigSchema.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteEdgeConfigSchema", + "fully_qualified_name": "VercelApi.DeleteEdgeConfigSchema@0.1.0", + "description": "Deletes an existing Edge Config schema.\n\nUse this tool to delete the schema of an existing Edge Config in a Vercel project. This can be useful for managing and updating Edge Configurations efficiently.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The unique identifier for the specific Edge Config schema to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is performed. It uniquely identifies the team within Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteEdgeConfigSchema'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/schema", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfigTokens.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfigTokens.json new file mode 100644 index 00000000..71407475 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteEdgeConfigTokens.json @@ -0,0 +1,205 @@ +{ + "name": "DeleteEdgeConfigTokens", + "fully_qualified_name": "VercelApi.DeleteEdgeConfigTokens@0.1.0", + "description": "Delete tokens from an existing Edge Config.\n\nUse this tool to delete one or more tokens associated with a specific Edge Config in Vercel. It is useful for managing and securing access by removing outdated or compromised tokens.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The unique identifier for the Edge Config from which tokens will be deleted. Required for specifying the target Edge Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "tokens_to_delete", + "required": true, + "description": "A list of token identifiers to be deleted from the Edge Config. Each token should be a string.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "tokens" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug representing the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteEdgeConfigTokens'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/tokens", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tokens", + "tool_parameter_name": "tokens_to_delete", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"tokens\"\n ],\n \"properties\": {\n \"tokens\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteExperimentationItem.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteExperimentationItem.json new file mode 100644 index 00000000..f1e54420 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteExperimentationItem.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteExperimentationItem", + "fully_qualified_name": "VercelApi.DeleteExperimentationItem@0.1.0", + "description": "Delete an existing experimentation item.\n\nThis tool deletes a specific experimentation item identified by its itemId within the given integration configuration and resource.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration to identify the correct setup.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_id", + "required": true, + "description": "The unique identifier for the resource containing the item to be deleted. This is required to specify which resource the item belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "experiment_item_id", + "required": true, + "description": "The unique identifier for the experimentation item to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "itemId" + } + ] + }, + "output": { + "description": "Response from the API endpoint ''.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items/{itemId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "itemId", + "tool_parameter_name": "experiment_item_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteIntegrationLogDrain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteIntegrationLogDrain.json new file mode 100644 index 00000000..eedf03e2 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteIntegrationLogDrain.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteIntegrationLogDrain", + "fully_qualified_name": "VercelApi.DeleteIntegrationLogDrain@0.1.0", + "description": "Delete an Integration log drain by ID.\n\nUse this tool to delete a specific Integration log drain by its ID. Applicable when you need to remove log drains associated with an integration, especially under OAuth2 constraints.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_drain_id", + "required": true, + "description": "The ID of the log drain to be deleted. This identifies the specific log drain for removal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the log drain to be deleted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the Team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteIntegrationLogDrain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/log-drains/{id}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "log_drain_id", + "description": "ID of the log drain to be deleted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the log drain to be deleted" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteIntegrationResource.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteIntegrationResource.json new file mode 100644 index 00000000..3548bf1e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteIntegrationResource.json @@ -0,0 +1,139 @@ +{ + "name": "DeleteIntegrationResource", + "fully_qualified_name": "VercelApi.DeleteIntegrationResource@0.1.0", + "description": "Delete a resource from an integration by ID.\n\nUse this tool to delete a resource associated with a specific integration installation. You need the installation and resource IDs to successfully execute this operation.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_installation_id", + "required": true, + "description": "The ID of the installation to delete the resource from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_id", + "required": true, + "description": "The ID of the resource to be deleted. Required for identifying the specific resource within the integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete-integration-resource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_installation_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProject.json new file mode 100644 index 00000000..b46b5ba0 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProject.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteProject", + "fully_qualified_name": "VercelApi.DeleteProject@0.1.0", + "description": "Delete a Vercel project by ID or name.\n\nUse this tool to delete a specific Vercel project by providing either the project's ID or name. Ideal for cleaning up unused projects or managing active projects through automation.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or the project name to specify which project to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the project deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to execute the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProjectEnvVariable.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProjectEnvVariable.json new file mode 100644 index 00000000..e91bd52d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProjectEnvVariable.json @@ -0,0 +1,238 @@ +{ + "name": "DeleteProjectEnvVariable", + "fully_qualified_name": "VercelApi.DeleteProjectEnvVariable@0.1.0", + "description": "Delete a project's specific environment variable.\n\nThis tool deletes a specified environment variable from a project by using the environment variable's identifier. You can specify the project using its ID or name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or name to identify the target project for which the environment variable should be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "environment_variable_identifier", + "required": true, + "description": "The unique identifier of the environment variable to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique environment variable identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "custom_environment_identifier", + "required": false, + "description": "The unique custom environment identifier within the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customEnvironmentId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to perform the request on behalf of a team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeProjectEnv'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/env/{id}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "customEnvironmentId", + "tool_parameter_name": "custom_environment_identifier", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "environment_variable_identifier", + "description": "The unique environment variable identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique environment variable identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProjectEnvVariables.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProjectEnvVariables.json new file mode 100644 index 00000000..afbc6ac0 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteProjectEnvVariables.json @@ -0,0 +1,223 @@ +{ + "name": "DeleteProjectEnvVariables", + "fully_qualified_name": "VercelApi.DeleteProjectEnvVariables@0.1.0", + "description": "Delete multiple environment variables from a Vercel project.\n\nUse this tool to delete several environment variables for a specific Vercel project at once. It's useful when managing project configurations and needing to remove obsolete or sensitive data efficiently.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique project identifier or the project name to specify which project to delete variables from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of when deleting environment variables.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "env_variable_ids", + "required": false, + "description": "Array of environment variable IDs to delete.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of environment variable IDs to delete" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'batchRemoveProjectEnv'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/env", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "env_variable_ids", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of environment variable IDs to delete" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"ids\"\n ],\n \"properties\": {\n \"ids\": {\n \"description\": \"Array of environment variable IDs to delete\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"maxItems\": 1000\n }\n },\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteTeam.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteTeam.json new file mode 100644 index 00000000..1f54b100 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteTeam.json @@ -0,0 +1,257 @@ +{ + "name": "DeleteTeam", + "fully_qualified_name": "VercelApi.DeleteTeam@0.1.0", + "description": "Delete a team from your Vercel account.\n\nUse this tool to send a request to delete a specific team under your Vercel account by providing the team ID. Optional reasons for deletion can be included.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier of the team to be deleted in your Vercel account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "deletion_reasons", + "required": true, + "description": "Optional array of objects detailing reasons for team deletion, each with a 'slug' and 'description'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "reasons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Idenitifier slug of the reason why the team is being deleted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the reason why the team is being deleted." + } + }, + "description": "Optional array of objects that describe the reason why the team is being deleted." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "new_default_team_id", + "required": false, + "description": "Specify the team ID to set as the new default after deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the team to be set as the new default team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "newDefaultTeamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team you want to delete. Used to identify the team for the delete operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "newDefaultTeamId", + "tool_parameter_name": "new_default_team_id", + "description": "Id of the team to be set as the new default team", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the team to be set as the new default team" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "deletion_reasons", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "reasons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Idenitifier slug of the reason why the team is being deleted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the reason why the team is being deleted." + } + }, + "description": "Optional array of objects that describe the reason why the team is being deleted." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"reasons\": {\n \"type\": \"array\",\n \"description\": \"Optional array of objects that describe the reason why the team is being deleted.\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object describing the reason why the team is being deleted.\",\n \"required\": [\n \"slug\",\n \"description\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"slug\": {\n \"type\": \"string\",\n \"description\": \"Idenitifier slug of the reason why the team is being deleted.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Description of the reason why the team is being deleted.\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteTeamInviteCode.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteTeamInviteCode.json new file mode 100644 index 00000000..0954c848 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteTeamInviteCode.json @@ -0,0 +1,139 @@ +{ + "name": "DeleteTeamInviteCode", + "fully_qualified_name": "VercelApi.DeleteTeamInviteCode@0.1.0", + "description": "Delete an active team invite code in Vercel.\n\nUse this tool to remove an active team invite code for a specified team on Vercel. Call this tool when you need to cancel or invalidate an existing invite.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_invite_code_id", + "required": true, + "description": "The ID of the team invite code to be deleted in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team invite code ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "inviteId" + }, + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier of the team to perform the operation for in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteTeamInviteCode'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/invites/{inviteId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "inviteId", + "tool_parameter_name": "team_invite_code_id", + "description": "The Team invite code ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team invite code ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteVercelDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteVercelDomain.json new file mode 100644 index 00000000..4d799894 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteVercelDomain.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteVercelDomain", + "fully_qualified_name": "VercelApi.DeleteVercelDomain@0.1.0", + "description": "Delete a domain from Vercel and remove associated aliases.\n\nUse this tool to delete a previously registered domain from Vercel. This action also removes any aliases linked to the domain.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to be deleted from Vercel. This action will also remove any associated aliases.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain." + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the domain deletion request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The specific team slug to perform the deletion request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v6/domains/{domain}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "The name of the domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteVercelWebhook.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteVercelWebhook.json new file mode 100644 index 00000000..274c640b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DeleteVercelWebhook.json @@ -0,0 +1,172 @@ +{ + "name": "DeleteVercelWebhook", + "fully_qualified_name": "VercelApi.DeleteVercelWebhook@0.1.0", + "description": "Delete a specific webhook from Vercel.\n\nThis tool deletes a specified webhook from a Vercel project using its unique ID. It should be called when you need to remove an existing webhook integration.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_id", + "required": true, + "description": "The unique identifier of the webhook to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier used to perform the request on behalf of the specified team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the Vercel team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteWebhook'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/webhooks/{id}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "webhook_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DisableRollingReleases.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DisableRollingReleases.json new file mode 100644 index 00000000..15a1a208 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DisableRollingReleases.json @@ -0,0 +1,172 @@ +{ + "name": "DisableRollingReleases", + "fully_qualified_name": "VercelApi.DisableRollingReleases@0.1.0", + "description": "Disable rolling releases for a Vercel project.\n\nUse this tool to disable future rolling releases for a specified Vercel project. Note that this will not affect any current rollouts in progress. For ongoing rollouts, additional actions like completing or aborting may be required.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Project ID or URL-encoded name to specify the Vercel project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to execute the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team to perform the request on behalf of. This should be a string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteRollingReleaseConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release/config", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DomainAvailabilityStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DomainAvailabilityStatus.json new file mode 100644 index 00000000..a059551e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DomainAvailabilityStatus.json @@ -0,0 +1,139 @@ +{ + "name": "DomainAvailabilityStatus", + "fully_qualified_name": "VercelApi.DomainAvailabilityStatus@0.1.0", + "description": "Check if a domain is available for purchase.\n\nThis tool checks the availability of a specified domain. If the domain is available, it can be purchased using the appropriate Vercel endpoints.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name_to_check_availability", + "required": true, + "description": "The domain name to check for availability. Must be a valid and complete domain name string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "A unique identifier for the team whose domain availability is being queried. This is a string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomainAvailability'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/availability", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name_to_check_availability", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DownloadCacheArtifact.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DownloadCacheArtifact.json new file mode 100644 index 00000000..d8c58807 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/DownloadCacheArtifact.json @@ -0,0 +1,238 @@ +{ + "name": "DownloadCacheArtifact", + "fully_qualified_name": "VercelApi.DownloadCacheArtifact@0.1.0", + "description": "Downloads a cache artifact using its hash identifier.\n\nUse this tool to retrieve a cache artifact from Vercel by specifying its hash. The artifact is returned as an octet-stream. Ensure to verify the content-length header and response body for correctness.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "artifact_hash", + "required": true, + "description": "The unique hash identifier for the cache artifact to download.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The artifact hash" + }, + "inferrable": true, + "http_endpoint_parameter_name": "hash" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of, identifying which team's artifact to download.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "ci_environment", + "required": false, + "description": "Specify the continuous integration or delivery environment from which the artifact is downloaded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The continuous integration or delivery environment where this artifact is downloaded." + }, + "inferrable": true, + "http_endpoint_parameter_name": "x-artifact-client-ci" + }, + { + "name": "interactive_shell_client", + "required": false, + "description": "Set to 1 if the client is an interactive shell; otherwise set to 0.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "1 if the client is an interactive shell. Otherwise 0" + }, + "inferrable": true, + "http_endpoint_parameter_name": "x-artifact-client-interactive" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'downloadArtifact'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/artifacts/{hash}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "hash", + "tool_parameter_name": "artifact_hash", + "description": "The artifact hash", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The artifact hash" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "x-artifact-client-ci", + "tool_parameter_name": "ci_environment", + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The continuous integration or delivery environment where this artifact is downloaded." + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "x-artifact-client-interactive", + "tool_parameter_name": "interactive_shell_client", + "description": "1 if the client is an interactive shell. Otherwise 0", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "1 if the client is an interactive shell. Otherwise 0" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/EditProjectEnvironmentVariable.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/EditProjectEnvironmentVariable.json new file mode 100644 index 00000000..821226b9 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/EditProjectEnvironmentVariable.json @@ -0,0 +1,364 @@ +{ + "name": "EditProjectEnvironmentVariable", + "fully_qualified_name": "VercelApi.EditProjectEnvironmentVariable@0.1.0", + "description": "Edit a specific environment variable for a project.\n\nUse this tool to modify an environment variable of a Vercel project by providing the variable's ID and the project's ID or name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Specify the unique project identifier or the project name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "environment_variable_id", + "required": true, + "description": "The unique environment variable identifier for the Vercel project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique environment variable identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "environment_variable_details", + "required": true, + "description": "JSON object detailing the environment variable's key, value, type, target environments, and optional attributes such as git branch, custom environment IDs, and comments.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the environment variable" + }, + "target": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The target environment of the environment variable" + }, + "gitBranch": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If defined, the git branch of the environment variable (must have target=preview)" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "system", + "secret", + "encrypted", + "plain", + "sensitive" + ], + "properties": null, + "inner_properties": null, + "description": "The type of environment variable" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the environment variable" + }, + "customEnvironmentIds": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom environments that the environment variable should be synced to" + }, + "comment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A comment to add context on what this env var is for" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The identifier for the team on whose behalf the request is made. This is usually a URL-friendly name for the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'editProjectEnv'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/env/{id}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "environment_variable_id", + "description": "The unique environment variable identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique environment variable identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "environment_variable_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the environment variable" + }, + "target": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The target environment of the environment variable" + }, + "gitBranch": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If defined, the git branch of the environment variable (must have target=preview)" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "system", + "secret", + "encrypted", + "plain", + "sensitive" + ], + "properties": null, + "inner_properties": null, + "description": "The type of environment variable" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the environment variable" + }, + "customEnvironmentIds": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom environments that the environment variable should be synced to" + }, + "comment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A comment to add context on what this env var is for" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"key\": {\n \"description\": \"The name of the environment variable\",\n \"type\": \"string\",\n \"example\": \"GITHUB_APP_ID\"\n },\n \"target\": {\n \"description\": \"The target environment of the environment variable\",\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"production\",\n \"preview\",\n \"development\"\n ]\n },\n \"example\": [\n \"preview\"\n ]\n },\n \"gitBranch\": {\n \"description\": \"If defined, the git branch of the environment variable (must have target=preview)\",\n \"type\": \"string\",\n \"maxLength\": 250,\n \"example\": \"feature-1\",\n \"nullable\": true\n },\n \"type\": {\n \"description\": \"The type of environment variable\",\n \"type\": \"string\",\n \"enum\": [\n \"system\",\n \"secret\",\n \"encrypted\",\n \"plain\",\n \"sensitive\"\n ],\n \"example\": \"plain\"\n },\n \"value\": {\n \"description\": \"The value of the environment variable\",\n \"type\": \"string\",\n \"example\": \"bkWIjbnxcvo78\"\n },\n \"customEnvironmentIds\": {\n \"type\": \"array\",\n \"description\": \"The custom environments that the environment variable should be synced to\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"env_1234567890\"\n }\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this env var is for\",\n \"example\": \"database connection string for production\",\n \"maxLength\": 500\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ExchangeSsoToken.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ExchangeSsoToken.json new file mode 100644 index 00000000..4ebb5e9b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ExchangeSsoToken.json @@ -0,0 +1,275 @@ +{ + "name": "ExchangeSsoToken", + "fully_qualified_name": "VercelApi.ExchangeSsoToken@0.1.0", + "description": "Exchange OAuth code for an OIDC token to authenticate users.\n\nCall this tool to exchange an OAuth authorization code for an OIDC token during the SSO process. This helps authenticate users in Vercel without persisting the token. Refer to the Vercel SSO documentation for more details.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "authorization_code", + "required": true, + "description": "The sensitive OAuth authorization code received from Vercel for the SSO token exchange process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sensitive code received from Vercel" + }, + "inferrable": true, + "http_endpoint_parameter_name": "code" + }, + { + "name": "integration_client_id", + "required": true, + "description": "The unique client ID for the integration, required for authentication.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The integration client id" + }, + "inferrable": true, + "http_endpoint_parameter_name": "client_id" + }, + { + "name": "integration_client_secret", + "required": true, + "description": "The secret key for the integration client, used for authentication.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The integration client secret" + }, + "inferrable": true, + "http_endpoint_parameter_name": "client_secret" + }, + { + "name": "authorization_state", + "required": false, + "description": "The state received from the initialization request for security validation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The state received from the initialization request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "state" + }, + { + "name": "integration_redirect_uri", + "required": false, + "description": "The URL where the user will be redirected after authentication.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The integration redirect URI" + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirect_uri" + }, + { + "name": "sso_grant_type", + "required": false, + "description": "Specifies the grant type as 'authorization_code' for OAuth process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "authorization_code" + ], + "properties": null, + "inner_properties": null, + "description": "The grant type, when using x-www-form-urlencoded content type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "grant_type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'exchange-sso-token'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/sso/token", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "code", + "tool_parameter_name": "authorization_code", + "description": "The sensitive code received from Vercel", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sensitive code received from Vercel" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "state", + "tool_parameter_name": "authorization_state", + "description": "The state received from the initialization request", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The state received from the initialization request" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "client_id", + "tool_parameter_name": "integration_client_id", + "description": "The integration client id", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The integration client id" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "client_secret", + "tool_parameter_name": "integration_client_secret", + "description": "The integration client secret", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The integration client secret" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirect_uri", + "tool_parameter_name": "integration_redirect_uri", + "description": "The integration redirect URI", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The integration redirect URI" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "grant_type", + "tool_parameter_name": "sso_grant_type", + "description": "The grant type, when using x-www-form-urlencoded content type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "authorization_code" + ], + "properties": null, + "inner_properties": null, + "description": "The grant type, when using x-www-form-urlencoded content type" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"code\",\n \"client_id\",\n \"client_secret\"\n ],\n \"properties\": {\n \"code\": {\n \"type\": \"string\",\n \"description\": \"The sensitive code received from Vercel\"\n },\n \"state\": {\n \"type\": \"string\",\n \"description\": \"The state received from the initialization request\"\n },\n \"client_id\": {\n \"type\": \"string\",\n \"description\": \"The integration client id\"\n },\n \"client_secret\": {\n \"type\": \"string\",\n \"description\": \"The integration client secret\"\n },\n \"redirect_uri\": {\n \"type\": \"string\",\n \"description\": \"The integration redirect URI\"\n },\n \"grant_type\": {\n \"type\": \"string\",\n \"description\": \"The grant type, when using x-www-form-urlencoded content type\",\n \"enum\": [\n \"authorization_code\"\n ]\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchAccountInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchAccountInfo.json new file mode 100644 index 00000000..4ba13909 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchAccountInfo.json @@ -0,0 +1,106 @@ +{ + "name": "FetchAccountInfo", + "fully_qualified_name": "VercelApi.FetchAccountInfo@0.1.0", + "description": "Fetch the best account or user's contact info.\n\nUse this tool to retrieve detailed contact information for a user's account, ideal for scenarios where you need user engagement or account verification.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration. Required to fetch the user's account info.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get-account-info'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/account", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDeploymentLogs.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDeploymentLogs.json new file mode 100644 index 00000000..d6fed1b3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDeploymentLogs.json @@ -0,0 +1,493 @@ +{ + "name": "FetchDeploymentLogs", + "fully_qualified_name": "VercelApi.FetchDeploymentLogs@0.1.0", + "description": "Retrieve build logs for a specific deployment by ID.\n\nUse this tool to access the build logs or events of a deployment using its deployment ID and build ID. It can stream logs continuously or return them in JSON format based on input parameters.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_identifier_or_hostname", + "required": true, + "description": "The unique identifier or hostname of the deployment to fetch logs for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier or hostname of the deployment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrUrl" + }, + { + "name": "event_order", + "required": false, + "description": "Specifies the order of returned events by timestamp. Use 'forward' for chronological order or 'backward' for reverse order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "backward", + "forward" + ], + "properties": null, + "inner_properties": null, + "description": "Order of the returned events based on the timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "direction" + }, + { + "name": "enable_live_streaming", + "required": false, + "description": "Set to '1' to enable live streaming of events as they happen. Use '0' to disable live streaming.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "When enabled, this endpoint will return live events as they happen." + }, + "inferrable": true, + "http_endpoint_parameter_name": "follow" + }, + { + "name": "maximum_events_to_return", + "required": false, + "description": "Specify the max number of events to return. Use `-1` for all available logs.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events to return. Provide `-1` to return all available logs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "deployment_build_id", + "required": false, + "description": "The unique identifier for the deployment build for which logs are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployment build ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "start_timestamp_for_logs", + "required": false, + "description": "Timestamp from which to start retrieving build logs. Provide in milliseconds.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp for when build logs should be pulled from." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "fetch_until_timestamp", + "required": false, + "description": "Timestamp up to which the build logs should be retrieved.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp for when the build logs should be pulled up until." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "filter_by_status_code", + "required": false, + "description": "Specify the HTTP status code range to filter deployment events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HTTP status code range to filter events by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "statusCode" + }, + { + "name": "build_event_delimiter", + "required": false, + "description": "Specify the delimiter type for separating logged events. Use '0' for no delimiter and '1' for an alternative separation method.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "delimiter" + }, + { + "name": "include_builds", + "required": false, + "description": "Specify whether to include build events (1) or not (0) in the response.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "builds" + }, + { + "name": "team_identifier", + "required": false, + "description": "Identifies the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique identifier (slug) of the Team for which the request is made. Used to specify the team context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDeploymentEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v3/deployments/{idOrUrl}/events", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "direction", + "tool_parameter_name": "event_order", + "description": "Order of the returned events based on the timestamp.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "backward", + "forward" + ], + "properties": null, + "inner_properties": null, + "description": "Order of the returned events based on the timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "forward", + "documentation_urls": [] + }, + { + "name": "follow", + "tool_parameter_name": "enable_live_streaming", + "description": "When enabled, this endpoint will return live events as they happen.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "When enabled, this endpoint will return live events as they happen." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "maximum_events_to_return", + "description": "Maximum number of events to return. Provide `-1` to return all available logs.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events to return. Provide `-1` to return all available logs." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "deployment_build_id", + "description": "Deployment build ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployment build ID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "start_timestamp_for_logs", + "description": "Timestamp for when build logs should be pulled from.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp for when build logs should be pulled from." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "fetch_until_timestamp", + "description": "Timestamp for when the build logs should be pulled up until.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp for when the build logs should be pulled up until." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "statusCode", + "tool_parameter_name": "filter_by_status_code", + "description": "HTTP status code range to filter events by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HTTP status code range to filter events by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "delimiter", + "tool_parameter_name": "build_event_delimiter", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "builds", + "tool_parameter_name": "include_builds", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrUrl", + "tool_parameter_name": "deployment_identifier_or_hostname", + "description": "The unique identifier or hostname of the deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier or hostname of the deployment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDomainPrice.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDomainPrice.json new file mode 100644 index 00000000..d5cd0afd --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDomainPrice.json @@ -0,0 +1,172 @@ +{ + "name": "FetchDomainPrice", + "fully_qualified_name": "VercelApi.FetchDomainPrice@0.1.0", + "description": "Retrieve price data for a specific domain from Vercel.\n\nUse this tool to get pricing information for a particular domain. It should be called when you need to verify or compare the cost of registering or renewing a domain via Vercel's registrar service.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to check the pricing for. Provide a fully qualified domain like 'example.com'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "number_of_years", + "required": false, + "description": "Specify the number of years for which the domain pricing is needed. Typically set to 1 or more.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "years" + }, + { + "name": "team_identifier", + "required": false, + "description": "A string representing the unique identifier of the team associated with the domain. This is required for specifying which team's domain pricing information should be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomainPrice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/price", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "years", + "tool_parameter_name": "number_of_years", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDomainTransferAvailability.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDomainTransferAvailability.json new file mode 100644 index 00000000..a1745215 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchDomainTransferAvailability.json @@ -0,0 +1,172 @@ +{ + "name": "FetchDomainTransferAvailability", + "fully_qualified_name": "VercelApi.FetchDomainTransferAvailability@0.1.0", + "description": "Fetch a domain's transfer status or availability.\n\nUse this tool to check if a domain transfer is available or to obtain the transfer status if a transfer is in progress.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to check for transfer status or availability.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of. It should be a string representing the team's unique ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The identifier slug of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomainTransfer'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/domains/{domain}/registry", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchIntegrationResource.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchIntegrationResource.json new file mode 100644 index 00000000..eea99f55 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchIntegrationResource.json @@ -0,0 +1,139 @@ +{ + "name": "FetchIntegrationResource", + "fully_qualified_name": "VercelApi.FetchIntegrationResource@0.1.0", + "description": "Fetch a resource using its partner ID.\n\nUse this tool to get detailed information about a specific resource by providing the integration configuration and resource IDs.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the specific installation to which the resource belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the integration configuration (installation) the resource belongs to" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "third_party_resource_id", + "required": true, + "description": "The ID provided by the third-party provider for the specific resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID provided by the 3rd party provider for the given resource" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get-integration-resource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "The ID of the integration configuration (installation) the resource belongs to", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the integration configuration (installation) the resource belongs to" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "third_party_resource_id", + "description": "The ID provided by the 3rd party provider for the given resource", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID provided by the 3rd party provider for the given resource" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchProjectDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchProjectDomain.json new file mode 100644 index 00000000..3a32368c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/FetchProjectDomain.json @@ -0,0 +1,205 @@ +{ + "name": "FetchProjectDomain", + "fully_qualified_name": "VercelApi.FetchProjectDomain@0.1.0", + "description": "Fetch domain details for a specific project.\n\nUse this tool to obtain detailed information about a project's domain using the project's ID or name and the domain name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique project identifier or the project name for fetching domain details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "project_domain_name", + "required": true, + "description": "The name of the project's domain to fetch details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getProjectDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "project_domain_name", + "description": "The project domain name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ForceCompleteRollingRelease.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ForceCompleteRollingRelease.json new file mode 100644 index 00000000..02267b71 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ForceCompleteRollingRelease.json @@ -0,0 +1,223 @@ +{ + "name": "ForceCompleteRollingRelease", + "fully_qualified_name": "VercelApi.ForceCompleteRollingRelease@0.1.0", + "description": "Complete a rolling release to serve 100% traffic from canary.\n\nThis tool should be used to force-complete a rolling release in Vercel projects, ensuring that the canary deployment is now serving 100% of the traffic. Call this tool when you need to finalize a rolling release deployment.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier", + "required": true, + "description": "The project ID or URL-encoded project name in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team for which the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "canary_deployment_identifier", + "required": false, + "description": "The ID of the canary deployment to be completed, provided in JSON format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "canaryDeploymentId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the canary deployment to complete" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'completeRollingRelease'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release/complete", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "canary_deployment_identifier", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "canaryDeploymentId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the canary deployment to complete" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"canaryDeploymentId\"\n ],\n \"properties\": {\n \"canaryDeploymentId\": {\n \"description\": \"The ID of the canary deployment to complete\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetAccessGroupProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetAccessGroupProject.json new file mode 100644 index 00000000..19163018 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetAccessGroupProject.json @@ -0,0 +1,205 @@ +{ + "name": "GetAccessGroupProject", + "fully_qualified_name": "VercelApi.GetAccessGroupProject@0.1.0", + "description": "Retrieve details of a specific access group project.\n\nUse this tool to obtain information about a specific project within an access group by providing the access group identifier or name and the project ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "The identifier or name of the access group for the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accessGroupIdOrName" + }, + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the project within the access group. It is required to fetch the project details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of. This should be a string representing the team's unique ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. Provide the specific slug associated with the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'readAccessGroupProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accessGroupIdOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetActiveAttackStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetActiveAttackStatus.json new file mode 100644 index 00000000..b1c2f392 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetActiveAttackStatus.json @@ -0,0 +1,205 @@ +{ + "name": "GetActiveAttackStatus", + "fully_qualified_name": "VercelApi.GetActiveAttackStatus@0.1.0", + "description": "Retrieve active attack data from the Vercel firewall.\n\nUse this tool to obtain information about any active attacks detected by Vercel's firewall within the specified number of days.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier of the project to retrieve attack data for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "active_days_since", + "required": false, + "description": "Number of days in the past to look for active attack data. Defaults to 1 day if not specified.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. This identifies which team to target for the retrieval of attack data within Vercel's system.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getActiveAttackStatus'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/attack-status", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "active_days_since", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetAuthenticatedUserInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetAuthenticatedUserInfo.json new file mode 100644 index 00000000..a72dced6 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetAuthenticatedUserInfo.json @@ -0,0 +1,71 @@ +{ + "name": "GetAuthenticatedUserInfo", + "fully_qualified_name": "VercelApi.GetAuthenticatedUserInfo@0.1.0", + "description": "Retrieve current authenticated user's information.\n\nUse this tool to obtain details about the currently authenticated user from Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'getAuthUser'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/user", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetCustomProjectEnvironments.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetCustomProjectEnvironments.json new file mode 100644 index 00000000..7f07ff73 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetCustomProjectEnvironments.json @@ -0,0 +1,205 @@ +{ + "name": "GetCustomProjectEnvironments", + "fully_qualified_name": "VercelApi.GetCustomProjectEnvironments@0.1.0", + "description": "Retrieve custom environments for a specified project.\n\nUse this tool to get custom environments of a project on Vercel. These environments cannot be named 'Production' or 'Preview'.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique identifier or name of the project to retrieve custom environments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "git_branch_name", + "required": false, + "description": "Specify the git branch to fetch custom environments from. This identifies the branch to retrieve environments for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fetch custom environments for a specific git branch" + }, + "inferrable": true, + "http_endpoint_parameter_name": "gitBranch" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the Team to perform the request on behalf of. Expected as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. This identifies the specific team related to the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint ''.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/custom-environments", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "gitBranch", + "tool_parameter_name": "git_branch_name", + "description": "Fetch custom environments for a specific git branch", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fetch custom environments for a specific git branch" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentAliases.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentAliases.json new file mode 100644 index 00000000..cbaf7a6f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentAliases.json @@ -0,0 +1,172 @@ +{ + "name": "GetDeploymentAliases", + "fully_qualified_name": "VercelApi.GetDeploymentAliases@0.1.0", + "description": "Fetch aliases for a specific deployment by ID.\n\nRetrieves all aliases associated with a given deployment ID. Use this to find or verify domain aliases linked to a specific Vercel deployment.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The ID of the deployment for which to list the aliases.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the deployment the aliases should be listed for" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of. It is required to retrieve deployment aliases.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listDeploymentAliases'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/deployments/{id}/aliases", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "deployment_id", + "description": "The ID of the deployment the aliases should be listed for", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the deployment the aliases should be listed for" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentCheckDetails.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentCheckDetails.json new file mode 100644 index 00000000..e7532d56 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentCheckDetails.json @@ -0,0 +1,205 @@ +{ + "name": "GetDeploymentCheckDetails", + "fully_qualified_name": "VercelApi.GetDeploymentCheckDetails@0.1.0", + "description": "Retrieve details for a specific deployment check.\n\nThis tool is used to obtain detailed information about a single check within a specified deployment. Use it when you need insights or results from a specific deployment check.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The ID of the deployment for which the check details are required.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to get the check for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "check_identifier", + "required": true, + "description": "The unique identifier of the check to fetch details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The check to fetch" + }, + "inferrable": true, + "http_endpoint_parameter_name": "checkId" + }, + { + "name": "team_id", + "required": false, + "description": "The identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier for the team to perform the request on behalf of. It uniquely represents the team within the system.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getCheck'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/deployments/{deploymentId}/checks/{checkId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "The deployment to get the check for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to get the check for." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "checkId", + "tool_parameter_name": "check_identifier", + "description": "The check to fetch", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The check to fetch" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentInfo.json new file mode 100644 index 00000000..c8f734b4 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentInfo.json @@ -0,0 +1,205 @@ +{ + "name": "GetDeploymentInfo", + "fully_qualified_name": "VercelApi.GetDeploymentInfo@0.1.0", + "description": "Retrieve deployment information by ID or URL.\n\nUse this tool to get details about a Vercel deployment using either its ID or URL. This is useful for obtaining deployment specifics, especially when the user or team owns the deployment.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id_or_url", + "required": true, + "description": "The unique identifier or hostname of the deployment to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier or hostname of the deployment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrUrl" + }, + { + "name": "include_git_repo_information", + "required": false, + "description": "Set to 'true' to include Git repository details or 'false' to exclude them.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to add in gitRepo information." + }, + "inferrable": true, + "http_endpoint_parameter_name": "withGitRepoInfo" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug for performing the request on behalf of that team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDeployment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v13/deployments/{idOrUrl}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "withGitRepoInfo", + "tool_parameter_name": "include_git_repo_information", + "description": "Whether to add in gitRepo information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to add in gitRepo information." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrUrl", + "tool_parameter_name": "deployment_id_or_url", + "description": "The unique identifier or hostname of the deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier or hostname of the deployment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentRuntimeLogs.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentRuntimeLogs.json new file mode 100644 index 00000000..814743be --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDeploymentRuntimeLogs.json @@ -0,0 +1,205 @@ +{ + "name": "GetDeploymentRuntimeLogs", + "fully_qualified_name": "VercelApi.GetDeploymentRuntimeLogs@0.1.0", + "description": "Get logs for a specific deployment's runtime.\n\nUse this tool to retrieve a stream of runtime logs for a given deployment in a project. This is useful for monitoring and debugging deployment processes.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the project related to the deployment. This is necessary to retrieve the correct runtime logs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "deployment_id", + "required": true, + "description": "The unique identifier for the deployment whose runtime logs are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to make the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug representing the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getRuntimeLogs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{projectId}/deployments/{deploymentId}/runtime-logs", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDnsRecords.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDnsRecords.json new file mode 100644 index 00000000..8e424efe --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDnsRecords.json @@ -0,0 +1,271 @@ +{ + "name": "GetDnsRecords", + "fully_qualified_name": "VercelApi.GetDnsRecords@0.1.0", + "description": "Retrieve DNS records for a specified domain name.\n\nThis tool fetches DNS records for a given domain. It returns up to 20 records by default, with additional records available through pagination.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name for which to retrieve DNS records. Must be a valid domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "maximum_records_to_list", + "required": false, + "description": "Specify the maximum number of DNS records to retrieve in a single request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of records to list from a request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "records_created_after_timestamp", + "required": false, + "description": "Get records created after this specified JavaScript timestamp. It filters DNS records based on the creation date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get records created after this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "until_timestamp", + "required": false, + "description": "Retrieve records created before the specified JavaScript timestamp.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get records created before this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getRecords'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v4/domains/{domain}/records", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "maximum_records_to_list", + "description": "Maximum number of records to list from a request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of records to list from a request." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "records_created_after_timestamp", + "description": "Get records created after this JavaScript timestamp.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get records created after this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "until_timestamp", + "description": "Get records created before this JavaScript timestamp.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get records created before this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainAuthCode.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainAuthCode.json new file mode 100644 index 00000000..0abd685e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainAuthCode.json @@ -0,0 +1,139 @@ +{ + "name": "GetDomainAuthCode", + "fully_qualified_name": "VercelApi.GetDomainAuthCode@0.1.0", + "description": "Retrieve the auth code for transferring a domain from Vercel.\n\nThis tool is used to obtain the auth code needed to transfer a domain from Vercel to another registrar. It should be called when a domain transfer from Vercel is intended.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name for which the auth code is being requested. It should be a valid domain registered with Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_id", + "required": false, + "description": "The ID representing the Vercel team associated with the domain. Required for accessing team-specific domains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomainAuthCode'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/auth-code", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainConfiguration.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainConfiguration.json new file mode 100644 index 00000000..76490515 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainConfiguration.json @@ -0,0 +1,238 @@ +{ + "name": "GetDomainConfiguration", + "fully_qualified_name": "VercelApi.GetDomainConfiguration@0.1.0", + "description": "Retrieve configuration details for a specific domain.\n\nThis tool calls the Vercel API to get the configuration settings for a given domain. It should be used when you need insights into the current setup or settings of a domain on Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The name of the domain to retrieve configuration details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain." + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "project_id_or_name", + "required": false, + "description": "The project ID or name associated with the domain, used if not yet linked to a project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project id or name that will be associated with the domain. Use this when the domain is not yet associated with a project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectIdOrName" + }, + { + "name": "include_only_assigned_nameservers", + "required": false, + "description": "When true, only nameservers assigned directly to the domain are included. When false, parent zone nameservers are included if no direct assignment exists.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When true, the response will only include the nameservers assigned directly to the specified domain. When false and there are no nameservers assigned directly to the specified domain, the response will include the nameservers of the domain's parent zone." + }, + "inferrable": true, + "http_endpoint_parameter_name": "strict" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of. It specifies which team's context to use when fetching domain configurations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to perform the request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomainConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v6/domains/{domain}/config", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectIdOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The project id or name that will be associated with the domain. Use this when the domain is not yet associated with a project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project id or name that will be associated with the domain. Use this when the domain is not yet associated with a project." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "strict", + "tool_parameter_name": "include_only_assigned_nameservers", + "description": "When true, the response will only include the nameservers assigned directly to the specified domain. When false and there are no nameservers assigned directly to the specified domain, the response will include the nameservers of the domain's parent zone.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When true, the response will only include the nameservers assigned directly to the specified domain. When false and there are no nameservers assigned directly to the specified domain, the response will include the nameservers of the domain's parent zone." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "The name of the domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainContactInfoSchema.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainContactInfoSchema.json new file mode 100644 index 00000000..3fbf562e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainContactInfoSchema.json @@ -0,0 +1,139 @@ +{ + "name": "GetDomainContactInfoSchema", + "fully_qualified_name": "VercelApi.GetDomainContactInfoSchema@0.1.0", + "description": "Retrieve the schema for TLD-specific contact information.\n\nUse this tool to get the necessary contact information schema required by specific TLDs for a domain. This is helpful when additional TLD-specific details are needed for domain registration or management.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name for which to retrieve the TLD-specific contact information schema.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_id", + "required": false, + "description": "A unique identifier for the team within Vercel. Required to retrieve domain-specific contact info.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getContactInfoSchema'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/contact-info/schema", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainInfo.json new file mode 100644 index 00000000..c5a0ed0f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainInfo.json @@ -0,0 +1,172 @@ +{ + "name": "GetDomainInfo", + "fully_qualified_name": "VercelApi.GetDomainInfo@0.1.0", + "description": "Retrieve information on a single domain from Vercel.\n\nUse this tool to get detailed information about a specific domain associated with a Vercel account or team. This can be useful for managing domains or checking their configuration.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The name of the domain to retrieve information for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain." + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of. Typically a unique string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier for the team on behalf of whom the request is made. It uniquely identifies the team in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v5/domains/{domain}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "The name of the domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainOrderInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainOrderInfo.json new file mode 100644 index 00000000..a4c39698 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainOrderInfo.json @@ -0,0 +1,139 @@ +{ + "name": "GetDomainOrderInfo", + "fully_qualified_name": "VercelApi.GetDomainOrderInfo@0.1.0", + "description": "Retrieve information about a domain order by its ID.\n\nUse this tool to get detailed information about a specific domain order using its unique ID. It is useful for checking the status and details of a domain order processed through the registrar.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "order_id", + "required": true, + "description": "The unique ID of the domain order to retrieve information about.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "orderId" + }, + { + "name": "team_id", + "required": false, + "description": "The ID of the team associated with the domain order. This identifies the specific team within Vercel that the domain order belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getOrder'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/orders/{orderId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "orderId", + "tool_parameter_name": "order_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainPrice.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainPrice.json new file mode 100644 index 00000000..85c2f9d9 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetDomainPrice.json @@ -0,0 +1,215 @@ +{ + "name": "GetDomainPrice", + "fully_qualified_name": "VercelApi.GetDomainPrice@0.1.0", + "description": "Retrieve domain price and purchase period details.\n\nUse this tool to obtain the cost of purchasing a specific domain and the duration of a single purchase period, replacing the deprecated endpoint for domain price checking.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to check the purchase price for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain for which the price needs to be checked." + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "domain_status_for_pricing", + "required": false, + "description": "Specifies the domain status ('new', 'renewal', 'transfer', 'redemption') to check the price for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "new", + "renewal", + "transfer", + "redemption" + ], + "properties": null, + "inner_properties": null, + "description": "In which status of the domain the price needs to be checked." + }, + "inferrable": true, + "http_endpoint_parameter_name": "type" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier for executing the request on behalf of a specific team. This is usually a unique string assigned to the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug_for_request", + "required": false, + "description": "The slug identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'checkDomainPrice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v4/domains/price", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "name", + "tool_parameter_name": "domain_name", + "description": "The name of the domain for which the price needs to be checked.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the domain for which the price needs to be checked." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "type", + "tool_parameter_name": "domain_status_for_pricing", + "description": "In which status of the domain the price needs to be checked.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "new", + "renewal", + "transfer", + "redemption" + ], + "properties": null, + "inner_properties": null, + "description": "In which status of the domain the price needs to be checked." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug_for_request", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfig.json new file mode 100644 index 00000000..15393d81 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfig.json @@ -0,0 +1,172 @@ +{ + "name": "GetEdgeConfig", + "fully_qualified_name": "VercelApi.GetEdgeConfig@0.1.0", + "description": "Retrieve Edge Config details from Vercel.\n\nUse this tool to obtain configuration details for a specific Edge Config in Vercel. It should be called when you need to access or review settings for an Edge Config using its unique identifier.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The unique identifier for the Edge Config to retrieve details from Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of in Vercel. This identifier is needed to specify which team's settings are being accessed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigBackups.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigBackups.json new file mode 100644 index 00000000..c887b844 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigBackups.json @@ -0,0 +1,271 @@ +{ + "name": "GetEdgeConfigBackups", + "fully_qualified_name": "VercelApi.GetEdgeConfigBackups@0.1.0", + "description": "Retrieve backups of an Edge Config.\n\nThis tool retrieves and returns backups for a specified Edge Config. It should be called when there is a need to access or review past configurations of an Edge Config managed by Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The unique identifier for the Edge Config whose backups you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "next_page_token", + "required": false, + "description": "A token for fetching the next page of results if pagination is needed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "next" + }, + { + "name": "backup_limit", + "required": false, + "description": "The maximum number of Edge Config backups to return. This is useful for paginating results.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "include_metadata", + "required": false, + "description": "Indicate if metadata should be included in the response. Use 'true' to include.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "metadata" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug to perform the request on behalf of. It identifies the specific team in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigBackups'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/backups", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "next", + "tool_parameter_name": "next_page_token", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "backup_limit", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "metadata", + "tool_parameter_name": "include_metadata", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigItem.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigItem.json new file mode 100644 index 00000000..afa03483 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigItem.json @@ -0,0 +1,205 @@ +{ + "name": "GetEdgeConfigItem", + "fully_qualified_name": "VercelApi.GetEdgeConfigItem@0.1.0", + "description": "Retrieve a specific Edge Config Item by its identifiers.\n\nUse this tool to get details of a specific Edge Config Item using its configuration ID and item key.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The ID of the Edge Config to retrieve a specific item from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "edge_config_item_key", + "required": true, + "description": "The key of the specific Edge Config Item to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigItemKey" + }, + { + "name": "team_identifier", + "required": false, + "description": "The ID of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team for which the Edge Config Item is requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigItem'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/item/{edgeConfigItemKey}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigItemKey", + "tool_parameter_name": "edge_config_item_key", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigItems.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigItems.json new file mode 100644 index 00000000..caddac46 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigItems.json @@ -0,0 +1,172 @@ +{ + "name": "GetEdgeConfigItems", + "fully_qualified_name": "VercelApi.GetEdgeConfigItems@0.1.0", + "description": "Retrieve all items from an Edge Config.\n\nCall this tool to obtain all items within a specified Edge Config by providing the Edge Config ID. Useful for accessing configuration details stored in Vercel's Edge Config.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The ID of the Edge Config to retrieve items from. This is required to specify which Edge Config data to access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request for a specific Vercel team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is made. Each team has a unique slug identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/items", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigSchema.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigSchema.json new file mode 100644 index 00000000..efbb0894 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigSchema.json @@ -0,0 +1,172 @@ +{ + "name": "GetEdgeConfigSchema", + "fully_qualified_name": "VercelApi.GetEdgeConfigSchema@0.1.0", + "description": "Retrieve the schema of an Edge Config.\n\nThis tool is used to obtain the schema details of a specific Edge Config by its ID. It should be called when there's a need to understand the structure or configuration of a given Edge Config.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The identifier for the specific Edge Config to retrieve its schema. It is required to specify which configuration's schema you want to query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to make requests on their behalf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigSchema'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/schema", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigTokenInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigTokenInfo.json new file mode 100644 index 00000000..c9bbd071 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigTokenInfo.json @@ -0,0 +1,205 @@ +{ + "name": "GetEdgeConfigTokenInfo", + "fully_qualified_name": "VercelApi.GetEdgeConfigTokenInfo@0.1.0", + "description": "Retrieve metadata about an Edge Config token.\n\nUse this tool to obtain metadata for a specific Edge Config token by providing the edgeConfigId and token. Ideal for understanding token attributes and usage in Edge Config.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The identifier for the Edge Config to retrieve metadata for. This is required to specify which configuration token's information is needed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "edge_config_token", + "required": true, + "description": "The token used to obtain metadata for a specific Edge Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "token" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug for performing the request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigToken'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/token/{token}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "token", + "tool_parameter_name": "edge_config_token", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigTokens.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigTokens.json new file mode 100644 index 00000000..59e33b23 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigTokens.json @@ -0,0 +1,172 @@ +{ + "name": "GetEdgeConfigTokens", + "fully_qualified_name": "VercelApi.GetEdgeConfigTokens@0.1.0", + "description": "Retrieve all tokens of a specific Edge Config.\n\nThis tool retrieves all tokens related to a specified Edge Config. It should be called when you need to access or manage tokens for an Edge Config identified by its edgeConfigId.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "A string representing the unique identifier of the Edge Config to retrieve tokens for. This ID is necessary to specify which Edge Config's tokens are being accessed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The ID of the team to perform the request on behalf of. It identifies which team's Edge Config tokens to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "Slug of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigTokens'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/tokens", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigs.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigs.json new file mode 100644 index 00000000..937ab9f1 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetEdgeConfigs.json @@ -0,0 +1,139 @@ +{ + "name": "GetEdgeConfigs", + "fully_qualified_name": "VercelApi.GetEdgeConfigs@0.1.0", + "description": "Fetch all Edge Configs from Vercel's service.\n\nUse this tool to retrieve a comprehensive list of all Edge Configurations available in a Vercel account.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "Specify the Team identifier for which the Edge Configs need to be fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetFirewallConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetFirewallConfig.json new file mode 100644 index 00000000..3263b66d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetFirewallConfig.json @@ -0,0 +1,205 @@ +{ + "name": "GetFirewallConfig", + "fully_qualified_name": "VercelApi.GetFirewallConfig@0.1.0", + "description": "Retrieve the active firewall configuration for a project.\n\nThis tool is used to obtain the active firewall configuration for a specific project by retrieving the specified version of the configuration.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the project whose firewall configuration is being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "firewall_configuration_version", + "required": true, + "description": "The deployed version of the firewall configuration to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployed configVersion for the firewall configuration" + }, + "inferrable": true, + "http_endpoint_parameter_name": "configVersion" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug to perform the request on behalf of. It identifies the specific team by its slug name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getFirewallConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/config/{configVersion}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "configVersion", + "tool_parameter_name": "firewall_configuration_version", + "description": "The deployed configVersion for the firewall configuration", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployed configVersion for the firewall configuration" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetIntegrationConfiguration.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetIntegrationConfiguration.json new file mode 100644 index 00000000..b1526810 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetIntegrationConfiguration.json @@ -0,0 +1,172 @@ +{ + "name": "GetIntegrationConfiguration", + "fully_qualified_name": "VercelApi.GetIntegrationConfiguration@0.1.0", + "description": "Retrieve configuration details by ID.\n\nUse this tool to fetch the configuration details using a specific ID. The authenticated user or team must own the configuration to access it.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "configuration_id", + "required": true, + "description": "ID of the configuration to retrieve. The user or team must own this configuration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration to check" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique team slug to perform the request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/configuration/{id}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "configuration_id", + "description": "ID of the configuration to check", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration to check" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetIntegrationResources.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetIntegrationResources.json new file mode 100644 index 00000000..07dba589 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetIntegrationResources.json @@ -0,0 +1,106 @@ +{ + "name": "GetIntegrationResources", + "fully_qualified_name": "VercelApi.GetIntegrationResources@0.1.0", + "description": "Retrieve all resources for a given installation ID.\n\nUse this tool to get all resources associated with a specific integration installation. It requires the installation ID to fetch the relevant information.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "installation_id", + "required": true, + "description": "The unique identifier of the integration installation to fetch resources for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get-integration-resources'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "installation_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetInvoiceDetails.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetInvoiceDetails.json new file mode 100644 index 00000000..d51509b1 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetInvoiceDetails.json @@ -0,0 +1,139 @@ +{ + "name": "GetInvoiceDetails", + "fully_qualified_name": "VercelApi.GetInvoiceDetails@0.1.0", + "description": "Retrieve invoice details and status by ID.\n\nThis tool retrieves the details and status of an invoice using its ID. Use this when you need specific information about a particular invoice, such as its current status or other details.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration. Required to specify the configuration context for the invoice retrieval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "invoice_id", + "required": true, + "description": "The unique identifier of the invoice to retrieve details and status for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoiceId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get-invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoiceId", + "tool_parameter_name": "invoice_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetLastPromoteAliasesStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetLastPromoteAliasesStatus.json new file mode 100644 index 00000000..054580b7 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetLastPromoteAliasesStatus.json @@ -0,0 +1,304 @@ +{ + "name": "GetLastPromoteAliasesStatus", + "fully_qualified_name": "VercelApi.GetLastPromoteAliasesStatus@0.1.0", + "description": "Retrieve aliases and their mapping status from last promote request.\n\nCall this tool to obtain a list of aliases related to the most recent promote request, along with their current mapping status for a specified project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "Specify the Project ID to filter the promote aliases related to that specific project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "max_aliases_to_list", + "required": false, + "description": "Specify the maximum number of aliases to list from the request. The maximum allowed is 100.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of aliases to list from a request (max 100)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "get_aliases_created_after_epoch", + "required": false, + "description": "Get aliases created after the specified epoch timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created after this epoch timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "aliases_created_before_timestamp", + "required": false, + "description": "Get aliases created before this epoch timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created before this epoch timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of. Must be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "filter_failed_aliases", + "required": false, + "description": "Set to true to filter results to only include aliases that failed to map to the requested deployment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results down to aliases that failed to map to the requested deployment" + }, + "inferrable": true, + "http_endpoint_parameter_name": "failedOnly" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listPromoteAliases'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{projectId}/promote/aliases", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "max_aliases_to_list", + "description": "Maximum number of aliases to list from a request (max 100).", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of aliases to list from a request (max 100)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "get_aliases_created_after_epoch", + "description": "Get aliases created after this epoch timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created after this epoch timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "aliases_created_before_timestamp", + "description": "Get aliases created before this epoch timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created before this epoch timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "failedOnly", + "tool_parameter_name": "filter_failed_aliases", + "description": "Filter results down to aliases that failed to map to the requested deployment", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results down to aliases that failed to map to the requested deployment" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetMemberRoleInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetMemberRoleInfo.json new file mode 100644 index 00000000..01edd916 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetMemberRoleInfo.json @@ -0,0 +1,139 @@ +{ + "name": "GetMemberRoleInfo", + "fully_qualified_name": "VercelApi.GetMemberRoleInfo@0.1.0", + "description": "Retrieve member role and details for a specific member ID.\n\nUse this tool to get the role and additional information for a member using their member ID. It is useful for verifying membership details and roles within installations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "A unique identifier for the integration configuration. Required to specify which integration to retrieve member details from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "member_id", + "required": true, + "description": "The ID of the member to retrieve role and details for. This corresponds to the \"user_id\" claim in the SSO OIDC token.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "memberId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get-member'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/member/{memberId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "memberId", + "tool_parameter_name": "member_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetProjectEnvironmentVariables.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetProjectEnvironmentVariables.json new file mode 100644 index 00000000..cb45fcac --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetProjectEnvironmentVariables.json @@ -0,0 +1,343 @@ +{ + "name": "GetProjectEnvironmentVariables", + "fully_qualified_name": "VercelApi.GetProjectEnvironmentVariables@0.1.0", + "description": "Retrieve environment variables for a specified project.\n\nUse this tool to get the environment variables associated with a project by providing its `id` or `name`. Useful for managing and configuring project settings.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique identifier or name of the project to retrieve environment variables for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "filter_by_git_branch", + "required": false, + "description": "Specify the git branch to filter the environment variable results. Must have target set to 'preview'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If defined, the git branch of the environment variable to filter the results (must have target=preview)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "gitBranch" + }, + { + "name": "decrypt_values", + "required": false, + "description": "Set to 'true' to decrypt environment variable values. Use 'false' to keep them encrypted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "true", + "false" + ], + "properties": null, + "inner_properties": null, + "description": "If true, the environment variable value will be decrypted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "decrypt" + }, + { + "name": "caller_source", + "required": false, + "description": "Specify the source making the API call.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The source that is calling the endpoint." + }, + "inferrable": true, + "http_endpoint_parameter_name": "source" + }, + { + "name": "custom_environment_id", + "required": false, + "description": "The unique custom environment identifier within the project. Use this to specify a specific custom environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customEnvironmentId" + }, + { + "name": "custom_environment_slug", + "required": false, + "description": "The custom environment slug (name) within the project to filter specific settings.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom environment slug (name) within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customEnvironmentSlug" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. Use this to specify the team context for the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'filterProjectEnvs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v10/projects/{idOrName}/env", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "gitBranch", + "tool_parameter_name": "filter_by_git_branch", + "description": "If defined, the git branch of the environment variable to filter the results (must have target=preview)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If defined, the git branch of the environment variable to filter the results (must have target=preview)" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "decrypt", + "tool_parameter_name": "decrypt_values", + "description": "If true, the environment variable value will be decrypted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "true", + "false" + ], + "properties": null, + "inner_properties": null, + "description": "If true, the environment variable value will be decrypted" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "source", + "tool_parameter_name": "caller_source", + "description": "The source that is calling the endpoint.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The source that is calling the endpoint." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customEnvironmentId", + "tool_parameter_name": "custom_environment_id", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customEnvironmentSlug", + "tool_parameter_name": "custom_environment_slug", + "description": "The custom environment slug (name) within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom environment slug (name) within the project" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetProjectInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetProjectInfo.json new file mode 100644 index 00000000..589a6742 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetProjectInfo.json @@ -0,0 +1,172 @@ +{ + "name": "GetProjectInfo", + "fully_qualified_name": "VercelApi.GetProjectInfo@0.1.0", + "description": "Retrieve specific project details using project ID or name.\n\nThis tool retrieves information about a specific project by using the project ID or name. It's useful for accessing project details from Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or the project name to retrieve details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug representing the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRegisteredDomains.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRegisteredDomains.json new file mode 100644 index 00000000..c35fc453 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRegisteredDomains.json @@ -0,0 +1,238 @@ +{ + "name": "GetRegisteredDomains", + "fully_qualified_name": "VercelApi.GetRegisteredDomains@0.1.0", + "description": "Retrieve a list of registered domains for the user or team.\n\nThis tool fetches a list of domains registered under the authenticated user or team from Vercel. It is useful for managing or reviewing domain configurations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "maximum_domains_to_list", + "required": false, + "description": "The maximum number of domains to include in the list returned by the request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of domains to list from a request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "domains_created_since_timestamp", + "required": false, + "description": "Get domains created after the specified JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created after this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "until_timestamp", + "required": false, + "description": "Fetch domains created before this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created before this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "team_id", + "required": false, + "description": "The unique Team identifier to retrieve domains for a specific team instead of the authenticated user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug used to perform the request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDomains'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v5/domains", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "maximum_domains_to_list", + "description": "Maximum number of domains to list from a request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of domains to list from a request." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "domains_created_since_timestamp", + "description": "Get domains created after this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created after this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "until_timestamp", + "description": "Get domains created before this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created before this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingRelease.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingRelease.json new file mode 100644 index 00000000..95d1d041 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingRelease.json @@ -0,0 +1,213 @@ +{ + "name": "GetRollingRelease", + "fully_qualified_name": "VercelApi.GetRollingRelease@0.1.0", + "description": "Retrieve the rolling release for a specific project.\n\nUse this tool to get details about a project's rolling release, including its current status (active, aborted, or completed). Useful when monitoring or managing project deployments.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The project ID or URL-encoded project name to identify the specific project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "filter_by_release_state", + "required": false, + "description": "Filter the rolling release by its state: ACTIVE, COMPLETE, or ABORTED.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ACTIVE", + "COMPLETE", + "ABORTED" + ], + "properties": null, + "inner_properties": null, + "description": "Filter by rolling release state" + }, + "inferrable": true, + "http_endpoint_parameter_name": "state" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug that identifies the team on whose behalf the request is made. This is required for team-specific data access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getRollingRelease'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "state", + "tool_parameter_name": "filter_by_release_state", + "description": "Filter by rolling release state", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ACTIVE", + "COMPLETE", + "ABORTED" + ], + "properties": null, + "inner_properties": null, + "description": "Filter by rolling release state" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingReleaseBillingStatus.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingReleaseBillingStatus.json new file mode 100644 index 00000000..87a9cd11 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingReleaseBillingStatus.json @@ -0,0 +1,172 @@ +{ + "name": "GetRollingReleaseBillingStatus", + "fully_qualified_name": "VercelApi.GetRollingReleaseBillingStatus@0.1.0", + "description": "Get the billing status for a project's rolling releases.\n\nThis tool retrieves the billing status for a specific project's rolling releases from Vercel. It determines if the project is eligible for configuration under rolling releases based on the team's billing status.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Project ID or name, URL-encoded, to identify the project for which to retrieve billing status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representation of the team to perform the request for. Used to specify which team's billing status is being queried.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getRollingReleaseBillingStatus'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release/billing", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingReleaseConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingReleaseConfig.json new file mode 100644 index 00000000..272d2b4e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetRollingReleaseConfig.json @@ -0,0 +1,172 @@ +{ + "name": "GetRollingReleaseConfig", + "fully_qualified_name": "VercelApi.GetRollingReleaseConfig@0.1.0", + "description": "Fetch the rolling releases configuration for a project.\n\nUse this tool to obtain the template configuration for future rolling releases in a given project on Vercel. It does not provide settings for already active releases.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier", + "required": true, + "description": "The project ID or name, URL-encoded, to identify the project for the configuration request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the Team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getRollingReleaseConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release/config", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetSupportedTlds.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetSupportedTlds.json new file mode 100644 index 00000000..8b2bf0a3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetSupportedTlds.json @@ -0,0 +1,106 @@ +{ + "name": "GetSupportedTlds", + "fully_qualified_name": "VercelApi.GetSupportedTlds@0.1.0", + "description": "Retrieve a list of TLDs supported by Vercel.\n\nThis tool provides a list of Top-Level Domains (TLDs) that are supported by Vercel. Use this tool to find out which TLDs can be managed or registered through Vercel's platform.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": false, + "description": "The ID of the team for which to retrieve supported TLDs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getSupportedTlds'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/tlds/supported", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTeamInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTeamInfo.json new file mode 100644 index 00000000..d6ab9b63 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTeamInfo.json @@ -0,0 +1,139 @@ +{ + "name": "GetTeamInfo", + "fully_qualified_name": "VercelApi.GetTeamInfo@0.1.0", + "description": "Retrieve information for a specified team using teamId.\n\nUse this tool to get detailed information about a team by specifying the teamId. It retrieves the data related to the team, which can include various details pertinent to the team specified.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team to retrieve information about.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "A string representing the unique slug of the team. Used to specify which team's data to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/teams/{teamId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTeamMembers.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTeamMembers.json new file mode 100644 index 00000000..2da1213e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTeamMembers.json @@ -0,0 +1,322 @@ +{ + "name": "GetTeamMembers", + "fully_qualified_name": "VercelApi.GetTeamMembers@0.1.0", + "description": "Retrieve a list of team members for a specified team.\n\nUse this tool to get a paginated list of members belonging to a specific team by providing the team ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "member_limit", + "required": false, + "description": "Specify the maximum number of team members to return in a single request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many teams should be returned" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "added_since_timestamp", + "required": false, + "description": "Include team members added since this timestamp in milliseconds.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added since then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "include_members_until", + "required": false, + "description": "Timestamp in milliseconds to include members added until this time.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added until then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "search_team_members", + "required": false, + "description": "Search for team members by their name, username, or email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search team members by their name, username, and email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search" + }, + { + "name": "filter_by_team_role", + "required": false, + "description": "Return members with the specified team role. Valid roles include OWNER, MEMBER, DEVELOPER, SECURITY, BILLING, VIEWER, VIEWER_FOR_PLUS, and CONTRIBUTOR.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR" + ], + "properties": null, + "inner_properties": null, + "description": "Only return members with the specified team role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role" + }, + { + "name": "exclude_project_id", + "required": false, + "description": "Exclude members belonging to the specified project using the project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclude members who belong to the specified project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "excludeProject" + }, + { + "name": "project_id_for_eligible_members", + "required": false, + "description": "Include team members eligible for the specified project by providing the project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include team members who are eligible to be members of the specified project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "eligibleMembersForProjectId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getTeamMembers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v3/teams/{teamId}/members", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "member_limit", + "description": "Limit how many teams should be returned", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many teams should be returned" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "added_since_timestamp", + "description": "Timestamp in milliseconds to only include members added since then.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added since then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "include_members_until", + "description": "Timestamp in milliseconds to only include members added until then.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added until then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search", + "tool_parameter_name": "search_team_members", + "description": "Search team members by their name, username, and email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search team members by their name, username, and email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "role", + "tool_parameter_name": "filter_by_team_role", + "description": "Only return members with the specified team role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR" + ], + "properties": null, + "inner_properties": null, + "description": "Only return members with the specified team role." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "excludeProject", + "tool_parameter_name": "exclude_project_id", + "description": "Exclude members who belong to the specified project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclude members who belong to the specified project." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "eligibleMembersForProjectId", + "tool_parameter_name": "project_id_for_eligible_members", + "description": "Include team members who are eligible to be members of the specified project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include team members who are eligible to be members of the specified project." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTldPrice.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTldPrice.json new file mode 100644 index 00000000..f491a85e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetTldPrice.json @@ -0,0 +1,172 @@ +{ + "name": "GetTldPrice", + "fully_qualified_name": "VercelApi.GetTldPrice@0.1.0", + "description": "Retrieve base price for a specific TLD.\n\nUse this tool to get the base price for a top-level domain (TLD). It does not account for premium domain pricing. For specific domain prices, refer to a different endpoint.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "top_level_domain", + "required": true, + "description": "The top-level domain (TLD) for which to retrieve the base price. Examples include 'com', 'net', 'org'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "tld" + }, + { + "name": "registration_years", + "required": false, + "description": "The number of years for which the TLD registration price should be calculated. Provide this as an integer representing the duration in years.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "years" + }, + { + "name": "team_id", + "required": false, + "description": "The ID of the team for which the TLD price data is requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getTldPrice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/tlds/{tld}/price", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "years", + "tool_parameter_name": "registration_years", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tld", + "tool_parameter_name": "top_level_domain", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetUserTeams.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetUserTeams.json new file mode 100644 index 00000000..d0c25bb3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetUserTeams.json @@ -0,0 +1,172 @@ +{ + "name": "GetUserTeams", + "fully_qualified_name": "VercelApi.GetUserTeams@0.1.0", + "description": "Retrieve all teams for the authenticated user.\n\nCall this tool to get a list of all teams the authenticated user is a member of, with pagination support.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "max_number_of_teams", + "required": false, + "description": "Maximum number of teams to return in the response.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of Teams which may be returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "teams_created_since_timestamp", + "required": false, + "description": "Timestamp in milliseconds to include only teams created since this time.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp (in milliseconds) to only include Teams created since then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "teams_created_until", + "required": false, + "description": "Timestamp in milliseconds to filter Teams created until the specified time.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp (in milliseconds) to only include Teams created until then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getTeams'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/teams", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "max_number_of_teams", + "description": "Maximum number of Teams which may be returned.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of Teams which may be returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "teams_created_since_timestamp", + "description": "Timestamp (in milliseconds) to only include Teams created since then.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp (in milliseconds) to only include Teams created since then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "teams_created_until", + "description": "Timestamp (in milliseconds) to only include Teams created until then.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp (in milliseconds) to only include Teams created until then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetVercelDeploymentFiles.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetVercelDeploymentFiles.json new file mode 100644 index 00000000..b222a286 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetVercelDeploymentFiles.json @@ -0,0 +1,172 @@ +{ + "name": "GetVercelDeploymentFiles", + "fully_qualified_name": "VercelApi.GetVercelDeploymentFiles@0.1.0", + "description": "Retrieve the file structure of a Vercel deployment.\n\nUse this tool to get the file structure of a Vercel deployment by providing the unique deployment identifier. Useful for analyzing the contents and structure of deployed source code.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_identifier", + "required": true, + "description": "The unique identifier for the deployment to retrieve its file structure.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique deployment identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team performing the request. It is required for team-scoped requests.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listDeploymentFiles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v6/deployments/{id}/files", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "deployment_identifier", + "description": "The unique deployment identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique deployment identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetWebhook.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetWebhook.json new file mode 100644 index 00000000..04050785 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/GetWebhook.json @@ -0,0 +1,172 @@ +{ + "name": "GetWebhook", + "fully_qualified_name": "VercelApi.GetWebhook@0.1.0", + "description": "Retrieve details of a specific webhook using its ID.\n\nUse this tool to obtain information about a specific webhook by providing its ID. It should be called when details are needed for a webhook managed by Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_id", + "required": true, + "description": "The unique identifier of the webhook to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team on whose behalf the request is made. Required to specify the team context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getWebhook'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/webhooks/{id}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "webhook_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ImportResourceToVercel.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ImportResourceToVercel.json new file mode 100644 index 00000000..e4da99e2 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ImportResourceToVercel.json @@ -0,0 +1,752 @@ +{ + "name": "ImportResourceToVercel", + "fully_qualified_name": "VercelApi.ImportResourceToVercel@0.1.0", + "description": "Import or synchronize a resource to Vercel.\n\nThis tool is used to import or update a resource in Vercel's installation. It should be called when resources created externally need to be synchronized with Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration in Vercel. Required to specify which configuration to use when importing the resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_identifier", + "required": true, + "description": "The unique identifier for the resource to be imported or synchronized with Vercel. This ID is used to match the resource between the partner's system and Vercel's system.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "resource_import_details", + "required": false, + "description": "JSON object containing details for resource import, including ownership, product ID, name, status, metadata, billing plan, notifications, and secrets.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ownership": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "owned", + "linked", + "sandbox" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "productId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ready", + "pending", + "onboarding", + "suspended", + "resumed", + "uninstalled", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billingPlan": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "prepayment", + "subscription" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "paymentMethodRequired": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "highlightedDetails": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "effectiveDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "notification": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "level": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "warn", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "href": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "extras": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'import-resource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "resource_import_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ownership": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "owned", + "linked", + "sandbox" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "productId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ready", + "pending", + "onboarding", + "suspended", + "resumed", + "uninstalled", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billingPlan": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "prepayment", + "subscription" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "paymentMethodRequired": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "highlightedDetails": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "effectiveDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "notification": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "level": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "warn", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "href": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "extras": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"productId\",\n \"name\",\n \"status\"\n ],\n \"properties\": {\n \"ownership\": {\n \"type\": \"string\",\n \"enum\": [\n \"owned\",\n \"linked\",\n \"sandbox\"\n ]\n },\n \"productId\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"ready\",\n \"pending\",\n \"onboarding\",\n \"suspended\",\n \"resumed\",\n \"uninstalled\",\n \"error\"\n ]\n },\n \"metadata\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"billingPlan\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"type\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"prepayment\",\n \"subscription\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"paymentMethodRequired\": {\n \"type\": \"boolean\"\n },\n \"cost\": {\n \"type\": \"string\"\n },\n \"details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\"\n ],\n \"additionalProperties\": false\n }\n },\n \"highlightedDetails\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\"\n ],\n \"additionalProperties\": false\n }\n },\n \"effectiveDate\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"notification\": {\n \"type\": \"object\",\n \"required\": [\n \"level\",\n \"title\"\n ],\n \"properties\": {\n \"level\": {\n \"type\": \"string\",\n \"enum\": [\n \"info\",\n \"warn\",\n \"error\"\n ]\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"href\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n }\n },\n \"extras\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"environmentOverrides\": {\n \"type\": \"object\",\n \"description\": \"A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.\",\n \"properties\": {\n \"development\": {\n \"type\": \"string\",\n \"description\": \"Value used for development environment.\"\n },\n \"preview\": {\n \"type\": \"string\",\n \"description\": \"Value used for preview environment.\"\n },\n \"production\": {\n \"type\": \"string\",\n \"description\": \"Value used for production environment.\"\n }\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InitiateProjectTransfer.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InitiateProjectTransfer.json new file mode 100644 index 00000000..4f1386ec --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InitiateProjectTransfer.json @@ -0,0 +1,238 @@ +{ + "name": "InitiateProjectTransfer", + "fully_qualified_name": "VercelApi.InitiateProjectTransfer@0.1.0", + "description": "Initiate a project transfer request between teams.\n\nThis tool initiates a project transfer request from one team to another on Vercel. It returns a code valid for 24 hours, which can be used to accept the transfer via a specified endpoint or claim URL.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The ID or name of the project to transfer between teams.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the project to transfer." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team initiating the project transfer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the project transfer request on behalf of. This is a unique identifier for the team on Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "webhook_callback_url", + "required": false, + "description": "The URL to send a webhook to when the project transfer is accepted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The URL to send a webhook to when the transfer is accepted." + }, + "inferrable": true, + "http_endpoint_parameter_name": "callbackUrl" + }, + { + "name": "webhook_signing_secret", + "required": false, + "description": "The secret key used to sign the webhook payload with HMAC-SHA256 for security verification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The secret to use to sign the webhook payload with HMAC-SHA256." + }, + "inferrable": true, + "http_endpoint_parameter_name": "callbackSecret" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'createProjectTransferRequest'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/projects/{idOrName}/transfer-request", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The ID or name of the project to transfer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the project to transfer." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "callbackUrl", + "tool_parameter_name": "webhook_callback_url", + "description": "The URL to send a webhook to when the transfer is accepted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The URL to send a webhook to when the transfer is accepted." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "callbackSecret", + "tool_parameter_name": "webhook_signing_secret", + "description": "The secret to use to sign the webhook payload with HMAC-SHA256.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The secret to use to sign the webhook payload with HMAC-SHA256." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"callbackUrl\": {\n \"type\": \"string\",\n \"description\": \"The URL to send a webhook to when the transfer is accepted.\"\n },\n \"callbackSecret\": {\n \"type\": \"string\",\n \"description\": \"The secret to use to sign the webhook payload with HMAC-SHA256.\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InitiateUserDeletion.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InitiateUserDeletion.json new file mode 100644 index 00000000..19fa85f4 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InitiateUserDeletion.json @@ -0,0 +1,158 @@ +{ + "name": "InitiateUserDeletion", + "fully_qualified_name": "VercelApi.InitiateUserDeletion@0.1.0", + "description": "Initiates user deletion and sends a confirmation email.\n\nUse this tool to start the deletion process for a user by emailing a confirmation link. The user has to follow the link to complete the deletion.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_deletion_request_body", + "required": true, + "description": "JSON object detailing reasons for deletion. Includes an array of objects with 'slug' and 'description' fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "reasons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Idenitifier slug of the reason why the User account is being deleted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the reason why the User account is being deleted." + } + }, + "description": "Optional array of objects that describe the reason why the User account is being deleted." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'requestDelete'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/user", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "user_deletion_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "reasons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Idenitifier slug of the reason why the User account is being deleted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the reason why the User account is being deleted." + } + }, + "description": "Optional array of objects that describe the reason why the User account is being deleted." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"reasons\": {\n \"type\": \"array\",\n \"description\": \"Optional array of objects that describe the reason why the User account is being deleted.\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object describing the reason why the User account is being deleted.\",\n \"required\": [\n \"slug\",\n \"description\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"slug\": {\n \"type\": \"string\",\n \"description\": \"Idenitifier slug of the reason why the User account is being deleted.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Description of the reason why the User account is being deleted.\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InvalidateAuthToken.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InvalidateAuthToken.json new file mode 100644 index 00000000..234ae00b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InvalidateAuthToken.json @@ -0,0 +1,106 @@ +{ + "name": "InvalidateAuthToken", + "fully_qualified_name": "VercelApi.InvalidateAuthToken@0.1.0", + "description": "Invalidate an authentication token to revoke access.\n\nThis tool is used to invalidate an authentication token, ensuring it is no longer valid for any future HTTP requests. Call this tool when you need to revoke access granted by a specific token.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "token_id", + "required": true, + "description": "The ID of the token to invalidate. Use 'current' to invalidate the token used for this request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the token to invalidate. The special value \\\"current\\\" may be supplied, which invalidates the token that the HTTP request was authenticated with." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tokenId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteAuthToken'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v3/user/tokens/{tokenId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "tokenId", + "tool_parameter_name": "token_id", + "description": "The identifier of the token to invalidate. The special value \\\"current\\\" may be supplied, which invalidates the token that the HTTP request was authenticated with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the token to invalidate. The special value \\\"current\\\" may be supplied, which invalidates the token that the HTTP request was authenticated with." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InvalidateCacheByTags.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InvalidateCacheByTags.json new file mode 100644 index 00000000..24ae974b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InvalidateCacheByTags.json @@ -0,0 +1,245 @@ +{ + "name": "InvalidateCacheByTags", + "fully_qualified_name": "VercelApi.InvalidateCacheByTags@0.1.0", + "description": "Mark cache tags as stale for revalidation in the background.\n\nUse this tool to mark specific cache tags as stale, prompting them to be revalidated during the next request. This is useful when data associated with these tags has changed and needs refreshing.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Specify the project ID or name for which the cache tags should be marked as stale.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectIdOrName" + }, + { + "name": "team_id", + "required": false, + "description": "The Team identifier to execute the request for. Provide the team's unique ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The identifier (slug) for the team to perform the request on their behalf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "cache_invalidation_request", + "required": false, + "description": "JSON object containing 'tags' for cache entry identifiers and a 'target' environment ('production' or 'preview').", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "production", + "preview" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'invalidateByTags'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-cache/invalidate-by-tags", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectIdOrName", + "tool_parameter_name": "project_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "cache_invalidation_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "production", + "preview" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"required\": [\n \"tags\"\n ],\n \"properties\": {\n \"tags\": {\n \"oneOf\": [\n {\n \"items\": {\n \"maxLength\": 256,\n \"type\": \"string\"\n },\n \"maxItems\": 16,\n \"minItems\": 1,\n \"type\": \"array\"\n },\n {\n \"maxLength\": 8196,\n \"type\": \"string\"\n }\n ]\n },\n \"target\": {\n \"enum\": [\n \"production\",\n \"preview\"\n ],\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InviteUserToTeam.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InviteUserToTeam.json new file mode 100644 index 00000000..2fc05ad8 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/InviteUserToTeam.json @@ -0,0 +1,249 @@ +{ + "name": "InviteUserToTeam", + "fully_qualified_name": "VercelApi.InviteUserToTeam@0.1.0", + "description": "Invite a user to join a Vercel team.\n\nThis tool invites a user to join a specified Vercel team. The user issuing the command must be an OWNER of the team. Specify the user with an email or ID; ID takes precedence if both are provided.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier for the Vercel team to which the user is being invited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "user_invitation_details", + "required": true, + "description": "JSON containing user email, role, and project-specific roles for the invitation. Use email to specify the user and assign roles at both team and project levels.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email address of the user to invite" + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR" + ], + "properties": null, + "inner_properties": null, + "description": "The role of the user to invite" + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "Sets the project roles for the invited user" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'inviteUserToTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/members", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "user_invitation_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email address of the user to invite" + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OWNER", + "MEMBER", + "DEVELOPER", + "SECURITY", + "BILLING", + "VIEWER", + "VIEWER_FOR_PLUS", + "CONTRIBUTOR" + ], + "properties": null, + "inner_properties": null, + "description": "The role of the user to invite" + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "Sets the project roles for the invited user" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"email\"\n ],\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"The email address of the user to invite\",\n \"example\": \"john@example.com\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"OWNER\",\n \"MEMBER\",\n \"DEVELOPER\",\n \"SECURITY\",\n \"BILLING\",\n \"VIEWER\",\n \"VIEWER_FOR_PLUS\",\n \"CONTRIBUTOR\"\n ],\n \"description\": \"The role of the user to invite\",\n \"example\": [\n \"OWNER\",\n \"MEMBER\",\n \"DEVELOPER\",\n \"SECURITY\",\n \"BILLING\",\n \"VIEWER\",\n \"VIEWER_FOR_PLUS\",\n \"CONTRIBUTOR\"\n ],\n \"default\": \"MEMBER\"\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\",\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 64,\n \"example\": \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n \"description\": \"The ID of the project.\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_VIEWER\",\n \"PROJECT_DEVELOPER\"\n ],\n \"example\": \"ADMIN\",\n \"description\": \"Sets the project roles for the invited user\"\n }\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/IssueVercelCertificate.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/IssueVercelCertificate.json new file mode 100644 index 00000000..9c5d7ec8 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/IssueVercelCertificate.json @@ -0,0 +1,172 @@ +{ + "name": "IssueVercelCertificate", + "fully_qualified_name": "VercelApi.IssueVercelCertificate@0.1.0", + "description": "Request a new SSL certificate from Vercel.\n\nThis tool is used to issue a new SSL certificate through Vercel's API. It's called when you need to obtain a certificate for secure communication with your Vercel-hosted applications.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": false, + "description": "The identifier for the Vercel team on whose behalf the certificate request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug identifier for cert request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "common_names_for_certificate", + "required": false, + "description": "List of common names (domains) that the SSL certificate should be issued for.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The common names the cert should be issued for" + }, + "inferrable": true, + "http_endpoint_parameter_name": "cns" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'issueCert'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/certs", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "cns", + "tool_parameter_name": "common_names_for_certificate", + "description": "The common names the cert should be issued for", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The common names the cert should be issued for" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"cns\": {\n \"description\": \"The common names the cert should be issued for\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/JoinVercelTeam.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/JoinVercelTeam.json new file mode 100644 index 00000000..4ae8169d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/JoinVercelTeam.json @@ -0,0 +1,139 @@ +{ + "name": "JoinVercelTeam", + "fully_qualified_name": "VercelApi.JoinVercelTeam@0.1.0", + "description": "Join a Vercel team using invite code or team ID.\n\nThis tool allows a user to join a Vercel team by providing an invite code or team ID. It should be called when a user wants to become a member of a specified team on Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique ID of the Vercel team to join. Use this if you have the team ID instead of an invite code.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_invite_code", + "required": false, + "description": "The invite code used to join a specific Vercel team. This is a string value provided to new members for team access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The invite code to join the team." + }, + "inferrable": true, + "http_endpoint_parameter_name": "inviteCode" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'joinTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/members/teams/join", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "inviteCode", + "tool_parameter_name": "team_invite_code", + "description": "The invite code to join the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The invite code to join the team." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"inviteCode\": {\n \"type\": \"string\",\n \"description\": \"The invite code to join the team.\",\n \"example\": \"fisdh38aejkeivn34nslfore9vjtn4ls\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroupMembers.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroupMembers.json new file mode 100644 index 00000000..a13aa4a4 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroupMembers.json @@ -0,0 +1,271 @@ +{ + "name": "ListAccessGroupMembers", + "fully_qualified_name": "VercelApi.ListAccessGroupMembers@0.1.0", + "description": "Retrieve members of a specific access group.\n\nThis tool calls the API to list all members within a specified access group. Use it to retrieve member information for management or review purposes.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "Specify the ID or name of the access group to list its members.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Access Group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "member_limit", + "required": false, + "description": "Specify the maximum number of access group members to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many access group members should be returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "continuation_cursor_for_paging", + "required": false, + "description": "Cursor used to retrieve the next page of access group members.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continuation cursor to retrieve the next page of results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "next" + }, + { + "name": "member_search_query", + "required": false, + "description": "Search for members using their name, username, or email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search project members by their name, username, and email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier for which to list access group members.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug of the team for which you want to list access group members.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listAccessGroupMembers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{idOrName}/members", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "member_limit", + "description": "Limit how many access group members should be returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many access group members should be returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "next", + "tool_parameter_name": "continuation_cursor_for_paging", + "description": "Continuation cursor to retrieve the next page of results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continuation cursor to retrieve the next page of results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search", + "tool_parameter_name": "member_search_query", + "description": "Search project members by their name, username, and email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search project members by their name, username, and email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "The ID or name of the Access Group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Access Group." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroupProjects.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroupProjects.json new file mode 100644 index 00000000..33b35bb5 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroupProjects.json @@ -0,0 +1,238 @@ +{ + "name": "ListAccessGroupProjects", + "fully_qualified_name": "VercelApi.ListAccessGroupProjects@0.1.0", + "description": "Retrieve a list of projects for a given access group.\n\nThis tool should be called to obtain a list of projects associated with a specific access group by providing the group ID or name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_identifier", + "required": true, + "description": "The ID or name of the Access Group to list its projects.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Access Group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "max_project_count", + "required": false, + "description": "Maximum number of access group projects to return. Must be an integer.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many access group projects should be returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "continuation_cursor", + "required": false, + "description": "The continuation cursor used to retrieve the next page of results in a paginated response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continuation cursor to retrieve the next page of results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "next" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of. This specifies which team's access group projects to list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. Specify to filter projects by team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listAccessGroupProjects'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{idOrName}/projects", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "max_project_count", + "description": "Limit how many access group projects should be returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many access group projects should be returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "next", + "tool_parameter_name": "continuation_cursor", + "description": "Continuation cursor to retrieve the next page of results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continuation cursor to retrieve the next page of results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "access_group_identifier", + "description": "The ID or name of the Access Group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Access Group." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroups.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroups.json new file mode 100644 index 00000000..a533cba0 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAccessGroups.json @@ -0,0 +1,337 @@ +{ + "name": "ListAccessGroups", + "fully_qualified_name": "VercelApi.ListAccessGroups@0.1.0", + "description": "Retrieve a list of access groups within Vercel.\n\nUse this tool to obtain a detailed list of all access groups available in your Vercel account.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": false, + "description": "Filter access groups by the specified project ID in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter access groups by project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "search_access_groups_by_name", + "required": false, + "description": "Provide a name or keyword to search for specific access groups.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search for access groups by name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search" + }, + { + "name": "members_inclusion_limit", + "required": false, + "description": "Specify the number of members to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of members to include in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "membersLimit" + }, + { + "name": "max_projects_in_response", + "required": false, + "description": "Specify the maximum number of projects to include in the response list.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of projects to include in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectsLimit" + }, + { + "name": "access_groups_limit", + "required": false, + "description": "Specify the maximum number of access groups to be returned in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many access group should be returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "continuation_cursor_for_next_page", + "required": false, + "description": "A string to retrieve the next page of results using a continuation cursor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continuation cursor to retrieve the next page of results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "next" + }, + { + "name": "team_identifier", + "required": false, + "description": "The ID of the team for which to list access groups. Specify this to perform the request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "A string representing the Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listAccessGroups'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "Filter access groups by project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter access groups by project." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search", + "tool_parameter_name": "search_access_groups_by_name", + "description": "Search for access groups by name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search for access groups by name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "membersLimit", + "tool_parameter_name": "members_inclusion_limit", + "description": "Number of members to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of members to include in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectsLimit", + "tool_parameter_name": "max_projects_in_response", + "description": "Number of projects to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of projects to include in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "access_groups_limit", + "description": "Limit how many access group should be returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many access group should be returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "next", + "tool_parameter_name": "continuation_cursor_for_next_page", + "description": "Continuation cursor to retrieve the next page of results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continuation cursor to retrieve the next page of results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAliases.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAliases.json new file mode 100644 index 00000000..89a06464 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListAliases.json @@ -0,0 +1,370 @@ +{ + "name": "ListAliases", + "fully_qualified_name": "VercelApi.ListAliases@0.1.0", + "description": "Retrieve a list of Vercel aliases for a user or team.\n\nThis tool retrieves a list of aliases for the authenticated Vercel user or team. Optionally, it can filter aliases by a specific domain or project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "filter_by_domain", + "required": false, + "description": "Return only aliases associated with the specified domain name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get only aliases of the given domain name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "created_after_timestamp", + "required": false, + "description": "Return aliases created after this UNIX timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get only aliases created after the provided timestamp" + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "maximum_aliases_to_list", + "required": false, + "description": "Specifies the maximum number of aliases to retrieve in the request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of aliases to list from a request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "project_id_filter", + "required": false, + "description": "Filter to list aliases associated with the specified project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter aliases from the given `projectId`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "aliases_created_after_timestamp", + "required": false, + "description": "Get aliases created after this JavaScript timestamp. Use a timestamp in milliseconds since the epoch.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created after this JavaScript timestamp" + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "get_aliases_before_timestamp", + "required": false, + "description": "Retrieve aliases created before the specified JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created before this JavaScript timestamp" + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "rollback_deployment_id", + "required": false, + "description": "Specify the deployment ID to get aliases that would be rolled back for that deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases that would be rolled back for the given deployment" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rollbackDeploymentId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of. Use this to specify the team whose aliases should be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listAliases'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v4/aliases", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "domain", + "tool_parameter_name": "filter_by_domain", + "description": "Get only aliases of the given domain name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get only aliases of the given domain name" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "from", + "tool_parameter_name": "created_after_timestamp", + "description": "Get only aliases created after the provided timestamp", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get only aliases created after the provided timestamp" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "maximum_aliases_to_list", + "description": "Maximum number of aliases to list from a request", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of aliases to list from a request" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id_filter", + "description": "Filter aliases from the given `projectId`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter aliases from the given `projectId`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "aliases_created_after_timestamp", + "description": "Get aliases created after this JavaScript timestamp", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created after this JavaScript timestamp" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "get_aliases_before_timestamp", + "description": "Get aliases created before this JavaScript timestamp", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases created before this JavaScript timestamp" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rollbackDeploymentId", + "tool_parameter_name": "rollback_deployment_id", + "description": "Get aliases that would be rolled back for the given deployment", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get aliases that would be rolled back for the given deployment" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListDeploymentChecks.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListDeploymentChecks.json new file mode 100644 index 00000000..f7aa9d13 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListDeploymentChecks.json @@ -0,0 +1,172 @@ +{ + "name": "ListDeploymentChecks", + "fully_qualified_name": "VercelApi.ListDeploymentChecks@0.1.0", + "description": "List all checks for a specific deployment.\n\nFetches and lists all checks created for a given deployment using its ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The ID of the deployment to retrieve checks for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to get all checks for" + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The ID of the team to perform the request for. This identifies which team's context is used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to perform the request. This identifies the team under which the deployment was made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getAllChecks'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/deployments/{deploymentId}/checks", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "The deployment to get all checks for", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to get all checks for" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListIntegrationConfigurationProducts.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListIntegrationConfigurationProducts.json new file mode 100644 index 00000000..d977e21f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListIntegrationConfigurationProducts.json @@ -0,0 +1,172 @@ +{ + "name": "ListIntegrationConfigurationProducts", + "fully_qualified_name": "VercelApi.ListIntegrationConfigurationProducts@0.1.0", + "description": "Retrieve products for a specific integration configuration.\n\nUse this tool to list all available products for a given integration configuration. It helps discover resources that can be provisioned for integrations. The response includes product IDs, slugs, names, supported protocols, and metadata requirements.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "ID of the specific integration configuration to list available products for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the integration configuration" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of. It specifies which team's configuration products to list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getConfigurationProducts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/configuration/{id}/products", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "integration_configuration_id", + "description": "ID of the integration configuration", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the integration configuration" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListProjectMembers.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListProjectMembers.json new file mode 100644 index 00000000..80f7af2e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListProjectMembers.json @@ -0,0 +1,304 @@ +{ + "name": "ListProjectMembers", + "fully_qualified_name": "VercelApi.ListProjectMembers@0.1.0", + "description": "Retrieve all members of a specified project on Vercel.\n\nUse this tool to get a list of all team members associated with a particular project in Vercel. Call it when you need to know who is involved in a given project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The ID or name of the project to list members for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "member_limit", + "required": false, + "description": "Specify the maximum number of project members to return. Provide an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many project members should be returned" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "added_since_timestamp", + "required": false, + "description": "Timestamp in milliseconds to include members added since this time.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added since then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "end_time_timestamp", + "required": false, + "description": "The timestamp in milliseconds to include project members added until this time.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added until then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "search_project_members", + "required": false, + "description": "Search for project members by name, username, or email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search project members by their name, username, and email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request on behalf of. This should be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of, identifying the specific team associated with the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getProjectMembers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/members", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "member_limit", + "description": "Limit how many project members should be returned", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit how many project members should be returned" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "added_since_timestamp", + "description": "Timestamp in milliseconds to only include members added since then.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added since then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "end_time_timestamp", + "description": "Timestamp in milliseconds to only include members added until then.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp in milliseconds to only include members added until then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search", + "tool_parameter_name": "search_project_members", + "description": "Search project members by their name, username, and email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search project members by their name, username, and email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The ID or name of the Project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListUserEvents.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListUserEvents.json new file mode 100644 index 00000000..53a44be8 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListUserEvents.json @@ -0,0 +1,403 @@ +{ + "name": "ListUserEvents", + "fully_qualified_name": "VercelApi.ListUserEvents@0.1.0", + "description": "Fetches a list of user-generated events on Vercel.\n\nThis tool retrieves events generated by user actions on Vercel, such as logging in, creating deployments, or joining teams. If a `teamId` is provided, events related to that specific team are returned.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "maximum_items_to_return", + "required": false, + "description": "Maximum number of items that can be returned from the request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of items which may be returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "include_items_since_timestamp", + "required": false, + "description": "Timestamp to only include items created since then. Use ISO 8601 format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp to only include items created since then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "end_time_filter", + "required": false, + "description": "Timestamp to filter events created until this time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp to only include items created until then." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "event_types_filter", + "required": false, + "description": "Comma-delimited list of event types to filter the results by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-delimited list of event \\\"types\\\" to filter the results by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "types" + }, + { + "name": "deprecated_user_id", + "required": false, + "description": "Deprecated. Use 'principal_id' instead. If both 'principal_id' and 'deprecated_user_id' exist, 'principal_id' will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deprecated. Use `principalId` instead. If `principalId` and `userId` both exist, `principalId` will be used." + }, + "inferrable": true, + "http_endpoint_parameter_name": "userId" + }, + { + "name": "filter_by_principal_id", + "required": false, + "description": "Filter events generated by a specific principal when retrieving events for a Team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When retrieving events for a Team, the `principalId` parameter may be specified to filter events generated by a specific principal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "principalId" + }, + { + "name": "project_ids_filter", + "required": false, + "description": "Comma-separated list of project IDs to filter the events by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-delimited list of project IDs to filter the results by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectIds" + }, + { + "name": "include_event_payload", + "required": false, + "description": "Set to 'true' to include the 'payload' field in each event response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to `true`, the response will include the `payload` field for each event." + }, + "inferrable": true, + "http_endpoint_parameter_name": "withPayload" + }, + { + "name": "team_identifier", + "required": false, + "description": "Specify the Team ID to retrieve events related to that team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. Use this to specify which team's events to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'listUserEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v3/events", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "maximum_items_to_return", + "description": "Maximum number of items which may be returned.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of items which may be returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "include_items_since_timestamp", + "description": "Timestamp to only include items created since then.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp to only include items created since then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "end_time_filter", + "description": "Timestamp to only include items created until then.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp to only include items created until then." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "types", + "tool_parameter_name": "event_types_filter", + "description": "Comma-delimited list of event \\\"types\\\" to filter the results by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-delimited list of event \\\"types\\\" to filter the results by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "userId", + "tool_parameter_name": "deprecated_user_id", + "description": "Deprecated. Use `principalId` instead. If `principalId` and `userId` both exist, `principalId` will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deprecated. Use `principalId` instead. If `principalId` and `userId` both exist, `principalId` will be used." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "principalId", + "tool_parameter_name": "filter_by_principal_id", + "description": "When retrieving events for a Team, the `principalId` parameter may be specified to filter events generated by a specific principal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When retrieving events for a Team, the `principalId` parameter may be specified to filter events generated by a specific principal." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectIds", + "tool_parameter_name": "project_ids_filter", + "description": "Comma-delimited list of project IDs to filter the results by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-delimited list of project IDs to filter the results by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "withPayload", + "tool_parameter_name": "include_event_payload", + "description": "When set to `true`, the response will include the `payload` field for each event.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to `true`, the response will include the `payload` field for each event." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListVercelDeployments.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListVercelDeployments.json new file mode 100644 index 00000000..675187c8 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListVercelDeployments.json @@ -0,0 +1,601 @@ +{ + "name": "ListVercelDeployments", + "fully_qualified_name": "VercelApi.ListVercelDeployments@0.1.0", + "description": "Retrieve deployments from Vercel for a user or team.\n\nThis tool fetches the list of deployments for the authenticated user or team from Vercel. It should be called when users need to view their recent deployment history. If a deployment is incomplete, the URL will be null.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_name", + "required": false, + "description": "The name of the deployment to filter results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the deployment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app" + }, + { + "name": "created_after_timestamp", + "required": false, + "description": "Retrieve deployments created after this Date timestamp. Defaults to current time if not specified.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Gets the deployment created after this Date timestamp. (default: current time)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "maximum_deployments_to_list", + "required": false, + "description": "Sets the maximum number of deployments to retrieve in one request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of deployments to list from a request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "filter_by_project_id", + "required": false, + "description": "Filter deployments using a specific project ID or name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments from the given ID or name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "filter_by_project_ids", + "required": false, + "description": "Filter deployments from specified project IDs. Cannot be used with the 'filter_by_project_id' argument.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments from the given project IDs. Cannot be used when projectId is specified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectIds" + }, + { + "name": "filter_by_environment", + "required": false, + "description": "Specify the environment to filter deployments (e.g., 'production', 'staging').", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on the environment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "target" + }, + { + "name": "get_deployments_before_timestamp", + "required": false, + "description": "A timestamp to get deployments created before a specific date. Useful for filtering older deployments. Defaults to the current time if not specified.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Gets the deployment created before this Date timestamp. (default: current time)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "to" + }, + { + "name": "user_filter", + "required": false, + "description": "Filter deployments by the user who created them. Provide a username or user ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter out deployments based on users who have created the deployment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "users" + }, + { + "name": "deployment_since_timestamp", + "required": false, + "description": "Retrieve deployments created after this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get Deployments created after this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "fetch_deployments_before_timestamp", + "required": false, + "description": "Specify a JavaScript timestamp to retrieve deployments created before this time.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get Deployments created before this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "deployment_state_filter", + "required": false, + "description": "Filter deployments by their state, such as `BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, or `CANCELED`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on their state (`BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, `CANCELED`)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "state" + }, + { + "name": "branch_name_filter", + "required": false, + "description": "Specify the branch name to filter deployments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on the branch name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "branch" + }, + { + "name": "filter_by_sha", + "required": false, + "description": "Filter deployments based on the specific SHA value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on the SHA" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sha" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of. Use when filtering deployments by team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug to perform the request on behalf of. Specify which team's deployments to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "filter_by_rollback_candidacy", + "required": false, + "description": "Set to true to filter and include only rollback candidate deployments.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on their rollback candidacy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rollbackCandidate" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDeployments'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v6/deployments", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "app", + "tool_parameter_name": "deployment_name", + "description": "Name of the deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the deployment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "from", + "tool_parameter_name": "created_after_timestamp", + "description": "Gets the deployment created after this Date timestamp. (default: current time)", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Gets the deployment created after this Date timestamp. (default: current time)" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "maximum_deployments_to_list", + "description": "Maximum number of deployments to list from a request.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of deployments to list from a request." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "filter_by_project_id", + "description": "Filter deployments from the given ID or name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments from the given ID or name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectIds", + "tool_parameter_name": "filter_by_project_ids", + "description": "Filter deployments from the given project IDs. Cannot be used when projectId is specified.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments from the given project IDs. Cannot be used when projectId is specified." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "target", + "tool_parameter_name": "filter_by_environment", + "description": "Filter deployments based on the environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on the environment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "to", + "tool_parameter_name": "get_deployments_before_timestamp", + "description": "Gets the deployment created before this Date timestamp. (default: current time)", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Gets the deployment created before this Date timestamp. (default: current time)" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "users", + "tool_parameter_name": "user_filter", + "description": "Filter out deployments based on users who have created the deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter out deployments based on users who have created the deployment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "deployment_since_timestamp", + "description": "Get Deployments created after this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get Deployments created after this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "fetch_deployments_before_timestamp", + "description": "Get Deployments created before this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get Deployments created before this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "state", + "tool_parameter_name": "deployment_state_filter", + "description": "Filter deployments based on their state (`BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, `CANCELED`)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on their state (`BUILDING`, `ERROR`, `INITIALIZING`, `QUEUED`, `READY`, `CANCELED`)" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rollbackCandidate", + "tool_parameter_name": "filter_by_rollback_candidacy", + "description": "Filter deployments based on their rollback candidacy", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on their rollback candidacy" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "branch", + "tool_parameter_name": "branch_name_filter", + "description": "Filter deployments based on the branch name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on the branch name" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sha", + "tool_parameter_name": "filter_by_sha", + "description": "Filter deployments based on the SHA", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter deployments based on the SHA" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListVercelWebhooks.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListVercelWebhooks.json new file mode 100644 index 00000000..2782f940 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ListVercelWebhooks.json @@ -0,0 +1,172 @@ +{ + "name": "ListVercelWebhooks", + "fully_qualified_name": "VercelApi.ListVercelWebhooks@0.1.0", + "description": "Retrieve a list of webhooks from Vercel.\n\nThis tool is used to get all the webhooks associated with a Vercel account. Use this to monitor or manage integrations and callbacks configured in a Vercel environment.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": false, + "description": "The unique identifier for the project to retrieve webhooks from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the Vercel team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier for the team to perform the request on behalf of. This is used to specify which team's webhooks you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getWebhooks'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/webhooks", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/MoveProjectDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/MoveProjectDomain.json new file mode 100644 index 00000000..01be196f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/MoveProjectDomain.json @@ -0,0 +1,256 @@ +{ + "name": "MoveProjectDomain", + "fully_qualified_name": "VercelApi.MoveProjectDomain@0.1.0", + "description": "Transfer a domain from one project to another.\n\nUse this tool to move a project's domain to a different project, and optionally transfer redirects associated with that domain.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Provide the unique project identifier or the project name for the domain transfer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "project_domain_name", + "required": true, + "description": "The domain name of the project to be moved to another project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "target_project_id", + "required": false, + "description": "The unique identifier of the target project to which the domain will be moved.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "projectId": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique target project identifier" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'moveProjectDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/domains/{domain}/move", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "project_domain_name", + "description": "The project domain name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "target_project_id", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "projectId": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique target project identifier" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"required\": [\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"description\": \"The unique target project identifier\",\n \"example\": \"prj_XLKmu1DyR1eY7zq8UgeRKbA7yVLA\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/NotifyVercelOfUpdates.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/NotifyVercelOfUpdates.json new file mode 100644 index 00000000..fd6b98f9 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/NotifyVercelOfUpdates.json @@ -0,0 +1,157 @@ +{ + "name": "NotifyVercelOfUpdates", + "fully_qualified_name": "VercelApi.NotifyVercelOfUpdates@0.1.0", + "description": "Send update notifications to Vercel for installations or resources.\n\nUse this tool to notify Vercel of changes to installations or resources. Trigger 'resource.updated' events when a resource linked to Vercel is modified, such as renaming a database or suspending a resource. Trigger 'installation.updated' events when an installation's billing plan changes without Vercel's involvement.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration. It links the notification to the specific Vercel installation or resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "notification_data", + "required": true, + "description": "JSON object containing event details, specifying the type of update ('resource.updated' or 'installation.updated') and relevant data.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "event": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create-event'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/events", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "notification_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "event": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"event\"\n ],\n \"properties\": {\n \"event\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"installation.updated\"\n ]\n },\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"The installation-level billing plan ID\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"resource.updated\"\n ]\n },\n \"productId\": {\n \"type\": \"string\",\n \"description\": \"Partner-provided product slug or id\"\n },\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner provided resource ID\"\n }\n },\n \"required\": [\n \"type\",\n \"productId\",\n \"resourceId\"\n ],\n \"additionalProperties\": false\n }\n ]\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PauseProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PauseProject.json new file mode 100644 index 00000000..c7cc4c8b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PauseProject.json @@ -0,0 +1,172 @@ +{ + "name": "PauseProject", + "fully_qualified_name": "VercelApi.PauseProject@0.1.0", + "description": "Pause a Vercel project by its ID.\n\nUse this tool to pause a Vercel project by providing its project ID. This will disable auto-assigning custom production domains and block active Production Deployments if applicable.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the Vercel project you wish to pause.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'pauseProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{projectId}/pause", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "The unique project identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PromoteDeploymentToProduction.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PromoteDeploymentToProduction.json new file mode 100644 index 00000000..7ca0d34b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PromoteDeploymentToProduction.json @@ -0,0 +1,205 @@ +{ + "name": "PromoteDeploymentToProduction", + "fully_qualified_name": "VercelApi.PromoteDeploymentToProduction@0.1.0", + "description": "Promotes a deployment to production without rebuilding it.\n\nUse this tool to promote an existing deployment to production on Vercel. This action does not rebuild the deployment. To rebuild, use the create-deployments endpoint instead.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier of the project associated with the deployment to promote.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "deployment_identifier", + "required": true, + "description": "The ID of the deployment to be promoted to production. It should be a valid string representing the deployment ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made. It should be a string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the promotion request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'requestPromote'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v10/projects/{projectId}/promote/{deploymentId}", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseDomain.json new file mode 100644 index 00000000..f98a3768 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseDomain.json @@ -0,0 +1,382 @@ +{ + "name": "PurchaseDomain", + "fully_qualified_name": "VercelApi.PurchaseDomain@0.1.0", + "description": "Facilitates the purchase of a specified domain.\n\nCall this tool to purchase a domain through Vercel's new domain acquisition endpoints.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_purchase_details", + "required": true, + "description": "A JSON object containing details for domain purchase, including `name`, `expectedPrice`, `renew`, and registrant information like `country`, `firstName`, `lastName`, `address1`, `city`, `state`, `postalCode`, `phone`, and `email`.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain name to purchase." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The price you expect to be charged for the purchase." + }, + "renew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the domain should be automatically renewed." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The country of the domain registrant" + }, + "orgName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The company name of the domain registrant" + }, + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The first name of the domain registrant" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The last name of the domain registrant" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The street address of the domain registrant" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The city of the domain registrant" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The state of the domain registrant" + }, + "postalCode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The postal code of the domain registrant" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The phone number of the domain registrant" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the domain registrant" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the domain purchase request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to perform the purchase on behalf of. This identifies the team within Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'buyDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v5/domains/buy", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_purchase_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain name to purchase." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The price you expect to be charged for the purchase." + }, + "renew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the domain should be automatically renewed." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The country of the domain registrant" + }, + "orgName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The company name of the domain registrant" + }, + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The first name of the domain registrant" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The last name of the domain registrant" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The street address of the domain registrant" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The city of the domain registrant" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The state of the domain registrant" + }, + "postalCode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The postal code of the domain registrant" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The phone number of the domain registrant" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the domain registrant" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"country\",\n \"firstName\",\n \"lastName\",\n \"address1\",\n \"city\",\n \"state\",\n \"postalCode\",\n \"phone\",\n \"email\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The domain name to purchase.\",\n \"type\": \"string\",\n \"example\": \"example.com\"\n },\n \"expectedPrice\": {\n \"description\": \"The price you expect to be charged for the purchase.\",\n \"type\": \"number\",\n \"example\": 10\n },\n \"renew\": {\n \"description\": \"Indicates whether the domain should be automatically renewed.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"country\": {\n \"description\": \"The country of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"US\"\n },\n \"orgName\": {\n \"description\": \"The company name of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"Acme Inc.\"\n },\n \"firstName\": {\n \"description\": \"The first name of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"Jane\"\n },\n \"lastName\": {\n \"description\": \"The last name of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"Doe\"\n },\n \"address1\": {\n \"description\": \"The street address of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"340 S Lemon Ave Suite 4133\"\n },\n \"city\": {\n \"description\": \"The city of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"San Francisco\"\n },\n \"state\": {\n \"description\": \"The state of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"postalCode\": {\n \"description\": \"The postal code of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"91789\"\n },\n \"phone\": {\n \"description\": \"The phone number of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"+1.4158551452\"\n },\n \"email\": {\n \"description\": \"The email of the domain registrant\",\n \"type\": \"string\",\n \"example\": \"jane.doe@someplace.com\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseDomainVercel.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseDomainVercel.json new file mode 100644 index 00000000..df56e258 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseDomainVercel.json @@ -0,0 +1,448 @@ +{ + "name": "PurchaseDomainVercel", + "fully_qualified_name": "VercelApi.PurchaseDomainVercel@0.1.0", + "description": "Purchase a domain with Vercel's API.\n\nThis tool allows users to purchase a single domain using Vercel's API. It should be called when a user wants to buy a domain name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name that you wish to purchase using Vercel's API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "domain_purchase_request_body", + "required": true, + "description": "JSON payload containing details of the domain purchase: auto-renew flag, number of years, expected price, and contact information. Example structure includes `autoRenew` (boolean), `years` (number), `expectedPrice` (number), and `contactInformation` (JSON with fields like `firstName`, `lastName`, etc.).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "autoRenew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." + }, + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to purchase the domain for." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "additional": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_id", + "required": false, + "description": "The unique identifier for the team under which the domain will be purchased. This is expected to be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'buySingleDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/buy", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_purchase_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "autoRenew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." + }, + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to purchase the domain for." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "additional": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"autoRenew\",\n \"years\",\n \"expectedPrice\",\n \"contactInformation\"\n ],\n \"properties\": {\n \"autoRenew\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint.\"\n },\n \"years\": {\n \"type\": \"number\",\n \"description\": \"The number of years to purchase the domain for.\"\n },\n \"expectedPrice\": {\n \"type\": \"number\",\n \"description\": \"The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain.\",\n \"minimum\": 0.01\n },\n \"contactInformation\": {\n \"type\": \"object\",\n \"required\": [\n \"firstName\",\n \"lastName\",\n \"email\",\n \"phone\",\n \"address1\",\n \"city\",\n \"state\",\n \"zip\",\n \"country\"\n ],\n \"properties\": {\n \"firstName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"lastName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"email\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1\n },\n \"phone\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n },\n \"address1\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"address2\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"city\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"state\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"zip\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"country\": {\n \"type\": \"string\",\n \"description\": \"A valid ISO 3166-1 alpha-2 country code\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^[A-Z]{2}$\"\n },\n \"companyName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"fax\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n },\n \"additional\": {\n \"type\": \"object\",\n \"properties\": {}\n }\n },\n \"additionalProperties\": false,\n \"description\": \"The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseMultipleDomains.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseMultipleDomains.json new file mode 100644 index 00000000..c218fdc0 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PurchaseMultipleDomains.json @@ -0,0 +1,449 @@ +{ + "name": "PurchaseMultipleDomains", + "fully_qualified_name": "VercelApi.PurchaseMultipleDomains@0.1.0", + "description": "Purchase multiple domains simultaneously.\n\nUse this tool to buy several domains at once through Vercel's service. It should be called when a user wants to acquire multiple domain names in a single request.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_purchase_details", + "required": true, + "description": "JSON object containing domain details and contact information for purchasing domains in bulk. Includes domain names, auto-renew settings, purchase duration, expected price, and contact details required for registration.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "domains": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "domainName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoRenew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." + }, + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to purchase the domain for." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + } + }, + "description": null + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "additional": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_id", + "required": false, + "description": "The unique identifier for the team under which the domains will be purchased.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'buyDomains'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/buy", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_purchase_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "domains": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "domainName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoRenew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." + }, + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to purchase the domain for." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + } + }, + "description": null + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "additional": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"domains\",\n \"contactInformation\"\n ],\n \"properties\": {\n \"domains\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"domainName\",\n \"autoRenew\",\n \"years\",\n \"expectedPrice\"\n ],\n \"properties\": {\n \"domainName\": {\n \"type\": \"string\"\n },\n \"autoRenew\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint.\"\n },\n \"years\": {\n \"type\": \"number\",\n \"description\": \"The number of years to purchase the domain for.\"\n },\n \"expectedPrice\": {\n \"type\": \"number\",\n \"description\": \"The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain.\",\n \"minimum\": 0.01\n }\n },\n \"additionalProperties\": false\n }\n },\n \"contactInformation\": {\n \"type\": \"object\",\n \"required\": [\n \"firstName\",\n \"lastName\",\n \"email\",\n \"phone\",\n \"address1\",\n \"city\",\n \"state\",\n \"zip\",\n \"country\"\n ],\n \"properties\": {\n \"firstName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"lastName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"email\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1\n },\n \"phone\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n },\n \"address1\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"address2\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"city\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"state\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"zip\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"country\": {\n \"type\": \"string\",\n \"description\": \"A valid ISO 3166-1 alpha-2 country code\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^[A-Z]{2}$\"\n },\n \"companyName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"fax\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n },\n \"additional\": {\n \"type\": \"object\",\n \"properties\": {}\n }\n },\n \"additionalProperties\": false,\n \"description\": \"The contact information for the domain. Some TLDs require additional contact information. Use the [Get contact info schema](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-contact-info-schema) endpoint to retrieve the required fields.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PushEdgeConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PushEdgeConfig.json new file mode 100644 index 00000000..61eab5c2 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/PushEdgeConfig.json @@ -0,0 +1,190 @@ +{ + "name": "PushEdgeConfig", + "fully_qualified_name": "VercelApi.PushEdgeConfig@0.1.0", + "description": "Push configuration data to Edge Config for syncing.\n\nUse this tool to push configuration data into the Edge Config when Edge Config syncing is enabled. It is used to update the relevant configurations for experimentation through Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration. Use this to specify which configuration to push to Edge Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_identifier", + "required": true, + "description": "The ID of the resource for the configuration data to be pushed. Required for identifying the target Edge Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "configuration_data_json", + "required": false, + "description": "The JSON data to be pushed into the Edge Config. This includes key-value pairs for configuration.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint ''.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/edge-config", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "configuration_data_json", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"data\"\n ],\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"additionalProperties\": {}\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/QueryArtifactsInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/QueryArtifactsInfo.json new file mode 100644 index 00000000..5aa51dfd --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/QueryArtifactsInfo.json @@ -0,0 +1,172 @@ +{ + "name": "QueryArtifactsInfo", + "fully_qualified_name": "VercelApi.QueryArtifactsInfo@0.1.0", + "description": "Retrieve detailed information about multiple artifacts.\n\nThis tool queries detailed information about an array of artifacts. It should be called when you need specifics or insights regarding multiple artifacts from the Vercel platform.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "artifact_hashes", + "required": true, + "description": "An array of artifact hashes to query information for.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "artifact hashes" + }, + "inferrable": true, + "http_endpoint_parameter_name": "hashes" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team for which the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'artifactQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/artifacts", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "hashes", + "tool_parameter_name": "artifact_hashes", + "description": "artifact hashes", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "artifact hashes" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"hashes\"\n ],\n \"properties\": {\n \"hashes\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"artifact hashes\",\n \"type\": \"array\",\n \"example\": [\n \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n \"34HKQaOmR5t5Uy6vasdasdasdasd\"\n ]\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ReadAccessGroup.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ReadAccessGroup.json new file mode 100644 index 00000000..3d8bdafc --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/ReadAccessGroup.json @@ -0,0 +1,172 @@ +{ + "name": "ReadAccessGroup", + "fully_qualified_name": "VercelApi.ReadAccessGroup@0.1.0", + "description": "Retrieve details of a specific access group.\n\nUse this tool to fetch information about an access group by its ID or name. It helps in obtaining the detailed configuration and properties of the specific access group.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "The ID or name of the access group to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to perform the request on behalf of the specified team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'readAccessGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{idOrName}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RecordCacheEvents.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RecordCacheEvents.json new file mode 100644 index 00000000..76e71185 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RecordCacheEvents.json @@ -0,0 +1,332 @@ +{ + "name": "RecordCacheEvents", + "fully_qualified_name": "VercelApi.RecordCacheEvents@0.1.0", + "description": "Record artifacts cache usage events for Vercel.\n\nUse this tool to log cache usage events, including types 'HIT' or 'MISS', and sources 'LOCAL' or 'REMOTE'. Useful for tracking cache performance and usage.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cache_usage_events", + "required": true, + "description": "An array of cache usage events, each with `sessionId`, `source`, `event`, `hash`, and optionally `duration` for `HIT` events. Use to log `HIT` or `MISS` events with `LOCAL` or `REMOTE` sources.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "sessionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A UUID (universally unique identifer) for the session that generated this event." + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "LOCAL", + "REMOTE" + ], + "properties": null, + "inner_properties": null, + "description": "One of `LOCAL` or `REMOTE`. `LOCAL` specifies that the cache event was from the user's filesystem cache. `REMOTE` specifies that the cache event is from a remote cache." + }, + "event": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "HIT", + "MISS" + ], + "properties": null, + "inner_properties": null, + "description": "One of `HIT` or `MISS`. `HIT` specifies that a cached artifact for `hash` was found in the cache. `MISS` specifies that a cached artifact with `hash` was not found." + }, + "hash": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The artifact hash" + }, + "duration": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time taken to generate the artifact. This should be sent as a body parameter on `HIT` events." + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of. Used to specify which team's cache usage events are being recorded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. It identifies the specific team within Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "ci_environment", + "required": false, + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The continuous integration or delivery environment where this artifact is downloaded." + }, + "inferrable": true, + "http_endpoint_parameter_name": "x-artifact-client-ci" + }, + { + "name": "is_interactive_shell", + "required": false, + "description": "Set to 1 if the client is an interactive shell, otherwise set to 0.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "1 if the client is an interactive shell. Otherwise 0" + }, + "inferrable": true, + "http_endpoint_parameter_name": "x-artifact-client-interactive" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'recordEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/artifacts/events", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "x-artifact-client-ci", + "tool_parameter_name": "ci_environment", + "description": "The continuous integration or delivery environment where this artifact is downloaded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The continuous integration or delivery environment where this artifact is downloaded." + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "x-artifact-client-interactive", + "tool_parameter_name": "is_interactive_shell", + "description": "1 if the client is an interactive shell. Otherwise 0", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "1 if the client is an interactive shell. Otherwise 0" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "cache_usage_events", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "sessionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A UUID (universally unique identifer) for the session that generated this event." + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "LOCAL", + "REMOTE" + ], + "properties": null, + "inner_properties": null, + "description": "One of `LOCAL` or `REMOTE`. `LOCAL` specifies that the cache event was from the user's filesystem cache. `REMOTE` specifies that the cache event is from a remote cache." + }, + "event": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "HIT", + "MISS" + ], + "properties": null, + "inner_properties": null, + "description": "One of `HIT` or `MISS`. `HIT` specifies that a cached artifact for `hash` was found in the cache. `MISS` specifies that a cached artifact with `hash` was not found." + }, + "hash": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The artifact hash" + }, + "duration": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time taken to generate the artifact. This should be sent as a body parameter on `HIT` events." + } + }, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"sessionId\",\n \"source\",\n \"hash\",\n \"event\"\n ],\n \"properties\": {\n \"sessionId\": {\n \"type\": \"string\",\n \"description\": \"A UUID (universally unique identifer) for the session that generated this event.\"\n },\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\n \"LOCAL\",\n \"REMOTE\"\n ],\n \"description\": \"One of `LOCAL` or `REMOTE`. `LOCAL` specifies that the cache event was from the user's filesystem cache. `REMOTE` specifies that the cache event is from a remote cache.\"\n },\n \"event\": {\n \"type\": \"string\",\n \"enum\": [\n \"HIT\",\n \"MISS\"\n ],\n \"description\": \"One of `HIT` or `MISS`. `HIT` specifies that a cached artifact for `hash` was found in the cache. `MISS` specifies that a cached artifact with `hash` was not found.\"\n },\n \"hash\": {\n \"type\": \"string\",\n \"example\": \"12HKQaOmR5t5Uy6vdcQsNIiZgHGB\",\n \"description\": \"The artifact hash\"\n },\n \"duration\": {\n \"type\": \"number\",\n \"description\": \"The time taken to generate the artifact. This should be sent as a body parameter on `HIT` events.\",\n \"example\": 400\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveBypassRule.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveBypassRule.json new file mode 100644 index 00000000..8714d8c3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveBypassRule.json @@ -0,0 +1,287 @@ +{ + "name": "RemoveBypassRule", + "fully_qualified_name": "VercelApi.RemoveBypassRule@0.1.0", + "description": "Removes a bypass rule from the firewall.\n\nUse this tool to remove a system bypass rule from the Vercel firewall, ensuring that specific IPs can no longer bypass the security restrictions.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the project from which to remove the bypass rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug indicating which team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "bypass_rule_details", + "required": false, + "description": "JSON containing the details for removing the bypass. Includes domain, source IP, project scope, and notes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "domain": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "projectScope": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "sourceIp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "allSources": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeBypassIp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/bypass", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bypass_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "domain": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "projectScope": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "sourceIp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "allSources": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"oneOf\": [\n {\n \"required\": [\n \"domain\"\n ]\n },\n {\n \"required\": [\n \"projectScope\"\n ]\n }\n ],\n \"properties\": {\n \"domain\": {\n \"type\": \"string\",\n \"pattern\": \"([a-z]+[a-z.]+)$\",\n \"maxLength\": 2544\n },\n \"projectScope\": {\n \"type\": \"boolean\"\n },\n \"sourceIp\": {\n \"type\": \"string\"\n },\n \"allSources\": {\n \"type\": \"boolean\"\n },\n \"note\": {\n \"type\": \"string\",\n \"maxLength\": 500\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveCertificate.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveCertificate.json new file mode 100644 index 00000000..53197f32 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveCertificate.json @@ -0,0 +1,172 @@ +{ + "name": "RemoveCertificate", + "fully_qualified_name": "VercelApi.RemoveCertificate@0.1.0", + "description": "Remove a certificate from Vercel using its ID.\n\nThis tool removes a specific certificate from a Vercel account identified by its ID. It should be called when you need to delete an existing certificate to manage SSL/TLS configurations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "certificate_id", + "required": true, + "description": "The unique identifier of the certificate to remove.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The cert id to remove" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the removal request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeCert'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/certs/{id}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "certificate_id", + "description": "The cert id to remove", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The cert id to remove" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveCustomEnvironment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveCustomEnvironment.json new file mode 100644 index 00000000..346ef211 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveCustomEnvironment.json @@ -0,0 +1,238 @@ +{ + "name": "RemoveCustomEnvironment", + "fully_qualified_name": "VercelApi.RemoveCustomEnvironment@0.1.0", + "description": "Remove a specified custom environment from a project.\n\nThis tool removes a custom environment from a project, excluding 'Production' or 'Preview'. Use it when you need to delete a specific environment from a Vercel project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or the project name to target the environment removal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "custom_environment_identifier", + "required": true, + "description": "The unique identifier for the custom environment within the project to be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "environmentSlugOrId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to make the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf to perform the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "delete_unassigned_environment_variables", + "required": false, + "description": "Delete environment variables that are not assigned to any environments when set to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Delete Environment Variables that are not assigned to any environments." + }, + "inferrable": true, + "http_endpoint_parameter_name": "deleteUnassignedEnvironmentVariables" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeCustomEnvironment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "environmentSlugOrId", + "tool_parameter_name": "custom_environment_identifier", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deleteUnassignedEnvironmentVariables", + "tool_parameter_name": "delete_unassigned_environment_variables", + "description": "Delete Environment Variables that are not assigned to any environments.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Delete Environment Variables that are not assigned to any environments." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"deleteUnassignedEnvironmentVariables\": {\n \"description\": \"Delete Environment Variables that are not assigned to any environments.\",\n \"type\": \"boolean\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveDnsRecord.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveDnsRecord.json new file mode 100644 index 00000000..3f89fcc1 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveDnsRecord.json @@ -0,0 +1,205 @@ +{ + "name": "RemoveDnsRecord", + "fully_qualified_name": "VercelApi.RemoveDnsRecord@0.1.0", + "description": "Removes an existing DNS record from a domain.\n\nUse this tool to remove a DNS record from a specified domain. Useful when you need to delete outdated or incorrect DNS entries.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain from which the DNS record will be removed. Provide the full domain name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "dns_record_id", + "required": true, + "description": "The unique identifier of the DNS record to be removed. Required for specifying which record to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "recordId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the DNS record is removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeRecord'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/domains/{domain}/records/{recordId}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recordId", + "tool_parameter_name": "dns_record_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveProjectDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveProjectDomain.json new file mode 100644 index 00000000..aba8d326 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveProjectDomain.json @@ -0,0 +1,238 @@ +{ + "name": "RemoveProjectDomain", + "fully_qualified_name": "VercelApi.RemoveProjectDomain@0.1.0", + "description": "Removes a domain from a specified project.\n\nUse this tool to remove a domain from a Vercel project by specifying the project's ID or name along with the domain name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique project identifier or name to specify which project's domain is to be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "project_domain_name", + "required": true, + "description": "The domain name of the project to be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier of the team to perform the request on behalf of. Used to specify which team's project domain should be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "remove_redirects", + "required": false, + "description": "Set to true to remove all domains from the project that redirect to the domain being removed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to remove all domains from this project that redirect to the domain being removed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "removeRedirects" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeProjectDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "project_domain_name", + "description": "The project domain name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "removeRedirects", + "tool_parameter_name": "remove_redirects", + "description": "Whether to remove all domains from this project that redirect to the domain being removed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to remove all domains from this project that redirect to the domain being removed." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"removeRedirects\": {\n \"type\": \"boolean\",\n \"description\": \"Whether to remove all domains from this project that redirect to the domain being removed.\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveProjectMember.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveProjectMember.json new file mode 100644 index 00000000..1822df82 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveProjectMember.json @@ -0,0 +1,205 @@ +{ + "name": "RemoveProjectMember", + "fully_qualified_name": "VercelApi.RemoveProjectMember@0.1.0", + "description": "Removes a member from a specific project.\n\nThis tool removes a specified member from a project. It should be used when you need to revoke a member's access to a project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The ID or name of the project from which the member will be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "user_id", + "required": true, + "description": "The unique user ID of the member to be removed from the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user ID of the member." + }, + "inferrable": true, + "http_endpoint_parameter_name": "uid" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made. This should be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug used to identify the Team for which the request is being made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeProjectMember'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/members/{uid}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The ID or name of the Project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID or name of the Project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "uid", + "tool_parameter_name": "user_id", + "description": "The user ID of the member.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user ID of the member." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveTeamMember.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveTeamMember.json new file mode 100644 index 00000000..4366d4f1 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveTeamMember.json @@ -0,0 +1,172 @@ +{ + "name": "RemoveTeamMember", + "fully_qualified_name": "VercelApi.RemoveTeamMember@0.1.0", + "description": "Remove or dismiss a team member or leave a team.\n\nThis tool removes a team member from a team, dismisses a user who requested access, or allows a user to leave a team on Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_id", + "required": true, + "description": "The unique identifier of the user to be removed or dismissed from the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user ID of the member." + }, + "inferrable": true, + "http_endpoint_parameter_name": "uid" + }, + { + "name": "team_id", + "required": true, + "description": "The ID of the team from which to remove or dismiss a member, or leave.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "new_default_team_id", + "required": false, + "description": "The ID of the team to set as the new default team for the Northstar user when removing another team member.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the team to set as the new default team for the Northstar user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "newDefaultTeamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'removeTeamMember'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/members/{uid}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "newDefaultTeamId", + "tool_parameter_name": "new_default_team_id", + "description": "The ID of the team to set as the new default team for the Northstar user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the team to set as the new default team for the Northstar user." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "uid", + "tool_parameter_name": "user_id", + "description": "The user ID of the member.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user ID of the member." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveVercelConfiguration.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveVercelConfiguration.json new file mode 100644 index 00000000..78ae8a8d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RemoveVercelConfiguration.json @@ -0,0 +1,172 @@ +{ + "name": "RemoveVercelConfiguration", + "fully_qualified_name": "VercelApi.RemoveVercelConfiguration@0.1.0", + "description": "Delete a Vercel configuration by ID.\n\nUse this tool to remove a specific Vercel configuration and its associated resources by providing the configuration ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "configuration_id", + "required": true, + "description": "The unique identifier of the Vercel configuration to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on behalf of which the configuration is removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug representing the Vercel team to perform the action on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'deleteConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/configuration/{id}", + "http_method": "DELETE", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RenewDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RenewDomain.json new file mode 100644 index 00000000..ad3a3615 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RenewDomain.json @@ -0,0 +1,416 @@ +{ + "name": "RenewDomain", + "fully_qualified_name": "VercelApi.RenewDomain@0.1.0", + "description": "Renews a domain registration through Vercel.\n\n", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to be renewed, in string format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "domain_renewal_details", + "required": true, + "description": "JSON object with details for renewing a domain, including years, expected price, and contact info.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to renew the domain for." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team that owns the domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'renewDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/renew", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_renewal_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to renew the domain for." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"years\",\n \"expectedPrice\"\n ],\n \"properties\": {\n \"years\": {\n \"type\": \"number\",\n \"description\": \"The number of years to renew the domain for.\"\n },\n \"expectedPrice\": {\n \"type\": \"number\",\n \"description\": \"The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain.\",\n \"minimum\": 0.01\n },\n \"contactInformation\": {\n \"type\": \"object\",\n \"required\": [\n \"firstName\",\n \"lastName\",\n \"email\",\n \"phone\",\n \"address1\",\n \"city\",\n \"state\",\n \"zip\",\n \"country\"\n ],\n \"properties\": {\n \"firstName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"lastName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"email\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1\n },\n \"phone\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n },\n \"address1\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"address2\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"city\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"state\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"zip\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"country\": {\n \"type\": \"string\",\n \"description\": \"A valid ISO 3166-1 alpha-2 country code\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^[A-Z]{2}$\"\n },\n \"companyName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"fax\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RequestTeamAccess.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RequestTeamAccess.json new file mode 100644 index 00000000..eceb5e4e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RequestTeamAccess.json @@ -0,0 +1,271 @@ +{ + "name": "RequestTeamAccess", + "fully_qualified_name": "VercelApi.RequestTeamAccess@0.1.0", + "description": "Request to join a team on Vercel.\n\nThis tool allows users to request access to a specific team on Vercel as a member. The request needs to be approved by a team owner, and only 10 users can have pending requests for a team at the same time.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier of the Vercel team you want to join.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "join_request_details", + "required": true, + "description": "JSON containing details of the join request, such as origin, repository info, and user ID. Required fields include 'origin'. Optional fields include 'commitId', 'repoId', 'repoPath', 'gitUserId', and 'gitUserLogin'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "joinedFrom": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "import", + "teams", + "github", + "gitlab", + "bitbucket", + "feedback", + "organization-teams" + ], + "properties": null, + "inner_properties": null, + "description": "The origin of the request." + }, + "commitId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The commit sha if the origin is a git provider." + }, + "repoId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the repository for the given Git provider." + }, + "repoPath": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the repository for the given Git provider." + }, + "gitUserId": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Git account of the user who requests access." + }, + "gitUserLogin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The login name for the Git account of the user who requests access." + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'requestAccessToTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/request", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "join_request_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "joinedFrom": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "import", + "teams", + "github", + "gitlab", + "bitbucket", + "feedback", + "organization-teams" + ], + "properties": null, + "inner_properties": null, + "description": "The origin of the request." + }, + "commitId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The commit sha if the origin is a git provider." + }, + "repoId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the repository for the given Git provider." + }, + "repoPath": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the repository for the given Git provider." + }, + "gitUserId": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Git account of the user who requests access." + }, + "gitUserLogin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The login name for the Git account of the user who requests access." + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"joinedFrom\"\n ],\n \"properties\": {\n \"joinedFrom\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"origin\"\n ],\n \"properties\": {\n \"origin\": {\n \"type\": \"string\",\n \"enum\": [\n \"import\",\n \"teams\",\n \"github\",\n \"gitlab\",\n \"bitbucket\",\n \"feedback\",\n \"organization-teams\"\n ],\n \"description\": \"The origin of the request.\",\n \"example\": \"github\"\n },\n \"commitId\": {\n \"type\": \"string\",\n \"description\": \"The commit sha if the origin is a git provider.\",\n \"example\": \"f498d25d8bd654b578716203be73084b31130cd7\"\n },\n \"repoId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the repository for the given Git provider.\",\n \"example\": \"67753070\"\n },\n \"repoPath\": {\n \"type\": \"string\",\n \"description\": \"The path to the repository for the given Git provider.\",\n \"example\": \"jane-doe/example\"\n },\n \"gitUserId\": {\n \"description\": \"The ID of the Git account of the user who requests access.\",\n \"example\": 103053343,\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"number\"\n }\n ]\n },\n \"gitUserLogin\": {\n \"type\": \"string\",\n \"description\": \"The login name for the Git account of the user who requests access.\",\n \"example\": \"jane-doe\"\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RequestVercelInvoiceRefund.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RequestVercelInvoiceRefund.json new file mode 100644 index 00000000..31fd47d0 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RequestVercelInvoiceRefund.json @@ -0,0 +1,172 @@ +{ + "name": "RequestVercelInvoiceRefund", + "fully_qualified_name": "VercelApi.RequestVercelInvoiceRefund@0.1.0", + "description": "Request a refund for an invoice in Vercel.\n\nUse this tool to request a refund for an invoice created via the Submit Invoice API in Vercel. Call this when a refund is necessary.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "vercel_integration_configuration_id", + "required": true, + "description": "The unique identifier for the Vercel integration configuration related to the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "invoice_id", + "required": true, + "description": "The unique identifier for the invoice for which the refund is requested. This ID is obtained from the invoice creation process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoiceId" + }, + { + "name": "invoice_refund_request_body", + "required": true, + "description": "A JSON object containing the details required for the refund request, including refund reason and any additional comments.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update-invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/invoices/{invoiceId}/actions", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "vercel_integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoiceId", + "tool_parameter_name": "invoice_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_refund_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"refund\"\n ]\n },\n \"reason\": {\n \"type\": \"string\",\n \"description\": \"Refund reason.\"\n },\n \"total\": {\n \"description\": \"The total amount to be refunded. Must be less than or equal to the total amount of the invoice.\",\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\"\n }\n },\n \"required\": [\n \"action\",\n \"reason\",\n \"total\"\n ],\n \"additionalProperties\": false\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RerequestCheck.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RerequestCheck.json new file mode 100644 index 00000000..3ef97888 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RerequestCheck.json @@ -0,0 +1,238 @@ +{ + "name": "RerequestCheck", + "fully_qualified_name": "VercelApi.RerequestCheck@0.1.0", + "description": "Retries a failed deployment check.\n\nUse this tool to retry a specific deployment check that has failed. Ideal when you need to manually reinvoke a check due to a transient failure or updated conditions.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The ID of the deployment for which the check needs to be rerun. This specifies the which specific deployment's check is to be retried.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to rerun the check for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "check_to_rerun_id", + "required": true, + "description": "The ID of the check you want to rerun. This identifies the specific failed check to retry.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The check to rerun" + }, + "inferrable": true, + "http_endpoint_parameter_name": "checkId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of. It specifies which team's context the request should be executed in.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The identifier for the team to perform the check rerequest on behalf of. Use the team's slug format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "mark_check_as_running", + "required": false, + "description": "Mark the check as running if set to true when re-requested.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mark the check as running" + }, + "inferrable": true, + "http_endpoint_parameter_name": "autoUpdate" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'rerequestCheck'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/deployments/{deploymentId}/checks/{checkId}/rerequest", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "autoUpdate", + "tool_parameter_name": "mark_check_as_running", + "description": "Mark the check as running", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mark the check as running" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "The deployment to rerun the check for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to rerun the check for." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "checkId", + "tool_parameter_name": "check_to_rerun_id", + "description": "The check to rerun", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The check to rerun" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveAuthTokenMetadata.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveAuthTokenMetadata.json new file mode 100644 index 00000000..64f77149 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveAuthTokenMetadata.json @@ -0,0 +1,106 @@ +{ + "name": "RetrieveAuthTokenMetadata", + "fully_qualified_name": "VercelApi.RetrieveAuthTokenMetadata@0.1.0", + "description": "Retrieve metadata about an authentication token.\n\nThis tool retrieves metadata about an authentication token for the currently authenticated user. It should be called when details about a specific token are needed, such as checking token permissions or validity.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "authentication_token_identifier", + "required": true, + "description": "The ID of the token to retrieve metadata for. Use \"current\" for the token that the current request is authenticated with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the token to retrieve. The special value \\\"current\\\" may be supplied, which returns the metadata for the token that the current HTTP request is authenticated with." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tokenId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getAuthToken'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v5/user/tokens/{tokenId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "tokenId", + "tool_parameter_name": "authentication_token_identifier", + "description": "The identifier of the token to retrieve. The special value \\\"current\\\" may be supplied, which returns the metadata for the token that the current HTTP request is authenticated with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the token to retrieve. The special value \\\"current\\\" may be supplied, which returns the metadata for the token that the current HTTP request is authenticated with." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveAuthTokens.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveAuthTokens.json new file mode 100644 index 00000000..707e6e84 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveAuthTokens.json @@ -0,0 +1,71 @@ +{ + "name": "RetrieveAuthTokens", + "fully_qualified_name": "VercelApi.RetrieveAuthTokens@0.1.0", + "description": "Retrieve a list of the current user's authentication tokens.\n\nUse this tool to get a list of authentication tokens for the current user. It is useful for managing and reviewing user access tokens.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'listAuthTokens'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v5/user/tokens", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveBillingPlans.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveBillingPlans.json new file mode 100644 index 00000000..36d5bbca --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveBillingPlans.json @@ -0,0 +1,238 @@ +{ + "name": "RetrieveBillingPlans", + "fully_qualified_name": "VercelApi.RetrieveBillingPlans@0.1.0", + "description": "Retrieve billing plans for a specific integration and product.\n\nUse this tool to obtain a list of billing plans associated with a specified integration and product. It retrieves the available plans using the integration and product identifiers.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_identifier_or_slug", + "required": true, + "description": "The unique identifier or slug for the integration to retrieve billing plans for. Use the specific key related to the integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationIdOrSlug" + }, + { + "name": "product_id_or_slug", + "required": true, + "description": "The unique identifier or slug for the product to retrieve billing plans.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "productIdOrSlug" + }, + { + "name": "additional_metadata", + "required": false, + "description": "Optional metadata for the request, provided as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "metadata" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique team slug used to identify which team's context the request should be performed in.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getBillingPlans'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/integration/{integrationIdOrSlug}/products/{productIdOrSlug}/plans", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "metadata", + "tool_parameter_name": "additional_metadata", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integrationIdOrSlug", + "tool_parameter_name": "integration_identifier_or_slug", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "productIdOrSlug", + "tool_parameter_name": "product_id_or_slug", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveCertificateById.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveCertificateById.json new file mode 100644 index 00000000..47fde93d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveCertificateById.json @@ -0,0 +1,172 @@ +{ + "name": "RetrieveCertificateById", + "fully_qualified_name": "VercelApi.RetrieveCertificateById@0.1.0", + "description": "Retrieve a Vercel certificate using its ID.\n\nUse this tool to get information about a specific Vercel certificate by providing its ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "certificate_id", + "required": true, + "description": "The unique identifier of the certificate to be retrieved from Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The cert id" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getCertById'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/certs/{id}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "certificate_id", + "description": "The cert id", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The cert id" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveCustomEnvironment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveCustomEnvironment.json new file mode 100644 index 00000000..3c213adc --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveCustomEnvironment.json @@ -0,0 +1,205 @@ +{ + "name": "RetrieveCustomEnvironment", + "fully_qualified_name": "VercelApi.RetrieveCustomEnvironment@0.1.0", + "description": "Retrieve custom environment details for a project.\n\nUse this tool to obtain information about a custom environment in a project, excluding 'Production' or 'Preview' environments.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or the project's name to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "custom_environment_identifier", + "required": true, + "description": "The unique identifier for a custom environment within the project, excluding 'Production' or 'Preview'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "environmentSlugOrId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique Team identifier used to perform the request on behalf of a specified team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to perform the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getCustomEnvironment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "environmentSlugOrId", + "tool_parameter_name": "custom_environment_identifier", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveDeploymentFileContents.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveDeploymentFileContents.json new file mode 100644 index 00000000..172911a4 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveDeploymentFileContents.json @@ -0,0 +1,238 @@ +{ + "name": "RetrieveDeploymentFileContents", + "fully_qualified_name": "VercelApi.RetrieveDeploymentFileContents@0.1.0", + "description": "Retrieve the contents of a file from a Vercel deployment.\n\nUse this tool to get the content of a specific file from a Vercel deployment by providing the deployment and file identifiers. The response provides the file contents encoded in base64.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_unique_identifier", + "required": true, + "description": "The unique identifier for the deployment from which to retrieve the file.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique deployment identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "file_identifier", + "required": true, + "description": "The unique identifier for the file you want to retrieve from the deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique file identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "fileId" + }, + { + "name": "file_path", + "required": false, + "description": "Path to the file to fetch, applicable only for Git-based deployments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Path to the file to fetch (only for Git deployments)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "path" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to make the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. Specify which team's context to use.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getDeploymentFileContents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/deployments/{id}/files/{fileId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "path", + "tool_parameter_name": "file_path", + "description": "Path to the file to fetch (only for Git deployments)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Path to the file to fetch (only for Git deployments)" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "deployment_unique_identifier", + "description": "The unique deployment identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique deployment identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fileId", + "tool_parameter_name": "file_identifier", + "description": "The unique file identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique file identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveEdgeConfigBackup.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveEdgeConfigBackup.json new file mode 100644 index 00000000..d835cb3d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveEdgeConfigBackup.json @@ -0,0 +1,205 @@ +{ + "name": "RetrieveEdgeConfigBackup", + "fully_qualified_name": "VercelApi.RetrieveEdgeConfigBackup@0.1.0", + "description": "Retrieve a specific Edge Config version from backup storage.\n\nUse this tool to fetch a particular version of an Edge Config that is stored as a backup. This is helpful for accessing historical configurations or restoring previous settings.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_id", + "required": true, + "description": "The ID of the Edge Config to retrieve from backup storage.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "edge_config_backup_version_id", + "required": true, + "description": "The unique identifier for the backup version of the Edge Config to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigBackupVersionId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the Team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team's unique slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getEdgeConfigBackup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/backups/{edgeConfigBackupVersionId}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigBackupVersionId", + "tool_parameter_name": "edge_config_backup_version_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveIntegrationConfigurations.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveIntegrationConfigurations.json new file mode 100644 index 00000000..50f3c15c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveIntegrationConfigurations.json @@ -0,0 +1,250 @@ +{ + "name": "RetrieveIntegrationConfigurations", + "fully_qualified_name": "VercelApi.RetrieveIntegrationConfigurations@0.1.0", + "description": "Retrieve all configurations for an authenticated integration.\n\nUse this tool to access configurations associated with an authenticated integration on Vercel, excluding those from the authorization flow when using the `project` view.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "configuration_view_type", + "required": true, + "description": "Specify 'account' to view all configurations or 'project' to exclude configurations generated from the authorization flow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "account", + "project" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "view" + }, + { + "name": "installation_type", + "required": false, + "description": "Specifies the installation type. Options are 'marketplace' or 'external'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "marketplace", + "external" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "installationType" + }, + { + "name": "integration_id", + "required": false, + "description": "The ID or slug of the integration to retrieve configurations for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the integration" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationIdOrSlug" + }, + { + "name": "team_identifier", + "required": false, + "description": "Specifies the Team ID to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of when retrieving configurations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getConfigurations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/integrations/configurations", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "view", + "tool_parameter_name": "configuration_view_type", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "account", + "project" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "installationType", + "tool_parameter_name": "installation_type", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "marketplace", + "external" + ], + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integrationIdOrSlug", + "tool_parameter_name": "integration_id", + "description": "ID of the integration", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the integration" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveIntegrationLogDrains.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveIntegrationLogDrains.json new file mode 100644 index 00000000..2648fea5 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveIntegrationLogDrains.json @@ -0,0 +1,139 @@ +{ + "name": "RetrieveIntegrationLogDrains", + "fully_qualified_name": "VercelApi.RetrieveIntegrationLogDrains@0.1.0", + "description": "Retrieve all integration log drains for the user or team.\n\nThis tool retrieves a list of all integration log drains defined for the authenticated user or team. It is especially useful when using an OAuth2 token, as the list is limited to log drains created by the authenticated integration.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the Team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. Used to specify which team's log drains to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getIntegrationLogDrains'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/integrations/log-drains", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectBypassRules.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectBypassRules.json new file mode 100644 index 00000000..5b429960 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectBypassRules.json @@ -0,0 +1,337 @@ +{ + "name": "RetrieveProjectBypassRules", + "fully_qualified_name": "VercelApi.RetrieveProjectBypassRules@0.1.0", + "description": "Retrieve the bypass rules for a specified project.\n\nUse this tool to access the system bypass rules configured for a specific project on Vercel. It is useful for security management and monitoring of firewall settings.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier of the project for which to retrieve bypass rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "result_limit", + "required": false, + "description": "The maximum number of rules to retrieve. Specify as a number. This is useful for controlling the volume of data returned.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "filter_by_source_ip", + "required": false, + "description": "Specify a source IP to filter the system bypass rules for a project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by source IP" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sourceIp" + }, + { + "name": "filter_by_domain", + "required": false, + "description": "Specify the domain to filter bypass rules. This filters rules related to the given domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by domain" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "pagination_offset", + "required": false, + "description": "Pagination offset, retrieving results after the specified ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used for pagination. Retrieves results after the provided id" + }, + "inferrable": true, + "http_endpoint_parameter_name": "offset" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team to make the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "filter_by_project_scope", + "required": false, + "description": "Set to true to filter results by project-scoped rules.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by project scoped rules" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectScope" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getBypassIp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/bypass", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "result_limit", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sourceIp", + "tool_parameter_name": "filter_by_source_ip", + "description": "Filter by source IP", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by source IP" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "filter_by_domain", + "description": "Filter by domain", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by domain" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectScope", + "tool_parameter_name": "filter_by_project_scope", + "description": "Filter by project scoped rules", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by project scoped rules" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "offset", + "tool_parameter_name": "pagination_offset", + "description": "Used for pagination. Retrieves results after the provided id", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used for pagination. Retrieves results after the provided id" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectDomains.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectDomains.json new file mode 100644 index 00000000..7cea6157 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectDomains.json @@ -0,0 +1,541 @@ +{ + "name": "RetrieveProjectDomains", + "fully_qualified_name": "VercelApi.RetrieveProjectDomains@0.1.0", + "description": "Retrieve domains linked to a specific project.\n\nUse this tool to get the domains associated with a project by providing the project's ID or name. This can help manage and review project-related domains efficiently.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Specify the unique project identifier or the project name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "filter_production_domains", + "required": false, + "description": "Set to 'true' to filter only production domains; otherwise, returns all.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters only production domains when set to `true`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "production" + }, + { + "name": "filter_target_domain", + "required": false, + "description": "Specify 'production' or 'preview' to filter domains based on their target environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "production", + "preview" + ], + "properties": null, + "inner_properties": null, + "description": "Filters on the target of the domain. Can be either \\\"production\\\", \\\"preview\\\"" + }, + "inferrable": true, + "http_endpoint_parameter_name": "target" + }, + { + "name": "custom_environment_id", + "required": false, + "description": "The unique custom environment identifier within the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customEnvironmentId" + }, + { + "name": "filter_by_git_branch", + "required": false, + "description": "Specify the branch to filter domains associated with that branch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters domains based on specific branch." + }, + "inferrable": true, + "http_endpoint_parameter_name": "gitBranch" + }, + { + "name": "include_redirect_domains", + "required": false, + "description": "Specify whether to include redirect project domains. Use \"true\" to include (default), \"false\" to exclude.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Excludes redirect project domains when \\\"false\\\". Includes redirect project domains when \\\"true\\\" (default)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirects" + }, + { + "name": "filter_by_redirect_target", + "required": false, + "description": "Specify the redirect target to filter domains. Useful for targeting specific redirections.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters domains based on their redirect target." + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirect" + }, + { + "name": "filter_by_verification_status", + "required": false, + "description": "Filter domains by their verification status (e.g., verified, unverified).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters domains based on their verification status." + }, + "inferrable": true, + "http_endpoint_parameter_name": "verified" + }, + { + "name": "max_domains_to_list", + "required": false, + "description": "The maximum number of domains to list in the response, with a maximum value of 100.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of domains to list from a request (max 100)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "domains_created_since_timestamp", + "required": false, + "description": "Get domains created after this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created after this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "created_before_timestamp", + "required": false, + "description": "Get domains created before this JavaScript timestamp for filtering results.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created before this JavaScript timestamp." + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "domains_sort_order", + "required": false, + "description": "Sort order for domains based on creation date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Domains sort order by createdAt" + }, + "inferrable": true, + "http_endpoint_parameter_name": "order" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getProjectDomains'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/domains", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "production", + "tool_parameter_name": "filter_production_domains", + "description": "Filters only production domains when set to `true`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters only production domains when set to `true`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "false", + "documentation_urls": [] + }, + { + "name": "target", + "tool_parameter_name": "filter_target_domain", + "description": "Filters on the target of the domain. Can be either \\\"production\\\", \\\"preview\\\"", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "production", + "preview" + ], + "properties": null, + "inner_properties": null, + "description": "Filters on the target of the domain. Can be either \\\"production\\\", \\\"preview\\\"" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customEnvironmentId", + "tool_parameter_name": "custom_environment_id", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "gitBranch", + "tool_parameter_name": "filter_by_git_branch", + "description": "Filters domains based on specific branch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters domains based on specific branch." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirects", + "tool_parameter_name": "include_redirect_domains", + "description": "Excludes redirect project domains when \\\"false\\\". Includes redirect project domains when \\\"true\\\" (default).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Excludes redirect project domains when \\\"false\\\". Includes redirect project domains when \\\"true\\\" (default)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "true", + "documentation_urls": [] + }, + { + "name": "redirect", + "tool_parameter_name": "filter_by_redirect_target", + "description": "Filters domains based on their redirect target.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters domains based on their redirect target." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "verified", + "tool_parameter_name": "filter_by_verification_status", + "description": "Filters domains based on their verification status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters domains based on their verification status." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "max_domains_to_list", + "description": "Maximum number of domains to list from a request (max 100).", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of domains to list from a request (max 100)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "domains_created_since_timestamp", + "description": "Get domains created after this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created after this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "created_before_timestamp", + "description": "Get domains created before this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get domains created before this JavaScript timestamp." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "order", + "tool_parameter_name": "domains_sort_order", + "description": "Domains sort order by createdAt", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Domains sort order by createdAt" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "DESC", + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectEnvironmentVariable.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectEnvironmentVariable.json new file mode 100644 index 00000000..9d50c5df --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectEnvironmentVariable.json @@ -0,0 +1,205 @@ +{ + "name": "RetrieveProjectEnvironmentVariable", + "fully_qualified_name": "VercelApi.RetrieveProjectEnvironmentVariable@0.1.0", + "description": "Retrieve the environment variable for a given project.\n\nCall this tool to access the environment variable details for a specific project using its ID or name.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique identifier or name of the project to retrieve its environment variable.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "environment_variable_id", + "required": true, + "description": "The unique ID for the environment variable to retrieve its decrypted value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID for the environment variable to get the decrypted value." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug for the team to perform the request on behalf of. This identifies the team in a user-friendly way.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getProjectEnv'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/env/{id}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "environment_variable_id", + "description": "The unique ID for the environment variable to get the decrypted value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID for the environment variable to get the decrypted value." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectsList.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectsList.json new file mode 100644 index 00000000..1331fd3f --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveProjectsList.json @@ -0,0 +1,586 @@ +{ + "name": "RetrieveProjectsList", + "fully_qualified_name": "VercelApi.RetrieveProjectsList@0.1.0", + "description": "Retrieve the list of user's or team's projects.\n\nThis tool fetches the list of projects associated with the authenticated user or team. It supports pagination and allows filtering through query parameters.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "updated_after", + "required": false, + "description": "Filter projects updated after the specified timestamp or using a continuation token.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query only projects updated after the given timestamp or continuation token." + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "require_git_fork_authorization", + "required": false, + "description": "Set to '1' to require authorization for Git fork PRs before deployment, or '0' to disable.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1", + "0" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed" + }, + "inferrable": true, + "http_endpoint_parameter_name": "gitForkProtection" + }, + { + "name": "max_projects_returned", + "required": false, + "description": "Specifies the maximum number of projects to return in the list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit the number of projects returned" + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "search_by_project_name", + "required": false, + "description": "Search for projects using a keyword or term in the name field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search projects by the name field" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search" + }, + { + "name": "filter_by_repo", + "required": false, + "description": "Filter the project results by the specified repository name, also used for project count.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by repo. Also used for project count" + }, + "inferrable": true, + "http_endpoint_parameter_name": "repo" + }, + { + "name": "filter_by_repository_id", + "required": false, + "description": "Filter the project results by specifying the Repository ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by Repository ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "repoId" + }, + { + "name": "repository_url_filter", + "required": false, + "description": "URL to filter projects associated with a specific repository.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by Repository URL." + }, + "inferrable": true, + "http_endpoint_parameter_name": "repoUrl" + }, + { + "name": "exclude_repositories", + "required": false, + "description": "Comma-separated list of repository names to exclude from the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by excluding those projects that belong to a repo" + }, + "inferrable": true, + "http_endpoint_parameter_name": "excludeRepos" + }, + { + "name": "filter_by_edge_config_id", + "required": false, + "description": "Filter results by connected Edge Config ID. Provide the ID as a string to retrieve projects linked to this specific config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by connected Edge Config ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "filter_by_edge_config_token_id", + "required": false, + "description": "Filter results by the connected Edge Config Token ID. Provide the specific token ID to refine project search.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by connected Edge Config Token ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigTokenId" + }, + { + "name": "filter_by_elastic_concurrency", + "required": false, + "description": "Filter projects by elastic concurrency status. Use '1' for enabled or '0' for disabled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1", + "0" + ], + "properties": null, + "inner_properties": null, + "description": "Filter results by projects with elastic concurrency enabled" + }, + "inferrable": true, + "http_endpoint_parameter_name": "elasticConcurrencyEnabled" + }, + { + "name": "filter_by_static_ips_enabled", + "required": false, + "description": "Set to '1' to filter projects with Static IPs enabled, '0' otherwise.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "Filter results by projects with Static IPs enabled" + }, + "inferrable": true, + "http_endpoint_parameter_name": "staticIpsEnabled" + }, + { + "name": "team_identifier", + "required": false, + "description": "The ID of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug to perform the request on behalf of, representing a specific team within Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "include_deprecated_projects", + "required": false, + "description": "Include deprecated projects in the results when set to True.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "deprecated" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getProjects'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v10/projects", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "from", + "tool_parameter_name": "updated_after", + "description": "Query only projects updated after the given timestamp or continuation token.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query only projects updated after the given timestamp or continuation token." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "gitForkProtection", + "tool_parameter_name": "require_git_fork_authorization", + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1", + "0" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "max_projects_returned", + "description": "Limit the number of projects returned", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit the number of projects returned" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search", + "tool_parameter_name": "search_by_project_name", + "description": "Search projects by the name field", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search projects by the name field" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "repo", + "tool_parameter_name": "filter_by_repo", + "description": "Filter results by repo. Also used for project count", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by repo. Also used for project count" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "repoId", + "tool_parameter_name": "filter_by_repository_id", + "description": "Filter results by Repository ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by Repository ID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "repoUrl", + "tool_parameter_name": "repository_url_filter", + "description": "Filter results by Repository URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by Repository URL." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "excludeRepos", + "tool_parameter_name": "exclude_repositories", + "description": "Filter results by excluding those projects that belong to a repo", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by excluding those projects that belong to a repo" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "filter_by_edge_config_id", + "description": "Filter results by connected Edge Config ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by connected Edge Config ID" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigTokenId", + "tool_parameter_name": "filter_by_edge_config_token_id", + "description": "Filter results by connected Edge Config Token ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter results by connected Edge Config Token ID" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deprecated", + "tool_parameter_name": "include_deprecated_projects", + "description": "", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "elasticConcurrencyEnabled", + "tool_parameter_name": "filter_by_elastic_concurrency", + "description": "Filter results by projects with elastic concurrency enabled", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1", + "0" + ], + "properties": null, + "inner_properties": null, + "description": "Filter results by projects with elastic concurrency enabled" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "staticIpsEnabled", + "tool_parameter_name": "filter_by_static_ips_enabled", + "description": "Filter results by projects with Static IPs enabled", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "Filter results by projects with Static IPs enabled" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveVercelAlias.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveVercelAlias.json new file mode 100644 index 00000000..8e95bac3 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/RetrieveVercelAlias.json @@ -0,0 +1,304 @@ +{ + "name": "RetrieveVercelAlias", + "fully_qualified_name": "VercelApi.RetrieveVercelAlias@0.1.0", + "description": "Retrieve Vercel alias information for a host name or alias ID.\n\nUse this tool to fetch alias details for a specified host name or alias ID on Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "alias_identifier", + "required": true, + "description": "The alias or alias ID of the Vercel entity to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The alias or alias ID to be retrieved" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrAlias" + }, + { + "name": "created_after_timestamp", + "required": false, + "description": "Retrieve the alias only if it was created after the specified timestamp (in milliseconds).", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it was created after the provided timestamp" + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "project_id", + "required": false, + "description": "Fetch the alias only if it is associated with this project ID in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it is assigned to the provided project ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "after_timestamp", + "required": false, + "description": "Get the alias only if it was created after this JavaScript timestamp (milliseconds since epoch).", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it was created after this JavaScript timestamp" + }, + "inferrable": true, + "http_endpoint_parameter_name": "since" + }, + { + "name": "created_before_timestamp", + "required": false, + "description": "Retrieve the alias only if it was created before this JavaScript timestamp.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it was created before this JavaScript timestamp" + }, + "inferrable": true, + "http_endpoint_parameter_name": "until" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. This specifies the team context for the alias retrieval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'getAlias'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v4/aliases/{idOrAlias}", + "http_method": "GET", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "from", + "tool_parameter_name": "created_after_timestamp", + "description": "Get the alias only if it was created after the provided timestamp", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it was created after the provided timestamp" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "Get the alias only if it is assigned to the provided project ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it is assigned to the provided project ID" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "since", + "tool_parameter_name": "after_timestamp", + "description": "Get the alias only if it was created after this JavaScript timestamp", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it was created after this JavaScript timestamp" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "until", + "tool_parameter_name": "created_before_timestamp", + "description": "Get the alias only if it was created before this JavaScript timestamp", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the alias only if it was created before this JavaScript timestamp" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrAlias", + "tool_parameter_name": "alias_identifier", + "description": "The alias or alias ID to be retrieved", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The alias or alias ID to be retrieved" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SetDeploymentAlias.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SetDeploymentAlias.json new file mode 100644 index 00000000..22e88355 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SetDeploymentAlias.json @@ -0,0 +1,238 @@ +{ + "name": "SetDeploymentAlias", + "fully_qualified_name": "VercelApi.SetDeploymentAlias@0.1.0", + "description": "Assigns a new alias to a Vercel deployment.\n\nUse this tool to create or update an alias for a specific Vercel deployment. If the alias is currently linked to another deployment, it will be reassigned to the specified deployment.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The ID of the deployment to assign the alias to. This identifier is crucial for specifying which deployment will receive the new alias.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the deployment the aliases should be listed for" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the alias assignment on behalf of. Required for team-based operations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. This identifies the team for the deployment operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "deployment_alias", + "required": false, + "description": "The alias to assign to the specified Vercel deployment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The alias we want to assign to the deployment defined in the URL" + }, + "inferrable": true, + "http_endpoint_parameter_name": "alias" + }, + { + "name": "redirect_hostname", + "required": false, + "description": "Hostname to redirect the alias to, using status code 307. This will override the deployment ID from the URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The redirect property will take precedence over the deployment id from the URL and consists of a hostname (like test.com) to which the alias should redirect using status code 307" + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirect" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'assignAlias'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/deployments/{id}/aliases", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "deployment_id", + "description": "The ID of the deployment the aliases should be listed for", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the deployment the aliases should be listed for" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "alias", + "tool_parameter_name": "deployment_alias", + "description": "The alias we want to assign to the deployment defined in the URL", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The alias we want to assign to the deployment defined in the URL" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirect", + "tool_parameter_name": "redirect_hostname", + "description": "The redirect property will take precedence over the deployment id from the URL and consists of a hostname (like test.com) to which the alias should redirect using status code 307", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The redirect property will take precedence over the deployment id from the URL and consists of a hostname (like test.com) to which the alias should redirect using status code 307" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"alias\": {\n \"description\": \"The alias we want to assign to the deployment defined in the URL\",\n \"example\": \"my-alias.vercel.app\",\n \"type\": \"string\"\n },\n \"redirect\": {\n \"description\": \"The redirect property will take precedence over the deployment id from the URL and consists of a hostname (like test.com) to which the alias should redirect using status code 307\",\n \"example\": null,\n \"type\": \"string\",\n \"nullable\": true\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SetFirewallConfiguration.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SetFirewallConfiguration.json new file mode 100644 index 00000000..8dbc0565 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SetFirewallConfiguration.json @@ -0,0 +1,1403 @@ +{ + "name": "SetFirewallConfiguration", + "fully_qualified_name": "VercelApi.SetFirewallConfiguration@0.1.0", + "description": "Update firewall configuration with specified rules.\n\nThis tool sets or overwrites the firewall configuration with the provided rules and settings on Vercel.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the project to configure the firewall settings.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "firewall_configuration", + "required": true, + "description": "JSON object specifying firewall rules, custom rules, IP settings, and other configurations. Includes details like enabling firewall, managed rules, custom ruleset (CRS), specific rules, IP actions, and bot ID configurations.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firewallEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "managedRules": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crs": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "sd": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Scanner Detection - Detect and prevent reconnaissance activities from network scanning tools." + }, + "ma": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Multipart Attack - Block attempts to bypass security controls using multipart/form-data encoding." + }, + "lfi": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Local File Inclusion Attack - Prevent unauthorized access to local files through web applications." + }, + "rfi": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Remote File Inclusion Attack - Prohibit unauthorized upload or execution of remote files." + }, + "rce": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Remote Execution Attack - Prevent unauthorized execution of remote scripts or commands." + }, + "php": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "PHP Attack - Safeguard against vulnerability exploits in PHP-based applications." + }, + "gen": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Generic Attack - Provide broad protection from various undefined or novel attack vectors." + }, + "xss": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "XSS Attack - Prevent injection of malicious scripts into trusted webpages." + }, + "sqli": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "SQL Injection Attack - Prohibit unauthorized use of SQL commands to manipulate databases." + }, + "sf": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Session Fixation Attack - Prevent unauthorized takeover of user sessions by enforcing unique session IDs." + }, + "java": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Java Attack - Mitigate risks of exploitation targeting Java-based applications or components." + } + }, + "inner_properties": null, + "description": "Custom Ruleset" + }, + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "conditionGroup": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "route", + "raw_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ], + "properties": null, + "inner_properties": null, + "description": "[Parameter](https://vercel.com/docs/security/vercel-waf/rule-configuration#parameters) from the incoming traffic." + }, + "op": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "neg": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "description": null + }, + "action": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "mitigate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "log", + "challenge", + "deny", + "bypass", + "rate_limit", + "redirect" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "rateLimit": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "redirect": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "actionDuration": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "bypassSystem": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "ips": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "hostname": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "ip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "challenge", + "log", + "bypass" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "botIdEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team for which the firewall configuration will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'putFirewallConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/config", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "firewall_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firewallEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "managedRules": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crs": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "sd": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Scanner Detection - Detect and prevent reconnaissance activities from network scanning tools." + }, + "ma": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Multipart Attack - Block attempts to bypass security controls using multipart/form-data encoding." + }, + "lfi": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Local File Inclusion Attack - Prevent unauthorized access to local files through web applications." + }, + "rfi": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Remote File Inclusion Attack - Prohibit unauthorized upload or execution of remote files." + }, + "rce": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Remote Execution Attack - Prevent unauthorized execution of remote scripts or commands." + }, + "php": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "PHP Attack - Safeguard against vulnerability exploits in PHP-based applications." + }, + "gen": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Generic Attack - Provide broad protection from various undefined or novel attack vectors." + }, + "xss": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "XSS Attack - Prevent injection of malicious scripts into trusted webpages." + }, + "sqli": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "SQL Injection Attack - Prohibit unauthorized use of SQL commands to manipulate databases." + }, + "sf": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Session Fixation Attack - Prevent unauthorized takeover of user sessions by enforcing unique session IDs." + }, + "java": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "log" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Java Attack - Mitigate risks of exploitation targeting Java-based applications or components." + } + }, + "inner_properties": null, + "description": "Custom Ruleset" + }, + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "active": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "conditionGroup": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "host", + "path", + "method", + "header", + "query", + "cookie", + "target_path", + "route", + "raw_path", + "ip_address", + "region", + "protocol", + "scheme", + "environment", + "user_agent", + "geo_continent", + "geo_country", + "geo_country_region", + "geo_city", + "geo_as_number", + "ja4_digest", + "ja3_digest", + "rate_limit_api_id" + ], + "properties": null, + "inner_properties": null, + "description": "[Parameter](https://vercel.com/docs/security/vercel-waf/rule-configuration#parameters) from the incoming traffic." + }, + "op": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "re", + "eq", + "neq", + "ex", + "nex", + "inc", + "ninc", + "pre", + "suf", + "sub", + "gt", + "gte", + "lt", + "lte" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "neg": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "description": null + }, + "action": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "mitigate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "log", + "challenge", + "deny", + "bypass", + "rate_limit", + "redirect" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "rateLimit": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "redirect": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "actionDuration": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "bypassSystem": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "ips": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "hostname": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "ip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "deny", + "challenge", + "log", + "bypass" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "botIdEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"firewallEnabled\": {\n \"type\": \"boolean\"\n },\n \"managedRules\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": []\n }\n },\n \"crs\": {\n \"type\": \"object\",\n \"properties\": {\n \"sd\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Scanner Detection - Detect and prevent reconnaissance activities from network scanning tools.\"\n },\n \"ma\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Multipart Attack - Block attempts to bypass security controls using multipart/form-data encoding.\"\n },\n \"lfi\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Local File Inclusion Attack - Prevent unauthorized access to local files through web applications.\"\n },\n \"rfi\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Remote File Inclusion Attack - Prohibit unauthorized upload or execution of remote files.\"\n },\n \"rce\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Remote Execution Attack - Prevent unauthorized execution of remote scripts or commands.\"\n },\n \"php\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"PHP Attack - Safeguard against vulnerability exploits in PHP-based applications.\"\n },\n \"gen\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Generic Attack - Provide broad protection from various undefined or novel attack vectors.\"\n },\n \"xss\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"XSS Attack - Prevent injection of malicious scripts into trusted webpages.\"\n },\n \"sqli\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"SQL Injection Attack - Prohibit unauthorized use of SQL commands to manipulate databases.\"\n },\n \"sf\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Session Fixation Attack - Prevent unauthorized takeover of user sessions by enforcing unique session IDs.\"\n },\n \"java\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false,\n \"description\": \"Java Attack - Mitigate risks of exploitation targeting Java-based applications or components.\"\n }\n },\n \"additionalProperties\": false,\n \"description\": \"Custom Ruleset\"\n },\n \"rules\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 160\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"active\": {\n \"type\": \"boolean\"\n },\n \"conditionGroup\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"conditions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"host\",\n \"path\",\n \"method\",\n \"header\",\n \"query\",\n \"cookie\",\n \"target_path\",\n \"route\",\n \"raw_path\",\n \"ip_address\",\n \"region\",\n \"protocol\",\n \"scheme\",\n \"environment\",\n \"user_agent\",\n \"geo_continent\",\n \"geo_country\",\n \"geo_country_region\",\n \"geo_city\",\n \"geo_as_number\",\n \"ja4_digest\",\n \"ja3_digest\",\n \"rate_limit_api_id\"\n ],\n \"description\": \"[Parameter](https://vercel.com/docs/security/vercel-waf/rule-configuration#parameters) from the incoming traffic.\"\n },\n \"op\": {\n \"type\": \"string\",\n \"enum\": [\n \"re\",\n \"eq\",\n \"neq\",\n \"ex\",\n \"nex\",\n \"inc\",\n \"ninc\",\n \"pre\",\n \"suf\",\n \"sub\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\"\n ]\n },\n \"neg\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"maxItems\": 75\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"type\",\n \"op\"\n ],\n \"additionalProperties\": false\n },\n \"maxItems\": 65\n }\n },\n \"required\": [\n \"conditions\"\n ],\n \"additionalProperties\": false\n },\n \"maxItems\": 25\n },\n \"action\": {\n \"type\": \"object\",\n \"properties\": {\n \"mitigate\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\",\n \"bypass\",\n \"rate_limit\",\n \"redirect\"\n ]\n },\n \"rateLimit\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"algo\": {\n \"type\": \"string\",\n \"enum\": [\n \"fixed_window\",\n \"token_bucket\"\n ]\n },\n \"window\": {\n \"type\": \"number\"\n },\n \"limit\": {\n \"type\": \"number\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\",\n \"rate_limit\"\n ]\n },\n {}\n ],\n \"nullable\": true\n }\n },\n \"required\": [\n \"algo\",\n \"window\",\n \"limit\",\n \"keys\"\n ],\n \"additionalProperties\": false\n },\n {}\n ],\n \"nullable\": true\n },\n \"redirect\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\"\n },\n \"permanent\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"location\",\n \"permanent\"\n ],\n \"additionalProperties\": false\n },\n {}\n ],\n \"nullable\": true\n },\n \"actionDuration\": {\n \"type\": \"string\",\n \"nullable\": true\n },\n \"bypassSystem\": {\n \"type\": \"boolean\",\n \"nullable\": true\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"name\",\n \"active\",\n \"conditionGroup\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"ips\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"hostname\": {\n \"type\": \"string\"\n },\n \"ip\": {\n \"type\": \"string\"\n },\n \"notes\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"challenge\",\n \"log\",\n \"bypass\"\n ]\n }\n },\n \"required\": [\n \"hostname\",\n \"ip\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"botIdEnabled\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"firewallEnabled\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitBillingData.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitBillingData.json new file mode 100644 index 00000000..bb0f8b83 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitBillingData.json @@ -0,0 +1,377 @@ +{ + "name": "SubmitBillingData", + "fully_qualified_name": "VercelApi.SubmitBillingData@0.1.0", + "description": "Submit billing and usage data to the server.\n\nThis tool should be used to send billing and usage data at least once a day, ideally once per hour, using the provided access token for authorization.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "A string representing the unique identifier for the integration configuration. This is required to submit billing data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "billing_usage_data", + "required": true, + "description": "JSON containing the billing and usage data details: timestamp, end of day (eod), period, billing, and usage metrics.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timestamp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept." + }, + "eod": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End of Day, the UTC datetime for when the end of the billing/usage day is in UTC time. This tells us which day the usage data is for, and also allows for your \\\"end of day\\\" to be different from UTC 00:00:00. eod must be within the period dates, and cannot be older than 24h earlier from our server's current time." + }, + "period": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Period for the billing cycle. The period end date cannot be older than 24 hours earlier than our current server's time." + }, + "billing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing data (interim invoicing data)." + }, + "usage": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric name." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "total", + "interval", + "rate" + ], + "properties": null, + "inner_properties": null, + "description": "\\n Type of the metric.\\n - total: measured total value, such as Database size\\n - interval: usage during the period, such as i/o or number of queries.\\n - rate: rate of usage, such as queries per second.\\n " + }, + "units": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric units. Example: \\\"GB\\\"" + }, + "dayValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric value for the day. Could be a final or an interim value for the day." + }, + "periodValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric value for the billing period. Could be a final or an interim value for the period." + }, + "planValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The limit value of the metric for a billing period, if a limit is defined by the plan." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit-billing-data'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_usage_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timestamp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept." + }, + "eod": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End of Day, the UTC datetime for when the end of the billing/usage day is in UTC time. This tells us which day the usage data is for, and also allows for your \\\"end of day\\\" to be different from UTC 00:00:00. eod must be within the period dates, and cannot be older than 24h earlier from our server's current time." + }, + "period": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Period for the billing cycle. The period end date cannot be older than 24 hours earlier than our current server's time." + }, + "billing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing data (interim invoicing data)." + }, + "usage": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric name." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "total", + "interval", + "rate" + ], + "properties": null, + "inner_properties": null, + "description": "\\n Type of the metric.\\n - total: measured total value, such as Database size\\n - interval: usage during the period, such as i/o or number of queries.\\n - rate: rate of usage, such as queries per second.\\n " + }, + "units": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric units. Example: \\\"GB\\\"" + }, + "dayValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric value for the day. Could be a final or an interim value for the day." + }, + "periodValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Metric value for the billing period. Could be a final or an interim value for the period." + }, + "planValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The limit value of the metric for a billing period, if a limit is defined by the plan." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"timestamp\": {\n \"description\": \"Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"eod\": {\n \"description\": \"End of Day, the UTC datetime for when the end of the billing/usage day is in UTC time. This tells us which day the usage data is for, and also allows for your \\\\\\\"end of day\\\\\\\" to be different from UTC 00:00:00. eod must be within the period dates, and cannot be older than 24h earlier from our server's current time.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"period\": {\n \"type\": \"object\",\n \"description\": \"Period for the billing cycle. The period end date cannot be older than 24 hours earlier than our current server's time.\",\n \"properties\": {\n \"start\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"start\",\n \"end\"\n ],\n \"additionalProperties\": false\n },\n \"billing\": {\n \"description\": \"Billing data (interim invoicing data).\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"Partner's billing plan ID.\"\n },\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID.\"\n },\n \"start\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Line item name.\"\n },\n \"details\": {\n \"type\": \"string\",\n \"description\": \"Line item details.\"\n },\n \"price\": {\n \"description\": \"Price per unit.\",\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\"\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"Quantity of units.\"\n },\n \"units\": {\n \"type\": \"string\",\n \"description\": \"Units of the quantity.\"\n },\n \"total\": {\n \"description\": \"Total amount.\",\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\"\n }\n },\n \"required\": [\n \"billingPlanId\",\n \"name\",\n \"price\",\n \"quantity\",\n \"units\",\n \"total\"\n ],\n \"additionalProperties\": false\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"Partner's billing plan ID.\"\n },\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID.\"\n },\n \"start\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Line item name.\"\n },\n \"details\": {\n \"type\": \"string\",\n \"description\": \"Line item details.\"\n },\n \"price\": {\n \"description\": \"Price per unit.\",\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\"\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"Quantity of units.\"\n },\n \"units\": {\n \"type\": \"string\",\n \"description\": \"Units of the quantity.\"\n },\n \"total\": {\n \"description\": \"Total amount.\",\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\"\n }\n },\n \"required\": [\n \"billingPlanId\",\n \"name\",\n \"price\",\n \"quantity\",\n \"units\",\n \"total\"\n ],\n \"additionalProperties\": false\n }\n },\n \"discounts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"Partner's billing plan ID.\"\n },\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID.\"\n },\n \"start\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Discount name.\"\n },\n \"details\": {\n \"type\": \"string\",\n \"description\": \"Discount details.\"\n },\n \"amount\": {\n \"description\": \"Discount amount.\",\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\"\n }\n },\n \"required\": [\n \"billingPlanId\",\n \"name\",\n \"amount\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"items\"\n ]\n }\n ]\n },\n \"usage\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Metric name.\"\n },\n \"type\": {\n \"type\": \"string\",\n \"description\": \"\\\\n Type of the metric.\\\\n - total: measured total value, such as Database size\\\\n - interval: usage during the period, such as i/o or number of queries.\\\\n - rate: rate of usage, such as queries per second.\\\\n \",\n \"enum\": [\n \"total\",\n \"interval\",\n \"rate\"\n ]\n },\n \"units\": {\n \"type\": \"string\",\n \"description\": \"Metric units. Example: \\\\\\\"GB\\\\\\\"\"\n },\n \"dayValue\": {\n \"type\": \"number\",\n \"description\": \"Metric value for the day. Could be a final or an interim value for the day.\"\n },\n \"periodValue\": {\n \"type\": \"number\",\n \"description\": \"Metric value for the billing period. Could be a final or an interim value for the period.\"\n },\n \"planValue\": {\n \"type\": \"number\",\n \"description\": \"The limit value of the metric for a billing period, if a limit is defined by the plan.\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"units\",\n \"dayValue\",\n \"periodValue\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"timestamp\",\n \"eod\",\n \"period\",\n \"billing\",\n \"usage\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitInvoiceToVercel.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitInvoiceToVercel.json new file mode 100644 index 00000000..48ec2c31 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitInvoiceToVercel.json @@ -0,0 +1,603 @@ +{ + "name": "SubmitInvoiceToVercel", + "fully_qualified_name": "VercelApi.SubmitInvoiceToVercel@0.1.0", + "description": "Submit an invoice to Vercel's billing system.\n\nUse this tool to submit an invoice to Vercel, creating it in their billing system and sending it to the customer. Suitable for different billing plans at various stages of the billing period. Ensure compliance with billing limitations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique ID for the Vercel integration configuration. This links the invoice submission to the correct integration setup in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "invoice_request_body", + "required": true, + "description": "A JSON object containing detailed invoice information, such as invoice date, period, items, discounts, and test mode options.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "externalId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "invoiceDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice date. Must be within the period's start and end." + }, + "memo": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional memo for the invoice." + }, + "period": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Subscription period for this billing cycle." + }, + "items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID." + }, + "billingPlanId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's billing plan ID." + }, + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "price": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency amount as a decimal string." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "units": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "total": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency amount as a decimal string." + } + }, + "description": null + }, + "discounts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID." + }, + "billingPlanId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's billing plan ID." + }, + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency amount as a decimal string." + } + }, + "description": null + }, + "test": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "validate": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "result": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "paid", + "notpaid" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Test mode" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit-invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/invoices", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "externalId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "invoiceDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice date. Must be within the period's start and end." + }, + "memo": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional memo for the invoice." + }, + "period": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Subscription period for this billing cycle." + }, + "items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID." + }, + "billingPlanId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's billing plan ID." + }, + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "price": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency amount as a decimal string." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "units": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "total": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency amount as a decimal string." + } + }, + "description": null + }, + "discounts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID." + }, + "billingPlanId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's billing plan ID." + }, + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end are only needed if different from the period's start/end." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency amount as a decimal string." + } + }, + "description": null + }, + "test": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "validate": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "result": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "paid", + "notpaid" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Test mode" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"externalId\": {\n \"type\": \"string\"\n },\n \"invoiceDate\": {\n \"description\": \"Invoice date. Must be within the period's start and end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"memo\": {\n \"type\": \"string\",\n \"description\": \"Additional memo for the invoice.\"\n },\n \"period\": {\n \"type\": \"object\",\n \"description\": \"Subscription period for this billing cycle.\",\n \"properties\": {\n \"start\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"start\",\n \"end\"\n ],\n \"additionalProperties\": false\n },\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID.\"\n },\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"Partner's billing plan ID.\"\n },\n \"start\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"details\": {\n \"type\": \"string\"\n },\n \"price\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\",\n \"description\": \"Currency amount as a decimal string.\"\n },\n \"quantity\": {\n \"type\": \"number\"\n },\n \"units\": {\n \"type\": \"string\"\n },\n \"total\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\",\n \"description\": \"Currency amount as a decimal string.\"\n }\n },\n \"required\": [\n \"billingPlanId\",\n \"name\",\n \"price\",\n \"quantity\",\n \"units\",\n \"total\"\n ],\n \"additionalProperties\": false\n }\n },\n \"discounts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID.\"\n },\n \"billingPlanId\": {\n \"type\": \"string\",\n \"description\": \"Partner's billing plan ID.\"\n },\n \"start\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"end\": {\n \"description\": \"Start and end are only needed if different from the period's start/end.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"details\": {\n \"type\": \"string\"\n },\n \"amount\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]+(\\\\\\\\.[0-9]+)?$\",\n \"description\": \"Currency amount as a decimal string.\"\n }\n },\n \"required\": [\n \"billingPlanId\",\n \"name\",\n \"amount\"\n ],\n \"additionalProperties\": false\n }\n },\n \"test\": {\n \"type\": \"object\",\n \"description\": \"Test mode\",\n \"properties\": {\n \"validate\": {\n \"type\": \"boolean\"\n },\n \"result\": {\n \"type\": \"string\",\n \"enum\": [\n \"paid\",\n \"notpaid\"\n ]\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"invoiceDate\",\n \"period\",\n \"items\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitPrepaymentBalances.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitPrepaymentBalances.json new file mode 100644 index 00000000..49e420d5 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/SubmitPrepaymentBalances.json @@ -0,0 +1,239 @@ +{ + "name": "SubmitPrepaymentBalances", + "fully_qualified_name": "VercelApi.SubmitPrepaymentBalances@0.1.0", + "description": "Submit prepayment balances to Vercel for billing.\n\nThis tool sends prepayment balances to Vercel, which should be done at least daily, but ideally hourly. It requires the access token provided during the installation process for authorization.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration. Use the ID provided during the integration setup.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "prepayment_balances_request", + "required": false, + "description": "JSON object containing 'timestamp' and 'balances', with balances as an array of credit details including 'resourceId', 'credit', 'nameLabel', and 'currencyValueInCents'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timestamp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept." + }, + "balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID, exclude if credits are tied to the installation and not an individual resource." + }, + "credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description of the credits the user currently has, e.g. \\\"2,000 Tokens\\\"" + }, + "nameLabel": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the credits, for display purposes, e.g. \\\"Tokens\\\"" + }, + "currencyValueInCents": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dollar value of the credit balance, in USD and provided in cents, which is used to trigger automatic purchase thresholds." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit-prepayment-balances'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/billing/balance", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "prepayment_balances_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timestamp": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept." + }, + "balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "resourceId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Partner's resource ID, exclude if credits are tied to the installation and not an individual resource." + }, + "credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description of the credits the user currently has, e.g. \\\"2,000 Tokens\\\"" + }, + "nameLabel": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the credits, for display purposes, e.g. \\\"Tokens\\\"" + }, + "currencyValueInCents": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dollar value of the credit balance, in USD and provided in cents, which is used to trigger automatic purchase thresholds." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"timestamp\": {\n \"description\": \"Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept.\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"balances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"A credit balance for a particular token type\",\n \"properties\": {\n \"resourceId\": {\n \"type\": \"string\",\n \"description\": \"Partner's resource ID, exclude if credits are tied to the installation and not an individual resource.\"\n },\n \"credit\": {\n \"type\": \"string\",\n \"description\": \"A human-readable description of the credits the user currently has, e.g. \\\\\\\"2,000 Tokens\\\\\\\"\"\n },\n \"nameLabel\": {\n \"type\": \"string\",\n \"description\": \"The name of the credits, for display purposes, e.g. \\\\\\\"Tokens\\\\\\\"\"\n },\n \"currencyValueInCents\": {\n \"type\": \"number\",\n \"description\": \"The dollar value of the credit balance, in USD and provided in cents, which is used to trigger automatic purchase thresholds.\"\n }\n },\n \"required\": [\n \"currencyValueInCents\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"timestamp\",\n \"balances\"\n ],\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/TransferDomainToVercel.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/TransferDomainToVercel.json new file mode 100644 index 00000000..98ec3a16 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/TransferDomainToVercel.json @@ -0,0 +1,448 @@ +{ + "name": "TransferDomainToVercel", + "fully_qualified_name": "VercelApi.TransferDomainToVercel@0.1.0", + "description": "Transfer a domain to Vercel from another registrar.\n\nUse this tool to initiate the transfer of a domain from its current registrar to Vercel. This is useful when consolidating domain management under Vercel's services.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to be transferred to Vercel. It should be a valid domain currently registered elsewhere.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "domain_transfer_details", + "required": true, + "description": "JSON containing details for domain transfer to Vercel. Include authCode, autoRenew flag, renewal years, expected price, and contact info.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "authCode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoRenew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." + }, + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to renew the domain for once it is transferred in. This must be a valid number of transfer years for the TLD." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the Vercel team requesting the domain transfer. It helps associate the domain transfer with the correct Vercel team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'transferInDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/transfer", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_transfer_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "authCode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoRenew": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint." + }, + "years": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of years to renew the domain for once it is transferred in. This must be a valid number of transfer years for the TLD." + }, + "expectedPrice": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain." + }, + "contactInformation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "firstName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "lastName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + }, + "address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid ISO 3166-1 alpha-2 country code" + }, + "companyName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "a non empty string" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid E.164 phone number" + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"authCode\",\n \"autoRenew\",\n \"years\",\n \"expectedPrice\",\n \"contactInformation\"\n ],\n \"properties\": {\n \"authCode\": {\n \"type\": \"string\"\n },\n \"autoRenew\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the domain should be auto-renewed before it expires. This can be configured later through the Vercel Dashboard or the [Update auto-renew for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/update-auto-renew-for-a-domain) endpoint.\"\n },\n \"years\": {\n \"type\": \"number\",\n \"description\": \"The number of years to renew the domain for once it is transferred in. This must be a valid number of transfer years for the TLD.\"\n },\n \"expectedPrice\": {\n \"type\": \"number\",\n \"description\": \"The expected price for the domain. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to retrieve the price data for a domain.\",\n \"minimum\": 0.01\n },\n \"contactInformation\": {\n \"type\": \"object\",\n \"required\": [\n \"firstName\",\n \"lastName\",\n \"email\",\n \"phone\",\n \"address1\",\n \"city\",\n \"state\",\n \"zip\",\n \"country\"\n ],\n \"properties\": {\n \"firstName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"lastName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"email\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1\n },\n \"phone\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n },\n \"address1\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"address2\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"city\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"state\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"zip\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"country\": {\n \"type\": \"string\",\n \"description\": \"A valid ISO 3166-1 alpha-2 country code\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^[A-Z]{2}$\"\n },\n \"companyName\": {\n \"type\": \"string\",\n \"description\": \"a non empty string\",\n \"title\": \"nonEmptyString\",\n \"pattern\": \"^\\\\S[\\\\s\\\\S]*\\\\S$|^\\\\S$|^$\",\n \"minLength\": 1\n },\n \"fax\": {\n \"type\": \"string\",\n \"description\": \"A valid E.164 phone number\",\n \"title\": \"nonEmptyString\",\n \"minLength\": 1,\n \"pattern\": \"^(?=(?:\\\\D*\\\\d){7,15}$)\\\\+[1-9]\\\\d{0,2}\\\\.?\\\\d+$\"\n }\n },\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UnpauseProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UnpauseProject.json new file mode 100644 index 00000000..453b2778 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UnpauseProject.json @@ -0,0 +1,172 @@ +{ + "name": "UnpauseProject", + "fully_qualified_name": "VercelApi.UnpauseProject@0.1.0", + "description": "Unpause a Vercel project using its project ID.\n\nUse this tool to unpause a Vercel project by providing its project ID. The tool confirms successful unpausing or indicates failure if the project ID is invalid.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the Vercel project to be unpaused.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on behalf of which the request is performed. Used to specify the target team in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team to perform the request on behalf of. Required for targeting the correct team's project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'unpauseProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{projectId}/unpause", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "The unique project identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAccessGroup.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAccessGroup.json new file mode 100644 index 00000000..3afcd1aa --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAccessGroup.json @@ -0,0 +1,315 @@ +{ + "name": "UpdateAccessGroup", + "fully_qualified_name": "VercelApi.UpdateAccessGroup@0.1.0", + "description": "Update metadata for an access group.\n\nUse this tool to update the metadata of a specified access group by its ID or name. This is helpful when you need to modify access controls or group settings.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "The ID or name of the access group to update. Use either the unique identifier or the group's name to specify which access group you want to modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "access_group_update_data", + "required": true, + "description": "JSON object with details about the access group update, including the group name, projects with roles, members to add, and members to remove.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the access group" + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER", + "None" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group. \\\"null\\\" will remove this project level role." + } + }, + "description": null + }, + "membersToAdd": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of members to add to the access group." + }, + "membersToRemove": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of members to remove from the access group." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The identifier for the team, used to perform the request on its behalf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateAccessGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{idOrName}", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "access_group_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the access group" + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER", + "None" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group. \\\"null\\\" will remove this project level role." + } + }, + "description": null + }, + "membersToAdd": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of members to add to the access group." + }, + "membersToRemove": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of members to remove from the access group." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the access group\",\n \"maxLength\": 50,\n \"pattern\": \"^[A-z0-9_ -]+$\",\n \"example\": \"My access group\"\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\",\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n \"description\": \"The ID of the project.\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_VIEWER\",\n \"PROJECT_DEVELOPER\",\n null\n ],\n \"example\": \"ADMIN\",\n \"description\": \"The project role that will be added to this Access Group. \\\\\\\"null\\\\\\\" will remove this project level role.\",\n \"nullable\": true\n }\n }\n }\n },\n \"membersToAdd\": {\n \"description\": \"List of members to add to the access group.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"usr_1a2b3c4d5e6f7g8h9i0j\",\n \"usr_2b3c4d5e6f7g8h9i0j1k\"\n ]\n },\n \"membersToRemove\": {\n \"description\": \"List of members to remove from the access group.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"usr_1a2b3c4d5e6f7g8h9i0j\",\n \"usr_2b3c4d5e6f7g8h9i0j1k\"\n ]\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAccessGroupProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAccessGroupProject.json new file mode 100644 index 00000000..a084b025 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAccessGroupProject.json @@ -0,0 +1,246 @@ +{ + "name": "UpdateAccessGroupProject", + "fully_qualified_name": "VercelApi.UpdateAccessGroupProject@0.1.0", + "description": "Update an access group project in Vercel.\n\nThis tool allows updating the details of a specific access group project in Vercel. It should be called when modifications to an existing access group project are needed, such as changing roles or permissions.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "access_group_id_or_name", + "required": true, + "description": "Specify the access group by its ID or name to target the update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accessGroupIdOrName" + }, + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the project to update in the access group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "project_role", + "required": true, + "description": "Specify the project role to add to the access group. Choose from 'ADMIN', 'PROJECT_VIEWER', or 'PROJECT_DEVELOPER'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateAccessGroupProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/access-groups/{accessGroupIdOrName}/projects/{projectId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accessGroupIdOrName", + "tool_parameter_name": "access_group_id_or_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "role", + "tool_parameter_name": "project_role", + "description": "The project role that will be added to this Access Group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER" + ], + "properties": null, + "inner_properties": null, + "description": "The project role that will be added to this Access Group." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\"\n ],\n \"properties\": {\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_VIEWER\",\n \"PROJECT_DEVELOPER\"\n ],\n \"example\": \"ADMIN\",\n \"description\": \"The project role that will be added to this Access Group.\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateApexDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateApexDomain.json new file mode 100644 index 00000000..b443e4cf --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateApexDomain.json @@ -0,0 +1,205 @@ +{ + "name": "UpdateApexDomain", + "fully_qualified_name": "VercelApi.UpdateApexDomain@0.1.0", + "description": "Update or move the apex domain configuration.\n\nThis tool updates or moves the apex domain configuration. It is not used for updating auto-renew or nameservers, for which separate endpoints should be used.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "apex_domain_name", + "required": true, + "description": "The apex domain to update or move. Accepts a string value representing the domain name (e.g., 'example.com').", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "domain_update_details", + "required": true, + "description": "A JSON object detailing the specific updates or moves for the apex domain configuration.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the domain update on behalf of. This allows the request to be associated with a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the Team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'patchDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v3/domains/{domain}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "apex_domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "domain_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"description\": \"update\",\n \"additionalProperties\": false,\n \"properties\": {\n \"op\": {\n \"example\": \"update\",\n \"type\": \"string\"\n },\n \"renew\": {\n \"description\": \"This field is deprecated. Please use PATCH /v1/registrar/domains/{domainName}/auto-renew instead.\",\n \"type\": \"boolean\",\n \"deprecated\": true\n },\n \"customNameservers\": {\n \"description\": \"This field is deprecated. Please use PATCH /v1/registrar/domains/{domainName}/nameservers instead.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"maxItems\": 4,\n \"minItems\": 0,\n \"type\": \"array\",\n \"uniqueItems\": true,\n \"deprecated\": true\n },\n \"zone\": {\n \"description\": \"Specifies whether this is a DNS zone that intends to use Vercel's nameservers.\",\n \"type\": \"boolean\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"move-out\",\n \"additionalProperties\": false,\n \"properties\": {\n \"op\": {\n \"example\": \"move-out\",\n \"type\": \"string\"\n },\n \"destination\": {\n \"description\": \"User or team to move domain to\",\n \"type\": \"string\"\n }\n }\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAttackChallengeMode.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAttackChallengeMode.json new file mode 100644 index 00000000..20fc2c9c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateAttackChallengeMode.json @@ -0,0 +1,238 @@ +{ + "name": "UpdateAttackChallengeMode", + "fully_qualified_name": "VercelApi.UpdateAttackChallengeMode@0.1.0", + "description": "Updates Attack Challenge mode setting for a project.\n\nThis tool updates the Attack Challenge mode setting for a project in Vercel's security settings. Use it when you need to enable or disable the Attack Challenge mode.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier of the project to update the Attack Challenge mode for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "enable_attack_challenge_mode", + "required": true, + "description": "Set to true to enable Attack Challenge mode; false to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attackModeEnabled" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug of the team on behalf of which the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "attack_mode_active_until", + "required": false, + "description": "The UNIX timestamp indicating when the Attack Challenge mode should be active until. Specify this to control the duration of the mode being enabled.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attackModeActiveUntil" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateAttackChallengeMode'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/attack-mode", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attackModeEnabled", + "tool_parameter_name": "enable_attack_challenge_mode", + "description": "", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attackModeActiveUntil", + "tool_parameter_name": "attack_mode_active_until", + "description": "", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"projectId\",\n \"attackModeEnabled\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\"\n },\n \"attackModeEnabled\": {\n \"type\": \"boolean\"\n },\n \"attackModeActiveUntil\": {\n \"type\": \"number\",\n \"nullable\": true\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateCustomEnvironment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateCustomEnvironment.json new file mode 100644 index 00000000..75f76ca6 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateCustomEnvironment.json @@ -0,0 +1,337 @@ +{ + "name": "UpdateCustomEnvironment", + "fully_qualified_name": "VercelApi.UpdateCustomEnvironment@0.1.0", + "description": "Update a custom environment for a Vercel project.\n\nUse this tool to update a custom environment in a Vercel project. The environment should not be named 'Production' or 'Preview'. Useful for managing project-specific settings.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or project name for the custom environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "custom_environment_id", + "required": true, + "description": "The unique identifier for the custom environment within the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "environmentSlugOrId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the update on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The slug of the custom environment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "custom_environment_slug", + "required": false, + "description": "Slug of the custom environment to update. Must not be 'Production' or 'Preview'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The slug of the custom environment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "custom_environment_description", + "required": false, + "description": "Optional description of the custom environment to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the custom environment. This is optional." + }, + "inferrable": true, + "http_endpoint_parameter_name": "description" + }, + { + "name": "branch_matcher_type", + "required": false, + "description": "Specifies the branch matcher type: 'equals', 'startsWith', or 'endsWith'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of matcher. One of \\\"equals\\\", \\\"startsWith\\\", or \\\"endsWith\\\"." + }, + "inferrable": true, + "http_endpoint_parameter_name": "branchMatcher.type" + }, + { + "name": "branch_name_pattern", + "required": false, + "description": "Specify a portion or full Git branch name for matching. Used to identify branches in custom environments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch name or portion thereof." + }, + "inferrable": true, + "http_endpoint_parameter_name": "branchMatcher.pattern" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateCustomEnvironment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/custom-environments/{environmentSlugOrId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "custom_environment_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "environmentSlugOrId", + "tool_parameter_name": "custom_environment_id", + "description": "The unique custom environment identifier within the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique custom environment identifier within the project" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "custom_environment_slug", + "description": "The slug of the custom environment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The slug of the custom environment." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "description", + "tool_parameter_name": "custom_environment_description", + "description": "Description of the custom environment. This is optional.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the custom environment. This is optional." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "branchMatcher.type", + "tool_parameter_name": "branch_matcher_type", + "description": "Type of matcher. One of \\\"equals\\\", \\\"startsWith\\\", or \\\"endsWith\\\".", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of matcher. One of \\\"equals\\\", \\\"startsWith\\\", or \\\"endsWith\\\"." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "branchMatcher.pattern", + "tool_parameter_name": "branch_name_pattern", + "description": "Git branch name or portion thereof.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch name or portion thereof." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"slug\": {\n \"description\": \"The slug of the custom environment.\",\n \"type\": \"string\",\n \"maxLength\": 32\n },\n \"description\": {\n \"description\": \"Description of the custom environment. This is optional.\",\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"branchMatcher\": {\n \"required\": [\n \"type\",\n \"pattern\"\n ],\n \"description\": \"How we want to determine a matching branch. This is optional.\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"description\": \"Type of matcher. One of \\\\\\\"equals\\\\\\\", \\\\\\\"startsWith\\\\\\\", or \\\\\\\"endsWith\\\\\\\".\",\n \"enum\": [\n \"equals\",\n \"startsWith\",\n \"endsWith\"\n ]\n },\n \"pattern\": {\n \"description\": \"Git branch name or portion thereof.\",\n \"type\": \"string\",\n \"maxLength\": 100\n }\n },\n \"nullable\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDnsRecord.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDnsRecord.json new file mode 100644 index 00000000..906c652a --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDnsRecord.json @@ -0,0 +1,473 @@ +{ + "name": "UpdateDnsRecord", + "fully_qualified_name": "VercelApi.UpdateDnsRecord@0.1.0", + "description": "Update an existing DNS record for a domain.\n\nThis tool updates an existing DNS record for a specified domain name. It should be called when changes to a DNS record are needed, such as modifying the value or type. The tool returns details of the updated record after the operation is successful.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dns_record_id", + "required": true, + "description": "The unique identifier of the DNS record to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the DNS record" + }, + "inferrable": true, + "http_endpoint_parameter_name": "recordId" + }, + { + "name": "dns_record_update_payload", + "required": true, + "description": "A JSON object containing details of the DNS record to update, including name, value, type, TTL, and optional parameters like MX priority or SRV details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the DNS record" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the DNS record" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "A", + "AAAA", + "ALIAS", + "CAA", + "CNAME", + "HTTPS", + "MX", + "SRV", + "TXT", + "NS" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the DNS record" + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Time to live (TTL) value of the DNS record" + }, + "mxPriority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The MX priority value of the DNS record" + }, + "srv": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "weight": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "port": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + } + }, + "inner_properties": null, + "description": null + }, + "https": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "params": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + } + }, + "inner_properties": null, + "description": null + }, + "comment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A comment to add context on what this DNS record is for" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team performing the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the Team to perform the DNS update on behalf of. It is used to specify the team context for the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateRecord'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/domains/records/{recordId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recordId", + "tool_parameter_name": "dns_record_id", + "description": "The id of the DNS record", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the DNS record" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "dns_record_update_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the DNS record" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the DNS record" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "A", + "AAAA", + "ALIAS", + "CAA", + "CNAME", + "HTTPS", + "MX", + "SRV", + "TXT", + "NS" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the DNS record" + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Time to live (TTL) value of the DNS record" + }, + "mxPriority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The MX priority value of the DNS record" + }, + "srv": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "weight": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "port": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + } + }, + "inner_properties": null, + "description": null + }, + "https": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "target": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "params": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + } + }, + "inner_properties": null, + "description": null + }, + "comment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A comment to add context on what this DNS record is for" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the DNS record\",\n \"example\": \"example-1\",\n \"nullable\": true\n },\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The value of the DNS record\",\n \"example\": \"google.com\",\n \"nullable\": true\n },\n \"type\": {\n \"enum\": [\n \"A\",\n \"AAAA\",\n \"ALIAS\",\n \"CAA\",\n \"CNAME\",\n \"HTTPS\",\n \"MX\",\n \"SRV\",\n \"TXT\",\n \"NS\"\n ],\n \"type\": \"string\",\n \"description\": \"The type of the DNS record\",\n \"example\": \"A\",\n \"maxLength\": 255,\n \"nullable\": true\n },\n \"ttl\": {\n \"type\": \"integer\",\n \"description\": \"The Time to live (TTL) value of the DNS record\",\n \"example\": \"60\",\n \"minimum\": 60,\n \"maximum\": 2147483647,\n \"nullable\": true\n },\n \"mxPriority\": {\n \"type\": \"integer\",\n \"description\": \"The MX priority value of the DNS record\",\n \"nullable\": true\n },\n \"srv\": {\n \"additionalProperties\": false,\n \"required\": [\n \"target\",\n \"weight\",\n \"port\",\n \"priority\"\n ],\n \"properties\": {\n \"target\": {\n \"type\": \"string\",\n \"description\": \"\",\n \"example\": \"example2.com.\",\n \"maxLength\": 255,\n \"nullable\": true\n },\n \"weight\": {\n \"description\": \"\",\n \"type\": \"integer\",\n \"nullable\": true\n },\n \"port\": {\n \"description\": \"\",\n \"type\": \"integer\",\n \"nullable\": true\n },\n \"priority\": {\n \"description\": \"\",\n \"type\": \"integer\",\n \"nullable\": true\n }\n },\n \"type\": \"object\",\n \"nullable\": true\n },\n \"https\": {\n \"additionalProperties\": false,\n \"required\": [\n \"priority\",\n \"target\"\n ],\n \"properties\": {\n \"priority\": {\n \"description\": \"\",\n \"type\": \"integer\",\n \"nullable\": true\n },\n \"target\": {\n \"type\": \"string\",\n \"description\": \"\",\n \"example\": \"example2.com.\",\n \"maxLength\": 255,\n \"nullable\": true\n },\n \"params\": {\n \"description\": \"\",\n \"type\": \"string\",\n \"nullable\": true\n }\n },\n \"type\": \"object\",\n \"nullable\": true\n },\n \"comment\": {\n \"type\": \"string\",\n \"description\": \"A comment to add context on what this DNS record is for\",\n \"example\": \"used to verify ownership of domain\",\n \"maxLength\": 500\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDomainAutoRenew.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDomainAutoRenew.json new file mode 100644 index 00000000..b5b5dda8 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDomainAutoRenew.json @@ -0,0 +1,172 @@ +{ + "name": "UpdateDomainAutoRenew", + "fully_qualified_name": "VercelApi.UpdateDomainAutoRenew@0.1.0", + "description": "Update the auto-renew setting for a domain.\n\nUse this tool to toggle the auto-renewal option for a specific domain. Useful for managing domain renewal preferences.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain for which you want to update the auto-renew setting. It should be a valid domain name, such as 'example.com'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "enable_auto_renew", + "required": true, + "description": "Set to true to enable auto-renewal of the domain, or false to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "autoRenew" + }, + { + "name": "team_id", + "required": false, + "description": "The unique identifier for the team associated with the domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateDomainAutoRenew'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/auto-renew", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "autoRenew", + "tool_parameter_name": "enable_auto_renew", + "description": "", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"autoRenew\"\n ],\n \"properties\": {\n \"autoRenew\": {\n \"type\": \"boolean\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDomainNameservers.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDomainNameservers.json new file mode 100644 index 00000000..b9f6fee6 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateDomainNameservers.json @@ -0,0 +1,172 @@ +{ + "name": "UpdateDomainNameservers", + "fully_qualified_name": "VercelApi.UpdateDomainNameservers@0.1.0", + "description": "Update the nameservers for a domain.\n\nUse this tool to change the nameservers of a domain via Vercel. An empty array can be provided to revert to Vercel's default nameservers.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "domain_name", + "required": true, + "description": "The domain name to update the nameservers for. Provide the full domain, e.g., 'example.com'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "nameservers_list", + "required": true, + "description": "A list of nameservers to set for the domain. Pass an empty list to revert to Vercel's default nameservers.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "nameservers" + }, + { + "name": "team_id", + "required": false, + "description": "The unique identifier for the team to which the domain belongs. If not provided, the default team context is used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateDomainNameservers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/registrar/domains/{domain}/nameservers", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "domain_name", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "nameservers", + "tool_parameter_name": "nameservers_list", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"nameservers\"\n ],\n \"properties\": {\n \"nameservers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfig.json new file mode 100644 index 00000000..9aaed317 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfig.json @@ -0,0 +1,205 @@ +{ + "name": "UpdateEdgeConfig", + "fully_qualified_name": "VercelApi.UpdateEdgeConfig@0.1.0", + "description": "Update an existing Edge Config to apply changes.\n\nThis tool updates an existing Edge Config with new settings. It should be called when there is a need to modify the settings of an Edge Config identified by its ID.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_slug", + "required": true, + "description": "The slug identifying the team on whose behalf the request is performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "edge_config_identifier", + "required": true, + "description": "The unique identifier of the Edge Config to be updated. This is required to specify which configuration should be modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "edge_config_slug", + "required": true, + "description": "The unique slug identifier for the Edge Config that needs updating.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team to perform the request for. Required for updating the Edge Config on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateEdgeConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "edge_config_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "edge_config_slug", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"slug\"\n ],\n \"properties\": {\n \"slug\": {\n \"maxLength\": 64,\n \"pattern\": \"^[\\\\\\\\w-]+$\",\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfigItems.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfigItems.json new file mode 100644 index 00000000..1210878e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfigItems.json @@ -0,0 +1,223 @@ +{ + "name": "UpdateEdgeConfigItems", + "fully_qualified_name": "VercelApi.UpdateEdgeConfigItems@0.1.0", + "description": "Batch update Edge Config Items efficiently.\n\nUse this tool to update multiple Edge Config Items in a single request. Ideal for making bulk modifications to your Vercel Edge Configurations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_identifier", + "required": true, + "description": "The identifier for the specific Edge Config to update in the batch request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the Team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug of the team to perform the request on behalf of. It identifies the team in a URL-friendly format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "edge_config_items_update_payload", + "required": false, + "description": "A JSON object containing an array of Edge Config Items to update. Each item should have properties needed for modification.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'patchEdgeConfigItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/items", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "edge_config_items_update_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"items\"\n ],\n \"properties\": {\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"operation\": {\n \"enum\": [\n \"create\",\n \"update\",\n \"upsert\",\n \"delete\"\n ]\n },\n \"key\": {\n \"maxLength\": 256,\n \"pattern\": \"^[\\\\\\\\w-]+$\",\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true\n },\n \"description\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"maxLength\": 512\n },\n {}\n ],\n \"nullable\": true\n }\n },\n \"anyOf\": [\n {\n \"properties\": {\n \"operation\": {\n \"type\": \"string\",\n \"enum\": [\n \"create\"\n ]\n }\n },\n \"required\": [\n \"operation\",\n \"key\",\n \"value\"\n ]\n },\n {\n \"properties\": {\n \"operation\": {\n \"enum\": [\n \"update\",\n \"upsert\"\n ]\n }\n },\n \"required\": [\n \"operation\",\n \"key\",\n \"value\"\n ]\n },\n {\n \"properties\": {\n \"operation\": {\n \"enum\": [\n \"update\",\n \"upsert\"\n ]\n }\n },\n \"required\": [\n \"operation\",\n \"key\",\n \"description\"\n ]\n }\n ]\n }\n ]\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfigSchema.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfigSchema.json new file mode 100644 index 00000000..c59fb95a --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateEdgeConfigSchema.json @@ -0,0 +1,238 @@ +{ + "name": "UpdateEdgeConfigSchema", + "fully_qualified_name": "VercelApi.UpdateEdgeConfigSchema@0.1.0", + "description": "Update an Edge Config's schema to modify its structure.\n\nUse this tool to update the schema of an Edge Config in Vercel. It is useful when changes to the structure or configuration settings of an Edge Config are needed.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "edge_config_identifier", + "required": true, + "description": "The unique identifier for the Edge Config to update its schema.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "edgeConfigId" + }, + { + "name": "edge_config_schema_definition", + "required": true, + "description": "JSON string defining the updated structure and settings of the Edge Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "definition" + }, + { + "name": "enable_dry_run", + "required": false, + "description": "Set to true to simulate the update without applying changes. Useful for testing.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "dryRun" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique ID of the team on whose behalf the request will be made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. It identifies the specific team for the operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'patchEdgeConfigSchema'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/edge-config/{edgeConfigId}/schema", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "dryRun", + "tool_parameter_name": "enable_dry_run", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "edgeConfigId", + "tool_parameter_name": "edge_config_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "definition", + "tool_parameter_name": "edge_config_schema_definition", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"definition\"\n ],\n \"properties\": {\n \"definition\": {}\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateExistingCheck.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateExistingCheck.json new file mode 100644 index 00000000..3617c28b --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateExistingCheck.json @@ -0,0 +1,714 @@ +{ + "name": "UpdateExistingCheck", + "fully_qualified_name": "VercelApi.UpdateExistingCheck@0.1.0", + "description": "Updates an existing deployment check.\n\nUse this tool to update an existing check in a deployment on Vercel. Ensure that OAuth2 authentication is used to avoid errors.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The identifier for the deployment to update the check for. Ensure it is a valid string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to update the check for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "check_identifier", + "required": true, + "description": "The unique identifier of the check to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The check being updated" + }, + "inferrable": true, + "http_endpoint_parameter_name": "checkId" + }, + { + "name": "check_details_payload", + "required": true, + "description": "A JSON object containing details for the check update, including name, path, status, conclusion, details URL, metrics, and external ID.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the check being created" + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Path of the page that is being checked" + }, + "status": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The current status of the check" + }, + "conclusion": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The result of the check being run" + }, + "detailsUrl": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A URL a user may visit to see more information about the check" + }, + "output": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "metrics": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "FCP": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First Contentful Paint value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous First Contentful Paint value to display a delta" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "web-vitals" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "LCP": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Largest Contentful Paint value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous Largest Contentful Paint value to display a delta" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "web-vitals" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "CLS": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cumulative Layout Shift value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous Cumulative Layout Shift value to display a delta" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "web-vitals" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "TBT": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Blocking Time value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous Total Blocking Time value to display a delta" + }, + "source": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "virtualExperienceScore": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The calculated Virtual Experience Score value, between 0 and 100" + }, + "previousValue": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A previous Virtual Experience Score value to display a delta, between 0 and 100" + }, + "source": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Metrics about the page" + } + }, + "inner_properties": null, + "description": "The results of the check Run" + }, + "externalId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An identifier that can be used as an external reference" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier of the Team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of. This identifies the team within Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateCheck'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/deployments/{deploymentId}/checks/{checkId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "The deployment to update the check for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The deployment to update the check for." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "checkId", + "tool_parameter_name": "check_identifier", + "description": "The check being updated", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The check being updated" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "check_details_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the check being created" + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Path of the page that is being checked" + }, + "status": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The current status of the check" + }, + "conclusion": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The result of the check being run" + }, + "detailsUrl": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A URL a user may visit to see more information about the check" + }, + "output": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "metrics": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "FCP": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First Contentful Paint value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous First Contentful Paint value to display a delta" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "web-vitals" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "LCP": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Largest Contentful Paint value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous Largest Contentful Paint value to display a delta" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "web-vitals" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "CLS": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cumulative Layout Shift value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous Cumulative Layout Shift value to display a delta" + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "web-vitals" + ], + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "TBT": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Blocking Time value" + }, + "previousValue": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Previous Total Blocking Time value to display a delta" + }, + "source": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "virtualExperienceScore": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "value": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The calculated Virtual Experience Score value, between 0 and 100" + }, + "previousValue": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A previous Virtual Experience Score value to display a delta, between 0 and 100" + }, + "source": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Metrics about the page" + } + }, + "inner_properties": null, + "description": "The results of the check Run" + }, + "externalId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An identifier that can be used as an external reference" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the check being created\",\n \"maxLength\": 100,\n \"example\": \"Performance Check\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path of the page that is being checked\",\n \"type\": \"string\",\n \"maxLength\": 255,\n \"example\": \"/\"\n },\n \"status\": {\n \"description\": \"The current status of the check\",\n \"enum\": [\n \"running\",\n \"completed\"\n ]\n },\n \"conclusion\": {\n \"description\": \"The result of the check being run\",\n \"enum\": [\n \"canceled\",\n \"failed\",\n \"neutral\",\n \"succeeded\",\n \"skipped\"\n ]\n },\n \"detailsUrl\": {\n \"description\": \"A URL a user may visit to see more information about the check\",\n \"type\": \"string\",\n \"example\": \"https://example.com/check/run/1234abc\"\n },\n \"output\": {\n \"description\": \"The results of the check Run\",\n \"type\": \"object\",\n \"properties\": {\n \"metrics\": {\n \"type\": \"object\",\n \"description\": \"Metrics about the page\",\n \"required\": [\n \"FCP\",\n \"LCP\",\n \"CLS\",\n \"TBT\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"FCP\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"source\"\n ],\n \"properties\": {\n \"value\": {\n \"type\": \"number\",\n \"example\": 1200,\n \"description\": \"First Contentful Paint value\",\n \"nullable\": true\n },\n \"previousValue\": {\n \"type\": \"number\",\n \"example\": 900,\n \"description\": \"Previous First Contentful Paint value to display a delta\"\n },\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\n \"web-vitals\"\n ]\n }\n }\n },\n \"LCP\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"source\"\n ],\n \"properties\": {\n \"value\": {\n \"type\": \"number\",\n \"example\": 1200,\n \"description\": \"Largest Contentful Paint value\",\n \"nullable\": true\n },\n \"previousValue\": {\n \"type\": \"number\",\n \"example\": 1000,\n \"description\": \"Previous Largest Contentful Paint value to display a delta\"\n },\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\n \"web-vitals\"\n ]\n }\n }\n },\n \"CLS\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"source\"\n ],\n \"properties\": {\n \"value\": {\n \"type\": \"number\",\n \"example\": 4,\n \"description\": \"Cumulative Layout Shift value\",\n \"nullable\": true\n },\n \"previousValue\": {\n \"type\": \"number\",\n \"example\": 2,\n \"description\": \"Previous Cumulative Layout Shift value to display a delta\"\n },\n \"source\": {\n \"type\": \"string\",\n \"enum\": [\n \"web-vitals\"\n ]\n }\n }\n },\n \"TBT\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"source\"\n ],\n \"properties\": {\n \"value\": {\n \"type\": \"number\",\n \"example\": 3000,\n \"description\": \"Total Blocking Time value\",\n \"nullable\": true\n },\n \"previousValue\": {\n \"type\": \"number\",\n \"example\": 3500,\n \"description\": \"Previous Total Blocking Time value to display a delta\"\n },\n \"source\": {\n \"enum\": [\n \"web-vitals\"\n ]\n }\n }\n },\n \"virtualExperienceScore\": {\n \"type\": \"object\",\n \"required\": [\n \"value\",\n \"source\"\n ],\n \"properties\": {\n \"value\": {\n \"type\": \"integer\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"example\": 30,\n \"description\": \"The calculated Virtual Experience Score value, between 0 and 100\",\n \"nullable\": true\n },\n \"previousValue\": {\n \"type\": \"integer\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"example\": 35,\n \"description\": \"A previous Virtual Experience Score value to display a delta, between 0 and 100\"\n },\n \"source\": {\n \"enum\": [\n \"web-vitals\"\n ]\n }\n }\n }\n }\n }\n }\n },\n \"externalId\": {\n \"description\": \"An identifier that can be used as an external reference\",\n \"type\": \"string\",\n \"example\": \"1234abc\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateExperimentationItem.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateExperimentationItem.json new file mode 100644 index 00000000..eb593cd9 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateExperimentationItem.json @@ -0,0 +1,341 @@ +{ + "name": "UpdateExperimentationItem", + "fully_qualified_name": "VercelApi.UpdateExperimentationItem@0.1.0", + "description": "Update an existing experimentation item.\n\nUse this tool to modify the details of an existing experimentation item in a Vercel installation. It's called when you need to update specific experimentation parameters or configurations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration to be updated. This identifies which configuration is being patched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_identifier", + "required": true, + "description": "The unique identifier of the experimentation resource to update. Provides context for which item needs modification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "experiment_item_id", + "required": true, + "description": "The unique identifier for the experimentation item to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "itemId" + }, + { + "name": "experiment_update_details", + "required": false, + "description": "JSON object containing the details of the experimentation item to update, such as slug, origin, name, category (either 'experiment' or 'flag'), description, archive status, and timestamps for creation and update.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "experiment", + "flag" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isArchived": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "createdAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "updatedAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint ''.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/experimentation/items/{itemId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "itemId", + "tool_parameter_name": "experiment_item_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "experiment_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "experiment", + "flag" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isArchived": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "createdAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "updatedAt": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"slug\",\n \"origin\"\n ],\n \"properties\": {\n \"slug\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"origin\": {\n \"type\": \"string\",\n \"maxLength\": 2048\n },\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"category\": {\n \"type\": \"string\",\n \"enum\": [\n \"experiment\",\n \"flag\"\n ]\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 1024\n },\n \"isArchived\": {\n \"type\": \"boolean\"\n },\n \"createdAt\": {\n \"type\": \"number\"\n },\n \"updatedAt\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateFirewallConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateFirewallConfig.json new file mode 100644 index 00000000..022e79f1 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateFirewallConfig.json @@ -0,0 +1,205 @@ +{ + "name": "UpdateFirewallConfig", + "fully_qualified_name": "VercelApi.UpdateFirewallConfig@0.1.0", + "description": "Modify the existing firewall config for a project.\n\n", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier", + "required": true, + "description": "The unique identifier for the project to modify the firewall config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "firewall_configuration_updates", + "required": true, + "description": "A JSON object containing the updates for the firewall configuration, specifying changes like rules, policies, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to identify the team for the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateFirewallConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/security/firewall/config", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "projectId", + "tool_parameter_name": "project_identifier", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "firewall_configuration_updates", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"description\": \"Enable Firewall\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"firewallEnabled\"\n ]\n },\n \"id\": {\n \"nullable\": true\n },\n \"value\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"action\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Add a custom rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"rules.insert\"\n ]\n },\n \"id\": {\n \"nullable\": true\n },\n \"value\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 160\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"active\": {\n \"type\": \"boolean\"\n },\n \"conditionGroup\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"conditions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"host\",\n \"path\",\n \"method\",\n \"header\",\n \"query\",\n \"cookie\",\n \"target_path\",\n \"route\",\n \"raw_path\",\n \"ip_address\",\n \"region\",\n \"protocol\",\n \"scheme\",\n \"environment\",\n \"user_agent\",\n \"geo_continent\",\n \"geo_country\",\n \"geo_country_region\",\n \"geo_city\",\n \"geo_as_number\",\n \"ja4_digest\",\n \"ja3_digest\",\n \"rate_limit_api_id\",\n \"server_action\"\n ]\n },\n \"op\": {\n \"type\": \"string\",\n \"enum\": [\n \"re\",\n \"eq\",\n \"neq\",\n \"ex\",\n \"nex\",\n \"inc\",\n \"ninc\",\n \"pre\",\n \"suf\",\n \"sub\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\"\n ]\n },\n \"neg\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"maxItems\": 75\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"type\",\n \"op\"\n ],\n \"additionalProperties\": false\n },\n \"maxItems\": 65\n }\n },\n \"required\": [\n \"conditions\"\n ],\n \"additionalProperties\": false\n },\n \"maxItems\": 25\n },\n \"action\": {\n \"type\": \"object\",\n \"properties\": {\n \"mitigate\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\",\n \"bypass\",\n \"rate_limit\",\n \"redirect\"\n ]\n },\n \"rateLimit\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"algo\": {\n \"type\": \"string\",\n \"enum\": [\n \"fixed_window\",\n \"token_bucket\"\n ]\n },\n \"window\": {\n \"type\": \"number\"\n },\n \"limit\": {\n \"type\": \"number\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\",\n \"rate_limit\"\n ]\n },\n {}\n ],\n \"nullable\": true\n }\n },\n \"required\": [\n \"algo\",\n \"window\",\n \"limit\",\n \"keys\"\n ],\n \"additionalProperties\": false\n },\n {}\n ],\n \"nullable\": true\n },\n \"redirect\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\"\n },\n \"permanent\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"location\",\n \"permanent\"\n ],\n \"additionalProperties\": false\n },\n {}\n ],\n \"nullable\": true\n },\n \"actionDuration\": {\n \"type\": \"string\",\n \"nullable\": true\n },\n \"bypassSystem\": {\n \"type\": \"boolean\",\n \"nullable\": true\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"name\",\n \"active\",\n \"conditionGroup\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Update a custom rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"rules.update\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 160\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 256\n },\n \"active\": {\n \"type\": \"boolean\"\n },\n \"conditionGroup\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"conditions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"host\",\n \"path\",\n \"method\",\n \"header\",\n \"query\",\n \"cookie\",\n \"target_path\",\n \"route\",\n \"raw_path\",\n \"ip_address\",\n \"region\",\n \"protocol\",\n \"scheme\",\n \"environment\",\n \"user_agent\",\n \"geo_continent\",\n \"geo_country\",\n \"geo_country_region\",\n \"geo_city\",\n \"geo_as_number\",\n \"ja4_digest\",\n \"ja3_digest\",\n \"rate_limit_api_id\",\n \"server_action\"\n ]\n },\n \"op\": {\n \"type\": \"string\",\n \"enum\": [\n \"re\",\n \"eq\",\n \"neq\",\n \"ex\",\n \"nex\",\n \"inc\",\n \"ninc\",\n \"pre\",\n \"suf\",\n \"sub\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\"\n ]\n },\n \"neg\": {\n \"type\": \"boolean\"\n },\n \"key\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"maxItems\": 75\n },\n {\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"type\",\n \"op\"\n ],\n \"additionalProperties\": false\n },\n \"maxItems\": 65\n }\n },\n \"required\": [\n \"conditions\"\n ],\n \"additionalProperties\": false\n },\n \"maxItems\": 25\n },\n \"action\": {\n \"type\": \"object\",\n \"properties\": {\n \"mitigate\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\",\n \"bypass\",\n \"rate_limit\",\n \"redirect\"\n ]\n },\n \"rateLimit\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"algo\": {\n \"type\": \"string\",\n \"enum\": [\n \"fixed_window\",\n \"token_bucket\"\n ]\n },\n \"window\": {\n \"type\": \"number\"\n },\n \"limit\": {\n \"type\": \"number\"\n },\n \"keys\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"action\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\",\n \"rate_limit\"\n ]\n },\n {}\n ],\n \"nullable\": true\n }\n },\n \"required\": [\n \"algo\",\n \"window\",\n \"limit\",\n \"keys\"\n ],\n \"additionalProperties\": false\n },\n {}\n ],\n \"nullable\": true\n },\n \"redirect\": {\n \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\"\n },\n \"permanent\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"location\",\n \"permanent\"\n ],\n \"additionalProperties\": false\n },\n {}\n ],\n \"nullable\": true\n },\n \"actionDuration\": {\n \"type\": \"string\",\n \"nullable\": true\n },\n \"bypassSystem\": {\n \"type\": \"boolean\",\n \"nullable\": true\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"name\",\n \"active\",\n \"conditionGroup\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\",\n \"id\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Remove a custom rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"rules.remove\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true\n }\n },\n \"required\": [\n \"action\",\n \"id\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Reorder a custom rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"rules.priority\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"action\",\n \"id\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Enable a managed rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"crs.update\"\n ]\n },\n \"id\": {\n \"type\": \"string\",\n \"enum\": [\n \"sd\",\n \"ma\",\n \"lfi\",\n \"rfi\",\n \"rce\",\n \"php\",\n \"gen\",\n \"xss\",\n \"sqli\",\n \"sf\",\n \"java\"\n ]\n },\n \"value\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"log\"\n ]\n }\n },\n \"required\": [\n \"active\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\",\n \"id\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Disable a managed rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"crs.disable\"\n ]\n },\n \"id\": {\n \"nullable\": true\n },\n \"value\": {\n \"nullable\": true\n }\n },\n \"required\": [\n \"action\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Add an IP Blocking rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"ip.insert\"\n ]\n },\n \"id\": {\n \"nullable\": true\n },\n \"value\": {\n \"type\": \"object\",\n \"properties\": {\n \"hostname\": {\n \"type\": \"string\"\n },\n \"ip\": {\n \"type\": \"string\"\n },\n \"notes\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"challenge\",\n \"log\",\n \"bypass\"\n ]\n }\n },\n \"required\": [\n \"hostname\",\n \"ip\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Update an IP Blocking rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"ip.update\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"object\",\n \"properties\": {\n \"hostname\": {\n \"type\": \"string\"\n },\n \"ip\": {\n \"type\": \"string\"\n },\n \"notes\": {\n \"type\": \"string\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"deny\",\n \"challenge\",\n \"log\",\n \"bypass\"\n ]\n }\n },\n \"required\": [\n \"hostname\",\n \"ip\",\n \"action\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\",\n \"id\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Remove an IP Blocking rule\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"ip.remove\"\n ]\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"nullable\": true\n }\n },\n \"required\": [\n \"action\",\n \"id\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Update a managed ruleset\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"managedRules.update\"\n ]\n },\n \"id\": {\n \"type\": \"string\",\n \"enum\": [\n \"ai_bots\",\n \"bot_filter\",\n \"bot_protection\",\n \"owasp\"\n ]\n },\n \"value\": {\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\"\n ]\n },\n \"active\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"active\"\n ],\n \"additionalProperties\": false\n }\n },\n \"required\": [\n \"action\",\n \"id\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Update a managed rule group\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\"\n },\n \"id\": {\n \"type\": \"string\",\n \"enum\": [\n \"ai_bots\",\n \"bot_filter\",\n \"bot_protection\",\n \"owasp\"\n ]\n },\n \"value\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"active\": {\n \"type\": \"boolean\"\n },\n \"action\": {\n \"type\": \"string\",\n \"enum\": [\n \"log\",\n \"challenge\",\n \"deny\"\n ]\n }\n },\n \"required\": [\n \"active\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"action\",\n \"id\",\n \"value\"\n ],\n \"additionalProperties\": false\n },\n {\n \"description\": \"Toggle bot ID\",\n \"type\": \"object\",\n \"properties\": {\n \"action\": {\n \"type\": \"string\"\n },\n \"id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"action\",\n \"value\"\n ],\n \"additionalProperties\": false\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateIntegrationDeployment.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateIntegrationDeployment.json new file mode 100644 index 00000000..9fee2369 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateIntegrationDeployment.json @@ -0,0 +1,312 @@ +{ + "name": "UpdateIntegrationDeployment", + "fully_qualified_name": "VercelApi.UpdateIntegrationDeployment@0.1.0", + "description": "Update a deployment integration action.\n\nUse this tool to update the action of a deployment integration for a specific installation. It is ideal for modifying settings or actions related to deployment integrations.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "deployment_id", + "required": true, + "description": "The unique identifier for the deployment to update. This is required to specify which deployment's integration action should be modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "deploymentId" + }, + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration to update. This is required to specify which integration setup the action applies to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_id", + "required": true, + "description": "The unique identifier for the resource to be updated in the deployment integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "deployment_action", + "required": true, + "description": "Specifies the action to be taken for the deployment integration. Expected as a descriptive string indicating the action type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "action" + }, + { + "name": "integration_action_request_body", + "required": false, + "description": "JSON object containing the status, statusText, statusUrl, and outcomes for the deployment integration update.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "running", + "succeeded", + "failed" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "statusText": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "statusUrl": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "outcomes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update-integration-deployment-action'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/deployments/{deploymentId}/integrations/{integrationConfigurationId}/resources/{resourceId}/actions/{action}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "deploymentId", + "tool_parameter_name": "deployment_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "action", + "tool_parameter_name": "deployment_action", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "integration_action_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "running", + "succeeded", + "failed" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "statusText": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "statusUrl": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "outcomes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"running\",\n \"succeeded\",\n \"failed\"\n ]\n },\n \"statusText\": {\n \"type\": \"string\"\n },\n \"statusUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"pattern\": \"^https?://|^sso:\"\n },\n \"outcomes\": {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"type\": \"string\"\n },\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"kind\",\n \"secrets\"\n ],\n \"additionalProperties\": false\n }\n ]\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateIntegrationInstallation.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateIntegrationInstallation.json new file mode 100644 index 00000000..f3f432c1 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateIntegrationInstallation.json @@ -0,0 +1,467 @@ +{ + "name": "UpdateIntegrationInstallation", + "fully_qualified_name": "VercelApi.UpdateIntegrationInstallation@0.1.0", + "description": "Updates an integration installation configuration.\n\nUse this tool to update the configuration of an existing integration installation. Call it when changes to the integration setup are necessary.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration to update. This should be a string identifying the specific installation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "integration_update_details", + "required": false, + "description": "A JSON object detailing the integration update including billing plan and notification settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "billingPlan": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "prepayment", + "subscription" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "paymentMethodRequired": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "highlightedDetails": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "effectiveDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "notification": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "level": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "warn", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "href": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update-installation'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "integration_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "billingPlan": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "prepayment", + "subscription" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "paymentMethodRequired": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "highlightedDetails": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "effectiveDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "notification": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "level": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "warn", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "href": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"billingPlan\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"type\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"prepayment\",\n \"subscription\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"paymentMethodRequired\": {\n \"type\": \"boolean\"\n },\n \"cost\": {\n \"type\": \"string\"\n },\n \"details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\"\n ],\n \"additionalProperties\": false\n }\n },\n \"highlightedDetails\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\"\n ],\n \"additionalProperties\": false\n }\n },\n \"effectiveDate\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"notification\": {\n \"type\": \"object\",\n \"required\": [\n \"level\",\n \"title\"\n ],\n \"properties\": {\n \"level\": {\n \"type\": \"string\",\n \"enum\": [\n \"info\",\n \"warn\",\n \"error\"\n ]\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"href\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDataCache.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDataCache.json new file mode 100644 index 00000000..d22d8cc2 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDataCache.json @@ -0,0 +1,205 @@ +{ + "name": "UpdateProjectDataCache", + "fully_qualified_name": "VercelApi.UpdateProjectDataCache@0.1.0", + "description": "Update the data cache for a Vercel project.\n\nThis tool updates the data cache feature on a specified Vercel project. Use it when you need to refresh or modify the data cache to ensure the project is up-to-date with the latest changes.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier for the Vercel project to update the data cache.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "projectId" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique Team ID to perform the request on behalf of. Required for targeted updates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug to perform the request on behalf of. Use this to specify which team's project to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "disable_data_cache", + "required": false, + "description": "Set to true to disable the project's data cache, or false to enable it. Default is false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable or disable data cache for the project - default: false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "disabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateProjectDataCache'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/data-cache/projects/{projectId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "projectId", + "tool_parameter_name": "project_id", + "description": "The unique project identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "disabled", + "tool_parameter_name": "disable_data_cache", + "description": "Enable or disable data cache for the project - default: false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable or disable data cache for the project - default: false" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"disabled\": {\n \"type\": \"boolean\",\n \"example\": true,\n \"description\": \"Enable or disable data cache for the project - default: false\"\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDetails.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDetails.json new file mode 100644 index 00000000..5f78bf1c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDetails.json @@ -0,0 +1,1359 @@ +{ + "name": "UpdateProjectDetails", + "fully_qualified_name": "VercelApi.UpdateProjectDetails@0.1.0", + "description": "Update a project's fields using its name or ID.\n\nUse this tool to modify specific details of a Vercel project by providing its name or ID. Ideal for updating project configurations or metadata.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique identifier or name of the Vercel project to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "project_update_details", + "required": true, + "description": "JSON object containing keys and values to update project fields like build command, framework, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "autoExposeSystemEnvs": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoAssignCustomDomains": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoAssignCustomDomainsUpdatedBy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "buildCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The build command for this project. When `null` is used this value will be automatically detected" + }, + "commandForIgnoringBuildStep": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customerSupportCodeVisibility": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether customer support can see git source for a deployment" + }, + "devCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dev command for this project. When `null` is used this value will be automatically detected" + }, + "directoryListing": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "framework": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "None", + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp" + ], + "properties": null, + "inner_properties": null, + "description": "The framework that is being used for this project. When `null` is used no framework is selected" + }, + "gitForkProtection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed" + }, + "gitLFS": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Git LFS is enabled for this project." + }, + "installCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The install command for this project. When `null` is used this value will be automatically detected" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the project" + }, + "nodeVersion": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "22.x", + "20.x", + "18.x", + "16.x", + "14.x", + "12.x", + "10.x" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "outputDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The output directory of the project. When `null` is used this value will be automatically detected" + }, + "previewDeploymentsDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether preview deployments are disabled for this project." + }, + "publicSource": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether the source code and logs of the deployments for this project should be public or not" + }, + "resourceConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "buildMachineType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "fluid": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultRegions": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The regions to deploy Vercel Functions to for this project" + }, + "functionDefaultTimeout": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultMemoryType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "elasticConcurrencyEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isNSNBDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Specifies resource override configuration for the project" + }, + "rootDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root" + }, + "serverlessFunctionRegion": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region to deploy Serverless Functions in this project" + }, + "serverlessFunctionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "skewProtectionBoundaryAt": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployments created before this absolute datetime have Skew Protection disabled. Value is in milliseconds since epoch to match \\\"createdAt\\\" fields." + }, + "skewProtectionMaxAge": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployments created before this rolling window have Skew Protection disabled. Value is in seconds to match \\\"revalidate\\\" fields." + }, + "skipGitConnectDuringLink": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`." + }, + "sourceFilesOutsideRootDirectory": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if there are source files outside of the root directory" + }, + "enablePreviewFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to preview toolbar on the project level" + }, + "enableProductionFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to production toolbar on the project level" + }, + "enableAffectedProjectsDeployments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies" + }, + "staticIps": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to Static IPs for this project" + } + }, + "inner_properties": null, + "description": "Manage Static IPs for this project" + }, + "oidcTokenConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to generate OpenID Connect JSON Web Tokens." + }, + "issuerMode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team", + "global" + ], + "properties": null, + "inner_properties": null, + "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`" + } + }, + "inner_properties": null, + "description": "OpenID Connect JSON Web Token generation configuration." + }, + "passwordProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the password will apply to every Deployment Target or just Preview" + }, + "password": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The password that will be used to protect Project Deployments" + } + }, + "inner_properties": null, + "description": "Allows to protect project deployments with a password" + }, + "ssoProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview" + } + }, + "inner_properties": null, + "description": "Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team" + }, + "trustedIps": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "production", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the Trusted IPs will apply to every Deployment Target or just Preview" + }, + "addresses": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The IP addresses that are allowlisted. Supports IPv4 addresses and CIDR notations. IPv6 is not supported" + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An optional note explaining what the IP address or subnet is used for" + } + }, + "description": null + }, + "protectionMode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "exclusive", + "additional" + ], + "properties": null, + "inner_properties": null, + "description": "exclusive: ip match is enough to bypass deployment protection (regardless of other settings). additional: ip must match + any other protection should be also provided (password, vercel auth, shareable link, automation bypass header, automation bypass query param)" + } + }, + "inner_properties": null, + "description": "Restricts access to deployments based on the incoming request IP address" + }, + "optionsAllowlist": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "paths": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The regex path that should not be protected by Deployment Protection" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "Specify a list of paths that should not be protected by Deployment Protection to enable Cors preflight requests" + }, + "connectConfigurations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "envId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the environment" + }, + "connectConfigurationId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Secure Compute network" + }, + "passive": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the configuration should be passive, meaning builds will not run there and only passive Serverless Functions will be deployed" + }, + "buildsEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag saying if project builds should use Secure Compute" + } + }, + "description": "The list of connections from project environment to Secure Compute network" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "autoExposeSystemEnvs": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoAssignCustomDomains": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "autoAssignCustomDomainsUpdatedBy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "buildCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The build command for this project. When `null` is used this value will be automatically detected" + }, + "commandForIgnoringBuildStep": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customerSupportCodeVisibility": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether customer support can see git source for a deployment" + }, + "devCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The dev command for this project. When `null` is used this value will be automatically detected" + }, + "directoryListing": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "framework": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "None", + "blitzjs", + "nextjs", + "gatsby", + "remix", + "react-router", + "astro", + "hexo", + "eleventy", + "docusaurus-2", + "docusaurus", + "preact", + "solidstart-1", + "solidstart", + "dojo", + "ember", + "vue", + "scully", + "ionic-angular", + "angular", + "polymer", + "svelte", + "sveltekit", + "sveltekit-1", + "ionic-react", + "create-react-app", + "gridsome", + "umijs", + "sapper", + "saber", + "stencil", + "nuxtjs", + "redwoodjs", + "hugo", + "jekyll", + "brunch", + "middleman", + "zola", + "hydrogen", + "vite", + "vitepress", + "vuepress", + "parcel", + "fastapi", + "flask", + "fasthtml", + "sanity-v3", + "sanity", + "storybook", + "nitro", + "hono", + "express", + "h3", + "nestjs", + "xmcp" + ], + "properties": null, + "inner_properties": null, + "description": "The framework that is being used for this project. When `null` is used no framework is selected" + }, + "gitForkProtection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed" + }, + "gitLFS": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Git LFS is enabled for this project." + }, + "installCommand": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The install command for this project. When `null` is used this value will be automatically detected" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The desired name for the project" + }, + "nodeVersion": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "22.x", + "20.x", + "18.x", + "16.x", + "14.x", + "12.x", + "10.x" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "outputDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The output directory of the project. When `null` is used this value will be automatically detected" + }, + "previewDeploymentsDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether preview deployments are disabled for this project." + }, + "publicSource": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether the source code and logs of the deployments for this project should be public or not" + }, + "resourceConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "buildMachineType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "fluid": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultRegions": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The regions to deploy Vercel Functions to for this project" + }, + "functionDefaultTimeout": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionDefaultMemoryType": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "functionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "elasticConcurrencyEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "isNSNBDisabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "Specifies resource override configuration for the project" + }, + "rootDirectory": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root" + }, + "serverlessFunctionRegion": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region to deploy Serverless Functions in this project" + }, + "serverlessFunctionZeroConfigFailover": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether Zero Config Failover is enabled for this project." + }, + "skewProtectionBoundaryAt": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployments created before this absolute datetime have Skew Protection disabled. Value is in milliseconds since epoch to match \\\"createdAt\\\" fields." + }, + "skewProtectionMaxAge": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deployments created before this rolling window have Skew Protection disabled. Value is in seconds to match \\\"revalidate\\\" fields." + }, + "skipGitConnectDuringLink": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`." + }, + "sourceFilesOutsideRootDirectory": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if there are source files outside of the root directory" + }, + "enablePreviewFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to preview toolbar on the project level" + }, + "enableProductionFeedback": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to production toolbar on the project level" + }, + "enableAffectedProjectsDeployments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to skip deployments when there are no changes to the root directory and its dependencies" + }, + "staticIps": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opt-in to Static IPs for this project" + } + }, + "inner_properties": null, + "description": "Manage Static IPs for this project" + }, + "oidcTokenConfig": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to generate OpenID Connect JSON Web Tokens." + }, + "issuerMode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team", + "global" + ], + "properties": null, + "inner_properties": null, + "description": "team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`" + } + }, + "inner_properties": null, + "description": "OpenID Connect JSON Web Token generation configuration." + }, + "passwordProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the password will apply to every Deployment Target or just Preview" + }, + "password": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The password that will be used to protect Project Deployments" + } + }, + "inner_properties": null, + "description": "Allows to protect project deployments with a password" + }, + "ssoProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview" + } + }, + "inner_properties": null, + "description": "Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team" + }, + "trustedIps": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "production", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the Trusted IPs will apply to every Deployment Target or just Preview" + }, + "addresses": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The IP addresses that are allowlisted. Supports IPv4 addresses and CIDR notations. IPv6 is not supported" + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An optional note explaining what the IP address or subnet is used for" + } + }, + "description": null + }, + "protectionMode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "exclusive", + "additional" + ], + "properties": null, + "inner_properties": null, + "description": "exclusive: ip match is enough to bypass deployment protection (regardless of other settings). additional: ip must match + any other protection should be also provided (password, vercel auth, shareable link, automation bypass header, automation bypass query param)" + } + }, + "inner_properties": null, + "description": "Restricts access to deployments based on the incoming request IP address" + }, + "optionsAllowlist": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "paths": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The regex path that should not be protected by Deployment Protection" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "Specify a list of paths that should not be protected by Deployment Protection to enable Cors preflight requests" + }, + "connectConfigurations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "envId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the environment" + }, + "connectConfigurationId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Secure Compute network" + }, + "passive": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the configuration should be passive, meaning builds will not run there and only passive Serverless Functions will be deployed" + }, + "buildsEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag saying if project builds should use Secure Compute" + } + }, + "description": "The list of connections from project environment to Secure Compute network" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"autoExposeSystemEnvs\": {\n \"type\": \"boolean\"\n },\n \"autoAssignCustomDomains\": {\n \"type\": \"boolean\"\n },\n \"autoAssignCustomDomainsUpdatedBy\": {\n \"type\": \"string\"\n },\n \"buildCommand\": {\n \"description\": \"The build command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"commandForIgnoringBuildStep\": {\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"customerSupportCodeVisibility\": {\n \"description\": \"Specifies whether customer support can see git source for a deployment\",\n \"type\": \"boolean\"\n },\n \"devCommand\": {\n \"description\": \"The dev command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"directoryListing\": {\n \"type\": \"boolean\"\n },\n \"framework\": {\n \"description\": \"The framework that is being used for this project. When `null` is used no framework is selected\",\n \"enum\": [\n null,\n \"blitzjs\",\n \"nextjs\",\n \"gatsby\",\n \"remix\",\n \"react-router\",\n \"astro\",\n \"hexo\",\n \"eleventy\",\n \"docusaurus-2\",\n \"docusaurus\",\n \"preact\",\n \"solidstart-1\",\n \"solidstart\",\n \"dojo\",\n \"ember\",\n \"vue\",\n \"scully\",\n \"ionic-angular\",\n \"angular\",\n \"polymer\",\n \"svelte\",\n \"sveltekit\",\n \"sveltekit-1\",\n \"ionic-react\",\n \"create-react-app\",\n \"gridsome\",\n \"umijs\",\n \"sapper\",\n \"saber\",\n \"stencil\",\n \"nuxtjs\",\n \"redwoodjs\",\n \"hugo\",\n \"jekyll\",\n \"brunch\",\n \"middleman\",\n \"zola\",\n \"hydrogen\",\n \"vite\",\n \"vitepress\",\n \"vuepress\",\n \"parcel\",\n \"fastapi\",\n \"flask\",\n \"fasthtml\",\n \"sanity-v3\",\n \"sanity\",\n \"storybook\",\n \"nitro\",\n \"hono\",\n \"express\",\n \"h3\",\n \"nestjs\",\n \"xmcp\"\n ],\n \"type\": \"string\",\n \"nullable\": true\n },\n \"gitForkProtection\": {\n \"description\": \"Specifies whether PRs from Git forks should require a team member's authorization before it can be deployed\",\n \"type\": \"boolean\"\n },\n \"gitLFS\": {\n \"description\": \"Specifies whether Git LFS is enabled for this project.\",\n \"type\": \"boolean\"\n },\n \"installCommand\": {\n \"description\": \"The install command for this project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"name\": {\n \"description\": \"The desired name for the project\",\n \"example\": \"a-project-name\",\n \"type\": \"string\",\n \"maxLength\": 100\n },\n \"nodeVersion\": {\n \"enum\": [\n \"22.x\",\n \"20.x\",\n \"18.x\",\n \"16.x\",\n \"14.x\",\n \"12.x\",\n \"10.x\"\n ],\n \"type\": \"string\"\n },\n \"outputDirectory\": {\n \"description\": \"The output directory of the project. When `null` is used this value will be automatically detected\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"previewDeploymentsDisabled\": {\n \"description\": \"Specifies whether preview deployments are disabled for this project.\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"publicSource\": {\n \"description\": \"Specifies whether the source code and logs of the deployments for this project should be public or not\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"resourceConfig\": {\n \"properties\": {\n \"buildMachineType\": {\n \"enum\": [\n null,\n \"enhanced\",\n \"turbo\"\n ]\n },\n \"fluid\": {\n \"type\": \"boolean\"\n },\n \"functionDefaultRegions\": {\n \"description\": \"The regions to deploy Vercel Functions to for this project\",\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": true,\n \"items\": {\n \"type\": \"string\",\n \"maxLength\": 4\n }\n },\n \"functionDefaultTimeout\": {\n \"type\": \"number\",\n \"maximum\": 900,\n \"minimum\": 1\n },\n \"functionDefaultMemoryType\": {\n \"enum\": [\n \"standard_legacy\",\n \"standard\",\n \"performance\"\n ]\n },\n \"functionZeroConfigFailover\": {\n \"description\": \"Specifies whether Zero Config Failover is enabled for this project.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n }\n ]\n },\n \"elasticConcurrencyEnabled\": {\n \"type\": \"boolean\"\n },\n \"isNSNBDisabled\": {\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\",\n \"description\": \"Specifies resource override configuration for the project\",\n \"additionalProperties\": false\n },\n \"rootDirectory\": {\n \"description\": \"The name of a directory or relative path to the source code of your project. When `null` is used it will default to the project root\",\n \"maxLength\": 256,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"serverlessFunctionRegion\": {\n \"description\": \"The region to deploy Serverless Functions in this project\",\n \"maxLength\": 4,\n \"type\": \"string\",\n \"nullable\": true\n },\n \"serverlessFunctionZeroConfigFailover\": {\n \"description\": \"Specifies whether Zero Config Failover is enabled for this project.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n }\n ]\n },\n \"skewProtectionBoundaryAt\": {\n \"description\": \"Deployments created before this absolute datetime have Skew Protection disabled. Value is in milliseconds since epoch to match \\\\\\\"createdAt\\\\\\\" fields.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"skewProtectionMaxAge\": {\n \"description\": \"Deployments created before this rolling window have Skew Protection disabled. Value is in seconds to match \\\\\\\"revalidate\\\\\\\" fields.\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"skipGitConnectDuringLink\": {\n \"description\": \"Opts-out of the message prompting a CLI user to connect a Git repository in `vercel link`.\",\n \"type\": \"boolean\",\n \"deprecated\": true\n },\n \"sourceFilesOutsideRootDirectory\": {\n \"description\": \"Indicates if there are source files outside of the root directory\",\n \"type\": \"boolean\"\n },\n \"enablePreviewFeedback\": {\n \"description\": \"Opt-in to preview toolbar on the project level\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"enableProductionFeedback\": {\n \"description\": \"Opt-in to production toolbar on the project level\",\n \"type\": \"boolean\",\n \"nullable\": true\n },\n \"enableAffectedProjectsDeployments\": {\n \"description\": \"Opt-in to skip deployments when there are no changes to the root directory and its dependencies\",\n \"type\": \"boolean\"\n },\n \"staticIps\": {\n \"additionalProperties\": false,\n \"description\": \"Manage Static IPs for this project\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Opt-in to Static IPs for this project\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"enabled\"\n ],\n \"type\": \"object\"\n },\n \"oidcTokenConfig\": {\n \"description\": \"OpenID Connect JSON Web Token generation configuration.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether or not to generate OpenID Connect JSON Web Tokens.\",\n \"deprecated\": true,\n \"type\": \"boolean\",\n \"default\": true\n },\n \"issuerMode\": {\n \"description\": \"team: `https://oidc.vercel.com/[team_slug]` global: `https://oidc.vercel.com`\",\n \"type\": \"string\",\n \"enum\": [\n \"team\",\n \"global\"\n ],\n \"default\": \"team\"\n }\n }\n },\n \"passwordProtection\": {\n \"additionalProperties\": false,\n \"description\": \"Allows to protect project deployments with a password\",\n \"properties\": {\n \"deploymentType\": {\n \"description\": \"Specify if the password will apply to every Deployment Target or just Preview\",\n \"enum\": [\n \"all\",\n \"preview\",\n \"prod_deployment_urls_and_all_previews\",\n \"all_except_custom_domains\"\n ],\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"The password that will be used to protect Project Deployments\",\n \"maxLength\": 72,\n \"type\": \"string\",\n \"nullable\": true\n }\n },\n \"required\": [\n \"deploymentType\"\n ],\n \"type\": \"object\",\n \"nullable\": true\n },\n \"ssoProtection\": {\n \"additionalProperties\": false,\n \"description\": \"Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team\",\n \"properties\": {\n \"deploymentType\": {\n \"default\": \"preview\",\n \"description\": \"Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview\",\n \"enum\": [\n \"all\",\n \"preview\",\n \"prod_deployment_urls_and_all_previews\",\n \"all_except_custom_domains\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"deploymentType\"\n ],\n \"type\": \"object\",\n \"nullable\": true\n },\n \"trustedIps\": {\n \"additionalProperties\": false,\n \"description\": \"Restricts access to deployments based on the incoming request IP address\",\n \"properties\": {\n \"deploymentType\": {\n \"description\": \"Specify if the Trusted IPs will apply to every Deployment Target or just Preview\",\n \"enum\": [\n \"all\",\n \"preview\",\n \"production\",\n \"prod_deployment_urls_and_all_previews\",\n \"all_except_custom_domains\"\n ],\n \"type\": \"string\"\n },\n \"addresses\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The IP addresses that are allowlisted. Supports IPv4 addresses and CIDR notations. IPv6 is not supported\"\n },\n \"note\": {\n \"type\": \"string\",\n \"description\": \"An optional note explaining what the IP address or subnet is used for\",\n \"maxLength\": 20\n }\n },\n \"required\": [\n \"value\"\n ],\n \"additionalProperties\": false\n },\n \"minItems\": 1\n },\n \"protectionMode\": {\n \"description\": \"exclusive: ip match is enough to bypass deployment protection (regardless of other settings). additional: ip must match + any other protection should be also provided (password, vercel auth, shareable link, automation bypass header, automation bypass query param)\",\n \"enum\": [\n \"exclusive\",\n \"additional\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"deploymentType\",\n \"addresses\",\n \"protectionMode\"\n ],\n \"type\": \"object\",\n \"nullable\": true\n },\n \"optionsAllowlist\": {\n \"additionalProperties\": false,\n \"description\": \"Specify a list of paths that should not be protected by Deployment Protection to enable Cors preflight requests\",\n \"properties\": {\n \"paths\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"type\": \"string\",\n \"description\": \"The regex path that should not be protected by Deployment Protection\",\n \"pattern\": \"^/.*\"\n }\n },\n \"required\": [\n \"value\"\n ],\n \"additionalProperties\": false\n },\n \"minItems\": 1,\n \"maxItems\": 5\n }\n },\n \"required\": [\n \"paths\"\n ],\n \"type\": \"object\",\n \"nullable\": true\n },\n \"connectConfigurations\": {\n \"type\": \"array\",\n \"description\": \"The list of connections from project environment to Secure Compute network\",\n \"items\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"envId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the environment\"\n },\n \"connectConfigurationId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the Secure Compute network\"\n },\n \"passive\": {\n \"type\": \"boolean\",\n \"description\": \"Whether the configuration should be passive, meaning builds will not run there and only passive Serverless Functions will be deployed\"\n },\n \"buildsEnabled\": {\n \"type\": \"boolean\",\n \"description\": \"Flag saying if project builds should use Secure Compute\"\n }\n },\n \"required\": [\n \"envId\",\n \"connectConfigurationId\",\n \"passive\",\n \"buildsEnabled\"\n ],\n \"oneOf\": [\n {\n \"type\": \"object\"\n }\n ]\n },\n \"minItems\": 1,\n \"nullable\": true\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDomainConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDomainConfig.json new file mode 100644 index 00000000..06c4fa17 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectDomainConfig.json @@ -0,0 +1,316 @@ +{ + "name": "UpdateProjectDomainConfig", + "fully_qualified_name": "VercelApi.UpdateProjectDomainConfig@0.1.0", + "description": "Update a project's domain configuration.\n\nUse this tool to update a project's domain settings, including the domain name, associated git branch, and redirect options.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "The unique project identifier or the project name used to update domain configuration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "project_domain_name", + "required": true, + "description": "The project domain name to be updated. Example: 'example.com'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "linked_git_branch", + "required": false, + "description": "The Git branch to associate with the project domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch to link the project domain" + }, + "inferrable": true, + "http_endpoint_parameter_name": "gitBranch" + }, + { + "name": "redirect_target_domain", + "required": false, + "description": "Specify the target destination domain for the redirect of a project domain.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target destination domain for redirect" + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirect" + }, + { + "name": "redirect_status_code", + "required": false, + "description": "HTTP status code for the domain redirect. Acceptable values are 301, 302, 307, 308, or None if no redirect is required.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "None", + "301", + "302", + "307", + "308" + ], + "properties": null, + "inner_properties": null, + "description": "Status code for domain redirect" + }, + "inferrable": true, + "http_endpoint_parameter_name": "redirectStatusCode" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateProjectDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "project_domain_name", + "description": "The project domain name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The project domain name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "gitBranch", + "tool_parameter_name": "linked_git_branch", + "description": "Git branch to link the project domain", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Git branch to link the project domain" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirect", + "tool_parameter_name": "redirect_target_domain", + "description": "Target destination domain for redirect", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target destination domain for redirect" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "redirectStatusCode", + "tool_parameter_name": "redirect_status_code", + "description": "Status code for domain redirect", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "None", + "301", + "302", + "307", + "308" + ], + "properties": null, + "inner_properties": null, + "description": "Status code for domain redirect" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"properties\": {\n \"gitBranch\": {\n \"description\": \"Git branch to link the project domain\",\n \"example\": null,\n \"type\": \"string\",\n \"maxLength\": 250,\n \"nullable\": true\n },\n \"redirect\": {\n \"description\": \"Target destination domain for redirect\",\n \"example\": \"foobar.com\",\n \"type\": \"string\",\n \"nullable\": true\n },\n \"redirectStatusCode\": {\n \"description\": \"Status code for domain redirect\",\n \"example\": 307,\n \"type\": \"integer\",\n \"enum\": [\n null,\n 301,\n 302,\n 307,\n 308\n ],\n \"nullable\": true\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectNetworkLinks.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectNetworkLinks.json new file mode 100644 index 00000000..d7aef16e --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectNetworkLinks.json @@ -0,0 +1,223 @@ +{ + "name": "UpdateProjectNetworkLinks", + "fully_qualified_name": "VercelApi.UpdateProjectNetworkLinks@0.1.0", + "description": "Update project connections to shared Secure Compute networks.\n\nUse this tool to update a project's connections to shared Secure Compute networks on Vercel. It should be called when there's a need to modify existing network connection settings for a particular project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_identifier_or_name", + "required": true, + "description": "Specify the unique project identifier or project name for the network connection update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team on whose behalf the request is made. This is required to specify the context of the update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug of the team that this request should be performed on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "network_connection_details", + "required": false, + "description": "JSON object containing the details for updating the network connection, including regions.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "regions": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateSharedConnectLinks'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/shared-connect-links", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_identifier_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "network_connection_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "regions": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"regions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"maxLength\": 4,\n \"description\": \"The region of shared Secure Compute network to connect to.\",\n \"example\": \"iad1\"\n },\n \"minItems\": 0,\n \"maxItems\": 3,\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"regions\"\n ]\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectProtectionBypass.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectProtectionBypass.json new file mode 100644 index 00000000..e52ed8f4 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateProjectProtectionBypass.json @@ -0,0 +1,271 @@ +{ + "name": "UpdateProjectProtectionBypass", + "fully_qualified_name": "VercelApi.UpdateProjectProtectionBypass@0.1.0", + "description": "Update the deployment protection bypass for a Vercel project.\n\nUse this tool to modify the deployment protection automation bypass settings for a specific Vercel project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique Vercel project identifier or project name to update the protection bypass for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "revoke_automation_bypass", + "required": false, + "description": "Secret value of the automation bypass to be revoked for a Vercel project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Automation bypass to revoked" + }, + "inferrable": true, + "http_endpoint_parameter_name": "revoke.secret" + }, + { + "name": "optional_secret_value", + "required": false, + "description": "Optional value of the secret to generate; omit for OAuth2 tokens.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional value of the secret to generate, don't send it for oauth2 tokens" + }, + "inferrable": true, + "http_endpoint_parameter_name": "generate.secret" + }, + { + "name": "create_new_automation_bypass", + "required": false, + "description": "Create a new automation bypass after revoking the current secret.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not a new automation bypass should be created after the provided secret is revoked" + }, + "inferrable": true, + "http_endpoint_parameter_name": "revoke.regenerate" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateProjectProtectionBypass'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/protection-bypass", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "revoke.secret", + "tool_parameter_name": "revoke_automation_bypass", + "description": "Automation bypass to revoked", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Automation bypass to revoked" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "revoke.regenerate", + "tool_parameter_name": "create_new_automation_bypass", + "description": "Whether or not a new automation bypass should be created after the provided secret is revoked", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not a new automation bypass should be created after the provided secret is revoked" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "generate.secret", + "tool_parameter_name": "optional_secret_value", + "description": "Optional value of the secret to generate, don't send it for oauth2 tokens", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional value of the secret to generate, don't send it for oauth2 tokens" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"revoke\": {\n \"description\": \"Optional instructions for revoking and regenerating a automation bypass\",\n \"type\": \"object\",\n \"properties\": {\n \"secret\": {\n \"description\": \"Automation bypass to revoked\",\n \"type\": \"string\"\n },\n \"regenerate\": {\n \"description\": \"Whether or not a new automation bypass should be created after the provided secret is revoked\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"secret\",\n \"regenerate\"\n ]\n },\n \"generate\": {\n \"description\": \"Generate a new secret. If neither generate or revoke are provided, a new random secret will be generated.\",\n \"type\": \"object\",\n \"properties\": {\n \"secret\": {\n \"description\": \"Optional value of the secret to generate, don't send it for oauth2 tokens\",\n \"type\": \"string\",\n \"pattern\": \"^[a-zA-Z0-9]{32}$\"\n }\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateResource.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateResource.json new file mode 100644 index 00000000..113dd385 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateResource.json @@ -0,0 +1,736 @@ +{ + "name": "UpdateResource", + "fully_qualified_name": "VercelApi.UpdateResource@0.1.0", + "description": "Update an existing resource with new information.\n\nUse this tool to update details of a specific resource in an installation. Supports partial updates, allowing changes to be made without modifying the entire resource.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration to update. Required for identifying which integration configuration is being modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_id", + "required": true, + "description": "The unique identifier of the resource to be updated. This is required to specify which resource you are targeting for updates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "update_resource_details", + "required": false, + "description": "JSON object to update resource details. Fields include ownership, name, status, metadata, billingPlan, notification, extras, and secrets. Supports partial updates. For billingPlan, provide details like id, type, and cost. Optionally include notifications and secrets with environment overrides.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ownership": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "owned", + "linked", + "sandbox" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ready", + "pending", + "onboarding", + "suspended", + "resumed", + "uninstalled", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billingPlan": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "prepayment", + "subscription" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "paymentMethodRequired": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "highlightedDetails": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "effectiveDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "notification": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "level": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "warn", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "href": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "extras": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update-resource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_resource_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ownership": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "owned", + "linked", + "sandbox" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ready", + "pending", + "onboarding", + "suspended", + "resumed", + "uninstalled", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billingPlan": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "prepayment", + "subscription" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "paymentMethodRequired": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "highlightedDetails": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "effectiveDate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "notification": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "level": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "warn", + "error" + ], + "properties": null, + "inner_properties": null, + "description": null + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "href": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "extras": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"ownership\": {\n \"type\": \"string\",\n \"enum\": [\n \"owned\",\n \"linked\",\n \"sandbox\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\",\n \"enum\": [\n \"ready\",\n \"pending\",\n \"onboarding\",\n \"suspended\",\n \"resumed\",\n \"uninstalled\",\n \"error\"\n ]\n },\n \"metadata\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"billingPlan\": {\n \"type\": \"object\",\n \"required\": [\n \"id\",\n \"type\",\n \"name\"\n ],\n \"properties\": {\n \"id\": {\n \"type\": \"string\"\n },\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"prepayment\",\n \"subscription\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"paymentMethodRequired\": {\n \"type\": \"boolean\"\n },\n \"cost\": {\n \"type\": \"string\"\n },\n \"details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\"\n ],\n \"additionalProperties\": false\n }\n },\n \"highlightedDetails\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\"\n ],\n \"additionalProperties\": false\n }\n },\n \"effectiveDate\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": true\n },\n \"notification\": {\n \"type\": \"object\",\n \"required\": [\n \"level\",\n \"title\"\n ],\n \"properties\": {\n \"level\": {\n \"type\": \"string\",\n \"enum\": [\n \"info\",\n \"warn\",\n \"error\"\n ]\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"message\": {\n \"type\": \"string\"\n },\n \"href\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n }\n },\n \"extras\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n },\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"environmentOverrides\": {\n \"type\": \"object\",\n \"description\": \"A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.\",\n \"properties\": {\n \"development\": {\n \"type\": \"string\",\n \"description\": \"Value used for development environment.\"\n },\n \"preview\": {\n \"type\": \"string\",\n \"description\": \"Value used for preview environment.\"\n },\n \"production\": {\n \"type\": \"string\",\n \"description\": \"Value used for production environment.\"\n }\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateResourceSecrets.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateResourceSecrets.json new file mode 100644 index 00000000..8e0e86c8 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateResourceSecrets.json @@ -0,0 +1,355 @@ +{ + "name": "UpdateResourceSecrets", + "fully_qualified_name": "VercelApi.UpdateResourceSecrets@0.1.0", + "description": "Updates the secrets of a specified resource.\n\nThis tool updates the secrets of a specified resource and connected projects. Old secrets may still be used by existing projects until manually redeployed. Useful for resetting resource credentials.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The unique identifier for the integration configuration associated with the resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "integration_product_id_or_slug", + "required": true, + "description": "Specify the product ID or slug to identify the integration product for the resource update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationProductIdOrSlug" + }, + { + "name": "resource_id", + "required": true, + "description": "The unique identifier for the resource whose secrets are being updated. This is required to specify which resource's secrets need modification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "resource_secrets", + "required": true, + "description": "A JSON object containing secrets to update. It includes an array of secrets with fields like name, value, prefix, and optional environment overrides for development, preview, and production. Use 'partial' to indicate if only provided secrets should be updated.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + }, + "partial": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, will only update the provided secrets" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update-resource-secrets'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/products/{integrationProductIdOrSlug}/resources/{resourceId}/secrets", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integrationProductIdOrSlug", + "tool_parameter_name": "integration_product_id_or_slug", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "resource_secrets", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + }, + "partial": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, will only update the provided secrets" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"secrets\"\n ],\n \"properties\": {\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"environmentOverrides\": {\n \"type\": \"object\",\n \"description\": \"A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.\",\n \"properties\": {\n \"development\": {\n \"type\": \"string\",\n \"description\": \"Value used for development environment.\"\n },\n \"preview\": {\n \"type\": \"string\",\n \"description\": \"Value used for preview environment.\"\n },\n \"production\": {\n \"type\": \"string\",\n \"description\": \"Value used for production environment.\"\n }\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"partial\": {\n \"type\": \"boolean\",\n \"description\": \"If true, will only update the provided secrets\"\n }\n },\n \"additionalProperties\": false\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateRollingReleaseConfig.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateRollingReleaseConfig.json new file mode 100644 index 00000000..d3ac0dd6 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateRollingReleaseConfig.json @@ -0,0 +1,172 @@ +{ + "name": "UpdateRollingReleaseConfig", + "fully_qualified_name": "VercelApi.UpdateRollingReleaseConfig@0.1.0", + "description": "Update or disable rolling releases for a Vercel project.\n\nUse this tool to update or disable rolling releases for a specific Vercel project. It changes the configuration for future deployments without affecting in-progress rollouts. Disabling the feature requires additional API calls to complete or abort current rollouts.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "Project ID or name (URL-encoded) for updating rolling release settings.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug identifying the team for which the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateRollingReleaseConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/rolling-release/config", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "Project ID or project name (URL-encoded)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project ID or project name (URL-encoded)" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateSecretsById.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateSecretsById.json new file mode 100644 index 00000000..fbc97b71 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateSecretsById.json @@ -0,0 +1,322 @@ +{ + "name": "UpdateSecretsById", + "fully_qualified_name": "VercelApi.UpdateSecretsById@0.1.0", + "description": "Update the secrets of a Vercel resource by ID.\n\nThis tool updates the secrets for a given resource in Vercel, affecting connected projects with the new secrets. Note that existing projects using old secrets require manual redeployment to apply changes.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "integration_configuration_id", + "required": true, + "description": "The ID of the integration configuration. This identifies the specific configuration in Vercel to update secrets for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "integrationConfigurationId" + }, + { + "name": "resource_id", + "required": true, + "description": "The unique identifier of the Vercel resource whose secrets are to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "resourceId" + }, + { + "name": "secrets_update_request", + "required": false, + "description": "A JSON object containing the secrets to update for the resource. Include secret name, value, prefix, and environment-specific overrides. Use 'partial' as true to update only specified secrets, or false to replace all secrets.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + }, + "partial": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, will only overwrite the provided secrets instead of replacing all secrets." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update-resource-secrets-by-id'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/installations/{integrationConfigurationId}/resources/{resourceId}/secrets", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "integrationConfigurationId", + "tool_parameter_name": "integration_configuration_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resourceId", + "tool_parameter_name": "resource_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "secrets_update_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "secrets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "environmentOverrides": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "development": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for development environment." + }, + "preview": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for preview environment." + }, + "production": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value used for production environment." + } + }, + "inner_properties": null, + "description": "A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment." + } + }, + "description": null + }, + "partial": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, will only overwrite the provided secrets instead of replacing all secrets." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"secrets\"\n ],\n \"properties\": {\n \"secrets\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n },\n \"prefix\": {\n \"type\": \"string\"\n },\n \"environmentOverrides\": {\n \"type\": \"object\",\n \"description\": \"A map of environments to override values for the secret, used for setting different values across deployments in production, preview, and development environments. Note: the same value will be used for all deployments in the given environment.\",\n \"properties\": {\n \"development\": {\n \"type\": \"string\",\n \"description\": \"Value used for development environment.\"\n },\n \"preview\": {\n \"type\": \"string\",\n \"description\": \"Value used for preview environment.\"\n },\n \"production\": {\n \"type\": \"string\",\n \"description\": \"Value used for production environment.\"\n }\n }\n }\n },\n \"additionalProperties\": false\n }\n },\n \"partial\": {\n \"type\": \"boolean\",\n \"description\": \"If true, will only overwrite the provided secrets instead of replacing all secrets.\"\n }\n },\n \"additionalProperties\": false\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateTeamInfo.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateTeamInfo.json new file mode 100644 index 00000000..a8367b51 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateTeamInfo.json @@ -0,0 +1,742 @@ +{ + "name": "UpdateTeamInfo", + "fully_qualified_name": "VercelApi.UpdateTeamInfo@0.1.0", + "description": "Update information of a specified team.\n\nUse this tool to modify details of an existing team by providing the team ID and the updated information.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team whose information you want to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_update_details", + "required": true, + "description": "JSON object containing the team's updated details, including name, avatar, slug, description, and policies.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "avatar": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The hash value of an uploaded image." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short text that describes the team." + }, + "emailDomain": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the team." + }, + "previewDeploymentSuffix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Suffix that will be used for all preview deployments." + }, + "regenerateInviteCode": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Create a new invite code and replace the current one." + }, + "saml": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enforced": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Require that members of the team use SAML Single Sign-On." + }, + "roles": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Directory groups to role or access group mappings." + } + }, + "inner_properties": null, + "description": null + }, + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A new slug for the team." + }, + "enablePreviewFeedback": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable preview toolbar: one of on, off or default." + }, + "enableProductionFeedback": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable production toolbar: one of on, off or default." + }, + "sensitiveEnvironmentVariablePolicy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sensitive environment variable policy: one of on, off or default." + }, + "remoteCaching": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable or disable remote caching for the team." + } + }, + "inner_properties": null, + "description": "Whether or not remote caching is enabled for the team" + }, + "hideIpAddresses": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display or hide IP addresses in Monitoring queries." + }, + "hideIpAddressesInLogDrains": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display or hide IP addresses in Log Drains." + }, + "defaultDeploymentProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "passwordProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the password will apply to every Deployment Target or just Preview" + }, + "password": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The password that will be used to protect Project Deployments" + } + }, + "inner_properties": null, + "description": "Allows to protect project deployments with a password" + }, + "ssoProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview" + } + }, + "inner_properties": null, + "description": "Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team" + } + }, + "inner_properties": null, + "description": "Default deployment protection settings for new projects." + }, + "defaultExpirationSettings": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "expiration": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "3y", + "2y", + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep non-production deployments for" + }, + "expirationProduction": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "3y", + "2y", + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep production deployments for" + }, + "expirationCanceled": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep canceled deployments for" + }, + "expirationErrored": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep errored deployments for" + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "team_slug", + "required": false, + "description": "The unique slug for the team used to perform the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'patchTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v2/teams/{teamId}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "team_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "avatar": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The hash value of an uploaded image." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short text that describes the team." + }, + "emailDomain": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the team." + }, + "previewDeploymentSuffix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Suffix that will be used for all preview deployments." + }, + "regenerateInviteCode": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Create a new invite code and replace the current one." + }, + "saml": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enforced": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Require that members of the team use SAML Single Sign-On." + }, + "roles": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Directory groups to role or access group mappings." + } + }, + "inner_properties": null, + "description": null + }, + "slug": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A new slug for the team." + }, + "enablePreviewFeedback": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable preview toolbar: one of on, off or default." + }, + "enableProductionFeedback": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable production toolbar: one of on, off or default." + }, + "sensitiveEnvironmentVariablePolicy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sensitive environment variable policy: one of on, off or default." + }, + "remoteCaching": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable or disable remote caching for the team." + } + }, + "inner_properties": null, + "description": "Whether or not remote caching is enabled for the team" + }, + "hideIpAddresses": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display or hide IP addresses in Monitoring queries." + }, + "hideIpAddressesInLogDrains": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display or hide IP addresses in Log Drains." + }, + "defaultDeploymentProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "passwordProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the password will apply to every Deployment Target or just Preview" + }, + "password": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The password that will be used to protect Project Deployments" + } + }, + "inner_properties": null, + "description": "Allows to protect project deployments with a password" + }, + "ssoProtection": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "deploymentType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "preview", + "prod_deployment_urls_and_all_previews", + "all_except_custom_domains" + ], + "properties": null, + "inner_properties": null, + "description": "Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview" + } + }, + "inner_properties": null, + "description": "Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team" + } + }, + "inner_properties": null, + "description": "Default deployment protection settings for new projects." + }, + "defaultExpirationSettings": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "expiration": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "3y", + "2y", + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep non-production deployments for" + }, + "expirationProduction": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "3y", + "2y", + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep production deployments for" + }, + "expirationCanceled": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep canceled deployments for" + }, + "expirationErrored": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1y", + "6m", + "3m", + "2m", + "1m", + "2w", + "1w", + "1d", + "unlimited" + ], + "properties": null, + "inner_properties": null, + "description": "The time period to keep errored deployments for" + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"avatar\": {\n \"type\": \"string\",\n \"format\": \"regex\",\n \"description\": \"The hash value of an uploaded image.\"\n },\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": 140,\n \"example\": \"Our mission is to make cloud computing accessible to everyone\",\n \"description\": \"A short text that describes the team.\"\n },\n \"emailDomain\": {\n \"type\": \"string\",\n \"format\": \"regex\",\n \"example\": \"example.com\",\n \"nullable\": true\n },\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"My Team\",\n \"description\": \"The name of the team.\"\n },\n \"previewDeploymentSuffix\": {\n \"type\": \"string\",\n \"format\": \"hostname\",\n \"example\": \"example.dev\",\n \"description\": \"Suffix that will be used for all preview deployments.\",\n \"nullable\": true\n },\n \"regenerateInviteCode\": {\n \"type\": \"boolean\",\n \"example\": true,\n \"description\": \"Create a new invite code and replace the current one.\"\n },\n \"saml\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enforced\": {\n \"type\": \"boolean\",\n \"example\": true,\n \"description\": \"Require that members of the team use SAML Single Sign-On.\"\n },\n \"roles\": {\n \"type\": \"object\",\n \"description\": \"Directory groups to role or access group mappings.\",\n \"additionalProperties\": {\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"OWNER\",\n \"MEMBER\",\n \"DEVELOPER\",\n \"SECURITY\",\n \"BILLING\",\n \"VIEWER\",\n \"VIEWER_FOR_PLUS\",\n \"CONTRIBUTOR\"\n ]\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"accessGroupId\"\n ],\n \"properties\": {\n \"accessGroupId\": {\n \"type\": \"string\",\n \"pattern\": \"^ag_[A-z0-9_ -]+$\"\n }\n }\n }\n ]\n }\n }\n }\n },\n \"slug\": {\n \"type\": \"string\",\n \"example\": \"my-team\",\n \"description\": \"A new slug for the team.\"\n },\n \"enablePreviewFeedback\": {\n \"type\": \"string\",\n \"example\": \"on\",\n \"description\": \"Enable preview toolbar: one of on, off or default.\"\n },\n \"enableProductionFeedback\": {\n \"type\": \"string\",\n \"example\": \"on\",\n \"description\": \"Enable production toolbar: one of on, off or default.\"\n },\n \"sensitiveEnvironmentVariablePolicy\": {\n \"type\": \"string\",\n \"example\": \"on\",\n \"description\": \"Sensitive environment variable policy: one of on, off or default.\"\n },\n \"remoteCaching\": {\n \"type\": \"object\",\n \"description\": \"Whether or not remote caching is enabled for the team\",\n \"additionalProperties\": false,\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\",\n \"example\": true,\n \"description\": \"Enable or disable remote caching for the team.\"\n }\n }\n },\n \"hideIpAddresses\": {\n \"type\": \"boolean\",\n \"example\": false,\n \"description\": \"Display or hide IP addresses in Monitoring queries.\"\n },\n \"hideIpAddressesInLogDrains\": {\n \"type\": \"boolean\",\n \"example\": false,\n \"description\": \"Display or hide IP addresses in Log Drains.\"\n },\n \"defaultDeploymentProtection\": {\n \"type\": \"object\",\n \"description\": \"Default deployment protection settings for new projects.\",\n \"additionalProperties\": false,\n \"properties\": {\n \"passwordProtection\": {\n \"additionalProperties\": false,\n \"description\": \"Allows to protect project deployments with a password\",\n \"properties\": {\n \"deploymentType\": {\n \"description\": \"Specify if the password will apply to every Deployment Target or just Preview\",\n \"enum\": [\n \"all\",\n \"preview\",\n \"prod_deployment_urls_and_all_previews\",\n \"all_except_custom_domains\"\n ],\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"The password that will be used to protect Project Deployments\",\n \"maxLength\": 72,\n \"type\": \"string\",\n \"nullable\": true\n }\n },\n \"required\": [\n \"deploymentType\"\n ],\n \"type\": \"object\",\n \"nullable\": true\n },\n \"ssoProtection\": {\n \"additionalProperties\": false,\n \"description\": \"Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team\",\n \"properties\": {\n \"deploymentType\": {\n \"default\": \"preview\",\n \"description\": \"Specify if the Vercel Authentication (SSO Protection) will apply to every Deployment Target or just Preview\",\n \"enum\": [\n \"all\",\n \"preview\",\n \"prod_deployment_urls_and_all_previews\",\n \"all_except_custom_domains\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"deploymentType\"\n ],\n \"type\": \"object\",\n \"nullable\": true\n }\n }\n },\n \"defaultExpirationSettings\": {\n \"properties\": {\n \"expiration\": {\n \"description\": \"The time period to keep non-production deployments for\",\n \"example\": \"1y\",\n \"type\": \"string\",\n \"enum\": [\n \"3y\",\n \"2y\",\n \"1y\",\n \"6m\",\n \"3m\",\n \"2m\",\n \"1m\",\n \"2w\",\n \"1w\",\n \"1d\",\n \"unlimited\"\n ]\n },\n \"expirationProduction\": {\n \"description\": \"The time period to keep production deployments for\",\n \"example\": \"1y\",\n \"type\": \"string\",\n \"enum\": [\n \"3y\",\n \"2y\",\n \"1y\",\n \"6m\",\n \"3m\",\n \"2m\",\n \"1m\",\n \"2w\",\n \"1w\",\n \"1d\",\n \"unlimited\"\n ]\n },\n \"expirationCanceled\": {\n \"description\": \"The time period to keep canceled deployments for\",\n \"example\": \"1y\",\n \"type\": \"string\",\n \"enum\": [\n \"1y\",\n \"6m\",\n \"3m\",\n \"2m\",\n \"1m\",\n \"2w\",\n \"1w\",\n \"1d\",\n \"unlimited\"\n ]\n },\n \"expirationErrored\": {\n \"description\": \"The time period to keep errored deployments for\",\n \"example\": \"1y\",\n \"type\": \"string\",\n \"enum\": [\n \"1y\",\n \"6m\",\n \"3m\",\n \"2m\",\n \"1m\",\n \"2w\",\n \"1w\",\n \"1d\",\n \"unlimited\"\n ]\n }\n },\n \"type\": \"object\",\n \"additionalProperties\": false\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateTeamMember.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateTeamMember.json new file mode 100644 index 00000000..c846c188 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateTeamMember.json @@ -0,0 +1,304 @@ +{ + "name": "UpdateTeamMember", + "fully_qualified_name": "VercelApi.UpdateTeamMember@0.1.0", + "description": "Update a team member's role or confirm membership.\n\nThis tool updates a team member's details within a specified team, such as modifying their role or confirming an unconfirmed member's request to join. It requires the authenticated user to have 'OWNER' privileges in the team.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "member_id", + "required": true, + "description": "The unique identifier for the team member to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the member." + }, + "inferrable": true, + "http_endpoint_parameter_name": "uid" + }, + { + "name": "team_id", + "required": true, + "description": "The unique ID of the team where the member's role or membership status will be updated. It is required to identify the specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "membership_update_details", + "required": true, + "description": "JSON object including confirmation status, role changes, and project role updates for a team member.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "confirmed": { + "val_type": "boolean", + "inner_val_type": null, + "enum": [ + "True" + ], + "properties": null, + "inner_properties": null, + "description": "Accept a user who requested access to the team." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The role in the team of the member." + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER", + "None" + ], + "properties": null, + "inner_properties": null, + "description": "The project role of the member that will be added. \\\"null\\\" will remove this project level role." + } + }, + "description": null + }, + "joinedFrom": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ssoUserId": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'updateTeamMember'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/teams/{teamId}/members/{uid}", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "uid", + "tool_parameter_name": "member_id", + "description": "The ID of the member.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the member." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "teamId", + "tool_parameter_name": "team_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "membership_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "confirmed": { + "val_type": "boolean", + "inner_val_type": null, + "enum": [ + "True" + ], + "properties": null, + "inner_properties": null, + "description": "Accept a user who requested access to the team." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The role in the team of the member." + }, + "projects": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "projectId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the project." + }, + "role": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ADMIN", + "PROJECT_VIEWER", + "PROJECT_DEVELOPER", + "None" + ], + "properties": null, + "inner_properties": null, + "description": "The project role of the member that will be added. \\\"null\\\" will remove this project level role." + } + }, + "description": null + }, + "joinedFrom": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ssoUserId": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"confirmed\": {\n \"type\": \"boolean\",\n \"enum\": [\n true\n ],\n \"description\": \"Accept a user who requested access to the team.\",\n \"example\": true\n },\n \"role\": {\n \"type\": \"string\",\n \"description\": \"The role in the team of the member.\",\n \"example\": [\n \"MEMBER\",\n \"VIEWER\"\n ],\n \"default\": \"MEMBER\"\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"role\",\n \"projectId\"\n ],\n \"properties\": {\n \"projectId\": {\n \"type\": \"string\",\n \"maxLength\": 256,\n \"example\": \"prj_ndlgr43fadlPyCtREAqxxdyFK\",\n \"description\": \"The ID of the project.\"\n },\n \"role\": {\n \"type\": \"string\",\n \"enum\": [\n \"ADMIN\",\n \"PROJECT_VIEWER\",\n \"PROJECT_DEVELOPER\",\n null\n ],\n \"example\": \"ADMIN\",\n \"description\": \"The project role of the member that will be added. \\\\\\\"null\\\\\\\" will remove this project level role.\",\n \"nullable\": true\n }\n }\n }\n },\n \"joinedFrom\": {\n \"additionalProperties\": false,\n \"type\": \"object\",\n \"properties\": {\n \"ssoUserId\": {\n \"nullable\": true\n }\n }\n }\n }\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateUrlProtectionBypass.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateUrlProtectionBypass.json new file mode 100644 index 00000000..6b6e790c --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UpdateUrlProtectionBypass.json @@ -0,0 +1,205 @@ +{ + "name": "UpdateUrlProtectionBypass", + "fully_qualified_name": "VercelApi.UpdateUrlProtectionBypass@0.1.0", + "description": "Update the protection bypass for a Vercel URL.\n\nUse this tool to update the protection bypass for an alias or deployment URL in Vercel, enabling user or comment access on preview deployments.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "alias_or_deployment_id", + "required": true, + "description": "The ID of the alias or deployment for which to update the protection bypass.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The alias or deployment ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier of the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The team slug representing which team the request should be performed for in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "protection_bypass_details", + "required": false, + "description": "JSON object specifying the details for updating the protection bypass. This may include settings for user access and comment permissions.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'patchUrlProtectionBypass'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/aliases/{id}/protection-bypass", + "http_method": "PATCH", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "alias_or_deployment_id", + "description": "The alias or deployment ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The alias or deployment ID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "protection_bypass_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"ttl\": {\n \"description\": \"Optional time the shareable link is valid for in seconds. If not provided, the shareable link will never expire.\",\n \"type\": \"number\",\n \"maximum\": 63072000\n },\n \"revoke\": {\n \"description\": \"Optional instructions for revoking and regenerating a shareable link\",\n \"type\": \"object\",\n \"properties\": {\n \"secret\": {\n \"description\": \"Sharebale link to revoked\",\n \"type\": \"string\"\n },\n \"regenerate\": {\n \"description\": \"Whether or not a new shareable link should be created after the provided secret is revoked\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"secret\",\n \"regenerate\"\n ]\n }\n },\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": {\n \"description\": \"Instructions for creating a user scoped protection bypass\",\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"description\": \"Specified user id for the scoped bypass.\"\n },\n \"email\": {\n \"type\": \"string\",\n \"format\": \"email\",\n \"description\": \"Specified email for the scoped bypass.\"\n },\n \"access\": {\n \"enum\": [\n \"denied\",\n \"granted\"\n ],\n \"description\": \"Invitation status for the user scoped bypass.\"\n }\n },\n \"allOf\": [\n {\n \"anyOf\": [\n {\n \"required\": [\n \"userId\"\n ]\n },\n {\n \"required\": [\n \"email\"\n ]\n }\n ]\n },\n {\n \"required\": [\n \"access\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"scope\"\n ],\n \"additionalProperties\": false\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"override\": {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": {\n \"enum\": [\n \"alias-protection-override\"\n ]\n },\n \"action\": {\n \"enum\": [\n \"create\",\n \"revoke\"\n ]\n }\n },\n \"required\": [\n \"scope\",\n \"action\"\n ]\n }\n },\n \"required\": [\n \"override\"\n ],\n \"additionalProperties\": false\n }\n ]\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UploadCertificate.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UploadCertificate.json new file mode 100644 index 00000000..063f52ba --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UploadCertificate.json @@ -0,0 +1,238 @@ +{ + "name": "UploadCertificate", + "fully_qualified_name": "VercelApi.UploadCertificate@0.1.0", + "description": "Uploads a certificate to Vercel.\n\nUse this tool to upload a new certificate to the Vercel platform. This is needed when adding or updating SSL certificates for your domains.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": false, + "description": "The unique identifier for the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "Specify the team slug to perform the request on behalf of in Vercel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "certificate_upload_data", + "required": false, + "description": "A JSON object containing 'ca' (certificate authority), 'key' (certificate key), 'cert' (certificate), and 'skipValidation' (to skip validation, true or false).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ca": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate authority" + }, + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate key" + }, + "cert": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate" + }, + "skipValidation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skip validation of the certificate" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'uploadCert'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v8/certs", + "http_method": "PUT", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "certificate_upload_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ca": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate authority" + }, + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate key" + }, + "cert": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate" + }, + "skipValidation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skip validation of the certificate" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"ca\",\n \"key\",\n \"cert\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"ca\": {\n \"type\": \"string\",\n \"description\": \"The certificate authority\"\n },\n \"key\": {\n \"type\": \"string\",\n \"description\": \"The certificate key\"\n },\n \"cert\": {\n \"type\": \"string\",\n \"description\": \"The certificate\"\n },\n \"skipValidation\": {\n \"type\": \"boolean\",\n \"description\": \"Skip validation of the certificate\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UploadClientCertToProject.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UploadClientCertToProject.json new file mode 100644 index 00000000..5c07338d --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/UploadClientCertToProject.json @@ -0,0 +1,287 @@ +{ + "name": "UploadClientCertToProject", + "fully_qualified_name": "VercelApi.UploadClientCertToProject@0.1.0", + "description": "Upload a client certificate for mTLS authentication.\n\nUse this tool to upload a client certificate to a Vercel project for mutual TLS (mTLS) authentication with external origins.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique identifier or name of the Vercel project to upload the client certificate to. This is required to specify which project the mTLS certificate should be associated with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "team_identifier", + "required": false, + "description": "The string identifier of the team to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The slug representing the team on whose behalf the request is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + }, + { + "name": "client_certificate_data", + "required": false, + "description": "JSON object containing the client certificate, private key, certificate authority, and optional origin and validation settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cert": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client certificate in PEM format" + }, + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The private key in PEM format" + }, + "ca": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate authority in PEM format" + }, + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The origin this certificate should be used for. If not specified, the certificate will be project-wide." + }, + "skipValidation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skip validation of the certificate" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'uploadProjectClientCert'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v1/projects/{idOrName}/client-cert", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "client_certificate_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cert": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client certificate in PEM format" + }, + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The private key in PEM format" + }, + "ca": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The certificate authority in PEM format" + }, + "origin": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The origin this certificate should be used for. If not specified, the certificate will be project-wide." + }, + "skipValidation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skip validation of the certificate" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"cert\",\n \"key\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"cert\": {\n \"description\": \"The client certificate in PEM format\",\n \"type\": \"string\",\n \"example\": \"-----BEGIN CERTIFICATE-----\\\\\\\\n...\\\\\\\\n-----END CERTIFICATE-----\"\n },\n \"key\": {\n \"description\": \"The private key in PEM format\",\n \"type\": \"string\",\n \"example\": \"-----BEGIN PRIVATE KEY-----\\\\\\\\n...\\\\\\\\n-----END PRIVATE KEY-----\"\n },\n \"ca\": {\n \"description\": \"The certificate authority in PEM format\",\n \"type\": \"string\",\n \"example\": \"-----BEGIN CERTIFICATE-----\\\\\\\\n...\\\\\\\\n-----END CERTIFICATE-----\"\n },\n \"origin\": {\n \"description\": \"The origin this certificate should be used for. If not specified, the certificate will be project-wide.\",\n \"type\": \"string\",\n \"example\": \"https://api.example.com\"\n },\n \"skipValidation\": {\n \"type\": \"boolean\",\n \"description\": \"Skip validation of the certificate\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/VerifyProjectDomain.json b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/VerifyProjectDomain.json new file mode 100644 index 00000000..1eaa3345 --- /dev/null +++ b/toolkits/vercel_api/arcade_vercel_api/wrapper_tools/VerifyProjectDomain.json @@ -0,0 +1,205 @@ +{ + "name": "VerifyProjectDomain", + "fully_qualified_name": "VercelApi.VerifyProjectDomain@0.1.0", + "description": "Verify the status of a project domain's verification challenge.\n\nThis tool attempts to verify a project domain marked as `verified = false` by checking the correctness of its verification challenge. Use this to confirm domain ownership for a project.", + "toolkit": { + "name": "ArcadeVercelApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id_or_name", + "required": true, + "description": "The unique project identifier or the project name to verify the domain for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "idOrName" + }, + { + "name": "verify_domain_name", + "required": true, + "description": "The domain name you want to verify for the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain name you want to verify" + }, + "inferrable": true, + "http_endpoint_parameter_name": "domain" + }, + { + "name": "team_identifier", + "required": false, + "description": "The Team identifier to perform the request on behalf of. Provide as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "teamId" + }, + { + "name": "team_slug", + "required": false, + "description": "The Team slug used to perform the verification request on behalf of a specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "inferrable": true, + "http_endpoint_parameter_name": "slug" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'verifyProjectDomain'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "VERCEL_ACCESS_TOKEN" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the vercel API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://api.vercel.com/v9/projects/{idOrName}/domains/{domain}/verify", + "http_method": "POST", + "headers": { + "Content-Type": "application/json" + }, + "parameters": [ + { + "name": "teamId", + "tool_parameter_name": "team_identifier", + "description": "The Team identifier to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team identifier to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "slug", + "tool_parameter_name": "team_slug", + "description": "The Team slug to perform the request on behalf of.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Team slug to perform the request on behalf of." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "idOrName", + "tool_parameter_name": "project_id_or_name", + "description": "The unique project identifier or the project name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique project identifier or the project name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "domain", + "tool_parameter_name": "verify_domain_name", + "description": "The domain name you want to verify", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain name you want to verify" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "VERCEL_ACCESS_TOKEN", + "parameter_name": "Authorization", + "accepted_as": "header", + "formatted_value": "Bearer {authorization}", + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/vercel_api/pyproject.toml b/toolkits/vercel_api/pyproject.toml new file mode 100644 index 00000000..312925ef --- /dev/null +++ b/toolkits/vercel_api/pyproject.toml @@ -0,0 +1,60 @@ +[build-system] +requires = [ "hatchling",] +build-backend = "hatchling.build" + +[project] +name = "arcade_vercel_api" +version = "0.1.0" +description = "Tools that enable LLMs to interact directly with the vercel API." +requires-python = ">=3.10" +dependencies = [ + "arcade-tdk>=3.0.0,<4.0.0", + "httpx[http2]>=0.27.2,<1.0.0", + "jsonschema>=4.0.0,<5.0.0", +] +[[project.authors]] +email = "support@arcade.dev" + +[project.optional-dependencies] +dev = [ + "arcade-mcp[all]>=1.2.0,<2.0.0", + "arcade-serve>=3.0.0,<4.0.0", + "pytest>=8.3.0,<8.4.0", + "pytest-cov>=4.0.0,<4.1.0", + "pytest-mock>=3.11.1,<3.12.0", + "pytest-asyncio>=0.24.0,<0.25.0", + "mypy>=1.5.1,<1.6.0", + "pre-commit>=3.4.0,<3.5.0", + "tox>=4.11.1,<4.12.0", + "ruff>=0.7.4,<0.8.0", +] + +# Tell Arcade.dev that this package is a toolkit +[project.entry-points.arcade_toolkits] +toolkit_name = "arcade_vercel_api" + +# Use local path sources for arcade libs when working locally +[tool.uv.sources] +arcade-mcp = { path = "../../", editable = true } +arcade-serve = { path = "../../libs/arcade-serve/", editable = true } +arcade-tdk = { path = "../../libs/arcade-tdk/", editable = true } +[tool.mypy] +files = [ "arcade_vercel_api/**/*.py",] +python_version = "3.10" +disallow_untyped_defs = "True" +disallow_any_unimported = "True" +no_implicit_optional = "True" +check_untyped_defs = "True" +warn_return_any = "True" +warn_unused_ignores = "True" +show_error_codes = "True" +ignore_missing_imports = "True" + +[tool.pytest.ini_options] +testpaths = [ "tests",] + +[tool.coverage.report] +skip_empty = true + +[tool.hatch.build.targets.wheel] +packages = [ "arcade_vercel_api",] diff --git a/toolkits/vercel_api/tests/__init__.py b/toolkits/vercel_api/tests/__init__.py new file mode 100644 index 00000000..e69de29b